BLOBstreaming support (Google Summer of Code 2008, Raj Kissu Rajandran) -- work in progress

This commit is contained in:
Marc Delisle
2008-08-20 17:04:37 +00:00
parent bcf4eb5498
commit e77938bb20
74 changed files with 2515 additions and 21 deletions

View File

@@ -7,6 +7,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA
3.1.0.0 (not yet released) 3.1.0.0 (not yet released)
- bug #2046883 [core] Notices about deprecated dl() (so stop using it) - bug #2046883 [core] Notices about deprecated dl() (so stop using it)
+ BLOBstreaming support, thanks to Raj Kissu Rajandran (work in progress)
3.0.0.0 (not yet released) 3.0.0.0 (not yet released)
+ [export] properly handle line breaks for YAML, thanks to Dan Barry - + [export] properly handle line breaks for YAML, thanks to Dan Barry -

View File

@@ -4207,6 +4207,9 @@ CREDITS, in chronological order
- Ivan A Kirillov - Ivan A Kirillov
* new relations Designer * new relations Designer
- Raj Kissu Rajandran (Google Summer of Code 2008)
* BLOBstreaming support
And also to the following people who have contributed minor changes, And also to the following people who have contributed minor changes,
enhancements, bugfixes or support for a new language since version 2.1.0: enhancements, bugfixes or support for a new language since version 2.1.0:

94
bs_change_mime_type.php Normal file
View File

@@ -0,0 +1,94 @@
<?php
/**
* @author Raj Kissu Rajandran
* @version 1.0
* @package BLOBStreaming
*/
require_once './libraries/common.inc.php';
/**
* @var string contains database name
*/
$bsDB = isset($_REQUEST['bs_db']) ? urldecode($_REQUEST['bs_db']) : NULL;
/**
* @var string contains table name
*/
$bsTable = isset($_REQUEST['bs_table']) ? urldecode($_REQUEST['bs_table']) : NULL;
/**
* @var string contains BLOB reference
*/
$bsReference = isset($_REQUEST['bs_reference']) ? urldecode($_REQUEST['bs_reference']) : NULL;
/**
* @var string contains MIME type
*/
$bsNewMIMEType = isset($_REQUEST['bs_new_mime_type']) ? urldecode($_REQUEST['bs_new_mime_type']) : NULL;
// necessary variables exist
if ($bsDB && $bsTable && $bsReference && $bsNewMIMEType)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
{
// if BS plugins exist
if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
{
$mybs_ref_tbl = $PMA_Config->get('PBMS_NAME') . '_reference';
$mybs_cust_content_type_tbl = $PMA_Config->get('PBMS_NAME') . '_custom_content_type';
// if specified DB is selected
if (PMA_DBI_select_db($bsDB))
{
$query = "SELECT * FROM " . PMA_backquote($mybs_ref_tbl);
$query .= " WHERE Blob_url='" . PMA_sqlAddslashes($bsReference) . "'";
$result = PMA_DBI_query($query);
// if record exists
if ($data = PMA_DBI_fetch_assoc($result))
{
$query = "SELECT count(*) FROM " . PMA_backquote($mybs_cust_content_type_tbl);
$result = PMA_DBI_query($query);
// if record exists
if ($data = PMA_DBI_fetch_assoc($result))
{
if (1 == $data['count(*)'])
{
$query = "UPDATE " . PMA_backquote($mybs_cust_content_type_tbl) . " SET Content_type='";
$query .= PMA_sqlAddslashes($bsNewMIMEType) . "' WHERE Blob_url='" . PMA_sqlAddslashes($bsReference) . "'";
}
else
{
$query = "INSERT INTO " . PMA_backquote($mybs_cust_content_type_tbl) . " (Blob_url, Content_type)";
$query .= " VALUES('" . PMA_sqlAddslashes($bsReference) . "', '" . PMA_sqlAddslashes($bsNewMIMEType) . "')";
}
$result = PMA_DBI_query($query);
// if query execution succeeded
if ($result)
{
// determine redirector page
$newLoc = $cfg['PmaAbsoluteUri'] . 'sql.php?' . PMA_generate_common_url ('','', '&') . (isset($bsDB) ? '&db=' . urlencode($bsDB) : '') . (isset($bsTable) ? '&table=' . urlencode($bsTable) : '') . (isset($token) ? '&token=' . urlencode($token) : '') . (isset($goto) ? '&goto=' . urlencode($goto) : '') . '&reload=1&purge=1';
// redirect to specified page
?>
<script>
window.location = "<?php echo $newLoc ?>";
</script>
<?php
} // end if ($result)
} // end if ($data = PMA_DBI_fetch_assoc($result))
} // end if ($data = PMA_DBI_fetch_assoc($result))
} // end if (PMA_DBI_select_db($bsDB))
} // end if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
} // end if (!empty($PMA_Config))
} // end if ($bsDB && $bsTable && $bsReference && $bsNewMIMEType)
?>

60
bs_play_media.php Normal file
View File

@@ -0,0 +1,60 @@
<?php
/**
* @author Raj Kissu Rajandran
* @version 1.0
* @package BLOBStreaming
*/
require_once './libraries/common.inc.php';
/*
* @var string contains media type of BLOB reference
*/
$mediaType = isset($_REQUEST['media_type']) ? $_REQUEST['media_type'] : NULL;
/*
* @var string contains BLOB reference
*/
$bsReference = isset($_REQUEST['bs_reference']) ? $_REQUEST['bs_reference'] : NULL;
// if media type and BS reference are specified
if (isset($mediaType) && isset($bsReference))
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
{
// retrieve BS server variables from PMA configuration
$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER');
$bs_file_path = "http://" . $bs_server . '/' . $bsReference;
?>
<html>
<head>
</head>
<body>
<?php
// supported media types
switch ($mediaType)
{
// audio content
case 'audio/mpeg':
?><embed width=620 height=100 src="<?php echo $bs_file_path; ?>" autostart=true></embed><?php
break;
// video content
case 'application/x-flash-video':
case 'video/mpeg':
?><embed width=620 height=460 src="<?php echo $bs_file_path; ?>" autostart=true></embed><?php
break;
default:
// do nothing
}
?>
</body>
</html>
<?php
} // end if (!empty($PMA_Config))
} // end if (isset($mediaType) && isset($bsReference))
?>

View File

@@ -33,6 +33,13 @@ $cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */ /* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql'; $cfg['Servers'][$i]['extension'] = 'mysql';
/* rajk - for blobstreaming */
$cfg['Servers'][$i]['bs_garbage_threshold'] = '';
$cfg['Servers'][$i]['bs_repository_threshold'] = '';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = '';
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '';
/* User for advanced features */ /* User for advanced features */
// $cfg['Servers'][$i]['controluser'] = 'pma'; // $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass'; // $cfg['Servers'][$i]['controlpass'] = 'pmapass';

View File

