Example #1
0
 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;
 }
Example #7
0
 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;
 }
Example #9
0
 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;
 }
Example #11
0
 /**
  * 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;
 }
Example #13
0
 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;
 }
Example #14
0
 /**
  * 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;
    }
Example #17
0
    /**
     * 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
 }
Example #20
0
 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;
 }
Example #21
0
 /**
  * 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);
         }
     }
 }
Example #23
0
    /**
     * 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;
    }
Example #24
0
 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;
    }