function _cacheMiss($cache, $id) { $allLanguages =& Registry::get('allLanguages-' . $cache->cacheId, true, null); if ($allLanguages === null) { // Add a locale load to the debug notes. $notes =& Registry::get('system.debug.notes'); $locale = $cache->cacheId; if ($locale == null) { $locale = AppLocale::getLocale(); } $filename = $this->getLanguageFilename($locale); $notes[] = array('debug.notes.languageListLoad', array('filename' => $filename)); // Reload locale registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($filename, array('language')); // Build array with ($charKey => array(stuff)) if (isset($data['language'])) { foreach ($data['language'] as $languageData) { $allLanguages[$languageData['attributes']['code']] = array($languageData['attributes']['name']); } } if (is_array($allLanguages)) { asort($allLanguages); } $cache->setEntireCache($allLanguages); } if (isset($allLanguages[$id])) { return $allLanguages[$id]; } else { return null; } }
function &parseSchemaMap() { $xmlDao = new XMLDAO(); $schemaMapHandler = new SchemaMapHandler(); $schemaMap =& $xmlDao->parseWithHandler(SCHEMA_MAP_REGISTRY_FILE, $schemaMapHandler); return $schemaMap; }
/** * Handle a cache miss * @param $cache GenericCache * @param $id mixed ID that wasn't found in the cache * @return null */ function _cacheMiss($cache, $id) { $allCodelistItems =& Registry::get('all' . $this->getName() . 'CodelistItems', true, null); if ($allCodelistItems === null) { // Add a locale load to the debug notes. $notes =& Registry::get('system.debug.notes'); $locale = $cache->cacheId; if ($locale == null) { $locale = AppLocale::getLocale(); } $filename = $this->getFilename($locale); $notes[] = array('debug.notes.codelistItemListLoad', array('filename' => $filename)); // Reload locale registry file $xmlDao = new XMLDAO(); $nodeName = $this->getName(); // i.e., subject $data = $xmlDao->parseStruct($filename, array($nodeName)); // Build array with ($charKey => array(stuff)) if (isset($data[$nodeName])) { foreach ($data[$nodeName] as $codelistData) { $allCodelistItems[$codelistData['attributes']['code']] = array($codelistData['attributes']['text']); } } if (is_array($allCodelistItems)) { asort($allCodelistItems); } $cache->setEntireCache($allCodelistItems); } return null; }
function _cacheMiss(&$cache, $id) { $allCodelistItems =& Registry::get('all' . $this->getListName() . 'CodelistItems', true, null); if ($allCodelistItems === null) { // Add a locale load to the debug notes. $notes =& Registry::get('system.debug.notes'); $locale = $cache->cacheId; if ($locale == null) { $locale = AppLocale::getLocale(); } $filename = $this->getFilename($locale); $notes[] = array('debug.notes.codelistItemListLoad', array('filename' => $filename)); // Reload locale registry file $xmlDao = new XMLDAO(); $listName =& $this->getListName(); // i.e., 'List30' import('lib.pkp.classes.codelist.ONIXParserDOMHandler'); $handler = new ONIXParserDOMHandler($listName); import('lib.pkp.classes.xslt.XSLTransformer'); import('lib.pkp.classes.file.FileManager'); import('classes.file.TemporaryFileManager'); $temporaryFileManager = new TemporaryFileManager(); $fileManager = new FileManager(); $tmpName = tempnam($temporaryFileManager->getBasePath(), 'ONX'); $xslTransformer = new XSLTransformer(); $xslTransformer->setParameters(array('listName' => $listName)); $xslTransformer->setRegisterPHPFunctions(true); $xslFile = 'lib/pkp/xml/onixFilter.xsl'; $filteredXml = $xslTransformer->transform($filename, XSL_TRANSFORMER_DOCTYPE_FILE, $xslFile, XSL_TRANSFORMER_DOCTYPE_FILE, XSL_TRANSFORMER_DOCTYPE_STRING); if (!$filteredXml) { assert(false); } $data = null; if (is_writeable($tmpName)) { $fp = fopen($tmpName, 'wb'); fwrite($fp, $filteredXml); fclose($fp); $data = $xmlDao->parseWithHandler($tmpName, $handler); $fileManager->deleteFile($tmpName); } else { fatalError('misconfigured directory permissions on: ' . $temporaryFileManager->getBasePath()); } // Build array with ($charKey => array(stuff)) if (isset($data[$listName])) { foreach ($data[$listName] as $code => $codelistData) { $allCodelistItems[$code] = $codelistData; } } if (is_array($allCodelistItems)) { asort($allCodelistItems); } $cache->setEntireCache($allCodelistItems); } return null; }
/** * Parse information from a version XML file. * @return array */ function &parseVersionXML($url) { $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($url, array()); if (!$data) { $result = false; return $result; } // FIXME validate parsed data? $versionInfo = array(); if (isset($data['application'][0]['value'])) { $versionInfo['application'] = $data['application'][0]['value']; } if (isset($data['type'][0]['value'])) { $versionInfo['type'] = $data['type'][0]['value']; } if (isset($data['release'][0]['value'])) { $versionInfo['release'] = $data['release'][0]['value']; } if (isset($data['tag'][0]['value'])) { $versionInfo['tag'] = $data['tag'][0]['value']; } if (isset($data['date'][0]['value'])) { $versionInfo['date'] = $data['date'][0]['value']; } if (isset($data['info'][0]['value'])) { $versionInfo['info'] = $data['info'][0]['value']; } if (isset($data['package'][0]['value'])) { $versionInfo['package'] = $data['package'][0]['value']; } if (isset($data['patch'][0]['value'])) { $versionInfo['patch'] = array(); foreach ($data['patch'] as $patch) { $versionInfo['patch'][$patch['attributes']['from']] = $patch['value']; } } if (isset($data['class'][0]['value'])) { $versionInfo['class'] = (string) $data['class'][0]['value']; } $versionInfo['lazy-load'] = isset($data['lazy-load'][0]['value']) ? (int) $data['lazy-load'][0]['value'] : 0; $versionInfo['sitewide'] = isset($data['sitewide'][0]['value']) ? (int) $data['sitewide'][0]['value'] : 0; if (isset($data['release'][0]['value']) && isset($data['application'][0]['value'])) { $version =& Version::fromString($data['release'][0]['value'], isset($data['type'][0]['value']) ? $data['type'][0]['value'] : null, $data['application'][0]['value'], isset($data['class'][0]['value']) ? $data['class'][0]['value'] : '', $versionInfo['lazy-load'], $versionInfo['sitewide']); $versionInfo['version'] =& $version; } return $versionInfo; }
/** * This function is called when the cache cannot be loaded; * in this case, re-generate the cache from XML. * @param $cache object * @param $id string (fixed to "mapping") */ function _mapCacheMiss(&$cache, $id) { static $mappings; if (!isset($mappings)) { // Load the mapping list. $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getPluginPath() . '/' . LANGUAGE_MAP_FILE, array('mapping')); if (isset($data['mapping'])) { foreach ($data['mapping'] as $mapping) { $mappings[$mapping['attributes']['from']] = $mapping['attributes']['to']; } } $cache->setEntireCache($mappings); } return null; }
function _countryCacheMiss($cache, $id) { $countries =& Registry::get('allCountriesData', true, array()); if (!isset($countries[$id])) { // Reload country registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getFilename(), array('countries', 'country')); if (isset($data['countries'])) { foreach ($data['country'] as $countryData) { $countries[$id][$countryData['attributes']['code']] = $countryData['attributes']['name']; } } asort($countries[$id]); $cache->setEntireCache($countries[$id]); } return null; }
function _cacheMiss(&$cache, $id) { $mappings = array(); // Add a debug note indicating an XML load. $notes =& Registry::get('system.debug.notes'); $notes[] = array('debug.notes.helpMappingLoad', array('id' => $id, 'filename' => $this->filename)); // Reload help XML file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->filename, array('topic')); // Build associative array of page keys and ids if (isset($data['topic'])) { foreach ($data['topic'] as $helpData) { $mappings[$helpData['attributes']['key']] = $helpData['attributes']['id']; } } $cache->setEntireCache($mappings); return isset($mappings[$id]) ? $mappings[$id] : null; }
function _timeZoneCacheMiss($cache, $id) { $timeZones =& Registry::get('allTimeZonesData', true, null); if ($timeZones === null) { // Reload time zone registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getFilename(), array('timezones', 'entry')); $timeZones = array(); if (isset($data['timezones'])) { foreach ($data['entry'] as $timeZoneData) { $timeZones[$timeZoneData['attributes']['key']] = $timeZoneData['attributes']['name']; } } asort($timeZones); $cache->setEntireCache($timeZones); } return null; }
/** * This function is called when the cache cannot be loaded; * in this case, re-generate the cache from XML. * @param $cache object * @param $id string (fixed to "mapping") */ function _mapCacheMiss(&$cache, $id) { static $mappings; if (!isset($mappings)) { // Load the mapping list. $xmlDao = new XMLDAO(); // $cache->cacheId has the same value as the archive ID (but ask Alec to verify this is always // true in this context) $typemap_file = "typemap-" . $cache->cacheId . ".xml"; $data = $xmlDao->parseStruct($this->getPluginPath() . '/' . $typemap_file, array('mapping')); if (isset($data['mapping'])) { foreach ($data['mapping'] as $mapping) { $mappings[$mapping['attributes']['from']] = $mapping['attributes']['to']; } } $cache->setEntireCache($mappings); } return null; }
/** * Parse information from a version XML file. * @return array */ function &parseVersionXML($url) { $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($url, array()); if (!$data) { $result = false; return $result; } // FIXME validate parsed data? $versionInfo = array(); if (isset($data['application'][0]['value'])) { $versionInfo['application'] = $data['application'][0]['value']; } if (isset($data['type'][0]['value'])) { $versionInfo['type'] = $data['type'][0]['value']; } if (isset($data['release'][0]['value'])) { $versionInfo['release'] = $data['release'][0]['value']; } if (isset($data['tag'][0]['value'])) { $versionInfo['tag'] = $data['tag'][0]['value']; } if (isset($data['date'][0]['value'])) { $versionInfo['date'] = $data['date'][0]['value']; } if (isset($data['info'][0]['value'])) { $versionInfo['info'] = $data['info'][0]['value']; } if (isset($data['package'][0]['value'])) { $versionInfo['package'] = $data['package'][0]['value']; } if (isset($data['patch'][0]['value'])) { $versionInfo['patch'] = array(); foreach ($data['patch'] as $patch) { $versionInfo['patch'][$patch['attributes']['from']] = $patch['value']; } } if (isset($data['version'][0]['value'])) { $versionInfo['version'] = Version::fromString($data['release'][0]['value'], $data['application'][0]['value'], isset($data['type'][0]['value']) ? $data['type'][0]['value'] : null); } return $versionInfo; }
/** * This function is called when the cache cannot be loaded; * in this case, re-generate the cache from XML. * @param $cache object * @param $id string (fixed to "mapping") */ function _mapCacheMiss(&$cache, $id) { static $mappings; if (!isset($mappings)) { // Load the mapping list. $xmlDao = new XMLDAO(); $typemapFile = $this->getPluginPath() . '/typemap-' . (int) $cache->cacheId . '.xml'; if (file_exists($typemapFile)) { $data = $xmlDao->parseStruct($typemapFile, array('mapping')); } else { $data = array(); } if (isset($data['mapping'])) { foreach ($data['mapping'] as $mapping) { $mappings[$mapping['attributes']['from']] = $mapping['attributes']['to']; } } $cache->setEntireCache($mappings); } return null; }
function _cacheMiss($cache, $id) { $allCurrencies =& Registry::get('allCurrencies', true, null); if ($allCurrencies === null) { // Add a locale load to the debug notes. $notes =& Registry::get('system.debug.notes'); $filename = $this->getCurrencyFilename(AppLocale::getLocale()); $notes[] = array('debug.notes.currencyListLoad', array('filename' => $filename)); // Reload locale registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($filename, array('currency')); // Build array with ($charKey => array(stuff)) if (isset($data['currency'])) { foreach ($data['currency'] as $currencyData) { $allCurrencies[$currencyData['attributes']['code_alpha']] = array($currencyData['attributes']['name'], $currencyData['attributes']['code_numeric']); } } asort($allCurrencies); $cache->setEntireCache($allCurrencies); } return null; }
/** * Static method: Load a locale array from a file. Not cached! * @param $filename string Filename to locale XML to load * @param array */ function &load($filename) { $localeData = array(); // Reload localization XML file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($filename, array('message')); // Build array with ($key => $string) if (isset($data['message'])) { foreach ($data['message'] as $messageData) { $localeData[$messageData['attributes']['key']] = $messageData['value']; } } return $localeData; }
/** * Load a locale list from a file. * @param $filename string * @return array */ function &loadLocaleList($filename) { $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($filename, array('locale')); $allLocales = array(); // Build array with ($localKey => $localeName) if (isset($data['locale'])) { foreach ($data['locale'] as $localeData) { $allLocales[$localeData['attributes']['key']] = $localeData['attributes']; } } return $allLocales; }
/** * Install email template localized data from an XML file. * NOTE: Uses qstr instead of ? bindings so that SQL can be fetched * rather than executed. * @param $templateDataFile string Filename to install * @param $returnSql boolean Whether or not to return SQL rather than * executing it * @param $emailKey string If specified, the key of the single template * to install (otherwise all are installed) * @return array */ function installEmailTemplateData($templateDataFile, $returnSql = false, $emailKey = null) { $xmlDao = new XMLDAO(); $sql = array(); $data = $xmlDao->parse($templateDataFile, array('email_texts', 'email_text', 'subject', 'body', 'description')); if (!$data) { return false; } $locale = $data->getAttribute('locale'); foreach ($data->getChildren() as $emailNode) { if ($emailKey && $emailKey != $emailNode->getAttribute('key')) { continue; } $sql[] = 'DELETE FROM email_templates_default_data WHERE email_key = ' . $this->_dataSource->qstr($emailNode->getAttribute('key')) . ' AND locale = ' . $this->_dataSource->qstr($locale); if (!$returnSql) { $this->update(array_shift($sql)); } $sql[] = 'INSERT INTO email_templates_default_data (email_key, locale, subject, body, description) VALUES (' . $this->_dataSource->qstr($emailNode->getAttribute('key')) . ', ' . $this->_dataSource->qstr($locale) . ', ' . $this->_dataSource->qstr($emailNode->getChildValue('subject')) . ', ' . $this->_dataSource->qstr($emailNode->getChildValue('body')) . ', ' . $this->_dataSource->qstr($emailNode->getChildValue('description')) . ")"; if (!$returnSql) { $this->update(array_shift($sql)); } } if ($returnSql) { return $sql; } return true; }
/** * Install setting type localized data from an XML file. * @param $locale string * @param $pressId int * @param $skipLoad bool * @param $localInstall bool * @return boolean */ function installDefaultBaseData($locale, $pressId, $skipLoad = true, $localeInstall = false) { $xmlDao = new XMLDAO(); $data = $xmlDao->parse($this->getDefaultBaseFilename()); if (!$data) { return false; } $defaultIds = $this->getDefaultSettingIds($pressId); Locale::requireComponents(array(LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS), $locale); foreach ($data->getChildren() as $formatNode) { $settings =& $this->getSettingAttributes($formatNode, $locale); if (empty($defaultIds[$formatNode->getAttribute('key')])) { // ignore keys not associated with this press continue; } else { // prepare a list of attributes not defined in the current settings xml file unset($defaultIds[$formatNode->getAttribute('key')]); } foreach ($settings as $settingName => $settingValue) { $this->update('INSERT INTO press_defaults (press_id, assoc_type, entry_key, locale, setting_name, setting_value, setting_type) VALUES (?, ?, ?, ?, ?, ?, ?)', array($pressId, $this->getDefaultType(), $formatNode->getAttribute('key'), $locale, $settingName, $settingValue, 'string')); } } $attributeNames =& $this->getSettingAttributes(); // install defaults for keys not defined in the xml foreach ($defaultIds as $key => $id) { foreach ($attributeNames as $setting) { $this->update('INSERT INTO press_defaults (press_id, assoc_type, entry_key, locale, setting_name, setting_value, setting_type) VALUES (?, ?, ?, ?, ?, ?, ?)', array($pressId, $this->getDefaultType(), $key, $locale, $setting, '##', 'string')); } } if ($skipLoad) { return true; } if ($localeInstall) { $this->restoreByPressId($pressId, $locale); } else { $this->restoreByPressId($pressId); } return true; }
/** * Install default data for settings. * @param $contextId int Context ID * @param $locales array List of locale codes */ function installDefaults($contextId, $locales) { // Load all the necessary locales. foreach ($locales as $locale) { AppLocale::requireComponents(LOCALE_COMPONENT_APP_DEFAULT, LOCALE_COMPONENT_PKP_DEFAULT, $locale); } $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct('registry/genres.xml', array('genre')); if (!isset($data['genre'])) { return false; } $seq = 0; foreach ($data['genre'] as $entry) { $attrs = $entry['attributes']; // attempt to retrieve an installed Genre with this key. // Do this to preserve the genreId. $genre = $this->getByKey($attrs['key'], $contextId); if (!$genre) { $genre = $this->newDataObject(); } $genre->setContextId($contextId); $genre->setKey($attrs['key']); $genre->setSortable($attrs['sortable']); $genre->setCategory($attrs['category']); $genre->setDependent($attrs['dependent']); $genre->setSupplementary($attrs['supplementary']); $genre->setSequence($seq++); foreach ($locales as $locale) { $genre->setName(__($attrs['localeKey'], array(), $locale), $locale); } $genre->setDesignation($attrs['designation']); if ($genre->getId() > 0) { // existing genre. $this->updateObject($genre); } else { $this->insertObject($genre); } } }
/** * Update or install review objects * @param $journal Journal * @param $reviewObjects array of review object types keys or ids * @param $locales array of locales * @param $action string (install or update) */ function _updateOrInstallReviewObjectTypes($journal, $reviewObjects, $locales, $action) { $plugin =& $this->_getObjectsForReviewPlugin(); if (!isset($journal) || !isset($reviewObjects) || !isset($locales) || !isset($action)) { return false; } $journalId = $journal->getId(); $plugin->import('classes.ReviewObjectType'); $plugin->import('classes.ReviewObjectMetadata'); $reviewObjectTypeDao =& DAORegistry::getDAO('ReviewObjectTypeDAO'); $reviewObjectMetadataDao =& DAORegistry::getDAO('ReviewObjectMetadataDAO'); $onlyCommonMetadata = false; foreach ($reviewObjects as $keyOrId) { if ($action == 'install') { // Create a new review object type $reviewObjectType = $reviewObjectTypeDao->newDataObject(); $reviewObjectType->setContextId($journalId); $reviewObjectType->setActive(0); $reviewObjectType->setKey($keyOrId); } elseif ($action == 'update') { // Get the review object type $reviewObjectType =& $reviewObjectTypeDao->getById($keyOrId, $journalId); if (!isset($reviewObjectType)) { return false; } // If the type was created by the user, update only the common metadata if ($reviewObjectType->getKey() == NULL) { $onlyCommonMetadata = true; } } // Callect the metadata in the array $reviewObjectMetadataArray = array(); // For all languages foreach ($locales as $locale) { // Register the locale/translation file $localePath = $plugin->getPluginPath() . '/locale/' . $locale . '/locale.xml'; AppLocale::registerLocaleFile($locale, $localePath, true); $xmlDao = new XMLDAO(); // Get common metadata $commonDataPath = $plugin->getPluginPath() . '/xml/commonMetadata.xml'; $commonData = $xmlDao->parse($commonDataPath); $commonMetadata = $commonData->getChildByName('objectMetadata'); $allMetadataChildren = $commonMetadata->getChildren(); // Get the object metadata if (!$onlyCommonMetadata) { // Parse the review object XML file $itemPath = $plugin->getPluginPath() . '/xml/reviewObjects/' . $reviewObjectType->getKey() . '.xml'; $data = $xmlDao->parse($itemPath); if (!$data) { return false; } // Set the review object name $itemTypeName = __($data->getChildValue('objectType'), array(), $locale); $reviewObjectType->setName($itemTypeName, $locale); // $reviewObjectType->setDescription($itemTypeNameDescription, $locale); // Get the review object role selection options $roleSelectionOptions = $data->getChildByName('roleSelectionOptions'); // Handle Metadata // Get multiple options metadata types $multipleOptionsTypes = ReviewObjectMetadata::getMultipleOptionsTypes(); // Get metadata types defined in DTD $dtdTypes = ReviewObjectMetadata::getMetadataDTDTypes(); // Get the review object metadata $itemMetadata = $data->getChildByName('objectMetadata'); // Merge all (common + review objec) metadata $allMetadataChildren = array_merge($commonMetadata->getChildren(), $itemMetadata->getChildren()); } // Go through the metadata foreach ($allMetadataChildren as $metadataNode) { $key = $metadataNode->getAttribute('key'); // If we have already went througt, collected/considered the metadata if (array_key_exists($key, $reviewObjectMetadataArray)) { $reviewObjectMetadata = $reviewObjectMetadataArray[$key]; } else { if ($action == 'update') { // Get the metadata $reviewObjectMetadata = $reviewObjectMetadataDao->getByKey($key, $reviewObjectType->getId()); } if ($action == 'install' || !isset($reviewObjectMetadata)) { // Create a new metadata $reviewObjectMetadata = $reviewObjectMetadataDao->newDataObject(); $reviewObjectMetadata->setSequence(REALLY_BIG_NUMBER); $metadataType = $dtdTypes[$metadataNode->getAttribute('type')]; $reviewObjectMetadata->setMetadataType($metadataType); $required = $metadataNode->getAttribute('required'); $reviewObjectMetadata->setRequired($required == 'true' ? 1 : 0); $display = $metadataNode->getAttribute('display'); $reviewObjectMetadata->setDisplay($display == 'true' ? 1 : 0); } } // Set metadata name $name = __($metadataNode->getChildValue('name'), array(), $locale); $reviewObjectMetadata->setName($name, $locale); // Set roles options if ($key == REVIEW_OBJECT_METADATA_KEY_ROLE) { if (!$onlyCommonMetadata) { $possibleOptions = array(); $index = 1; foreach ($roleSelectionOptions->getChildren() as $selectionOptionNode) { $possibleOptions[] = array('order' => $index, 'content' => __($selectionOptionNode->getValue(), array(), $locale)); $index++; } $reviewObjectMetadata->setPossibleOptions($possibleOptions, $locale); } } else { // Set possible options for multiple options metadata type if (in_array($reviewObjectMetadata->getMetadataType(), $multipleOptionsTypes)) { $selectionOptions = $metadataNode->getChildByName('selectionOptions'); $possibleOptions = array(); $index = 1; foreach ($selectionOptions->getChildren() as $selectionOptionNode) { $possibleOptions[] = array('order' => $index, 'content' => __($selectionOptionNode->getValue(), array(), $locale)); $index++; } $reviewObjectMetadata->setPossibleOptions($possibleOptions, $locale); } else { $reviewObjectMetadata->setPossibleOptions(null, null); } } // Collect/consider the metadata $reviewObjectMetadataArray[$key] = $reviewObjectMetadata; unset($reviewObjectMetadata); } // End foreach metadata } // End foreach locales // Insert resp. update the review object type if ($action == 'install') { $reviewObjectTypeId = $reviewObjectTypeDao->insertObject($reviewObjectType); } elseif ($action == 'update') { $reviewObjectTypeDao->updateObject($reviewObjectType); } // Insert resp. update review object metadata foreach ($reviewObjectMetadataArray as $key => $reviewObjectMetadata) { // if this is a new metadata insert it if ($reviewObjectMetadata->getKey() == '') { $reviewObjectMetadata->setKey($key); $reviewObjectMetadata->setReviewObjectTypeId($reviewObjectType->getId()); $reviewObjectMetadataDao->insertObject($reviewObjectMetadata); $reviewObjectMetadataDao->resequence($reviewObjectType->getId()); } else { $reviewObjectMetadataDao->updateObject($reviewObjectMetadata); } } unset($reviewObjectType); } // End foreach review objects }
function _ICD10CacheMiss(&$cache, $id) { $ICD10s =& Registry::get('allICD10sData', true, array()); if (!isset($ICD10s[$id])) { // Reload ICD10 registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getFilename(), array('ICD10s', 'ICD10')); if (isset($data['ICD10s'])) { foreach ($data['ICD10'] as $ICD10Data) { if (strlen($ICD10Data['attributes']['name']) > 60) { $name = substr($ICD10Data['attributes']['name'], 0, 60) . '...'; } else { $name = $ICD10Data['attributes']['name']; } $ICD10s[$id][$ICD10Data['attributes']['code']] = $ICD10Data['attributes']['code'] . ' ' . $name; } } asort($ICD10s[$id]); $cache->setEntireCache($ICD10s[$id]); } return null; }
/** * Constructor */ function HelpTopicDAO() { parent::XMLDAO(); }
/** * @see Form::execute() */ function execute() { $ofrPlugin =& PluginRegistry::getPlugin('generic', $this->parentPluginName); $journal =& Request::getJournal(); $journalId = $journal->getId(); $ofrPlugin->import('classes.ReviewObjectType'); $reviewObjectTypeDao =& DAORegistry::getDAO('ReviewObjectTypeDAO'); if ($this->reviewObjectType == null) { $reviewObjectType = $reviewObjectTypeDao->newDataObject(); $reviewObjectType->setContextId($journalId); $reviewObjectType->setActive(0); } else { $reviewObjectType =& $this->reviewObjectType; } $reviewObjectType->setName($this->getData('name'), null); // Localized $reviewObjectType->setDescription($this->getData('description'), null); // Localized if ($reviewObjectType->getId() != null) { $reviewObjectTypeDao->updateObject($reviewObjectType); } else { //install common metadata $ofrPlugin->import('classes.ReviewObjectMetadata'); $multipleOptionsTypes = ReviewObjectMetadata::getMultipleOptionsTypes(); $dtdTypes = ReviewObjectMetadata::getMetadataDTDTypes(); $reviewObjectMetadataDao =& DAORegistry::getDAO('ReviewObjectMetadataDAO'); $reviewObjectMetadataArray = array(); $availableLocales = $journal->getSupportedLocaleNames(); foreach ($availableLocales as $locale => $localeName) { $xmlDao = new XMLDAO(); $commonDataPath = $ofrPlugin->getPluginPath() . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'commonMetadata.xml'; $commonData = $xmlDao->parse($commonDataPath); $commonMetadata = $commonData->getChildByName('objectMetadata'); foreach ($commonMetadata->getChildren() as $metadataNode) { $key = $metadataNode->getAttribute('key'); if (array_key_exists($key, $reviewObjectMetadataArray)) { $reviewObjectMetadata = $reviewObjectMetadataArray[$key]; } else { $reviewObjectMetadata = $reviewObjectMetadataDao->newDataObject(); $reviewObjectMetadata->setSequence(REALLY_BIG_NUMBER); $metadataType = $dtdTypes[$metadataNode->getAttribute('type')]; $reviewObjectMetadata->setMetadataType($metadataType); $required = $metadataNode->getAttribute('required'); $reviewObjectMetadata->setRequired($required == 'true' ? 1 : 0); $display = $metadataNode->getAttribute('display'); $reviewObjectMetadata->setDisplay($display == 'true' ? 1 : 0); } $name = __($metadataNode->getChildValue('name'), array(), $locale); $reviewObjectMetadata->setName($name, $locale); if ($key == 'role') { $reviewObjectMetadata->setPossibleOptions($this->getData('possibleOptions'), null); // Localized } else { if (in_array($reviewObjectMetadata->getMetadataType(), $multipleOptionsTypes)) { $selectionOptions = $metadataNode->getChildByName('selectionOptions'); $possibleOptions = array(); $index = 1; foreach ($selectionOptions->getChildren() as $selectionOptionNode) { $possibleOptions[] = array('order' => $index, 'content' => __($selectionOptionNode->getValue(), array(), $locale)); $index++; } $reviewObjectMetadata->setPossibleOptions($possibleOptions, $locale); } else { $reviewObjectMetadata->setPossibleOptions(null, null); } } $reviewObjectMetadataArray[$key] = $reviewObjectMetadata; } } $reviewObjectTypeId = $reviewObjectTypeDao->insertObject($reviewObjectType); // insert review object metadata foreach ($reviewObjectMetadataArray as $key => $reviewObjectMetadata) { $reviewObjectMetadata->setReviewObjectTypeId($reviewObjectTypeId); $reviewObjectMetadata->setKey($key); $reviewObjectMetadataDao->insertObject($reviewObjectMetadata); $reviewObjectMetadataDao->resequence($reviewObjectTypeId); } } }
/** * Install genres from an XML file. * @param $pressId int * @return boolean */ function installDefaultBase($pressId) { $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getDefaultBaseFilename(), array('genre')); if (!isset($data['genre'])) { return false; } foreach ($data['genre'] as $entry) { $attrs = $entry['attributes']; $this->update('INSERT INTO genres (entry_key, sortable, press_id, category) VALUES (?, ?, ?, ?)', array($attrs['key'], $attrs['sortable'] ? 1 : 0, $pressId, $attrs['category'])); } return true; }
function _PharmaClassCacheMiss(&$cache, $id) { $pharmaClasses =& Registry::get('allPharmaClassesData', true, array()); if (!isset($pharmaClasses[$id])) { // Reload pharma classes registry file $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getFilename(), array('pharmaClasses', 'pharmaClass')); if (isset($data['pharmaClasses'])) { foreach ($data['pharmaClass'] as $pharmaClassData) { if (strlen($pharmaClassData['attributes']['name']) > 60) { $name = substr($pharmaClassData['attributes']['name'], 0, 60) . '...'; } else { $name = $pharmaClassData['attributes']['name']; } $pharmaClasses[$id][$pharmaClassData['attributes']['code']] = $pharmaClassData['attributes']['code'] . ' ' . $name; } } asort($pharmaClasses[$id]); $cache->setEntireCache($pharmaClasses[$id]); } return null; }
/** * Install publication formats from an XML file. * @param $pressId int * @return boolean */ function installDefaultBase($pressId) { $xmlDao = new XMLDAO(); $data = $xmlDao->parseStruct($this->getDefaultBaseFilename(), array('publicationFormat')); if (!isset($data['publicationFormat'])) { return false; } foreach ($data['publicationFormat'] as $entry) { $attrs = $entry['attributes']; $this->update('INSERT INTO publication_formats (entry_key, press_id) VALUES (?, ?)', array($attrs['key'], $pressId)); } return true; }