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)
- 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)
+ [export] properly handle line breaks for YAML, thanks to Dan Barry -

View File

@@ -4207,6 +4207,9 @@ CREDITS, in chronological order
- Ivan A Kirillov
* new relations Designer
- Raj Kissu Rajandran (Google Summer of Code 2008)
* BLOBstreaming support
And also to the following people who have contributed minor changes,
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;
/* Select mysqli if your server has it */
$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 */
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $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/mysql_charsets.lib.php';
// add blobstreaming library functions
require_once "./libraries/blobstreaming.lib.php";
/**
* 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
*/
@@ -275,7 +339,7 @@ if (!$is_information_schema) {
</legend>
<input type="text" name="comment" class="textfield" size="30"
value="<?php
echo htmlspecialchars(PMA_getDbComment($db)); ?>" />
echo htmlspecialchars(PMA_getDBComment($db)); ?>" />
<input type="submit" value="<?php echo $strGo; ?>" />
</fieldset>
</form>
@@ -393,6 +457,93 @@ if (!$is_information_schema) {
</form>
<?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
*/

View File

@@ -186,7 +186,27 @@ $hidden_fields = array();
$odd_row = true;
$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) {
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
// statistics whatever is the table type
@@ -422,7 +442,14 @@ if ($is_show_stats) {
<tbody>
<tr><td></td>
<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 colspan="<?php echo ($db_is_information_schema ? 3 : 6) ?>" align="center">
<?php echo $strSum; ?></th>

View File

@@ -190,6 +190,28 @@ function confirmQuery(theForm1, sqlQuery1)
} // 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
* sql query, else checks for "DROP/DELETE/ALTER" statements
@@ -1217,3 +1239,67 @@ function pdfPaperSize(format, axis) {
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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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';
$strBinLogPosition = 'Position';
$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';
$strBookmarkCreated = 'Bookmark %s created';
$strBookmarkDeleted = 'The bookmark has been deleted.';

View File

@@ -1083,4 +1083,16 @@ $strWiki = 'Wiki'; //to translate
$strWebServer = 'Web server'; //to translate
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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.';
$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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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.';
$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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
$strPHPExtension = 'PHP extension'; //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
* chunks like in import? UPDATE `table` SET `field` = `field` + [chunk]
*/
class PMA_File
{
/**
@@ -69,6 +70,11 @@ class PMA_File
*/
var $_charset = null;
/**
* @staticvar string most recent BLOB repository reference
*/
static $_recent_bs_reference = NULL;
/**
* constructor
*
@@ -250,6 +256,8 @@ class PMA_File
* @access public
* @uses PMA_File::fetchUploadedFromTblChangeRequestMultiple()
* @uses PMA_File::setUploadedFile()
* @uses PMA_File::setRecentBLOBReference()
* @uses curl_setopt_array()
* @uses PMA_File::$_error_message
* @uses $GLOBALS['strUploadErrorIniSize']
* @uses $GLOBALS['strUploadErrorFormSize']
@@ -270,10 +278,128 @@ class PMA_File
}
$file = $_FILES['fields_upload_' . $key];
if (null !== $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
switch ($file['error']) {
// 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])
&& is_string($_REQUEST['fields_uploadlocal_' . $key]['multi_edit'][$primary])) {
// ... 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]);
} else {
return false;
}
} elseif (! empty($_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]);
}
@@ -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:
*
* the authentication libraries must be loaded before db connections
* the authentication libraries must be before the connection to db
*
* ... so the required order is:
*
@@ -40,6 +40,7 @@ require_once './libraries/Error_Handler.class.php';
* initialize the 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
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',
/* Possible login form */
'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
@@ -703,7 +708,7 @@ $GLOBALS['pmaThemeImage'] = $_SESSION['PMA_Theme']->getImgPath();
if (@file_exists($_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'])
&& isset($GLOBALS['cfg']['LeftWidth'])) {
@@ -931,6 +936,13 @@ if (! defined('PMA_MINIMUM_COMMON')) {
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')
// 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();
// 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) {
// 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
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) {
$explain_params = $url_params;
// Detect if we are validating as well
// To preserve the validate URL data
// To preserve the validate uRL data
if (! empty($GLOBALS['validatequery'])) {
$explain_params['validatequery'] = 1;
}
@@ -1490,7 +1506,7 @@ function PMA_getTab($tab)
$tab = array_merge($defaults, $tab);
// determine additional style-class
// determine additionnal style-class
if (empty($tab['class'])) {
if ($tab['text'] == $GLOBALS['strEmpty']
|| $tab['text'] == $GLOBALS['strDrop']) {

View File

@@ -129,6 +129,12 @@ $cfg['Servers'][$i]['connect_type'] = 'tcp';
*/
$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)
*

View File

@@ -297,6 +297,33 @@ function PMA_getTableCount($db)
null, PMA_DBI_QUERY_STORE);
if ($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);
} else {
$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
*
* @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
*
* @uses PMA_Config::isHttps()

View File

@@ -1223,7 +1223,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
$nowrap = ' nowrap';
$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 {
$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
$field_flags = PMA_DBI_field_flags($dt_result, $i);
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);
$vertical_display['data'][$row_no][$i] = ' <td align="left"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">' . $blobtext . '</td>';
unset($blobtext);
} else {
@@ -1290,7 +1339,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// loic1: do not wrap if date field type
$nowrap = ((preg_match('@DATE|TIME@i', $meta->type) || $bool_nowrap) ? ' nowrap' : '');
$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 {
$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 $data
* @param string $transform_function
* @param string $transform_options
* @param string $default_function
* @param string $nowrap
* @param string $where_comparison
* @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:
$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']) {
$GLOBALS['js_messages']['strDoYouReally'] = $GLOBALS['strDoYouReally'];
$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 {
$GLOBALS['js_messages']['strDoYouReally'] = '';
$GLOBALS['js_messages']['strDropDatabaseStrongWarning'] = '';
// rajk - for blobstreaming
$GLOBALS['js_messages']['strBLOBRepositoryDisableStrongWarning'] = '';
$GLOBALS['js_messages']['strBLOBRepositoryDisableAreYouSure'] = '';
}
} elseif (in_array('indexes.js', $GLOBALS['js_include'])) {
$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('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')),
/* 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('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'),

View File

@@ -790,6 +790,60 @@ foreach ($rows as $row_id => $vrow) {
if (($cfg['ProtectBinary'] && $field['is_blob'])
|| ($cfg['ProtectBinary'] == 'all' && $field['is_binary'])) {
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;
if (isset($data)) {
$data_size = PMA_formatByteDown(strlen(stripslashes($data)), 3, 1);
@@ -797,6 +851,7 @@ foreach ($rows as $row_id => $vrow) {
unset($data_size);
}
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<?php echo $field_name_appendix; ?>" value="" />
@@ -834,6 +889,66 @@ foreach ($rows as $row_id => $vrow) {
// (displayed whatever value the ProtectBinary has)
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 '<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['goto']
* @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]
: null;
$primary_field = PMA_BS_GetPrimaryField($GLOBALS['db'], $GLOBALS['table']);
foreach ($me_fields as $key => $val) {
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])) {
$cur_value = $val;
} elseif ('UNIX_TIMESTAMP' === $me_funcs[$key] && $val != "''") {