$orig['g2Uri'], '%g2Uri' => $g2Uri));
}
// Find the Gallery Directory and Embed URI
if ($autodetect) {
// Auto-Detect the G2 embed path
list ($success, $embedPhpPath, $errorString) =
G2EmbedDiscoveryUtilities::getG2EmbedPathByG2Uri($g2Uri);
if (!$success) {
// Something is wrong with the G2 URI given as the G2 embed path is not found
$results['g2Uri2']['title'] = G2EmbedTestUtilities::_trans('\'URI of Gallery2\' variable:');
$results['g2Uri2']['error'] = true;
$results['g2Uri2']['notice'] = $errorString;
$new['g2EmbedPath'] = rtrim($embedPhpPath, 'embed.php');
$gallery_valid = 0;
} else {
// G2 Embed Path is found OK
$results['g2Uri2']['title'] = G2EmbedTestUtilities::_trans('\'URI of Gallery2\' variable:');
$results['g2Uri2']['success'] = true;
$new['g2EmbedPath'] = rtrim($embedPhpPath, 'embed.php');
}
// Auto-Detect the Embed Application URI
$embedUri = G2EmbedTestUtilities::_autodetectEmbedUri();
// Normalise the Embed Application URI
$embedUri = G2EmbedDiscoveryUtilities::normalizeEmbedUri($embedUri);
$new['embedUri'] = $embedUri;
} else {
// Do not autodetect the variables, but check the manually entered ones.
$results['g2Uri2']['title'] = G2EmbedTestUtilities::_trans('\'URI of Gallery2\' variable:');
$results['g2Uri2']['advise'] = true;
$results['g2Uri2']['notice'] =
G2EmbedTestUtilities::_trans('Cannot fully check this when not in auto-detect mode.');
$embedPhpPath = $orig['g2EmbedPath'];
// Check path can be read, adding embed.php if needed
if (substr($embedPhpPath, -1) != '/') {
$embedPhpPath = $embedPhpPath . '/';
$results['g2EmbedPath']['title'] =
G2EmbedTestUtilities::_trans('\'Location of Gallery2\' variable:');
$results['g2EmbedPath']['advise'] = true;
$results['g2EmbedPath']['notice'] =
G2EmbedTestUtilities::_trans('%g2EmbedPath automatically updated to %embedPhpPath to adhere to Gallery2 requirements.',
array('%g2EmbedPath' => $orig['g2EmbedPath'],
'%embedPhpPath' => $embedPhpPath));
}
list ($ok, $errorString) =
G2EmbedDiscoveryUtilities::isFileReadable($embedPhpPath.'embed.php');
$new['g2EmbedPath'] = $embedPhpPath;
if (!$ok) {
// Something is wrong with the G2 embed path
$results['g2EmbedPath2']['title'] =
G2EmbedTestUtilities::_trans('\'Location of Gallery2\' variable:');
$results['g2EmbedPath2']['error'] = true;
$results['g2EmbedPath2']['notice'] = $errorString;
$gallery_valid = 0;
} else {
// G2 Embed Path is found OK
$results['g2EmbedPath2']['title'] =
G2EmbedTestUtilities::_trans('\'Location of Gallery2\' variable:');
$results['g2EmbedPath2']['success'] = true;
}
$embedUri = $orig['embedUri'];
$embedUri = G2EmbedDiscoveryUtilities::normalizeEmbedUri($embedUri);
$new['embedUri'] = $embedUri;
if ($embedUri != $orig['embedUri']) {
$results['embedUri']['title'] =
G2EmbedTestUtilities::_trans('\'Embed URI\' variable:');
$results['embedUri']['advise'] = true;
$results['embedUri']['notice'] =
G2EmbedTestUtilities::_trans('%origEmbedUri automatically updated to %embedUri to adhere to Gallery2 requirements.',
array('%origEmbedUri' => $orig['embedUri'],
'%embedUri' => $embedUri));
}
$results['embedUri2']['title'] =
G2EmbedTestUtilities::_trans('\'Embed URI\' variable:');
$results['embedUri2']['advise'] = true;
$results['embedUri2']['notice'] =
G2EmbedTestUtilities::_trans('Cannot fully check this when not in auto-detect mode.');
}
list ($numErrors, $numWarnings) = G2EmbedTestUtilities::_getNumErrorsAndWarnings($results);
return array($numErrors, $numWarnings, $new, $results);
// return array($gallery_valid, $new, $results);
}
/**
* Check the status of Gallery2 Modules before Gallery Init
*
* @param $testsToRun
* @return array results
*/
function preInitTests($testsToRun = null) {
if (!$testsToRun) {
$testsToRun['php_memory']['errorlevel'] = 'error';
$testsToRun['php_memory']['minimumMemoryLimit'] = 24;
}
/* Check for adequate PHP Memory Limit */
if (isset($testsToRun['php_memory'])) {
$results['php_memory'] = G2EmbedTestUtilities::phpMemoryCheck(
$testsToRun['php_memory']['minimumMemoryLimit']);
}
list ($numErrors, $numWarnings) = G2EmbedTestUtilities::_getNumErrorsAndWarnings($results);
return array($numErrors, $numWarnings, $results);
}
/**
* Check the status of Gallery2 Modules after Gallery Init
*
* @param $testsToRun
* @return array results
*/
function postInitTests($testsToRun = null) {
if (!$testsToRun) {
$testsToRun['imageblock']['errorlevel'] = 'error';
$testsToRun['imageframe']['errorlevel'] = 'warning';
$testsToRun['urlrewrite']['errorlevel'] = 'advise';
}
list ($ret, $allModulesStatus) = GalleryCoreApi::fetchPluginStatus('module');
/* Check for ImageBlock Module */
if (isset($testsToRun['imageblock'])) {
$results['imageblock'] =
G2EmbedTestUtilities::moduleCheck('imageblock', 'Image Block',
$testsToRun['imageblock']['errorlevel'], $allModulesStatus);
}
/* Check for ImageFrame Module */
if (isset($testsToRun['imageframe'])) {
$results['imageframe'] =
G2EmbedTestUtilities::moduleCheck('imageframe', 'Image Frame',
$testsToRun['imageframe']['errorlevel'], $allModulesStatus);
}
if (isset($testsToRun['urlrewrite'])) {
$results['urlrewrite'] =
G2EmbedTestUtilities::urlRewriteCheck($testsToRun['urlrewrite']['errorlevel']);
}
list ($numErrors, $numWarnings) = G2EmbedTestUtilities::_getNumErrorsAndWarnings($results);
return array($numErrors, $numWarnings, $results);
}
/**
* Warn if memory_limit is set and is too low
* (from Gallery2 install code)
*
* @param minimumMemoryLimit
* @return array results
*/
function phpMemoryCheck($minimumMemoryLimit = 24) {
$memoryLimit = ini_get('memory_limit');
$title = G2EmbedTestUtilities::_trans('PHP Memory Limit:');
if ($memoryLimit != '' && (G2EmbedTestUtilities::_getBytes($memoryLimit) / (1024 * 1024)) < $minimumMemoryLimit) {
$results = array(
'title' => $title,
'error' => true,
'notice' => G2EmbedTestUtilities::_trans(
'Your PHP is configured to limit the memory to %memLimit (
memory_limit parameter in php.ini). You should raise this limit
to at least %minMemLimitMB for proper Embedded Gallery2 operation',
array('%memLimit' => $memoryLimit, '%minMemLimit' => $minimumMemoryLimit)),
);
} else {
$results = array(
'title' => $title,
'success' => true,
);
}
return $results;
}
/**
* Check the status of Gallery2 URL Rewrite Module
*
* @param $errorLevel
* @return array results
*/
function urlRewriteCheck($errorLevel) {
/* Check for URL Rewrite Module */
$title = 'Gallery2 URL Rewrite Module Status:';
list ($ret, $rewriteApi) = GalleryCoreApi::newFactoryInstance('RewriteApi');
if ($ret) {
/* G2 Error handling */
$results = array(
'title' => $title,
'installed' => false,
'active' => false,
'available' => false,
$errorLevel => true,
'notice' => G2EmbedTestUtilities::_trans(
'Gallery2 Error when trying to access URL Rewrite Module status (maybe it is not installed). %ret',
array('%ret' => $ret->getAsHtml())),
);
}
if (empty($rewriteApi)) {
$results = array(
'title' => $title,
'installed' => false,
'active' => false,
'available' => false,
$errorLevel => true,
'notice' => G2EmbedTestUtilities::_trans(
'Either the URL rewrite module is not installed or the version is too old.'),
);
} elseif (isset($rewriteApi->_error)) {
/* Another error has occurred. This often seems to be due to
a not installed module, which is the assumption here, even
though this theoretically should not get past the first check.
Due to a number of fatal bugs in G2.1 rewrite module ($ret is
returned without being valid) check the _error part before
calling isCompatibleWithApi(). If isCompatible fails then a
fatal error will occur. */
$results = array(
'title' => $title,
'installed' => false,
'active' => false,
'available' => false,
$errorLevel => true,
'notice' => G2EmbedTestUtilities::_trans(
'The URL rewrite module seems not to be installed.'),
);
} else {
$required = array(1, 0);
list ($ret, $isCompatible) = $rewriteApi->isCompatibleWithApi($required);
if ($ret) {
/* Error handeling */
$results = array(
'title' => $title,
'installed' => false,
'active' => false,
'available' => false,
$errorLevel => true,
'notice' => G2EmbedTestUtilities::_trans(
'Gallery2 Error when trying to access URL Rewrite Module status (maybe it is not installed). %ret',
array('%ret' => $ret->getAsHtml())),
);
} else {
if (!$isCompatible) {
$results = array(
'title' => $title,
'installed' => false,
'active' => false,
'available' => false,
$errorLevel => true,
'notice' => G2EmbedTestUtilities::_trans(
'The installed URL Rewrite module version is not compatible.'),
);
} else {
/* Add rules checking etc */
$results = array(
'title' => $title,
'success' => true,
);
}
}
}
return $results;
}
/**
* Check the status of a Gallery2 Module
*
* @param $moduleId, $moduleName, $errorLevel, $allModulesStatus
* @return array moduleStatus
*/
function moduleCheck($moduleId, $moduleName, $errorLevel, $allModulesStatus) {
$moduleStatus = array();
if (isset($allModulesStatus[$moduleId])) {
$moduleStatus['installed'] = true;
$moduleStatus['active'] = $allModulesStatus[$moduleId]['active'];
$moduleStatus['available'] = $allModulesStatus[$moduleId]['available'];
} else {
$moduleStatus['installed'] = false;
$moduleStatus['active'] = false;
$moduleStatus['available'] = false;
}
$moduleStatus['title'] = 'Gallery2 ' . $moduleName .' Module Status:';
if (!$moduleStatus['installed']) {
$moduleStatus[$errorLevel] = true;
$moduleStatus['notice'] = G2EmbedTestUtilities::_trans(
'The %moduleName Module is not installed.',
array('%moduleName' => $moduleName));
} else {
if ($moduleStatus['active'] && $moduleStatus['available']) {
$moduleStatus['success'] = true;
} else {
$moduleStatus[$errorLevel] = true;
$moduleStatus['notice'] = G2EmbedTestUtilities::_trans(
'The %moduleName Module is installed but not active or configured correctly.',
array('%moduleName' => $moduleName));
}
}
return $moduleStatus;
}
/*
* Returns the exact bytes value from a php.ini setting
* * Copied from PHP.net's manual entry for ini_get()
*/
function _getBytes($val) {
$val = trim($val);
$last = $val{strlen($val)-1};
switch($last) {
case 'k':
case 'K':
return (int) $val * 1024;
break;
case 'm':
case 'M':
return (int) $val * 1048576;
break;
default:
return $val;
}
}
/**
* Calculate the number of errors and warnings
*
* @param $results
* @return array($numErrors, $numWarnings)
*/
function _getNumErrorsAndWarnings($results) {
$numErrors = 0;
$numWarnings = 0;
foreach ($results as $key=>$result) {
if ($result['error']) {
$numErrors++;
}
if ($result['warning']) {
$numWarnings++;
}
}
return array($numErrors, $numWarnings);
}
/**
* Translate the message string
* This needs to be implemented by each embed application individually.
*
* Returns the translated string.
* @param $string A string containing the English string to translate.
* $args An associative array of replacements to make after translation.
* Incidences of any key in this array are replaced with the corresponding value.
* @return string Translated String
*/
function _trans($string, $args = 0) {
return t($string, $args);
}
/**
* Autodetect the Embed URI
* This needs to be implemented by each embed application individually.
*
* @param none
* @return string autodetected URI
*/
function _autodetectEmbedUri() {
$uri = url('gallery', null, null, false);
if (substr($uri, -8) == '/gallery') {
$uri = substr($uri, 0, strlen($string)-7) . 'index.php?q=gallery';
}
// strip the end /gallery if present and replace with index.php?q=gallery to avoid any
// url rewrite issues. See http://gallery.menalto.com/node/46181
// Note the use of index.php in all cases. Not needed for Apache, but is for IIS
// see drupaldocs documentation for url.
return $uri;
}
}
?>