*/ class StatisticsSiteAdminController extends GalleryController { function handleRequest($form) { $statisticsPlugin = GalleryUtilities::getRequestVariables('statisticsPlugin'); // Load the correct plugin list ($ret, $plugin) = GalleryCoreApi::newFactoryInstanceById('StatisticsSiteAdminPlugin', $statisticsPlugin); if ($ret) { return array($ret, null); } if (!isset($plugin)) { return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null); } // Hand over to the plugin list ($ret, $results, $requireProgressBar) = $plugin->handleRequest($form, $itemId); if ($ret) { return array($ret, null); } // If we have an error then pass back to plugin to handle it if (!empty($results['error'])) { $results['delegate']['view'] = 'core.SiteAdmin'; $results['delegate']['subView'] = 'statistics.StatisticsSiteAdmin'; $results['delegate']['statisticsPlugin'] = $statisticsPlugin; } if ($requireProgressBar) { $results['delegate']['view'] = 'core.ProgressBar'; } return array(null, $results); } } class StatisticsSiteAdminView extends GalleryView { /** * @see GalleryView::loadTemplate */ function loadTemplate(&$template, &$form) { global $gallery; $statisticsPlugin = GalleryUtilities::getRequestVariables('statisticsPlugin'); // Get all the plugins list ($ret, $allPluginIds) = GalleryCoreApi::getAllFactoryImplementationIds('StatisticsSiteAdminPlugin'); if ($ret) { return array($ret, null); } $pluginInstances = array(); foreach (array_keys($allPluginIds) as $pluginId) { list ($ret, $plugin) = GalleryCoreApi::newFactoryInstanceById('StatisticsSiteAdminPlugin', $pluginId); if ($ret) { return array($ret, null); } list ($ret, $isAppropriate) = $plugin->isAppropriate(); if ($ret) { return array($ret, null); } if ($isAppropriate) { $pluginInstances[$pluginId] = $plugin; } } // Get the preferred plugin from the session $session =& $gallery->getSession(); $statisticsPluginSessionKey = 'statistics.view.plugin'; if (empty($statisticsPlugin) || !isset($pluginInstances[$statisticsPlugin])) { $statisticsPlugin = $session->get($statisticsPluginSessionKey); if (empty($statisticsPlugin) || !isset($pluginInstances[$statisticsPlugin])) { $ids = array_keys($pluginInstances); $statisticsPlugin = $ids[0]; } } $session->put($statisticsPluginSessionKey, $statisticsPlugin); // Get display data for all plugins $plugins = array(); foreach ($pluginInstances as $pluginId => $plugin) { list ($ret, $title) = $plugin->getTitle(); if ($ret) { return array($ret, null); } $plugins[] = array('title' => $title, 'id' => $pluginId, 'isSelected' => ($pluginId == $statisticsPlugin)); } $Statistics = array(); $Statistics['statisticsPlugin'] = $statisticsPlugin; $Statistics['plugins'] = $plugins; // Let the plugin load its template data list ($ret, $Statistics['pluginFile'], $Statistics['pluginL10Domain']) = $pluginInstances[$statisticsPlugin]->loadTemplate($template, $form); if ($ret) { return array($ret, null); } $template->setVariable('Statistics', $Statistics); $template->setVariable('controller', 'statistics.StatisticsSiteAdmin'); return array(null, array('body' => 'modules/statistics/templates/StatisticsSiteAdmin.tpl')); } } class StatisticsSiteAdminPlugin { function isSupported($item) { return false; } function loadTemplate(&$template, &$form) { return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED), null, null); } function getTitle() { return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED), null); } function hasRecalculateTask() { return array(null, method_exists($this, 'recalculateTask')); } } ?>