@@ -19,6 +19,9 @@ require_once './libraries/common.inc.php';
require_once './libraries/Table.class.php'; require_once './libraries/Table.class.php';
require_once './libraries/mysql_charsets.lib.php'; require_once './libraries/mysql_charsets.lib.php';
// add blobstreaming library functions
require_once "./libraries/blobstreaming.lib.php";
/** /**
* Rename/move or copy database * Rename/move or copy database
*/ */
@@ -217,6 +220,67 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) {
} }
} }
} }
/*
* Enable/Disable/Repair BLOB Repository Monitoring for current database
*/
if (strlen($db) > 0 && !empty($db_blob_streaming_op))
{
// load PMA_Config
$PMA_Config = $_SESSION['PMA_Config'];
if (!empty($PMA_Config))
{
if ($PMA_Config->get('PBXT_NAME') !== strtolower($db))
{
// if Blobstreaming plugins exist, begin checking for Blobstreaming tables
if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
{
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
$bs_tables = $bs_tables[$db];
$oneBSTableExists = FALSE;
// check if at least one blobstreaming table exists
foreach ($bs_tables as $table_key=>$tbl)
if ($bs_tables[$table_key]['Exists'])
{
$oneBSTableExists = TRUE;
break;
}
switch ($db_blob_streaming_op)
{
// enable BLOB repository monitoring
case "enable":
// if blobstreaming tables do not exist, create them
if (!$oneBSTableExists)
PMA_BS_CreateTables($db);
break;
// disable BLOB repository monitoring
case "disable":
// if at least one blobstreaming table exists, execute drop
if ($oneBSTableExists)
PMA_BS_DropTables($db);
break;
// repair BLOB repository
case "repair":
// check if a blobstreaming table is missing
foreach ($bs_tables as $table_key=>$tbl)
if (!$bs_tables[$table_key]['Exists'])
{
PMA_DBI_select_db($db);
PMA_DBI_query(PMA_BS_GetTableStruct($table_key));
}
}
// refresh side menu
PMA_sendHeaderLocation($cfg['PmaAbsoluteUri'] . 'db_operations.php?' . PMA_generate_common_url ('','', '&') . (isset($db) ? '&db=' . urlencode($db) : '') . (isset($token) ? '&token=' . urlencode($token) : '') . (isset($goto) ? '&goto=' . urlencode($goto) : '') . 'reload=1&purge=1');
} // end if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
} // end if ($PMA_Config->get('PBXT_NAME') !== strtolower($db))
}
}
/** /**
* Settings for relations stuff * Settings for relations stuff
*/ */
@@ -275,7 +339,7 @@ if (!$is_information_schema) {
</legend> </legend>
<input type="text" name="comment" class="textfield" size="30" <input type="text" name="comment" class="textfield" size="30"
value="<?php value="<?php
echo htmlspecialchars(PMA_getDbComment($db)); ?>" /> echo htmlspecialchars(PMA_getDBComment($db)); ?>" />
<input type="submit" value="<?php echo $strGo; ?>" /> <input type="submit" value="<?php echo $strGo; ?>" />
</fieldset> </fieldset>
</form> </form>
@@ -393,6 +457,93 @@ if (!$is_information_schema) {
</form> </form>
<?php <?php
/*
* BLOB streaming support
*/
// load PMA_Config
$PMA_Config = $_SESSION['PMA_Config'];
// if all blobstreaming plugins exist, begin checking for blobstreaming tables
if (!empty($PMA_Config))
{
if ($PMA_Config->get('PBXT_NAME') !== strtolower($db))
{
if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
{
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
$bs_tables = $bs_tables[$db];
$oneBSTableExists = FALSE;
$allBSTablesExist = TRUE;
// first check that all blobstreaming tables do not exist
foreach ($bs_tables as $table_key=>$tbl)
if ($bs_tables[$table_key]['Exists'])
$oneBSTableExists = TRUE;
else
$allBSTablesExist = FALSE;
?>
<form method="post" action="./db_operations.php">
<?php echo PMA_generate_common_hidden_inputs($db); ?>
<fieldset>
<legend>
<?php echo PMA_getIcon('b_edit.png', $strBLOBRepository, false, true); ?>
</legend>
<?php echo $strBLOBRepositoryStatus; ?>:
<?php
// if the blobstreaming tables exist, provide option to disable the BLOB repository
if ($allBSTablesExist)
{
?>
<?php echo $strBLOBRepositoryEnabled; ?>
</fieldset>
<fieldset class="tblFooters">
<input type="hidden" name="db_blob_streaming_op" value="disable" />
<input type="submit" onclick="return confirmDisableRepository('<?php echo $db; ?>');" value="<?php echo $strBLOBRepositoryDisable; ?>" />
</fieldset>
<?php
}
else
{
// if any of the blobstreaming tables are missing, provide option to repair the BLOB repository
if ($oneBSTableExists && !$allBSTablesExist)
{
?>
<?php echo $strBLOBRepositoryDamaged; ?>
</fieldset>
<fieldset class="tblFooters">
<input type="hidden" name="db_blob_streaming_op" value="repair" />
<input type="submit" value="<?php echo $strBLOBRepositoryRepair; ?>" />
</fieldset>
<?php
}
// if none of the blobstreaming tables exist, provide option to enable BLOB repository
else
{
?>
<?php echo $strBLOBRepositoryDisabled; ?>
</fieldset>
<fieldset class="tblFooters">
<input type="hidden" name="db_blob_streaming_op" value="enable" />
<input type="submit" value="<?php echo $strBLOBRepositoryEnable; ?>" />
</fieldset>
<?php
}
} // end if ($allBSTablesExist)
?>
</form>
<?php
} // end if ($PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST'))
} // end if ($PMA_Config->get('PBXT_NAME') !== strtolower($db))
}
/** /**
* Change database charset * Change database charset
*/ */

View File

@@ -186,7 +186,27 @@ $hidden_fields = array();
$odd_row = true; $odd_row = true;
$sum_row_count_pre = ''; $sum_row_count_pre = '';
// added by rajk - for blobstreaming
$PMA_Config = $_SESSION['PMA_Config'];
if (!empty ($PMA_Config))
$session_bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES'); // list of blobstreaming tables
$tableReductionCount = 0; // the amount to reduce the table count by
foreach ($tables as $keyname => $each_table) { foreach ($tables as $keyname => $each_table) {
if (isset($session_bs_tables))
{
// compare table name against blobstreaming tables
foreach ($session_bs_tables as $table_key=>$table_val)
// if the table is a blobstreaming table, reduce table count and skip outer foreach loop
if ($table_key == $keyname)
{
$tableReductionCount++;
continue 2;
}
}
// loic1: Patch from Joshua Nye <josh at boxcarmedia.com> to get valid // loic1: Patch from Joshua Nye <josh at boxcarmedia.com> to get valid
// statistics whatever is the table type // statistics whatever is the table type
@@ -422,7 +442,14 @@ if ($is_show_stats) {
<tbody> <tbody>
<tr><td></td> <tr><td></td>
<th align="center" nowrap="nowrap"> <th align="center" nowrap="nowrap">
<?php echo sprintf($strTables, PMA_formatNumber($num_tables, 0)); ?> <?php
// for blobstreaming - if the number of tables is 0, set tableReductionCount to 0
// (we don't want negative numbers here) - rajk
if ($num_tables == 0)
$tableReductionCount = 0;
echo sprintf($strTables, PMA_formatNumber($num_tables - $tableReductionCount, 0));
?>
</th> </th>
<th colspan="<?php echo ($db_is_information_schema ? 3 : 6) ?>" align="center"> <th colspan="<?php echo ($db_is_information_schema ? 3 : 6) ?>" align="center">
<?php echo $strSum; ?></th> <?php echo $strSum; ?></th>

View File

@@ -190,6 +190,28 @@ function confirmQuery(theForm1, sqlQuery1)
} // end of the 'confirmQuery()' function } // end of the 'confirmQuery()' function
/**
* Displays a confirmation box before disabling the BLOB repository for a given database.
* This function is called while clicking links
*
* @param object the database
*
* @return boolean whether to disable the repository or not
*/
function confirmDisableRepository(theDB)
{
// Confirmation is not required in the configuration file
// or browser is Opera (crappy js implementation)
if (PMA_messages['strDoYouReally'] == '' || typeof(window.opera) != 'undefined') {
return true;
}
var is_confirmed = confirm(PMA_messages['strBLOBRepositoryDisableStrongWarning'] + '\n' + PMA_messages['strBLOBRepositoryDisableAreYouSure']);
return is_confirmed;
} // end of the 'confirmDisableBLOBRepository()' function
/** /**
* Displays an error message if the user submitted the sql query form with no * Displays an error message if the user submitted the sql query form with no
* sql query, else checks for "DROP/DELETE/ALTER" statements * sql query, else checks for "DROP/DELETE/ALTER" statements
@@ -1217,3 +1239,67 @@ function pdfPaperSize(format, axis) {
return 0; return 0;
} }
/**
* rajk - for playing media from the BLOB repository
*
* @param var
* @param var bs_ref BLOB repository reference
* @param var m_type type of BLOB repository media
* @param var w_width width of popup window
* @param var w_height height of popup window
*/
function popupBSMedia(bs_ref, m_type, w_width, w_height)
{
// if width not specified, use default
if (w_width == undefined)
w_width = 640;
// if height not specified, use default
if (w_height == undefined)
w_height = 480;
// open popup window (for displaying video/playing audio)
var mediaWin = window.open('bs_play_media.php?bs_reference=' + bs_ref + '&media_type=' + m_type, 'viewBSMedia', 'width=' + w_width + ', height=' + w_height + ', resizable=1, scrollbars=1, status=0');
}
/**
* rajk - popups a request for changing MIME types for files in the BLOB repository
*
* @param var db database name
* @param var table table name
* @param var reference BLOB repository reference
* @param var current_mime_type current MIME type associated with BLOB repository reference
*/
function requestMIMETypeChange(db, table, reference, current_mime_type)
{
// no mime type specified, set to default (nothing)
if (undefined == current_mime_type)
current_mime_type == "";
// prompt user for new mime type
var new_mime_type = prompt("Enter custom MIME type", current_mime_type);
// if new mime_type is specified and is not the same as the previous type, request for mime type change
if (new_mime_type && new_mime_type != current_mime_type)
changeMIMEType(db, table, reference, new_mime_type);
}
/**
* rajk - changes MIME types for files in the BLOB repository
*
* @param var db database name
* @param var table table name
* @param var reference BLOB repository reference
* @param var mime_type new MIME type to be associated with BLOB repository reference
*/
function changeMIMEType(db, table, reference, mime_type)
{
// specify url and parameters for mootools AJAx request
var url = 'bs_change_mime_type.php';
var params = { bs_db: db, bs_table: table, bs_reference: reference, bs_new_mime_type: mime_type };
// create AJAX object with above options and execute request
var chgRequest = new Ajax('bs_change_mime_type.php', { method: 'post', data: params, evalScripts: true });
chgRequest.request();
}

View File

@@ -1102,4 +1102,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1101,4 +1101,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1103,4 +1103,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1098,4 +1098,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1095,4 +1095,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1078,4 +1078,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1101,4 +1101,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1075,4 +1075,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1098,4 +1098,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1073,4 +1073,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1103,4 +1103,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1082,4 +1082,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1076,4 +1076,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1099,4 +1099,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -86,6 +86,18 @@ $strBinLogName = 'Log name';
$strBinLogOriginalPosition = 'Original position'; $strBinLogOriginalPosition = 'Original position';
$strBinLogPosition = 'Position'; $strBinLogPosition = 'Position';
$strBinLogServerId = 'Server ID'; $strBinLogServerId = 'Server ID';
$strBLOBRepository = 'BLOB Repository';
$strBLOBRepositoryDamaged = 'Damaged';
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?';
$strBLOBRepositoryDisabled = 'Disabled';
$strBLOBRepositoryDisable = 'Disable';
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!';
$strBLOBRepositoryEnabled = 'Enabled';
$strBLOBRepositoryEnable = 'Enable';
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference';
$strBLOBRepositoryRepair = 'Repair';
$strBLOBRepositoryStatus = 'Status';
$strBLOBRepositoryUpload = 'Upload to BLOB repository';
$strBookmarkAllUsers = 'Let every user access this bookmark'; $strBookmarkAllUsers = 'Let every user access this bookmark';
$strBookmarkCreated = 'Bookmark %s created'; $strBookmarkCreated = 'Bookmark %s created';
$strBookmarkDeleted = 'The bookmark has been deleted.'; $strBookmarkDeleted = 'The bookmark has been deleted.';

View File

@@ -1083,4 +1083,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1074,4 +1074,16 @@ $strYes = 'Oui';
$strZeroRemovesTheLimit = 'Note: Une valeur de 0 (zero) enlève la limite.'; $strZeroRemovesTheLimit = 'Note: Une valeur de 0 (zero) enlève la limite.';
$strZip = '"zippé"'; $strZip = '"zippé"';
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1076,4 +1076,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1103,4 +1103,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1083,4 +1083,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1100,4 +1100,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1095,4 +1095,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1103,4 +1103,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1094,4 +1094,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1093,4 +1093,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1078,4 +1078,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1094,4 +1094,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1098,4 +1098,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1100,4 +1100,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1093,4 +1093,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1078,4 +1078,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1115,4 +1115,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1098,4 +1098,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1075,4 +1075,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1100,4 +1100,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1071,4 +1071,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1104,4 +1104,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1092,4 +1092,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1079,4 +1079,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1077,4 +1077,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1080,4 +1080,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1078,4 +1078,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1097,4 +1097,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1073,4 +1073,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1075,4 +1075,16 @@ $strYes = 'Ja';
$strZeroRemovesTheLimit = 'Anm: Genom att sätta dessa alternativ till 0 (noll) tas begränsningarna bort.'; $strZeroRemovesTheLimit = 'Anm: Genom att sätta dessa alternativ till 0 (noll) tas begränsningarna bort.';
$strZip = '"zippad"'; $strZip = '"zippad"';
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1089,4 +1089,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1099,4 +1099,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1083,4 +1083,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -1097,4 +1097,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate $strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //to translate $strPHPExtension = 'PHP extension'; //to translate
$strCustomColor = 'Custom color'; //to translate $strCustomColor = 'Custom color'; //to translate
$strBLOBRepository = 'BLOB Repository'; //to translate
$strBLOBRepositoryDamaged = 'Damaged'; //to translate
$strBLOBRepositoryDisableAreYouSure = 'Are you sure you want to disable all BLOB references fot database %s?'; //to translate
$strBLOBRepositoryDisabled = 'Disabled'; //to translate
$strBLOBRepositoryDisable = 'Disable'; //to translate
$strBLOBRepositoryDisableStrongWarning = 'You are about to DISABLE a BLOB Repository!'; //to translate
$strBLOBRepositoryEnabled = 'Enabled'; //to translate
$strBLOBRepositoryEnable = 'Enable'; //to translate
$strBLOBRepositoryRemove = 'Remove BLOB Repository Reference'; //to translate
$strBLOBRepositoryRepair = 'Repair'; //to translate
$strBLOBRepositoryStatus = 'Status'; //to translate
$strBLOBRepositoryUpload = 'Upload to BLOB repository'; //to translate
?> ?>

View File

@@ -12,6 +12,7 @@
* @todo when uploading a file into a blob field, should we also consider using * @todo when uploading a file into a blob field, should we also consider using
* chunks like in import? UPDATE `table` SET `field` = `field` + [chunk] * chunks like in import? UPDATE `table` SET `field` = `field` + [chunk]
*/ */
class PMA_File class PMA_File
{ {
/** /**
@@ -69,6 +70,11 @@ class PMA_File
*/ */
var $_charset = null; var $_charset = null;
/**
* @staticvar string most recent BLOB repository reference
*/
static $_recent_bs_reference = NULL;
/** /**
* constructor * constructor
* *
@@ -250,6 +256,8 @@ class PMA_File
* @access public * @access public
* @uses PMA_File::fetchUploadedFromTblChangeRequestMultiple() * @uses PMA_File::fetchUploadedFromTblChangeRequestMultiple()
* @uses PMA_File::setUploadedFile() * @uses PMA_File::setUploadedFile()
* @uses PMA_File::setRecentBLOBReference()
* @uses curl_setopt_array()
* @uses PMA_File::$_error_message * @uses PMA_File::$_error_message
* @uses $GLOBALS['strUploadErrorIniSize'] * @uses $GLOBALS['strUploadErrorIniSize']
* @uses $GLOBALS['strUploadErrorFormSize'] * @uses $GLOBALS['strUploadErrorFormSize']
@@ -270,10 +278,128 @@ class PMA_File
} }
$file = $_FILES['fields_upload_' . $key]; $file = $_FILES['fields_upload_' . $key];
if (null !== $primary) { if (null !== $primary) {
$file = PMA_File::fetchUploadedFromTblChangeRequestMultiple($file, $primary); $file = PMA_File::fetchUploadedFromTblChangeRequestMultiple($file, $primary);
} }
// rajk - for blobstreaming
$is_bs_upload = FALSE;
// check if this field requires a repository upload
if (isset($_REQUEST['upload_blob_repo_' . $key]))
$is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
// if request is an upload to the BLOB repository
if ($is_bs_upload)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration is loaded
if (!empty($PMA_Config))
{
// load BS variables from PMA configuration
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
$curlExists = $PMA_Config->get('CURL_EXISTS');
$bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
$bs_database = $bs_database[$_REQUEST['db']];
$allBSTablesExist = TRUE;
// determine if plugins and curl exist
if ($pluginsExist && $curlExists)
{
foreach ($bs_database as $table_key=>$table)
{
if (!$bs_database[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
}
}
else
$allBSTablesExist = FALSE;
// if necessary BS tables exist
if ($allBSTablesExist)
{
// setup bs variables for uploading
$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER');
$bs_db = $_REQUEST['db'];
$bs_table = $_REQUEST['table'];
// setup file handle and related variables
$tmp_file = fopen($file['tmp_name'], 'r');
$tmp_file_type = $file['type'];
$tmp_file_size = $file['size'];
if (!$tmp_file_type)
$tmp_file_type = NULL;
// if none of the required variables contain data, return with an unknown error message
if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size)
{
$this->_error_message = $GLOBALS['strUploadErrorUnknown'];
return FALSE;
}
else
$bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table;
// init curl handle
$curlHnd = curl_init ($bs_server_path);
// if curl handle init successful
if ($curlHnd)
{
// specify custom header
$customHeader = array(
"Accept-Language: en-us;en;q=0;5",
"Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7",
"Content-type: $tmp_file_type"
);
// specify CURL options in array
$curlOptArr = array(
CURLOPT_PUT => TRUE,
CURLOPT_HEADER => TRUE,
CURLOPT_HTTPHEADER => $customHeader,
CURLOPT_INFILESIZE => $tmp_file_size,
CURLOPT_INFILE => $tmp_file,
CURLOPT_RETURNTRANSFER => TRUE
);
// pass array of options to curl handle setup function
curl_setopt_array($curlHnd, $curlOptArr);
// execute curl request and retrieve error message(s) (if any)
$ret = curl_exec($curlHnd);
$errRet = curl_error($curlHnd);
// close curl handle
curl_close($curlHnd);
// split entire string into array of lines
$retArr = explode("\r\n", $ret);
// check each line as a valid string of a BLOB reference
foreach ($retArr as $value)
if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4))
{
// is a valid reference, so set as current and break
PMA_File::setRecentBLOBReference($value);
break;
}
// close file handle
if ($tmp_file)
fclose($tmp_file);
} // end if ($curlHnd)
} // end if ($allBSTablesExist)
} // end if ($PMA_Config)
} // end if ($is_bs_upload)
// check for file upload errors // check for file upload errors
switch ($file['error']) { switch ($file['error']) {
// cybot_tm: we do not use the PHP constants here cause not all constants // cybot_tm: we do not use the PHP constants here cause not all constants
@@ -365,12 +491,279 @@ class PMA_File
if (! empty($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]) if (! empty($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary])
&& is_string($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary])) { && is_string($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary])) {
// ... whether with multiple rows ... // ... whether with multiple rows ...
// rajk - for blobstreaming
$is_bs_upload = FALSE;
// check if this field requires a repository upload
if (isset($_REQUEST['upload_blob_repo_' . $key]))
$is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
// is a request to upload file to BLOB repository using uploadDir mechanism
if ($is_bs_upload)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if the PMA configuration was loaded
if (!empty($PMA_Config))
{
// load BS variables from PMA configuration
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
$curlExists = $PMA_Config->get('CURL_EXISTS');
$bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
$bs_database = $bs_database[$_REQUEST['db']];
$allBSTablesExist = TRUE;
// if plugins and curl exist
if ($pluginsExist && $curlExists)
{
foreach ($bs_database as $table_key=>$table)
{
if (!$bs_database[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
}
}
else
$allBSTablesExist = FALSE;
// if necessary BS tables exist
if ($allBSTablesExist)
{
// load BS variables
$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER');
$bs_db = $_REQUEST['db'];
$bs_table = $_REQUEST['table'];
// setup uploadDir mechanism and file variables
$tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary];
$tmp_file = fopen($tmp_filename, 'r');
$tmp_file_size = filesize($tmp_filename);
// check if fileinfo library exists
if ($PMA_Config->get('FILEINFO_EXISTS'))
{
// attempt to init fileinfo
$finfo = finfo_open(FILEINFO_MIME);
// fileinfo exists
if ($finfo)
{
// pass in filename to fileinfo and close fileinfo handle after
$tmp_file_type = finfo_file($finfo, $tmp_filename);
finfo_close($finfo);
}
}
else // no fileinfo library exists, use file command
$tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename));
if (!$tmp_file_type)
$tmp_file_type = NULL;
// necessary variables aren't loaded, return error message (unknown error)
if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size)
{
$this->_error_message = $GLOBALS['strUploadErrorUnknown'];
return FALSE;
}
else
$bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table;
// init curl handle
$curlHnd = curl_init ($bs_server_path);
// curl handle exists
if ($curlHnd)
{
// specify custom header
$customHeader = array(
"Accept-Language: en-us;en;q=0;5",
"Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7",
"Content-type: $tmp_file_type"
);
// specify custom curl options
$curlOptArr = array(
CURLOPT_PUT => TRUE,
CURLOPT_HEADER => TRUE,
CURLOPT_HTTPHEADER => $customHeader,
CURLOPT_INFILESIZE => $tmp_file_size,
CURLOPT_INFILE => $tmp_file,
CURLOPT_RETURNTRANSFER => TRUE
);
// setup custom curl options (as specified in above array)
curl_setopt_array($curlHnd, $curlOptArr);
// execute curl request and retrieve error message(s) (if any)
$ret = curl_exec($curlHnd);
$errRet = curl_error($curlHnd);
// close curl handle
curl_close($curlHnd);
// split return string into lines
$retArr = explode("\r\n", $ret);
// check subsequent lines for valid BLOB reference string
foreach ($retArr as $value)
if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4))
{
// is a valid reference, so set as current and break
PMA_File::setRecentBLOBReference($value);
break;
}
// close file handle
if ($tmp_file)
fclose($tmp_file);
} // end if ($curlHnd)
} // end if ($allBSTablesExist)
} // end if ($PMA_Config)
} // end if ($is_bs_upload)
return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]); return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary]);
} else { } else {
return false; return false;
} }
} elseif (! empty($_REQUEST['fields_uploadlocal_' . $key]) } elseif (! empty($_REQUEST['fields_uploadlocal_' . $key])
&& is_string($_REQUEST['fields_uploadlocal_' . $key])) { && is_string($_REQUEST['fields_uploadlocal_' . $key])) {
// rajk - for blobstreaming
$is_bs_upload = FALSE;
// check if this field requires a repository upload
if (isset($_REQUEST['upload_blob_repo_' . $key]))
$is_bs_upload = ($_REQUEST['upload_blob_repo_' . $key]['multi_edit'][0] == "on") ? TRUE : FALSE;
// is a request to upload file to BLOB repository using uploadDir mechanism
if ($is_bs_upload)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if the PMA configuration was loaded
if (!empty($PMA_Config))
{
// load BS variables from PMA configuration
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
$curlExists = $PMA_Config->get('CURL_EXISTS');
$bs_database = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
$bs_database = $bs_database[$_REQUEST['db']];
$allBSTablesExist = TRUE;
// if plugins and curl exist
if ($pluginsExist && $curlExists)
{
foreach ($bs_database as $table_key=>$table)
{
if (!$bs_database[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
}
}
else
$allBSTablesExist = FALSE;
if ($allBSTablesExist)
{
// load BS variables
$bs_server = $PMA_Config->get('BLOBSTREAMING_SERVER');
$bs_db = $_REQUEST['db'];
$bs_table = $_REQUEST['table'];
// setup uploadDir mechanism and file variables
$tmp_filename = $GLOBALS['cfg']['UploadDir'] . '/' . $_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary];
$tmp_file = fopen($tmp_filename, 'r');
$tmp_file_size = filesize($tmp_filename);
// check if fileinfo library exists
if ($PMA_Config->get('FILEINFO_EXISTS'))
{
// attempt to init fileinfo
$finfo = finfo_open(FILEINFO_MIME);
// if fileinfo exists
if ($finfo)
{
// pass in filename to fileinfo and close fileinfo handle after
$tmp_file_type = finfo_file($finfo, $tmp_filename);
finfo_close($finfo);
}
}
else // no fileinfo library exists, use file command
$tmp_file_type = exec("file -bi " . escapeshellarg($tmp_filename));
if (!$tmp_file_type)
$tmp_file_type = NULL;
// necessary variables aren't loaded, return error message (unknown error)
if (!$bs_server || !$bs_db || !$bs_table || !$tmp_file || !$tmp_file_size)
{
$this->_error_message = $GLOBALS['strUploadErrorUnknown'];
return FALSE;
}
else
$bs_server_path = 'http://' . $bs_server . '/' . $bs_db . '/' . $bs_table;
// init curl handle
$curlHnd = curl_init ($bs_server_path);
// if curl handle exists
if ($curlHnd)
{
// specify custom header
$customHeader = array(
"Accept-Language: en-us;en;q=0;5",
"Accept-Charset: ISO-8859-1;utf-8;q=0.7,*;q=0.7",
"Content-type: $tmp_file_type"
);
// specify custom curl options
$curlOptArr = array(
CURLOPT_PUT => TRUE,
CURLOPT_HEADER => TRUE,
CURLOPT_HTTPHEADER => $customHeader,
CURLOPT_INFILESIZE => $tmp_file_size,
CURLOPT_INFILE => $tmp_file,
CURLOPT_RETURNTRANSFER => TRUE
);
// setup custom curl options (as specified in above array)
curl_setopt_array($curlHnd, $curlOptArr);
// execute curl request and retrieve error message(s) (if any)
$ret = curl_exec($curlHnd);
$errRet = curl_error($curlHnd);
// close curl handle
curl_close($curlHnd);
// split return string into lines
$retArr = explode("\r\n", $ret);
// check subsequent lines for valid BLOB reference string
foreach ($retArr as $value)
if (strlen($value) > strlen("~*$bs_db/~") && "~*$bs_db/~" == substr($value, 0, strlen($bs_db) + 4))
{
// is a valid reference, so set as current and break
PMA_File::setRecentBLOBReference($value);
break;
}
// close file handle
if ($tmp_file)
fclose($tmp_file);
} // end if ($curlHnd)
} // end if ($allBSTablesExist)
} // end if ($PMA_Config)
} // end if ($is_bs_upload)
return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]); return $this->setLocalSelectedFile($_REQUEST['fields_uploadlocal_' . $key]);
} }
@@ -861,5 +1254,30 @@ class PMA_File
} }
} }
/**
* sets reference to most recent BLOB repository reference
*
* @access static public
* @param string - BLOB repository reference
*/
static function setRecentBLOBReference($ref)
{
PMA_File::$_recent_bs_reference = $ref;
}
/**
* retrieves reference to most recent BLOB repository reference
*
* @access static public
* @return string - most recent BLOB repository reference
*/
static function getRecentBLOBReference()
{
$ref = PMA_File::$_recent_bs_reference;
PMA_File::$_recent_bs_reference = NULL;
return $ref;
}
} }
?> ?>

View File

@@ -0,0 +1,717 @@
<?php
/**
* @author Raj Kissu Rajandran
* @version 1.0
* @package BLOBStreaming
*/
/**
* checks whether the necessary plugins for BLOBStreaming exist
*
* @access public
* @uses PMA_Config::get()
* @uses PMA_Config::settings()
* @uses PMA_Config::set()
* @uses PMA_PluginsExist()
* @uses PMA_BS_SetVariables()
* @uses PMA_BS_GetVariables()
* @uses PMA_BS_SetFieldReferences()
* @return boolean
*/
function checkBLOBStreamingPlugins()
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// retrieve default server configuration
$serverCfg = $PMA_Config->get('Servers');
$serverCfg = $serverCfg[$PMA_Config->settings['ServerDefault']];
// return if unable to retrieve default server configuration
if (!$serverCfg)
return FALSE;
// if PHP extension in use is 'mysql', specify element 'PersistentConnections'
if ($serverCfg['extension'] == "mysql")
$serverCfg['PersistentConnections'] = $PMA_Config->settings['PersistentConnections'];
// if connection type is TCP, unload socket variable
if (strtolower($serverCfg['connect_type']) == "tcp")
$serverCfg['socket'] = "";
// define BS Plugin variables
$allPluginsExist = TRUE;
$PMA_Config->set('PBXT_NAME', 'pbxt');
$PMA_Config->set('PBMS_NAME', 'mybs');
$plugins[$PMA_Config->get('PBXT_NAME')]['Library'] = 'libpbxt.so';
$plugins[$PMA_Config->get('PBXT_NAME')]['Exists'] = FALSE;
$plugins[$PMA_Config->get('PBMS_NAME')]['Library'] = 'libmybs.so';
$plugins[$PMA_Config->get('PBMS_NAME')]['Exists'] = FALSE;
// retrieve state of BS plugins
PMA_PluginsExist($plugins);
foreach ($plugins as $plugin_key=>$plugin)
if (!$plugin['Exists'])
{
$allPluginsExist = FALSE;
break;
} // end if (!$plugin['Exists'])
// set variable indicating BS plugin existance
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', $allPluginsExist);
// do the plugins exist?
if ($allPluginsExist)
{
// retrieve BS variables from PMA configuration
$bs_set_variables = array();
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_garbage_threshold'] = (isset($serverCfg['bs_garbage_threshold'])) ? $server['bs_garbage_threshold'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_repository_threshold'] = (isset($serverCfg['bs_repository_threshold'])) ? $server['bs_repository_threshold'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_temp_blob_timeout'] = (isset($serverCfg['bs_temp_blob_timeout'])) ? $server['bs_temp_blob_timeout'] : NULL;
$bs_set_variables[$PMA_Config->get('PBMS_NAME') . '_temp_log_threshold'] = (isset($serverCfg['bs_temp_log_threshold'])) ? $server['bs_temp_log_threshold'] : NULL;
// set BS variables to PMA configuration defaults
PMA_BS_SetVariables($bs_set_variables);
// retrieve updated BS variables (configurable and unconfigurable)
$bs_variables = PMA_BS_GetVariables();
// if no BS variables exist, set plugin existance to false and return
if (count($bs_variables) <= 0)
{
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', FALSE);
return FALSE;
} // end if (count($bs_variables) <= 0)
// switch on BS field references
if (strtolower($bs_variables[$PMA_Config->get('PBMS_NAME') . '_field_references']) == "off")
PMA_BS_SetFieldReferences('ON');
// get BS server port
$BS_PORT = $bs_variables[$PMA_Config->get('PBMS_NAME') . '_port'];
// if no BS server port exists, set plugin existance to false and return
if (!$BS_PORT)
{
$PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', FALSE);
return FALSE;
} // end if (!$BS_PORT)
// add selected BS, CURL and fileinfo library variables to PMA configuration
$PMA_Config->set('BLOBSTREAMING_PORT', $BS_PORT);
$PMA_Config->set('BLOBSTREAMING_HOST', $serverCfg['host']);
$PMA_Config->set('BLOBSTREAMING_SERVER', $serverCfg['host'] . ':' . $BS_PORT);
$PMA_Config->set('CURL_EXISTS', FALSE);
$PMA_Config->set('FILEINFO_EXISTS', FALSE);
// check if CURL exists
if (function_exists("curl_init"))
{
// initialize curl handler
$curlHnd = curl_init();
// CURL exists, set necessary variable and close resource
if (!empty($curlHnd))
{
$PMA_Config->set('CURL_EXISTS', TRUE);
curl_close($curlHnd);
} // end if (!empty($curlHnd))
} // end if (function_exists("curl_init"))
// check if PECL's fileinfo library exist
$finfo = NULL;
if (function_exists("finfo_open"))
$finfo = finfo_open(FILEINFO_MIME);
// fileinfo library exists, set necessary variable and close resource
if (!empty($finfo))
{
$PMA_Config->set('FILEINFO_EXISTS', TRUE);
finfo_close($finfo);
} // end if (!empty($finfo))
} // end if ($allPluginsExist)
else
return FALSE;
$bs_tables = array();
// specify table structure for BS reference table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_reference'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_reference']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_reference
(
Table_name CHAR(64) COMMENT 'The name of the referencing table',
Blob_id BIGINT COMMENT 'The BLOB reference number - part of the BLOB URL',
Column_name CHAR(64) COMMENT 'The column name of the referencing field',
Row_condition VARCHAR(255) COMMENT 'This condition identifies the row in the table',
Blob_url VARCHAR(200) COMMENT 'The BLOB URL for HTTP GET access',
Repository_id INT COMMENT 'The repository file number of the BLOB',
Repo_blob_offset BIGINT COMMENT 'The offset in the repository file',
Blob_size BIGINT COMMENT 'The size of the BLOB in bytes',
Deletion_time TIMESTAMP COMMENT 'The time the BLOB was deleted',
Remove_in INT COMMENT 'The number of seconds before the reference/BLOB is removed perminently',
Temp_log_id INT COMMENT 'Temporary log number of the referencing deletion entry',
Temp_log_offset BIGINT COMMENT 'Temporary log offset of the referencing deletion entry'
) ENGINE=MyBS;
EOD;
// specify table structure for BS repository table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_repository'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_repository']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_repository
(
Repository_id INT COMMENT 'The repository file number',
Repo_blob_offset BIGINT COMMENT 'The offset of the BLOB in the repository file',
Blob_size BIGINT COMMENT 'The size of the BLOB in bytes',
Head_size SMALLINT UNSIGNED COMMENT 'The size of the BLOB header - proceeds the BLOB data',
Access_code INT COMMENT 'The 4-byte authorisation code required to access the BLOB - part of the BLOB URL',
Creation_time TIMESTAMP COMMENT 'The time the BLOB was created',
Last_ref_time TIMESTAMP COMMENT 'The last time the BLOB was referenced',
Last_access_time TIMESTAMP COMMENT 'The last time the BLOB was accessed (read)',
Content_type CHAR(128) COMMENT 'The content type of the BLOB - returned by HTTP GET calls',
Blob_data LONGBLOB COMMENT 'The data of this BLOB'
// load PMA configuration
) ENGINE=MyBS;
EOD;
// specify table structure for BS custom content type table
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_custom_content_type'] = array();
$bs_tables[$PMA_Config->get('PBMS_NAME') . '_custom_content_type']['struct'] = <<<EOD
CREATE TABLE {$PMA_Config->get('PBMS_NAME')}_custom_content_type
(
Blob_url VARCHAR(200) COMMENT 'The BLOB URL for HTTP GET access',
Content_type VARCHAR(255) COMMENT 'The custom MIME type for a given BLOB reference as specified by the user',
PRIMARY KEY(Blob_url)
);
EOD;
// add BS tables to PMA configuration
$PMA_Config->set('BLOBSTREAMING_TABLES', $bs_tables);
return TRUE;
}
/**
* checks for databases that support BLOBStreaming
*
* @access public
* @uses PMA_GetDatabases()
* @uses PMA_TablesExist()
* @uses PMA_Config::set()
*/
function checkBLOBStreamableDatabases()
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return;
// retrieve BS tables from PMA configuration
$session_bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES');
$bs_databases = array();
$bs_tables = array();
// return if BS tables do not exist
if (!$session_bs_tables)
return;
foreach ($session_bs_tables as $table_key=>$table)
{
$bs_tables[$table_key] = array();
$bs_tables[$table_key]['Exists'] = FALSE;
}
// retrieve MySQL databases
$databases = PMA_GetDatabases();
// check if BS tables exist for each database
foreach ($databases as $db_key=>$db_name)
{
$bs_databases[$db_name] = $bs_tables;
PMA_TablesExist($bs_databases[$db_name], $db_name);
}
// set BS databases in PMA configuration
$PMA_Config->set('BLOBSTREAMABLE_DATABASES', $bs_databases);
}
/**
* checks whether a set of plugins exist
*
* @access public
* @param array - a list of plugin names and accompanying library filenames to check for
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
*/
function PMA_PluginsExist(&$plugins)
{
if (PMA_MYSQL_INT_VERSION < 50109) {
return;
}
// run query to retrieve MySQL plugins
$query = "SHOW PLUGINS";
$result = PMA_DBI_query($query);
// while there are records to parse
while ($data = @PMA_DBI_fetch_assoc($result))
{
// reset plugin state
$state = TRUE;
// check if required plugins exist
foreach ($plugins as $plugin_key=>$plugin)
if (!$plugin['Exists'])
if (
strtolower($data['Library']) == strtolower($plugin['Library']) &&
$data['Status'] == "ACTIVE"
)
$plugins[$plugin_key]['Exists'] = TRUE;
else
if ($state)
$state = FALSE;
// break if all necessary plugins are found before all records are parsed
if ($state)
break;
} // end while ($data = @PMA_DBI_fetch_assoc($result))
}
/**
* checks whether a given set of tables exist in a given database
*
* @access public
* @param array - list of tables to look for
* @param string - name of database
* @uses PMA_DBI_select_db()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
*/
function PMA_TablesExist(&$tables, $db_name)
{
// select specified database
PMA_DBI_select_db($db_name);
// run query to retrieve tables in specified database
$query = "SHOW TABLES";
$result = PMA_DBI_query($query);
// while there are records to parse
while ($data = @PMA_DBI_fetch_assoc($result))
{
$state = TRUE;
// check if necessary tables exist
foreach ($tables as $table_key=>$table)
if (!$table['Exists'])
if ($data['Tables_in_' . $db_name] == $table_key)
$tables[$table_key]['Exists'] = TRUE;
else
if ($state)
$state = FALSE;
// break if necessary tables are found before all records are parsed
if ($state)
break;
} // end while ($data = @PMA_DBI_fetch_assoc($result))
}
/**
* returns a list of databases
*
* @access public
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return array - list of databases acquired via MySQL
*/
function PMA_GetDatabases()
{
// run query to retrieve databases
$query = "SHOW DATABASES";
$result = PMA_DBI_query($query);
$databases = array();
// while there are records to parse
while ($data = @PMA_DBI_fetch_assoc($result))
$databases[] = $data['Database'];
// return list of databases
return $databases;
}
/**
* sets BLOBStreaming variables to a list of specified arguments
* @access public
* @uses PMA_DBI_query()
* @returns boolean - success of variables setup
*/
function PMA_BS_SetVariables($bs_variables)
{
// if no variables exist in array, return false
if (empty($bs_variables) || count($bs_variables) == 0)
return FALSE;
// set BS variables to those specified in array
foreach ($bs_variables as $key=>$val)
if (!is_null($val) && strlen($val) > 0)
{
// set BS variable to specified value
$query = "SET GLOBAL $key=" . PMA_sqlAddSlashes($val);
$result = PMA_DBI_query($query);
// if query fails execution, return false
if (!$result)
return FALSE;
} // end if (!is_null($val) && strlen($val) > 0)
// return true on success
return TRUE;
}
/**
* returns a list of BLOBStreaming variables used by MySQL
*
* @access public
* @uses PMA_Config::get()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return array - list of BLOBStreaming variables
*/
function PMA_BS_GetVariables()
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return NULL;
// run query to retrieve BS variables
$query = "SHOW VARIABLES LIKE '%" . $PMA_Config->get('PBMS_NAME') . "%'";
$result = PMA_DBI_query($query);
$BS_Variables = array();
// while there are records to retrieve
while ($data = @PMA_DBI_fetch_assoc($result))
$BS_Variables[$data['Variable_name']] = $data['Value'];
// return BS variables
return $BS_Variables;
}
/**
* sets the BLOBStreaming global field references to ON/OFF
*
* @access public
* @param string - ON or OFF
* @uses PMA_Config::get()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @return boolean - success/failure of query execution
*/
function PMA_BS_SetFieldReferences($val)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// set field references to value specified
$query = "SET GLOBAL " . $PMA_Config->get('PBMS_NAME') . "_field_references=" . PMA_sqlAddslashes($val);
$result = PMA_DBI_query($query);
// return success of query execution
if ($result)
return TRUE;
else
return FALSE;
}
/**
* gets the SQL table definition for a given BLOBStreaming table
*
* @access public
* @param string - table name
* @uses PMA_Config::get()
* @return string - SQL table definition
*/
function PMA_BS_GetTableStruct($tbl_name)
{
// retrieve table structures for BS tables
$bs_tables = $_SESSION['PMA_Config']->get('BLOBSTREAMING_TABLES');
// return if tables don't exist
if (!$bs_tables)
return;
// return if specified table doesn't exist in collection of BS tables
if (!isset($bs_tables[$tbl_name]))
return;
// return specified table's structure
return $bs_tables[$tbl_name]['struct'];
}
/**
* creates the BLOBStreaming tables for a given database
*
* @access public
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_DBI_query()
* @uses PMA_BS_GetTableStruct()
* @return boolean - success/failure of transactional query execution
*/
function PMA_BS_CreateTables($db_name)
{
// retrieve BS tables
$bs_tables = $_SESSION['PMA_Config']->get('BLOBSTREAMING_TABLES');
// select specified database
PMA_DBI_select_db($db_name);
// create necessary BS tables for specified database
foreach ($bs_tables as $table_key=>$table)
{
$result = PMA_DBI_query(PMA_BS_GetTableStruct($table_key));
// return false if query execution fails
if (!$result)
return FALSE;
}
// return true on success
return TRUE;
}
/**
* drops BLOBStreaming tables for a given database
*
* @access public
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_DBI_query()
* @return boolean - success/failure of transactional query execution
*/
function PMA_BS_DropTables($db_name)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// retrieve BS tables
$bs_tables = $PMA_Config->get('BLOBSTREAMING_TABLES');
// select specified database
PMA_DBI_select_db($db_name);
// drop BS tables
foreach ($bs_tables as $table_key=>$table)
{
$query = "DROP TABLE IF EXISTS " . PMA_backquote($table_key);
$result = PMA_DBI_query($query);
// return false if query execution fails
if (!$result)
return FALSE;
}
// return true on success
return TRUE;
}
/**
* returns the field name for a primary key of a given table in a given database
*
* @access public
* @param string - database name
* @param string - table name
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return string - field name for primary key
*/
function PMA_BS_GetPrimaryField($db_name, $tbl_name)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return FALSE;
// select specified database
PMA_DBI_select_db($db_name);
// retrieve table fields
$query = "SHOW FULL FIELDS FROM " . PMA_backquote($tbl_name);
$result = PMA_DBI_query($query);
// while there are records to parse
while ($data = PMA_DBI_fetch_assoc($result))
if ("PRI" == $data['Key'])
return $data['Field'];
// return NULL on no primary key
return NULL;
}
/**
* checks whether a BLOB reference exists in the BLOB repository
*
* @access public
* @param string - BLOB reference
* @param string - database name
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_Config::get()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @return boolean - existence of BLOB reference
*/
function PMA_BS_ReferenceExists($bs_reference, $db_name)
{
$referenceExists = FALSE;
// return false on invalid BS reference
if (strlen ($bs_reference) < strlen ("~*$db_name/~") || "~*$db_name/~" != substr ($bs_reference, 0, strlen ($db_name) + 4))
return $referenceExists;
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return $referenceExists;
// select specified database
PMA_DBI_select_db($db_name);
// run query on BS reference retrieval
$query = "SELECT * FROM " . PMA_backquote($PMA_Config->get('PBMS_NAME') . "_reference") . " WHERE Blob_url='" . PMA_sqlAddslashes($bs_reference) . "'";
$result = PMA_DBI_query($query);
// if record exists
if ($data = @PMA_DBI_fetch_assoc($result))
$referenceExists = TRUE;
// return reference existance
return $referenceExists;
}
/**
* creates a HTTP link to a given blob reference for a given database
*
* @access public
* @param string - BLOB reference
* @param string - database name
* @uses PMA_Config::get()
* @uses PMA_DBI_select_db()
* @uses PMA_backquote()
* @uses PMA_sqlAddslashes()
* @uses PMA_DBI_query()
* @uses PMA_DBI_fetch_assoc()
* @return string - HTTP link or Error
*/
function PMA_BS_CreateReferenceLink($bs_reference, $db_name)
{
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// return if unable to load PMA configuration
if (empty($PMA_Config))
return '';
// generate bs reference link
$bs_ref_link = 'http://' . $PMA_Config->get('BLOBSTREAMING_SERVER') . '/' . $bs_reference;
// select specified database
PMA_DBI_select_db($db_name);
$pbms_repo_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_repository");
$pbms_ref_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_reference");
$pbms_cust_content_bq = PMA_backquote($PMA_Config->get('PBMS_NAME') . "_custom_content_type");
// run query on determining specified BS reference
$query = "SELECT $pbms_repo_bq.Content_type, $pbms_cust_content_bq.Content_type AS Custom_type";
$query .= " FROM $pbms_repo_bq LEFT JOIN $pbms_ref_bq ON";
$query .= "$pbms_repo_bq.Repository_id=$pbms_ref_bq.Repository_id";
$query .= " AND $pbms_repo_bq.Blob_size=$pbms_ref_bq.Blob_size";
$query .= " AND $pbms_repo_bq.Repo_blob_offset=$pbms_ref_bq.Repo_blob_offset";
$query .= " LEFT JOIN $pbms_cust_content_bq ON $pbms_cust_content_bq.Blob_url=$pbms_ref_bq.Blob_url";
$query .= " WHERE $pbms_ref_bq.Blob_url='" . PMA_sqlAddslashes($bs_reference) . "'";
$result = PMA_DBI_query($query);
// if record exists
if ($data = @PMA_DBI_fetch_assoc($result))
{
// determine content-type for BS repository file (original or custom)
$content_type = isset($data['Custom_type']) ? $data['Custom_type'] : $data['Content_type'];
if (!$content_type)
$content_type = NULL;
$output = "<a href=\"#\" onclick=\"requestMIMETypeChange('" . urlencode($db_name) . "', '" . urlencode($GLOBALS['table']) . "', '" . urlencode($bs_reference) . "', '" . urlencode($content_type) . "')\">$content_type</a>";
// specify custom HTML for various content types
switch ($content_type)
{
// no content specified
case NULL:
$output = "NULL";
break;
// image content
case 'image/jpeg':
case 'image/png':
$output .= ' (<a href="' . $bs_ref_link . '" target="new">View Image</a>)';
break;
// audio content
case 'audio/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . urlencode($bs_reference) . '\', \'' . $content_type . '\', 640, 120)">Play Audio</a>)';
break;
// video content
case 'application/x-flash-video':
case 'video/mpeg':
$output .= ' (<a href="#" onclick="popupBSMedia(\'' . urlencode($bs_reference) . '\', \'' . $content_type . '\', 640, 480)">View Video</a>)';
break;
// unsupported content. specify download
default:
$output .= ' (<a href="' . $bs_ref_link . '" target="new">Download File</a>)';
}
// return HTML
return $output;
} // end if ($data = @PMA_DBI_fetch_assoc($result))
// return on error
return 'Error';
}
?>

