Exemple #1
0
 /**
  * For 2.3 upgrade:  Add initial plugin data to versions table
  * @return boolean
  */
 function addPluginVersions()
 {
     $versionDao =& DAORegistry::getDAO('VersionDAO');
     import('site.VersionCheck');
     $categories = PluginRegistry::getCategories();
     foreach ($categories as $category) {
         PluginRegistry::loadCategory($category, true);
         $plugins = PluginRegistry::getPlugins($category);
         foreach ($plugins as $plugin) {
             $versionFile = $plugin->getPluginPath() . '/version.xml';
             if (FileManager::fileExists($versionFile)) {
                 $versionInfo =& VersionCheck::parseVersionXML($versionFile);
                 $pluginVersion = $versionInfo['version'];
                 $pluginVersion->setCurrent(1);
                 $versionDao->insertVersion($pluginVersion);
             } else {
                 $pluginVersion = new Version();
                 $pluginVersion->setMajor(1);
                 $pluginVersion->setMinor(0);
                 $pluginVersion->setRevision(0);
                 $pluginVersion->setBuild(0);
                 $pluginVersion->setDateInstalled(Core::getCurrentDate());
                 $pluginVersion->setCurrent(1);
                 $pluginVersion->setProductType('plugins.' . $category);
                 $pluginVersion->setProduct(basename($plugin->getPluginPath()));
                 $versionDao->insertVersion($pluginVersion);
             }
         }
     }
 }
 /**
  * @copydoc ContextSettingsForm::fetch()
  */
 function fetch($request)
 {
     // Get all upload form image link actions.
     $uploadImageLinkActions = array();
     foreach ($this->getImagesSettingsName() as $settingName => $altText) {
         $uploadImageLinkActions[$settingName] = $this->_getFileUploadLinkAction($settingName, 'image', $request);
     }
     // Get the css upload link action.
     $uploadCssLinkAction = $this->_getFileUploadLinkAction('styleSheet', 'css', $request);
     $imagesViews = $this->_renderAllFormImagesViews($request);
     $cssView = $this->renderFileView('styleSheet', $request);
     $templateMgr = TemplateManager::getManager($request);
     $templateMgr->assign('uploadImageLinkActions', $uploadImageLinkActions);
     $templateMgr->assign('uploadCssLinkAction', $uploadCssLinkAction);
     $themePlugins = PluginRegistry::getPlugins('themes');
     if (is_null($themePlugins)) {
         $themePlugins = PluginRegistry::loadCategory('themes', true);
     }
     $enabledThemes = array();
     $activeThemeOptions = array();
     foreach ($themePlugins as $themePlugin) {
         $enabledThemes[basename($themePlugin->getPluginPath())] = $themePlugin->getDisplayName();
         if ($themePlugin->isActive()) {
             $activeThemeOptions = $themePlugin->getOptionsConfig();
             $activeThemeOptionsValues = $themePlugin->getOptionValues();
             foreach ($activeThemeOptions as $name => $option) {
                 $activeThemeOptions[$name]['value'] = isset($activeThemeOptionsValues[$name]) ? $activeThemeOptionsValues[$name] : '';
             }
         }
     }
     $templateMgr->assign(array('enabledThemes' => $enabledThemes, 'activeThemeOptions' => $activeThemeOptions));
     $params = array('imagesViews' => $imagesViews, 'styleSheetView' => $cssView, 'locale' => AppLocale::getLocale());
     return parent::fetch($request, $params);
 }
 /**
  * Executes the metadata plug-in test.
  * @param $pluginDir string
  * @param $pluginName string
  * @param $filterGroups array
  * @param $controlledVocabs array
  */
 protected function executeMetadataPluginTest($pluginDir, $pluginName, $filterGroups, $controlledVocabs)
 {
     // Make sure that the vocab xml configuration is valid.
     $controlledVocabFile = 'plugins/metadata/' . $pluginDir . '/schema/' . METADATA_PLUGIN_VOCAB_DATAFILE;
     $this->validateXmlConfig(array('./' . $controlledVocabFile, './lib/pkp/' . $controlledVocabFile));
     // Delete vocab data so that we can re-install it.
     $controlledVocabDao = DAORegistry::getDAO('ControlledVocabDAO');
     /* @var $controlledVocabDao ControlledVocabDAO */
     foreach ($controlledVocabs as $controlledVocabSymbolic) {
         $controlledVocab = $controlledVocabDao->getBySymbolic($controlledVocabSymbolic, 0, 0);
         if ($controlledVocab) {
             $controlledVocabDao->deleteObject($controlledVocab);
         }
     }
     // Reset the plug-in setting indicating that vocabs have already been installed.
     $pluginSettingsDao = DAORegistry::getDAO('PluginSettingsDAO');
     /* @var $pluginSettingsDao PluginSettingsDAO */
     $pluginSettingsDao->updateSetting(0, $pluginName, METADATA_PLUGIN_VOCAB_INSTALLED_SETTING, false);
     // Unregister the plug-in so that we're sure it will be registered again.
     $plugins =& PluginRegistry::getPlugins();
     unset($plugins['metadata'][$pluginName]);
     $this->executePluginTest('metadata', $pluginDir, $pluginName, $filterGroups);
     // Test whether the controlled vocabs have been installed.
     foreach ($controlledVocabs as $controlledVocab) {
         self::assertInstanceOf('ControlledVocab', $controlledVocabDao->getBySymbolic($controlledVocab, 0, 0));
     }
 }
