From: <jo...@us...> - 2007-04-20 21:03:53
|
Revision: 16335 http://svn.sourceforge.net/gallery/?rev=16335&view=rev Author: jozefs Date: 2007-04-20 14:03:53 -0700 (Fri, 20 Apr 2007) Log Message: ----------- Fix for unintended removal of default blocks from themes during install or upgrade. Modified Paths: -------------- trunk/gallery2/modules/core/classes/GalleryCoreApi.class trunk/gallery2/modules/core/classes/GalleryModule.class trunk/gallery2/modules/core/classes/helpers/GalleryThemeHelper_medium.class trunk/gallery2/modules/core/test/phpunit/CoreApiTest.class Modified: trunk/gallery2/modules/core/classes/GalleryCoreApi.class =================================================================== --- trunk/gallery2/modules/core/classes/GalleryCoreApi.class 2007-04-20 19:17:26 UTC (rev 16334) +++ trunk/gallery2/modules/core/classes/GalleryCoreApi.class 2007-04-20 21:03:53 UTC (rev 16335) @@ -3042,12 +3042,13 @@ /** * Load the block configuration files from every module * + * @param bool $getInactive (optional) by default, only active modules' blocks are returned * @return array object GalleryStatus a status code * array block configurations */ - function loadAvailableBlocks() { + function loadAvailableBlocks($getInactive=false) { GalleryCoreApi::requireOnce('modules/core/classes/helpers/GalleryThemeHelper_medium.class'); - return GalleryThemeHelper_medium::loadAvailableBlocks(); + return GalleryThemeHelper_medium::loadAvailableBlocks($getInactive); } /** Modified: trunk/gallery2/modules/core/classes/GalleryModule.class =================================================================== --- trunk/gallery2/modules/core/classes/GalleryModule.class 2007-04-20 19:17:26 UTC (rev 16334) +++ trunk/gallery2/modules/core/classes/GalleryModule.class 2007-04-20 21:03:53 UTC (rev 16335) @@ -662,11 +662,11 @@ * @return object GalleryStatus a status code */ function _removeObsoleteThemeBlocks() { - list ($ret, $blocks) = GalleryCoreApi::loadAvailableBlocks(); + /* Get all available blocks, even from inactive modules; and used blocks. */ + list ($ret, $blocks) = GalleryCoreApi::loadAvailableBlocks(true); if ($ret) { return $ret; } - list ($ret, $searchResults) = GalleryCoreApi::getMapEntry('GalleryPluginParameterMap', array('pluginId', 'itemId', 'parameterName', 'parameterValue'), array('pluginType' => 'theme', @@ -674,7 +674,7 @@ if ($ret) { return $ret; } - + /* Go through each available theme and find which blocks they're using. */ while ($result = $searchResults->nextResult()) { $themeId = $result[0]; Modified: trunk/gallery2/modules/core/classes/helpers/GalleryThemeHelper_medium.class =================================================================== --- trunk/gallery2/modules/core/classes/helpers/GalleryThemeHelper_medium.class 2007-04-20 19:17:26 UTC (rev 16334) +++ trunk/gallery2/modules/core/classes/helpers/GalleryThemeHelper_medium.class 2007-04-20 21:03:53 UTC (rev 16335) @@ -115,7 +115,7 @@ /** * @see GalleryCoreApi::loadAvailableBlocks */ - function loadAvailableBlocks() { + function loadAvailableBlocks($getInactive=false) { global $gallery; $platform =& $gallery->getPlatform(); @@ -125,13 +125,13 @@ } $data = array(); - $base = dirname(dirname(dirname(dirname(__FILE__)))); + $base = GalleryCoreApi::getCodeBasePath(); foreach ($pluginStatus as $pluginId => $status) { - if (empty($status['active'])) { + if (empty($status['active']) && !$getInactive) { continue; } - $configFile = "$base/$pluginId/templates/blocks/blocks.inc"; + $configFile = "{$base}modules/$pluginId/templates/blocks/blocks.inc"; if (!$platform->file_exists($configFile)) { continue; } Modified: trunk/gallery2/modules/core/test/phpunit/CoreApiTest.class =================================================================== --- trunk/gallery2/modules/core/test/phpunit/CoreApiTest.class 2007-04-20 19:17:26 UTC (rev 16334) +++ trunk/gallery2/modules/core/test/phpunit/CoreApiTest.class 2007-04-20 21:03:53 UTC (rev 16335) @@ -55,5 +55,17 @@ $this->assertEquals($expectedId, $defaultId); } + + function testLoadAvailableBlocks() { + list ($ret, $blocks) = GalleryCoreApi::loadAvailableBlocks(); + if ($ret) { + return $ret; + } + $this->assert(!empty($blocks), 'No blocks found!'); + $this->assert(isset($blocks['core']['LanguageSelector'])); + $this->assert(isset($blocks['core']['ItemLinks'])); + $this->assert(isset($blocks['core']['LoginBlock'])); + $this->assert(isset($blocks['core']['PeerList'])); + } } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |