• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/i18n/AppLocale.inc.php

00001 <?php
00002 
00018 import('lib.pkp.classes.i18n.PKPLocale');
00019 
00020 define('LOCALE_COMPONENT_APPLICATION_COMMON',   0x00000101);
00021 define('LOCALE_COMPONENT_OMP_MANAGER',    0x00000102);
00022 define('LOCALE_COMPONENT_OMP_SUBMISSION', 0x00000104);
00023 define('LOCALE_COMPONENT_OMP_EDITOR',     0x00000108);
00024 define('LOCALE_COMPONENT_OMP_ADMIN',      0x0000010F);
00025 define('LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS', 0x00000111);
00026 
00027 class AppLocale extends PKPLocale {
00032    function getSupportedLocales() {
00033       static $supportedLocales;
00034       if (!isset($supportedLocales)) {
00035          if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00036             $supportedLocales = AppLocale::getAllLocales();
00037          } elseif (($press =& Request::getPress())) {
00038             $supportedLocales = $press->getSupportedLocaleNames();
00039          } else {
00040             $site =& Request::getSite();
00041             $supportedLocales = $site->getSupportedLocaleNames();
00042          }
00043       }
00044       return $supportedLocales;
00045    }
00046 
00051    function getSupportedFormLocales() {
00052       static $supportedFormLocales;
00053       if (!isset($supportedFormLocales)) {
00054          if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00055             $supportedFormLocales = AppLocale::getAllLocales();
00056          } elseif (($press =& Request::getPress())) {
00057             $supportedFormLocales = $press->getSupportedFormLocaleNames();
00058          } else {
00059             $site =& Request::getSite();
00060             $supportedFormLocales = $site->getSupportedLocaleNames();
00061          }
00062       }
00063       return $supportedFormLocales;
00064    }
00065 
00071    function getLocale() {
00072       static $currentLocale;
00073       if (!isset($currentLocale)) {
00074          if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) {
00075             // If the locale is specified in the URL, allow
00076             // it to override. (Necessary when locale is
00077             // being set, as cookie will not yet be re-set)
00078             $locale = Request::getUserVar('setLocale');
00079             if (empty($locale) || !in_array($locale, array_keys(AppLocale::getSupportedLocales()))) $locale = Request::getCookieVar('currentLocale');
00080          } else {
00081             $sessionManager =& SessionManager::getManager();
00082             $session =& $sessionManager->getUserSession();
00083             $locale = $session->getSessionVar('currentLocale');
00084 
00085             $press =& Request::getPress();
00086             $site =& Request::getSite();
00087 
00088             if (!isset($locale)) {
00089                $locale = Request::getCookieVar('currentLocale');
00090             }
00091 
00092             if (isset($locale)) {
00093                // Check if user-specified locale is supported
00094                if ($press != null) {
00095                   $locales =& $press->getSupportedLocaleNames();
00096                } else {
00097                   $locales =& $site->getSupportedLocaleNames();
00098                }
00099 
00100                if (!in_array($locale, array_keys($locales))) {
00101                   unset($locale);
00102                }
00103             }
00104 
00105             if (!isset($locale)) {
00106                // Use press/site default
00107                if ($press != null) {
00108                   $locale = $press->getPrimaryLocale();
00109                }
00110 
00111                if (!isset($locale)) {
00112                   $locale = $site->getPrimaryLocale();
00113                }
00114             }
00115          }
00116 
00117          if (!AppLocale::isLocaleValid($locale)) {
00118             $locale = LOCALE_DEFAULT;
00119          }
00120 
00121          $currentLocale = $locale;
00122       }
00123       return $currentLocale;
00124    }
00125 
00130    function getLocalePrecedence() {
00131       static $localePrecedence;
00132       if (!isset($localePrecedence)) {
00133          $localePrecedence = array(AppLocale::getLocale());
00134 
00135          $press =& Request::getPress();
00136          if ($press && !in_array($press->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $press->getPrimaryLocale();
00137 
00138          $site =& Request::getSite();
00139          if ($site && !in_array($site->getPrimaryLocale(), $localePrecedence)) $localePrecedence[] = $site->getPrimaryLocale();
00140       }
00141       return $localePrecedence;
00142    }
00143 
00148    function getPrimaryLocale() {
00149       static $locale;
00150       if ($locale) return $locale;
00151 
00152       if (defined('SESSION_DISABLE_INIT') || !Config::getVar('general', 'installed')) return $locale = LOCALE_DEFAULT;
00153 
00154       $press =& Request::getPress();
00155 
00156       if (isset($press)) {
00157          $locale = $press->getPrimaryLocale();
00158       }
00159 
00160       if (!isset($locale)) {
00161          $site =& Request::getSite();
00162          $locale = $site->getPrimaryLocale();
00163       }
00164 
00165       if (!isset($locale) || !AppLocale::isLocaleValid($locale)) {
00166          $locale = LOCALE_DEFAULT;
00167       }
00168 
00169       return $locale;
00170    }
00171 
00176    function installLocale($locale) {
00177       parent::installLocale($locale);
00178 
00179       $genreDao =& DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
00180       $genreDao->installLocale($locale);
00181 
00182       $userGroupDao =& DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
00183       $userGroupDao->installLocale($locale);
00184    }
00185 
00190    function uninstallLocale($locale) {
00191       parent::uninstallLocale($locale);
00192 
00193       $genreDao =& DAORegistry::getDAO('GenreDAO');
00194       $genreDao->uninstallLocale($locale);
00195 
00196       $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00197       $userGroupDao->deleteSettingsByLocale($locale);
00198    }
00199 
00205    function makeComponentMap($locale) {
00206       $componentMap = parent::makeComponentMap($locale);
00207       $baseDir = "locale/$locale/";
00208       $componentMap[LOCALE_COMPONENT_APPLICATION_COMMON] = $baseDir . 'locale.xml';
00209       $componentMap[LOCALE_COMPONENT_OMP_MANAGER] = $baseDir . 'manager.xml';
00210       $componentMap[LOCALE_COMPONENT_OMP_SUBMISSION] = $baseDir . 'submission.xml';
00211       $componentMap[LOCALE_COMPONENT_OMP_EDITOR] = $baseDir . 'editor.xml';
00212       $componentMap[LOCALE_COMPONENT_OMP_ADMIN] = $baseDir . 'admin.xml';
00213       $componentMap[LOCALE_COMPONENT_OMP_DEFAULT_SETTINGS] = $baseDir . 'defaultSettings.xml';
00214       return $componentMap;
00215    }
00216 }
00217 
00218 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1