Exemple #4
0
 /**
  * @see Form::fetch()
  * @param $request PKPRequest
  * @param $params array
  */
 function fetch($request, $params = null)
 {
     $site = $request->getSite();
     $publicFileManager = new PublicFileManager();
     $contextDao = Application::getContextDAO();
     $contexts = $contextDao->getNames();
     $siteStyleFilename = $publicFileManager->getSiteFilesPath() . '/' . $site->getSiteStyleFilename();
     $cssSettingName = 'siteStyleSheet';
     $imageSettingName = 'pageHeaderTitleImage';
     // Get link actions.
     $uploadCssLinkAction = $this->_getFileUploadLinkAction($cssSettingName, 'css', $request);
     $uploadImageLinkAction = $this->_getFileUploadLinkAction($imageSettingName, 'image', $request);
     // Get the files view.
     $cssView = $this->renderFileView($cssSettingName, $request);
     $imageView = $this->renderFileView($imageSettingName, $request);
     $application = Application::getApplication();
     $templateMgr = TemplateManager::getManager($request);
     $templateMgr->assign(array('locale' => AppLocale::getLocale(), 'siteStyleFileExists' => file_exists($siteStyleFilename), 'uploadCssLinkAction' => $uploadCssLinkAction, 'uploadImageLinkAction' => $uploadImageLinkAction, 'cssView' => $cssView, 'imageView' => $imageView, 'redirectOptions' => $contexts, 'pageHeaderTitleImage' => $site->getSetting($imageSettingName), 'availableMetricTypes' => $application->getMetricTypes(true)));
     $themePlugins = PluginRegistry::getPlugins('themes');
     $enabledThemes = array();
     $activeThemeOptions = array();
     foreach ($themePlugins as $themePlugin) {
         $enabledThemes[basename($themePlugin->getPluginPath())] = $themePlugin->getDisplayName();
         if ($themePlugin->isActive()) {
             $activeThemeOptions = $themePlugin->getOptionsConfig();
             $activeThemeOptionsValues = $themePlugin->getOptionValues();
             foreach ($activeThemeOptions as $name => $option) {
                 $activeThemeOptions[$name]['value'] = isset($activeThemeOptionsValues[$name]) ? $activeThemeOptionsValues[$name] : '';
             }
         }
     }
     $templateMgr->assign(array('enabledThemes' => $enabledThemes, 'activeThemeOptions' => $activeThemeOptions));
     return parent::fetch($request);
 }
 /**
  * Display the form.
  */
 function display()
 {
     $press =& Request::getPress();
     // Ensure upload file settings are reloaded when the form is displayed.
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign(array('homeHeaderTitleImage' => $press->getSetting('homeHeaderTitleImage'), 'homeHeaderLogoImage' => $press->getSetting('homeHeaderLogoImage'), 'pageHeaderTitleImage' => $press->getSetting('pageHeaderTitleImage'), 'pageHeaderLogoImage' => $press->getSetting('pageHeaderLogoImage'), 'homepageImage' => $press->getSetting('homepageImage'), 'pressStyleSheet' => $press->getSetting('pressStyleSheet'), 'readerInformation' => $press->getSetting('readerInformation'), 'authorInformation' => $press->getSetting('authorInformation'), 'librarianInformation' => $press->getSetting('librarianInformation')));
     // Make lists of the sidebar blocks available.
     $templateMgr->initialize();
     $leftBlockPlugins = $disabledBlockPlugins = $rightBlockPlugins = array();
     $plugins =& PluginRegistry::getPlugins('blocks');
     foreach ($plugins as $key => $junk) {
         if (!$plugins[$key]->getEnabled() || $plugins[$key]->getBlockContext() == '') {
             if (count(array_intersect($plugins[$key]->getSupportedContexts(), array(BLOCK_CONTEXT_LEFT_SIDEBAR, BLOCK_CONTEXT_RIGHT_SIDEBAR))) > 0) {
                 $disabledBlockPlugins[] =& $plugins[$key];
             }
         } else {
             switch ($plugins[$key]->getBlockContext()) {
                 case BLOCK_CONTEXT_LEFT_SIDEBAR:
                     $leftBlockPlugins[] =& $plugins[$key];
                     break;
                 case BLOCK_CONTEXT_RIGHT_SIDEBAR:
                     $rightBlockPlugins[] =& $plugins[$key];
                     break;
             }
         }
     }
     $templateMgr->assign(array('disabledBlockPlugins' => &$disabledBlockPlugins, 'leftBlockPlugins' => &$leftBlockPlugins, 'rightBlockPlugins' => &$rightBlockPlugins));
     $templateMgr->setCacheability(CACHEABILITY_MUST_REVALIDATE);
     parent::display();
 }
 /**
  * Import or export data.
  * @param $args array
  * @param $request PKPRequest
  */
 function importexport($args, $request)
 {
     $this->setupTemplate($request, true);
     PluginRegistry::loadCategory(IMPORTEXPORT_PLUGIN_CATEGORY);
     $templateMgr = TemplateManager::getManager($request);
     if (array_shift($args) === 'plugin') {
         $pluginName = array_shift($args);
         $plugin = PluginRegistry::getPlugin(IMPORTEXPORT_PLUGIN_CATEGORY, $pluginName);
         if ($plugin) {
             return $plugin->display($args, $request);
         }
     }
     $templateMgr->assign('plugins', PluginRegistry::getPlugins(IMPORTEXPORT_PLUGIN_CATEGORY));
     $templateMgr->display('manager/importexport/plugins.tpl');
 }
 /**
  * Display the form.
  */
 function display()
 {
     $journal =& Request::getJournal();
     //Opatan Inc. : get files_dir value
     $files_dir = Config::getVar('files', 'files_dir');
     if (Core::isWindows()) {
         // Replace backslashes with slashes for the default files directory.
         $cwd = str_replace('\\', '/', $files_dir);
     }
     $files_dir = explode('/', $files_dir);
     $files_dir = $files_dir[count($files_dir) - 1];
     $files_dir = ucfirst($files_dir);
     $allThemes =& PluginRegistry::loadCategory('themes', true);
     $journalThemes = array();
     foreach ($allThemes as $key => $junk) {
         $plugin =& $allThemes[$key];
         // by ref
         $journalThemes[basename($plugin->getPluginPath())] =& $plugin;
         unset($plugin);
     }
     // Ensure upload file settings are reloaded when the form is displayed.
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign(array('homeHeaderTitleImage' => $journal->getSetting('homeHeaderTitleImage'), 'homeHeaderLogoImage' => $journal->getSetting('homeHeaderLogoImage'), 'pageHeaderTitleImage' => $journal->getSetting('pageHeaderTitleImage'), 'pageHeaderLogoImage' => $journal->getSetting('pageHeaderLogoImage'), 'homepageImage' => $journal->getSetting('homepageImage'), 'journalStyleSheet' => $journal->getSetting('journalStyleSheet'), 'readerInformation' => $journal->getSetting('readerInformation'), 'authorInformation' => $journal->getSetting('authorInformation'), 'librarianInformation' => $journal->getSetting('librarianInformation'), 'journalThemes' => $journalThemes));
     $templateMgr->assign('files_dir', $files_dir);
     $templateMgr->assign_by_ref('journal', $journal);
     // Make lists of the sidebar blocks available.
     $templateMgr->initialize();
     $leftBlockPlugins = $disabledBlockPlugins = $rightBlockPlugins = array();
     $plugins =& PluginRegistry::getPlugins('blocks');
     foreach ($plugins as $key => $junk) {
         if (!$plugins[$key]->getEnabled() || $plugins[$key]->getBlockContext() == '') {
             if (count(array_intersect($plugins[$key]->getSupportedContexts(), array(BLOCK_CONTEXT_LEFT_SIDEBAR, BLOCK_CONTEXT_RIGHT_SIDEBAR))) > 0) {
                 $disabledBlockPlugins[] =& $plugins[$key];
             }
         } else {
             switch ($plugins[$key]->getBlockContext()) {
                 case BLOCK_CONTEXT_LEFT_SIDEBAR:
                     $leftBlockPlugins[] =& $plugins[$key];
                     break;
                 case BLOCK_CONTEXT_RIGHT_SIDEBAR:
                     $rightBlockPlugins[] =& $plugins[$key];
                     break;
             }
         }
     }
     $templateMgr->assign(array('disabledBlockPlugins' => &$disabledBlockPlugins, 'leftBlockPlugins' => &$leftBlockPlugins, 'rightBlockPlugins' => &$rightBlockPlugins));
     parent::display();
 }
 function importexport($args)
 {
     $this->setupTemplate(true);
     PluginRegistry::loadCategory(IMPORTEXPORT_PLUGIN_CATEGORY);
     $templateMgr =& TemplateManager::getManager();
     if (array_shift($args) === 'plugin') {
         $pluginName = array_shift($args);
         $plugin =& PluginRegistry::getPlugin(IMPORTEXPORT_PLUGIN_CATEGORY, $pluginName);
         if ($plugin) {
             return $plugin->display($args);
         }
     }
     $templateMgr->assign_by_ref('plugins', PluginRegistry::getPlugins(IMPORTEXPORT_PLUGIN_CATEGORY));
     $templateMgr->assign('helpTopicId', 'press.managementPages.importExport');
     $templateMgr->display('manager/importexport/plugins.tpl');
 }
 /**
  * Display the form.
  */
 function display()
 {
     $site =& Request::getSite();
     $allThemes =& PluginRegistry::loadCategory('themes');
     $siteThemes = array();
     foreach ($allThemes as $key => $junk) {
         $plugin =& $allThemes[$key];
         // by ref
         $siteThemes[basename($plugin->getPluginPath())] =& $plugin;
         unset($plugin);
     }
     // Ensure upload file settings are reloaded when the form is displayed.
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->setCacheability(CACHEABILITY_MUST_REVALIDATE);
     $templateMgr->assign(array('siteThemes' => $siteThemes));
     // Make lists of the sidebar blocks available.
     $templateMgr->initialize();
     $leftBlockPlugins = $disabledBlockPlugins = $rightBlockPlugins = array();
     $plugins =& PluginRegistry::getPlugins('blocks');
     foreach ($plugins as $key => $junk) {
         if (!$plugins[$key]->getEnabled() || $plugins[$key]->getBlockContext() == '') {
             if (count(array_intersect($plugins[$key]->getSupportedContexts(), array(BLOCK_CONTEXT_LEFT_SIDEBAR, BLOCK_CONTEXT_RIGHT_SIDEBAR))) > 0) {
                 $disabledBlockPlugins[] =& $plugins[$key];
             }
         } else {
             switch ($plugins[$key]->getBlockContext()) {
                 case BLOCK_CONTEXT_LEFT_SIDEBAR:
                     $leftBlockPlugins[] =& $plugins[$key];
                     break;
                 case BLOCK_CONTEXT_RIGHT_SIDEBAR:
                     $rightBlockPlugins[] =& $plugins[$key];
                     break;
             }
         }
     }
     $templateMgr->assign(array('disabledBlockPlugins' => &$disabledBlockPlugins, 'leftBlockPlugins' => &$leftBlockPlugins, 'rightBlockPlugins' => &$rightBlockPlugins));
     parent::display();
 }
 /**
  * Display the form.
  */
 function display()
 {
     $journal =& Request::getJournal();
     $allThemes =& PluginRegistry::loadCategory('themes', true);
     $journalThemes = array();
     foreach ($allThemes as $key => $junk) {
         $plugin =& $allThemes[$key];
         // by ref
         $journalThemes[basename($plugin->getPluginPath())] =& $plugin;
         unset($plugin);
     }
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign(array('homeHeaderTitleImage' => $journal->getSetting('homeHeaderTitleImage'), 'homeHeaderLogoImage' => $journal->getSetting('homeHeaderLogoImage'), 'pageHeaderTitleImage' => $journal->getSetting('pageHeaderTitleImage'), 'pageHeaderLogoImage' => $journal->getSetting('pageHeaderLogoImage'), 'homepageImage' => $journal->getSetting('homepageImage'), 'journalStyleSheet' => $journal->getSetting('journalStyleSheet'), 'readerInformation' => $journal->getSetting('readerInformation'), 'authorInformation' => $journal->getSetting('authorInformation'), 'librarianInformation' => $journal->getSetting('librarianInformation'), 'journalThemes' => $journalThemes, 'journalFavicon' => $journal->getSetting('journalFavicon')));
     // Make lists of the sidebar blocks available.
     $templateMgr->initialize();
     $leftBlockPlugins = $disabledBlockPlugins = $rightBlockPlugins = array();
     $plugins =& PluginRegistry::getPlugins('blocks');
     foreach ($plugins as $key => $junk) {
         if (!$plugins[$key]->getEnabled() || $plugins[$key]->getBlockContext() == '') {
             if (count(array_intersect($plugins[$key]->getSupportedContexts(), array(BLOCK_CONTEXT_LEFT_SIDEBAR, BLOCK_CONTEXT_RIGHT_SIDEBAR))) > 0) {
                 $disabledBlockPlugins[] =& $plugins[$key];
             }
         } else {
             switch ($plugins[$key]->getBlockContext()) {
                 case BLOCK_CONTEXT_LEFT_SIDEBAR:
                     $leftBlockPlugins[] =& $plugins[$key];
                     break;
                 case BLOCK_CONTEXT_RIGHT_SIDEBAR:
                     $rightBlockPlugins[] =& $plugins[$key];
                     break;
             }
         }
     }
     $templateMgr->assign(array('disabledBlockPlugins' => &$disabledBlockPlugins, 'leftBlockPlugins' => &$leftBlockPlugins, 'rightBlockPlugins' => &$rightBlockPlugins));
     $templateMgr->setCacheability(CACHEABILITY_MUST_REVALIDATE);
     parent::display();
 }
 /**
  * Load all plugins for a given category.
  * @param $category string The name of the category to load
  * @param $enabledOnly boolean if true load only enabled
  *  plug-ins (db-installation required), otherwise look on
  *  disk and load all available plug-ins (no db required).
  * @param $mainContextId integer To identify enabled plug-ins
  *  we need a context. This context is usually taken from the
  *  request but sometimes there is no context in the request
  *  (e.g. when executing CLI commands). Then the main context
  *  can be given as an explicit ID.
  */
 function &loadCategory($category, $enabledOnly = false, $mainContextId = null)
 {
     $plugins = array();
     $categoryDir = PLUGINS_PREFIX . $category;
     if (!is_dir($categoryDir)) {
         return $plugins;
     }
     if ($enabledOnly && Config::getVar('general', 'installed')) {
         // Get enabled plug-ins from the database.
         $application =& PKPApplication::getApplication();
         $products =& $application->getEnabledProducts('plugins.' . $category, $mainContextId);
         foreach ($products as $product) {
             $file = $product->getProduct();
             $plugin =& PluginRegistry::_instantiatePlugin($category, $categoryDir, $file, $product->getProductClassname());
             if ($plugin && is_object($plugin)) {
                 $plugins[$plugin->getSeq()]["{$categoryDir}/{$file}"] =& $plugin;
                 unset($plugin);
             }
         }
     } else {
         // Get all plug-ins from disk. This does not require
         // any database access and can therefore be used during
         // first-time installation.
         $handle = opendir($categoryDir);
         while (($file = readdir($handle)) !== false) {
             if ($file == '.' || $file == '..') {
                 continue;
             }
             $plugin =& PluginRegistry::_instantiatePlugin($category, $categoryDir, $file);
             if ($plugin && is_object($plugin)) {
                 $plugins[$plugin->getSeq()]["{$categoryDir}/{$file}"] =& $plugin;
                 unset($plugin);
             }
         }
         closedir($handle);
     }
     // If anyone else wants to jump category, here is the chance.
     HookRegistry::call('PluginRegistry::loadCategory', array(&$category, &$plugins));
     // Register the plugins in sequence.
     ksort($plugins);
     foreach ($plugins as $seq => $junk1) {
         foreach ($plugins[$seq] as $pluginPath => $junk2) {
             PluginRegistry::register($category, $plugins[$seq][$pluginPath], $pluginPath);
         }
     }
     unset($plugins);
     // Return the list of successfully-registered plugins.
     $plugins =& PluginRegistry::getPlugins($category);
     return $plugins;
 }