View File

@@ -8,7 +8,7 @@
* *
* Order of sections for common.inc.php: * Order of sections for common.inc.php:
* *
* the authentication libraries must be loaded before db connections * the authentication libraries must be before the connection to db
* *
* ... so the required order is: * ... so the required order is:
* *
@@ -40,6 +40,7 @@ require_once './libraries/Error_Handler.class.php';
* initialize the error handler * initialize the error handler
*/ */
$GLOBALS['error_handler'] = new PMA_Error_Handler(); $GLOBALS['error_handler'] = new PMA_Error_Handler();
$cfg['Error_Handler']['display'] = TRUE;
// at this point PMA_PHP_INT_VERSION is not yet defined // at this point PMA_PHP_INT_VERSION is not yet defined
if (version_compare(phpversion(), '6', 'lt')) { if (version_compare(phpversion(), '6', 'lt')) {
@@ -409,6 +410,10 @@ if (! PMA_isValid($_REQUEST['token']) || $_SESSION[' PMA_token '] != $_REQUEST['
'pma_lang', 'pma_charset', 'pma_collation_connection', 'pma_lang', 'pma_charset', 'pma_collation_connection',
/* Possible login form */ /* Possible login form */
'pma_servername', 'pma_username', 'pma_password', 'pma_servername', 'pma_username', 'pma_password',
/* rajk - for playing blobstreamable media */
'media_type', 'bs_reference',
/* rajk - for changing BLOB repository file MIME type */
'bs_db', 'bs_table', 'bs_ref', 'bs_new_mime_type'
); );
/** /**
* Require cleanup functions * Require cleanup functions
@@ -703,7 +708,7 @@ $GLOBALS['pmaThemeImage'] = $_SESSION['PMA_Theme']->getImgPath();
if (@file_exists($_SESSION['PMA_Theme']->getLayoutFile())) { if (@file_exists($_SESSION['PMA_Theme']->getLayoutFile())) {
include $_SESSION['PMA_Theme']->getLayoutFile(); include $_SESSION['PMA_Theme']->getLayoutFile();
/** /**
* @todo remove if all themes are updated to use Navi instead of Left as frame name * @todo remove if all themes are update use Navi instead of Left as frame name
*/ */
if (! isset($GLOBALS['cfg']['NaviWidth']) if (! isset($GLOBALS['cfg']['NaviWidth'])
&& isset($GLOBALS['cfg']['LeftWidth'])) { && isset($GLOBALS['cfg']['LeftWidth'])) {
@@ -931,6 +936,13 @@ if (! defined('PMA_MINIMUM_COMMON')) {
unset($_SESSION['profiling']); unset($_SESSION['profiling']);
} }
// rajk - library file for blobstreaming
require_once './libraries/blobstreaming.lib.php';
// rajk - checks for blobstreaming plugins and databases that support
// blobstreaming (by having the necessary tables for blobstreaming)
if (checkBLOBStreamingPlugins())
checkBLOBStreamableDatabases();
} // end if !defined('PMA_MINIMUM_COMMON') } // end if !defined('PMA_MINIMUM_COMMON')
// remove sensitive values from session // remove sensitive values from session

View File

@@ -748,7 +748,23 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count =
$table_groups = array(); $table_groups = array();
// for blobstreaming - list of blobstreaming tables - rajk
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
$session_bs_tables = $_SESSION['PMA_Config']->get('BLOBSTREAMING_TABLES');
foreach ($tables as $table_name => $table) { foreach ($tables as $table_name => $table) {
// if BS tables exist
if (isset($session_bs_tables))
// compare table name to tables in list of blobstreaming tables
foreach ($session_bs_tables as $table_key=>$table_val)
// if table is in list, skip outer foreach loop
if ($table_name == $table_key)
continue 2;
// check for correct row count // check for correct row count
if (null === $table['Rows']) { if (null === $table['Rows']) {
@@ -1091,7 +1107,7 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice')
if (! empty($cfg['SQLQuery']['Explain']) && ! $query_too_big) { if (! empty($cfg['SQLQuery']['Explain']) && ! $query_too_big) {
$explain_params = $url_params; $explain_params = $url_params;
// Detect if we are validating as well // Detect if we are validating as well
// To preserve the validate URL data // To preserve the validate uRL data
if (! empty($GLOBALS['validatequery'])) { if (! empty($GLOBALS['validatequery'])) {
$explain_params['validatequery'] = 1; $explain_params['validatequery'] = 1;
} }
@@ -1490,7 +1506,7 @@ function PMA_getTab($tab)
$tab = array_merge($defaults, $tab); $tab = array_merge($defaults, $tab);
// determine additional style-class // determine additionnal style-class
if (empty($tab['class'])) { if (empty($tab['class'])) {
if ($tab['text'] == $GLOBALS['strEmpty'] if ($tab['text'] == $GLOBALS['strEmpty']
|| $tab['text'] == $GLOBALS['strDrop']) { || $tab['text'] == $GLOBALS['strDrop']) {

View File

@@ -129,6 +129,12 @@ $cfg['Servers'][$i]['connect_type'] = 'tcp';
*/ */
$cfg['Servers'][$i]['extension'] = 'mysql'; $cfg['Servers'][$i]['extension'] = 'mysql';
/* rajk - added for blobstreaming */
$cfg['Servers'][$i]['bs_garbage_threshold'] = '';
$cfg['Servers'][$i]['bs_repository_threshold'] = '';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = '';
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '';
/** /**
* Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0) * Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0)
* *

View File

@@ -297,6 +297,33 @@ function PMA_getTableCount($db)
null, PMA_DBI_QUERY_STORE); null, PMA_DBI_QUERY_STORE);
if ($tables) { if ($tables) {
$num_tables = PMA_DBI_num_rows($tables); $num_tables = PMA_DBI_num_rows($tables);
// for blobstreaming - get blobstreaming tables
// for use in determining if a table here is a blobstreaming table - rajk
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration exists
if (!empty($PMA_Config))
{
// load BS tables
$session_bs_tables = $_SESSION['PMA_Config']->get('BLOBSTREAMING_TABLES');
// if BS tables exist
if (isset ($session_bs_tables))
while ($data = PMA_DBI_fetch_assoc($tables))
foreach ($session_bs_tables as $table_key=>$table_val)
// if the table is a blobstreaming table, reduce the table count
if ($data['Tables_in_' . $db] == $table_key)
{
if ($num_tables > 0)
$num_tables--;
break;
}
} // end if PMA configuration exists
PMA_DBI_free_result($tables); PMA_DBI_free_result($tables);
} else { } else {
$num_tables = 0; $num_tables = 0;
@@ -472,9 +499,9 @@ function PMA_checkPageValidity(&$page, $whitelist)
} }
/** /**
* tries to find the value for the given environment variable name * trys to find the value for the given environment vriable name
* *
* searches in $_SERVER, $_ENV then tries getenv() and apache_getenv() * searchs in $_SERVER, $_ENV than trys getenv() and apache_getenv()
* in this order * in this order
* *
* @uses $_SERVER * @uses $_SERVER
@@ -517,7 +544,7 @@ function PMA_removeCookie($cookie)
} }
/** /**
* sets cookie if value is different from current cookie value, * sets cookie if value is different from current cokkie value,
* or removes if value is equal to default * or removes if value is equal to default
* *
* @uses PMA_Config::isHttps() * @uses PMA_Config::isHttps()

View File

@@ -1223,7 +1223,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
$nowrap = ' nowrap'; $nowrap = ' nowrap';
$where_comparison = ' = ' . $row[$i]; $where_comparison = ' = ' . $row[$i];
$vertical_display['data'][$row_no][$i] = '<td align="right"' . PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $row[$i], $transform_function, $transform_options, $default_function, $nowrap, $where_comparison); $vertical_display['data'][$row_no][$i] = '<td align="right"' . PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $row[$i], $transform_function, $default_function, $nowrap, $where_comparison);
} else { } else {
$vertical_display['data'][$row_no][$i] = ' <td align="right"' . $mouse_events . ' class="' . $class . ' nowrap' . ($condition_field ? ' condition' : '') . '">&nbsp;</td>' . "\n"; $vertical_display['data'][$row_no][$i] = ' <td align="right"' . $mouse_events . ' class="' . $class . ' nowrap' . ($condition_field ? ' condition' : '') . '">&nbsp;</td>' . "\n";
} }
@@ -1235,7 +1235,56 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// TEXT fields type so we have to ensure it's really a BLOB // TEXT fields type so we have to ensure it's really a BLOB
$field_flags = PMA_DBI_field_flags($dt_result, $i); $field_flags = PMA_DBI_field_flags($dt_result, $i);
if (stristr($field_flags, 'BINARY')) { if (stristr($field_flags, 'BINARY')) {
// rajk - for blobstreaming
$bs_reference_exists = $allBSTablesExist = FALSE;
// load PMA configuration
$PMA_Config = $_SESSION['PMA_Config'];
// if PMA configuration exists
if ($PMA_Config)
{
// load BS variables
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
// if BS plugins exist
if ($pluginsExist)
{
// load BS databases
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
// if BS db array and specified db string not empty and valid
if (!empty($bs_tables) && strlen($db) > 0)
{
$bs_tables = $bs_tables[$db];
if (isset($bs_tables))
{
$allBSTablesExist = TRUE;
// check if BS tables exist for given database
foreach ($bs_tables as $table_key=>$bs_tbl)
if (!$bs_tables[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
}
}
}
}
// if necessary BS tables exist
if ($allBSTablesExist)
$bs_reference_exists = PMA_BS_ReferenceExists($row[$i], $db);
// if valid BS reference exists
if ($bs_reference_exists)
$blobtext = PMA_BS_CreateReferenceLink($row[$i], $db);
else
$blobtext = PMA_handle_non_printable_contents('BLOB', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta); $blobtext = PMA_handle_non_printable_contents('BLOB', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta);
$vertical_display['data'][$row_no][$i] = ' <td align="left"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">' . $blobtext . '</td>'; $vertical_display['data'][$row_no][$i] = ' <td align="left"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">' . $blobtext . '</td>';
unset($blobtext); unset($blobtext);
} else { } else {
@@ -1290,7 +1339,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// loic1: do not wrap if date field type // loic1: do not wrap if date field type
$nowrap = ((preg_match('@DATE|TIME@i', $meta->type) || $bool_nowrap) ? ' nowrap' : ''); $nowrap = ((preg_match('@DATE|TIME@i', $meta->type) || $bool_nowrap) ? ' nowrap' : '');
$where_comparison = ' = \'' . PMA_sqlAddslashes($row[$i]) . '\''; $where_comparison = ' = \'' . PMA_sqlAddslashes($row[$i]) . '\'';
$vertical_display['data'][$row_no][$i] = '<td ' . PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $row[$i], $transform_function, $transform_options, $default_function, $nowrap, $where_comparison); $vertical_display['data'][$row_no][$i] = '<td ' . PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $row[$i], $transform_function, $default_function, $nowrap, $where_comparison);
} else { } else {
$vertical_display['data'][$row_no][$i] = ' <td' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">&nbsp;</td>' . "\n"; $vertical_display['data'][$row_no][$i] = ' <td' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">&nbsp;</td>' . "\n";
@@ -2159,13 +2208,12 @@ function PMA_handle_non_printable_contents($category, $content, $transform_funct
* @param string $map * @param string $map
* @param string $data * @param string $data
* @param string $transform_function * @param string $transform_function
* @param string $transform_options
* @param string $default_function * @param string $default_function
* @param string $nowrap * @param string $nowrap
* @param string $where_comparison * @param string $where_comparison
* @return string formatted data * @return string formatted data
*/ */
function PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $data, $transform_function, $transform_options, $default_function, $nowrap, $where_comparison) { function PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $data, $transform_function, $default_function, $nowrap, $where_comparison) {
// continue the <td> tag started before calling this function: // continue the <td> tag started before calling this function:
$result = $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . $nowrap . '">'; $result = $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . $nowrap . '">';

View File

@@ -75,9 +75,17 @@ if (in_array('functions.js', $GLOBALS['js_include'])) {
if ($GLOBALS['cfg']['Confirm']) { if ($GLOBALS['cfg']['Confirm']) {
$GLOBALS['js_messages']['strDoYouReally'] = $GLOBALS['strDoYouReally']; $GLOBALS['js_messages']['strDoYouReally'] = $GLOBALS['strDoYouReally'];
$GLOBALS['js_messages']['strDropDatabaseStrongWarning'] = $GLOBALS['strDropDatabaseStrongWarning']; $GLOBALS['js_messages']['strDropDatabaseStrongWarning'] = $GLOBALS['strDropDatabaseStrongWarning'];
// rajk - for blobstreaming
$GLOBALS['js_messages']['strBLOBRepositoryDisableStrongWarning'] = $GLOBALS['strBLOBRepositoryDisableStrongWarning'];
$GLOBALS['js_messages']['strBLOBRepositoryDisableAreYouSure'] = sprintf($GLOBALS['strBLOBRepositoryDisableAreYouSure'], $GLOBALS['db']);
} else { } else {
$GLOBALS['js_messages']['strDoYouReally'] = ''; $GLOBALS['js_messages']['strDoYouReally'] = '';
$GLOBALS['js_messages']['strDropDatabaseStrongWarning'] = ''; $GLOBALS['js_messages']['strDropDatabaseStrongWarning'] = '';
// rajk - for blobstreaming
$GLOBALS['js_messages']['strBLOBRepositoryDisableStrongWarning'] = '';
$GLOBALS['js_messages']['strBLOBRepositoryDisableAreYouSure'] = '';
} }
} elseif (in_array('indexes.js', $GLOBALS['js_include'])) { } elseif (in_array('indexes.js', $GLOBALS['js_include'])) {
$GLOBALS['js_messages']['strFormEmpty'] = $GLOBALS['strFormEmpty']; $GLOBALS['js_messages']['strFormEmpty'] = $GLOBALS['strFormEmpty'];

View File

@@ -999,6 +999,12 @@ function show_server_form($defaults = array(), $number = FALSE) {
array('Server socket', 'socket', 'Socket on which MySQL server is listening, leave empty for default'), array('Server socket', 'socket', 'Socket on which MySQL server is listening, leave empty for default'),
array('Connection type', 'connect_type', 'How to connect to server, keep tcp if unsure', array('tcp', 'socket')), array('Connection type', 'connect_type', 'How to connect to server, keep tcp if unsure', array('tcp', 'socket')),
array('PHP extension to use', 'extension', 'What PHP extension to use, use mysqli if supported', array('mysql', 'mysqli')), array('PHP extension to use', 'extension', 'What PHP extension to use, use mysqli if supported', array('mysql', 'mysqli')),
/* added by rajk - for blobstreaming */
array('PBMS Garbage Threshold', 'bs_garbage_threshold', 'The size in percentage of the garbage level of a BLOB repository file that must be reached for compaction'),
array('PBMS Repository Threshold', 'bs_repository_threshold', 'The size in bytes of a repository file before it is unlocked'),
array('PBMS Temporary BLOB Timeout', 'bs_temp_blob_timeout', 'The time in seconds before a temporary BLOB reference is scheduled for deletion'),
array('PBMS Temporary Log Threshold', 'bs_temp_log_threshold', 'The maximum size in bytes of a PBMS temporary log file'),
/* end of blobstreaming additions */
array('Compress connection', 'compress', 'Whether to compress connection to MySQL server', FALSE), array('Compress connection', 'compress', 'Whether to compress connection to MySQL server', FALSE),
array('Authentication type', 'auth_type', 'Authentication method to use', array('cookie', 'http', 'config', 'signon')), array('Authentication type', 'auth_type', 'Authentication method to use', array('cookie', 'http', 'config', 'signon')),
array('User for config auth', 'user', 'Leave empty if not using config auth'), array('User for config auth', 'user', 'Leave empty if not using config auth'),

View File

@@ -790,6 +790,60 @@ foreach ($rows as $row_id => $vrow) {
if (($cfg['ProtectBinary'] && $field['is_blob']) if (($cfg['ProtectBinary'] && $field['is_blob'])
|| ($cfg['ProtectBinary'] == 'all' && $field['is_binary'])) { || ($cfg['ProtectBinary'] == 'all' && $field['is_binary'])) {
echo "\n"; echo "\n";
// rajk - for blobstreaming
$bs_reference_exists = FALSE;
if (isset ($tbl_type) && strlen ($tbl_type) > 0)
{
// load PMA_Config
$PMA_Config = $_SESSION['PMA_Config'];
if (!empty($PMA_Config))
{
$requiredTblType = $PMA_Config->get('PBXT_NAME');
if ($requiredTblType == strtolower ($tbl_type))
{
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
// check if blobstreaming plugins exist
if ($pluginsExist)
{
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
if (!empty($bs_tables) && strlen($db) > 0)
{
$bs_tables = $bs_tables[$db];
if (isset($bs_tables))
{
$allBSTablesExist = TRUE;
foreach ($bs_tables as $table_key=>$bs_tbl)
if (!$bs_tables[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
if ($allBSTablesExist)
$bs_reference_exists = PMA_BS_ReferenceExists($data, $db);
} // end if (isset($bs_tables))
} // end if (!empty($bs_tables) && strlen($db) > 0)
} // end if ($pluginsExist)
} // end if ($requiredTblType == strtolower ($tbl_type))
} // end if (!empty($PMA_Config))
} // end if (isset ($tbl_type) && strlen ($tbl_type) > 0)
if ($bs_reference_exists)
{
echo '<input type="hidden" name="remove_blob_ref_' . $field['Field_html'] . $vkey . '" value="' . $data . '" />';
echo '<input type="checkbox" name="remove_blob_repo_' . $field['Field_html'] . $vkey . '" /> ' . $strBLOBRepositoryRemove . "<br />";
echo PMA_BS_CreateReferenceLink($data, $db);
echo "<br />";
}
else
{
echo $strBinaryDoNotEdit; echo $strBinaryDoNotEdit;
if (isset($data)) { if (isset($data)) {
$data_size = PMA_formatByteDown(strlen(stripslashes($data)), 3, 1); $data_size = PMA_formatByteDown(strlen(stripslashes($data)), 3, 1);
@@ -797,6 +851,7 @@ foreach ($rows as $row_id => $vrow) {
unset($data_size); unset($data_size);
} }
echo "\n"; echo "\n";
} // end if ($bs_reference_exists)
?> ?>
<input type="hidden" name="fields_type<?php echo $field_name_appendix; ?>" value="protected" /> <input type="hidden" name="fields_type<?php echo $field_name_appendix; ?>" value="protected" />
<input type="hidden" name="fields<?php echo $field_name_appendix; ?>" value="" /> <input type="hidden" name="fields<?php echo $field_name_appendix; ?>" value="" />
@@ -834,6 +889,66 @@ foreach ($rows as $row_id => $vrow) {
// (displayed whatever value the ProtectBinary has) // (displayed whatever value the ProtectBinary has)
if ($is_upload && $field['is_blob']) { if ($is_upload && $field['is_blob']) {
// added by rajk
// check if field type is of longblob
if ($field['pma_type'] == "longblob")
{
if (isset ($tbl_type) && strlen ($tbl_type) > 0)
{
// load PMA Config
$PMA_Config = $_SESSION['PMA_Config'];
// is PMA_Config's data loaded? continue only if it is
if (!empty($PMA_Config))
{
$requiredTblType = $PMA_Config->get('PBXT_NAME');
if ($requiredTblType == strtolower ($tbl_type))
{
$pluginsExist = $PMA_Config->get('BLOBSTREAMING_PLUGINS_EXIST');
// check if blobstreaming plugins exist
if ($pluginsExist)
{
$curlExists = $PMA_Config->get('CURL_EXISTS');
// check if CURL exists
if ($curlExists)
{
$bs_tables = $PMA_Config->get('BLOBSTREAMABLE_DATABASES');
// check for BLOBStreamable databases and if current database name is provided
if (!empty($bs_tables) && strlen($db) > 0)
{
$bs_tables = $bs_tables[$db];
// check if reference to BLOBStreaming tables exists
if (isset($bs_tables))
{
$allBSTablesExist = TRUE;
foreach ($bs_tables as $table_key=>$bs_tbl)
if (!$bs_tables[$table_key]['Exists'])
{
$allBSTablesExist = FALSE;
break;
}
// check if necessary BLOBStreaming tables exist
if ($allBSTablesExist)
{
echo '<br />';
echo '<input type="checkbox" name="upload_blob_repo_' . $field['Field_html'] . $vkey . '" /> ' . $strBLOBRepositoryUpload;
} // end if ($allBSTablesExist)
} // end if (isset($bs_tables)
} // end if (!empty($bs_tables) && strlen ($db) > 0)
} // end if ($curlExists)
} // end if ($pluginsExist)
} // end if ($requiredTblType == strtolower ($tbl_type))
} // end if (!empty($PMA_Config))
} // end if (isset ($tbl_type) && strlen ($tbl_type) > 0)
}
echo '<br />'; echo '<br />';
echo '<input type="file" name="fields_upload_' . $field['Field_html'] . $vkey . '" class="textfield" id="field_' . $idindex . '_3" size="10" />&nbsp;'; echo '<input type="file" name="fields_upload_' . $field['Field_html'] . $vkey . '" class="textfield" id="field_' . $idindex . '_3" size="10" />&nbsp;';

View File

@@ -35,6 +35,7 @@
* @uses $GLOBALS['table'] * @uses $GLOBALS['table']
* @uses $GLOBALS['goto'] * @uses $GLOBALS['goto']
* @uses $GLOBALS['sql_query'] * @uses $GLOBALS['sql_query']
* @uses PMA_File::getRecentBLOBReference()
*/ */
/** /**
@@ -199,10 +200,41 @@ foreach ($loop_array as $rowcount => $primary_key) {
? $_REQUEST['auto_increment']['multi_edit'][$rowcount] ? $_REQUEST['auto_increment']['multi_edit'][$rowcount]
: null; : null;
$primary_field = PMA_BS_GetPrimaryField($GLOBALS['db'], $GLOBALS['table']);
foreach ($me_fields as $key => $val) { foreach ($me_fields as $key => $val) {
require './libraries/tbl_replace_fields.inc.php'; require './libraries/tbl_replace_fields.inc.php';
// rajk - for blobstreaming
if (NULL != $primary_field || strlen($primary_field) > 0)
{
$remove_blob_repo = isset($_REQUEST['remove_blob_repo_' . $key]) ? $_REQUEST['remove_blob_repo_' . $key] : NULL;
$upload_blob_repo = isset($_REQUEST['upload_blob_repo_' . $key]) ? $_REQUEST['upload_blob_repo_' . $key] : NULL;
// checks if an existing blob repository reference should be removed
if (isset($remove_blob_repo) && !isset($upload_blob_repo))
{
$remove_blob_reference = $_REQUEST['remove_blob_ref_' . $key];
if (isset($remove_blob_reference))
$val = "''";
}
// checks if this field requires a bs reference attached to it
$requires_bs_reference = isset($upload_blob_repo);
if ($requires_bs_reference)
{
// get the most recent BLOB reference
$bs_reference = PMA_File::getRecentBLOBReference();
// if the most recent BLOB reference exists, set it as a field value
if (!is_null($bs_reference))
$val = "'" . PMA_sqlAddslashes($bs_reference) . "'";
}
}
if (empty($me_funcs[$key])) { if (empty($me_funcs[$key])) {
$cur_value = $val; $cur_value = $val;
} elseif ('UNIX_TIMESTAMP' === $me_funcs[$key] && $val != "''") { } elseif ('UNIX_TIMESTAMP' === $me_funcs[$key] && $val != "''") {