Exemple #12
0
 /**
  * Insert or update plugin data in versions
  * and plugin_settings tables.
  * @return boolean
  */
 function addPluginVersions()
 {
     $versionDao =& DAORegistry::getDAO('VersionDAO');
     import('lib.pkp.classes.site.VersionCheck');
     $fileManager = new FileManager();
     $categories = PluginRegistry::getCategories();
     foreach ($categories as $category) {
         PluginRegistry::loadCategory($category);
         $plugins = PluginRegistry::getPlugins($category);
         if (is_array($plugins)) {
             foreach ($plugins as $plugin) {
                 $versionFile = $plugin->getPluginPath() . '/version.xml';
                 if ($fileManager->fileExists($versionFile)) {
                     $versionInfo =& VersionCheck::parseVersionXML($versionFile);
                     $pluginVersion = $versionInfo['version'];
                 } else {
                     $pluginVersion = new Version(1, 0, 0, 0, Core::getCurrentDate(), 1, 'plugins.' . $category, basename($plugin->getPluginPath()), '', 0, $plugin->isSitePlugin());
                 }
                 $versionDao->insertVersion($pluginVersion, true);
             }
         }
     }
     return true;
 }
 /**
  * Return an instance of the template manager.
  * @param $request PKPRequest
  * @return TemplateManager the template manager object
  */
 static function &getManager($request = null)
 {
     if (!isset($request)) {
         $request = Registry::get('request');
         if (Config::getVar('debug', 'deprecation_warnings')) {
             trigger_error('Deprecated call without request object.');
         }
     }
     assert(is_a($request, 'PKPRequest'));
     $instance =& Registry::get('templateManager', true, null);
     // Reference required
     if ($instance === null) {
         $instance = new TemplateManager($request);
         $themes = PluginRegistry::getPlugins('themes');
         if (is_null($themes)) {
             $themes = PluginRegistry::loadCategory('themes', true);
         }
         $instance->initialize();
     }
     return $instance;
 }
Exemple #14
0
 /**
  * Display the form.
  */
 function display()
 {
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign('archiveId', $this->archiveId);
     if ($this->captchaEnabled && !Validation::isSiteAdmin()) {
         import('lib.pkp.lib.recaptcha.recaptchalib');
         $publicKey = Config::getVar('captcha', 'recaptcha_public_key');
         $useSSL = Config::getVar('security', 'force_ssl') ? true : false;
         $reCaptchaHtml = recaptcha_get_html($publicKey, null, $useSSL);
         $templateMgr->assign('reCaptchaHtml', $reCaptchaHtml);
         $templateMgr->assign('captchaEnabled', true);
     }
     if ($this->archive) {
         $templateMgr->assign('archiveImage', $this->archive->getSetting('archiveImage'));
     }
     $templateMgr->assign_by_ref('harvesters', PluginRegistry::getPlugins('harvesters'));
     $templateMgr->assign('allowManagement', $this->allowManagement);
     HookRegistry::call('ArchiveForm::display', array(&$this, &$templateMgr, $this->harvesterPluginName));
     parent::display();
 }
Exemple #15
0
 /**
  * Create initial required data.
  * @return boolean
  */
 function createData()
 {
     if ($this->getParam('manualInstall')) {
         // Add insert statements for default data
         // FIXME use ADODB data dictionary?
         $this->executeSQL(sprintf('INSERT INTO site (primary_locale, installed_locales) VALUES (\'%s\', \'%s\')', $this->getParam('locale'), join(':', $this->installedLocales)));
         $this->executeSQL(sprintf('INSERT INTO site_settings (setting_name, setting_type, setting_value, locale) VALUES (\'%s\', \'%s\', \'%s\', \'%s\')', 'title', 'string', addslashes(Locale::translate(INSTALLER_DEFAULT_SITE_TITLE)), $this->getParam('locale')));
         $this->executeSQL(sprintf('INSERT INTO site_settings (setting_name, setting_type, setting_value, locale) VALUES (\'%s\', \'%s\', \'%s\', \'%s\')', 'contactName', 'string', addslashes(Locale::translate(INSTALLER_DEFAULT_SITE_TITLE)), $this->getParam('locale')));
         $this->executeSQL(sprintf('INSERT INTO site_settings (setting_name, setting_type, setting_value, locale) VALUES (\'%s\', \'%s\', \'%s\', \'%s\')', 'contactEmail', 'string', addslashes($this->getParam('adminEmail')), $this->getParam('locale')));
         $this->executeSQL(sprintf('INSERT INTO users (username, first_name, last_name, password, email, date_registered, date_last_login) VALUES (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', $this->getParam('adminUsername'), $this->getParam('adminUsername'), $this->getParam('adminUsername'), Validation::encryptCredentials($this->getParam('adminUsername'), $this->getParam('adminPassword'), $this->getParam('encryption')), $this->getParam('adminEmail'), Core::getCurrentDate(), Core::getCurrentDate()));
         $this->executeSQL(sprintf('INSERT INTO roles (conference_id, user_id, role_id) VALUES (%d, (SELECT user_id FROM users WHERE username = \'%s\'), %d)', 0, $this->getParam('adminUsername'), ROLE_ID_SITE_ADMIN));
         // Install email template list and data for each locale
         $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
         foreach ($emailTemplateDao->installEmailTemplates($emailTemplateDao->getMainEmailTemplatesFilename(), true) as $sql) {
             $this->executeSQL($sql);
         }
         foreach ($this->installedLocales as $locale) {
             foreach ($emailTemplateDao->installEmailTemplateData($emailTemplateDao->getMainEmailTemplateDataFilename($locale), true) as $sql) {
                 $this->executeSQL($sql);
             }
         }
     } else {
         // Add initial site data
         $locale = $this->getParam('locale');
         $siteDao =& DAORegistry::getDAO('SiteDAO', $this->dbconn);
         $site = new Site();
         $site->setRedirect(0);
         $site->setMinPasswordLength(INSTALLER_DEFAULT_MIN_PASSWORD_LENGTH);
         $site->setPrimaryLocale($locale);
         $site->setInstalledLocales($this->installedLocales);
         $site->setSupportedLocales($this->installedLocales);
         if (!$siteDao->insertSite($site)) {
             $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
             return false;
         }
         $siteSettingsDao =& DAORegistry::getDAO('SiteSettingsDAO');
         $siteSettingsDao->updateSetting('title', array($locale => Locale::translate(INSTALLER_DEFAULT_SITE_TITLE)), null, true);
         $siteSettingsDao->updateSetting('contactName', array($locale => Locale::translate(INSTALLER_DEFAULT_SITE_TITLE)), null, true);
         $siteSettingsDao->updateSetting('contactEmail', array($locale => $this->getParam('adminEmail')), null, true);
         // Add initial site administrator user
         $userDao =& DAORegistry::getDAO('UserDAO', $this->dbconn);
         $user = new User();
         $user->setUsername($this->getParam('adminUsername'));
         $user->setPassword(Validation::encryptCredentials($this->getParam('adminUsername'), $this->getParam('adminPassword'), $this->getParam('encryption')));
         $user->setFirstName($user->getUsername());
         $user->setLastName('');
         $user->setEmail($this->getParam('adminEmail'));
         if (!$userDao->insertUser($user)) {
             $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
             return false;
         }
         $roleDao =& DAORegistry::getDao('RoleDAO', $this->dbconn);
         $role = new Role();
         $role->setConferenceId(0);
         $role->setUserId($user->getId());
         $role->setRoleId(ROLE_ID_SITE_ADMIN);
         if (!$roleDao->insertRole($role)) {
             $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
             return false;
         }
         // Install email template list and data for each locale
         $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
         $emailTemplateDao->installEmailTemplates($emailTemplateDao->getMainEmailTemplatesFilename());
         foreach ($this->installedLocales as $locale) {
             $emailTemplateDao->installEmailTemplateData($emailTemplateDao->getMainEmailTemplateDataFilename($locale));
         }
         // Add initial plugin data to versions table
         $versionDao =& DAORegistry::getDAO('VersionDAO');
         import('site.VersionCheck');
         $categories = PluginRegistry::getCategories();
         foreach ($categories as $category) {
             PluginRegistry::loadCategory($category, true);
             $plugins = PluginRegistry::getPlugins($category);
             foreach ($plugins as $plugin) {
                 $versionFile = $plugin->getPluginPath() . '/version.xml';
                 if (FileManager::fileExists($versionFile)) {
                     $versionInfo =& VersionCheck::parseVersionXML($versionFile);
                     $pluginVersion = $versionInfo['version'];
                     $pluginVersion->setCurrent(1);
                     $versionDao->insertVersion($pluginVersion);
                 } else {
                     $pluginVersion = new Version();
                     $pluginVersion->setMajor(1);
                     $pluginVersion->setMinor(0);
                     $pluginVersion->setRevision(0);
                     $pluginVersion->setBuild(0);
                     $pluginVersion->setDateInstalled(Core::getCurrentDate());
                     $pluginVersion->setCurrent(1);
                     $pluginVersion->setProductType('plugins.' . $category);
                     $pluginVersion->setProduct(basename($plugin->getPluginPath()));
                     $versionDao->insertVersion($pluginVersion);
                 }
             }
         }
     }
     return true;
 }
 /**
  * Display the form.
  */
 function display()
 {
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign('archiveId', $this->archiveId);
     if ($this->captchaEnabled && !Validation::isSiteAdmin()) {
         import('lib.pkp.classes.captcha.CaptchaManager');
         $captchaManager = new CaptchaManager();
         $captcha =& $captchaManager->createCaptcha();
         if ($captcha) {
             $templateMgr->assign('captchaEnabled', $this->captchaEnabled);
             $this->setData('captchaId', $captcha->getId());
         }
     }
     if ($this->archive) {
         $templateMgr->assign('archiveImage', $this->archive->getSetting('archiveImage'));
     }
     $templateMgr->assign_by_ref('harvesters', PluginRegistry::getPlugins('harvesters'));
     $templateMgr->assign('allowManagement', $this->allowManagement);
     HookRegistry::call('ArchiveForm::display', array(&$this, &$templateMgr, $this->harvesterPluginName));
     parent::display();
 }
 /**
  * Load all plugins for a given category.
  * @param $category String The name of the category to load
  * @param $forceLoad boolean Whether or not to force loading of the
  * category (since if e.g. a single plugin is already registered, the
  * current set will be returned rather than attempting to load others)
  */
 function &loadCategory($category, $forceLoad = false)
 {
     $plugins = array();
     $categoryDir = PLUGINS_PREFIX . $category;
     if (!is_dir($categoryDir)) {
         return $plugins;
     }
     $handle = opendir($categoryDir);
     while (($file = readdir($handle)) !== false) {
         if ($file == '.' || $file == '..') {
             continue;
         }
         $pluginPath = "{$categoryDir}/{$file}";
         $pluginWrapper = "{$pluginPath}/index.php";
         if (!file_exists($pluginWrapper)) {
             continue;
         }
         $plugin = (include $pluginWrapper);
         if ($plugin && is_object($plugin)) {
             $plugins[$plugin->getSeq()][$pluginPath] =& $plugin;
             unset($plugin);
         }
     }
     closedir($handle);
     // If anyone else wants to jump category, here is the chance.
     HookRegistry::call('PluginRegistry::loadCategory', array(&$category, &$plugins));
     // Register the plugins in sequence.
     ksort($plugins);
     foreach ($plugins as $seq => $junk1) {
         foreach ($plugins[$seq] as $pluginPath => $junk2) {
             PluginRegistry::register($category, $plugins[$seq][$pluginPath], $pluginPath);
         }
     }
     unset($plugins);
     // Return the list of successfully-registered plugins.
     $plugins =& PluginRegistry::getPlugins($category);
     return $plugins;
 }
 /**
  * Load all plugins for a given category.
  * @param $category string The name of the category to load
  * @param $enabledOnly boolean if true load only enabled
  *  plug-ins (db-installation required), otherwise look on
  *  disk and load all available plug-ins (no db required).
  */
 function &loadCategory($category, $enabledOnly = false)
 {
     $plugins = array();
     $categoryDir = PLUGINS_PREFIX . $category;
     if (!is_dir($categoryDir)) {
         return $plugins;
     }
     if ($enabledOnly && Config::getVar('general', 'installed')) {
         // Get enabled plug-ins from the database.
         $application =& PKPApplication::getApplication();
         $products =& $application->getEnabledProducts('plugins.' . $category);
         foreach ($products as $product) {
             $file = $product->getProduct();
             if (!preg_match('/[a-zA-Z0-9]+/', $file)) {
                 fatalError('Invalid product name "' . $file . '"!');
             }
             $pluginPath = "{$categoryDir}/{$file}";
             $pluginWrapper = "{$pluginPath}/index.php";
             $plugin = (include $pluginWrapper);
             $pluginClass = $product->getProductClassName();
             if ($pluginClass) {
                 assert(is_a($plugin, $pluginClass));
             }
             if ($plugin && is_object($plugin)) {
                 $plugins[$plugin->getSeq()][$pluginPath] =& $plugin;
                 unset($plugin);
             }
         }
     } else {
         // Get all plug-ins from disk. This does not require
         // any database access and can therefore be used during
         // first-time installation.
         $handle = opendir($categoryDir);
         while (($file = readdir($handle)) !== false) {
             if ($file == '.' || $file == '..') {
                 continue;
             }
             $pluginPath = "{$categoryDir}/{$file}";
             $pluginWrapper = "{$pluginPath}/index.php";
             if (!file_exists($pluginWrapper)) {
                 continue;
             }
             $plugin = (include $pluginWrapper);
             if ($plugin && is_object($plugin)) {
                 $plugins[$plugin->getSeq()][$pluginPath] =& $plugin;
                 unset($plugin);
             }
         }
         closedir($handle);
     }
     // If anyone else wants to jump category, here is the chance.
     HookRegistry::call('PluginRegistry::loadCategory', array(&$category, &$plugins));
     // Register the plugins in sequence.
     ksort($plugins);
     foreach ($plugins as $seq => $junk1) {
         foreach ($plugins[$seq] as $pluginPath => $junk2) {
             PluginRegistry::register($category, $plugins[$seq][$pluginPath], $pluginPath);
         }
     }
     unset($plugins);
     // Return the list of successfully-registered plugins.
     $plugins =& PluginRegistry::getPlugins($category);
     return $plugins;
 }
Exemple #19
0
 /**
  * Create initial required data.
  * @return boolean
  */
 function createData()
 {
     // Add initial site data
     $locale = $this->getParam('locale');
     $siteDao =& DAORegistry::getDAO('SiteDAO', $this->dbconn);
     $site = new Site();
     $site->setRedirect(0);
     $site->setMinPasswordLength(INSTALLER_DEFAULT_MIN_PASSWORD_LENGTH);
     $site->setPrimaryLocale($locale);
     $site->setInstalledLocales($this->installedLocales);
     $site->setSupportedLocales($this->installedLocales);
     if (!$siteDao->insertSite($site)) {
         $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
         return false;
     }
     $siteSettingsDao =& DAORegistry::getDAO('SiteSettingsDAO');
     $siteSettingsDao->updateSetting('title', array($locale => __(INSTALLER_DEFAULT_SITE_TITLE)), null, true);
     $siteSettingsDao->updateSetting('contactName', array($locale => __(INSTALLER_DEFAULT_SITE_TITLE)), null, true);
     $siteSettingsDao->updateSetting('contactEmail', array($locale => $this->getParam('adminEmail')), null, true);
     // Add initial site administrator user
     $userDao =& DAORegistry::getDAO('UserDAO', $this->dbconn);
     $user = new User();
     $user->setUsername($this->getParam('adminUsername'));
     $user->setPassword(Validation::encryptCredentials($this->getParam('adminUsername'), $this->getParam('adminPassword'), $this->getParam('encryption')));
     $user->setFirstName($user->getUsername());
     $user->setLastName('');
     $user->setEmail($this->getParam('adminEmail'));
     if (!$userDao->insertUser($user)) {
         $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
         return false;
     }
     $roleDao =& DAORegistry::getDao('RoleDAO', $this->dbconn);
     $role = new Role();
     $role->setConferenceId(0);
     $role->setUserId($user->getId());
     $role->setRoleId(ROLE_ID_SITE_ADMIN);
     if (!$roleDao->insertRole($role)) {
         $this->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
         return false;
     }
     // Install email template list and data for each locale
     $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
     $emailTemplateDao->installEmailTemplates($emailTemplateDao->getMainEmailTemplatesFilename());
     foreach ($this->installedLocales as $locale) {
         $emailTemplateDao->installEmailTemplateData($emailTemplateDao->getMainEmailTemplateDataFilename($locale));
     }
     // Add initial plugin data to versions table
     $versionDao =& DAORegistry::getDAO('VersionDAO');
     import('site.VersionCheck');
     $categories = PluginRegistry::getCategories();
     foreach ($categories as $category) {
         PluginRegistry::loadCategory($category, true);
         $plugins = PluginRegistry::getPlugins($category);
         foreach ($plugins as $plugin) {
             $versionFile = $plugin->getPluginPath() . '/version.xml';
             if (FileManager::fileExists($versionFile)) {
                 $versionInfo =& VersionCheck::parseVersionXML($versionFile);
                 $pluginVersion = $versionInfo['version'];
                 $pluginVersion->setCurrent(1);
                 $versionDao->insertVersion($pluginVersion);
             } else {
                 $pluginVersion = new Version();
                 $pluginVersion->setMajor(1);
                 $pluginVersion->setMinor(0);
                 $pluginVersion->setRevision(0);
                 $pluginVersion->setBuild(0);
                 $pluginVersion->setDateInstalled(Core::getCurrentDate());
                 $pluginVersion->setCurrent(1);
                 $pluginVersion->setProductType('plugins.' . $category);
                 $pluginVersion->setProduct(basename($plugin->getPluginPath()));
                 $versionDao->insertVersion($pluginVersion);
             }
         }
     }
     return true;
 }
 /**
  * Display the citation editor
  * @param $args array
  * @param $request Request
  */
 function submissionCitations($args, $request)
 {
     $router =& $request->getRouter();
     $articleId = isset($args[0]) ? (int) $args[0] : 0;
     $this->validate($articleId);
     $this->setupTemplate(true, $articleId);
     $templateMgr =& TemplateManager::getManager();
     // Add extra style sheets required for ajax components
     $templateMgr->addStyleSheet($request->getBaseUrl() . '/styles/ojs.css');
     // Check whether the jQuery plugin is enabled
     $plugins =& PluginRegistry::getPlugins('generic');
     assert(isset($plugins['JQueryPlugin']));
     $jQueryPlugin =& $plugins['JQueryPlugin'];
     assert(is_a($plugins['JQueryPlugin'], 'JQueryPlugin'));
     $templateMgr->assign('jQueryEnabled', (bool) $jQueryPlugin->isJQueryInstalled());
     // Add the grid URL
     // FIXME: Refactor to the template when {load_div} accepts operations as parameters
     $dispatcher =& $this->getDispatcher();
     $citationGridUrl = $dispatcher->url($request, ROUTE_COMPONENT, null, 'grid.citation.CitationGridHandler', 'fetchGrid', null, array('articleId' => $articleId));
     $templateMgr->assign('citationGridUrl', $citationGridUrl);
     // Add the submission
     $submission =& $this->submission;
     $templateMgr->assign_by_ref('submission', $submission);
     // Add the journal settings
     $journal =& $router->getContext($request);
     $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO');
     $journalSettings = $journalSettingsDao->getJournalSettings($journal->getId());
     $templateMgr->assign_by_ref('journalSettings', $journalSettings);
     // Display the page
     $templateMgr->display('sectionEditor/submissionCitations.tpl');
 }