static function init($locale)
 {
     self::$instance = new ITechTranslate();
     self::$instance->addTranslation(Globals::$BASE_PATH . '/translations/' . $locale . '/LC_MESSAGES/itech.mo', $locale);
     self::$instance->setLocale($locale);
     setlocale(LC_TIME, str_replace(".UTF-8", "", $locale));
     //hack to get date conversion to work. Use fr_FR without the .UTF-8
     self::$instance->locale = $locale;
 }
 public function __construct()
 {
     if (self::$instance == null) {
         self::$instance = $this;
         $this->addCSSLink('/js/yui/build/reset-fonts-grids/reset-fonts-grids.css');
         $this->addCSSLink('/js/yui/build/resize/assets/skins/sam/resize.css');
         $this->addCSSLink('/js/yui/build/button/assets/skins/sam/button.css');
         $this->addCSSLink('/js/yui/build/autocomplete/assets/skins/sam/autocomplete.css');
         $this->addCSSLink('/js/yui/build/calendar/assets/skins/sam/calendar.css');
         $this->addCSSLink('/js/yui/build/container/assets/skins/sam/container.css');
         $this->addCSSLink('/js/yui/build/datatable/assets/skins/sam/datatable.css');
         $this->addCSSLink('/css/style.css');
         $this->addCSSLink('/css/calendar.css');
         $url_parts = explode('.', $_SERVER['HTTP_HOST']);
         if (@$url_parts[0] == 'eventsmart' or isset($url_parts[1]) && @$url_parts[1] == 'eventsmart') {
             $this->addCSSLink('/css/style-engender.css');
         }
         $local = ITechTranslate::getLocale();
         $local_empty = $local === null;
         if (!$local_empty) {
             $this->addJSLink('/js/translation-' . $local . '.js');
         }
         $this->addJSLink('/js/itech-namespace.js');
         $this->addJSLink('/js/yui/build/yahoo-dom-event/yahoo-dom-event.js');
         $this->addJSLink('/js/yui/build/connection/connection.js');
         $this->addJSLink('/js/yui/build/animation/animation.js');
         $this->addJSLink('/js/yui/build/autocomplete/autocomplete.js');
         $this->addJSLink('/js/yui/build/utilities/utilities.js');
         $this->addJSLink('/js/yui/build/datasource/datasource-beta.js');
         $this->addJSLink('/js/yui/build/datatable/datatable-beta.js');
         $this->addJSLink('/js/yui/build/dragdrop/dragdrop.js');
         $this->addJSLink('/js/yui/build/button/button.js');
         $this->addJSLink('/js/yui/build/calendar/calendar.js');
         $this->addJSLink('/js/yui/build/element/element-beta.js');
         $this->addJSLink('/js/yui/build/json/json.js');
         $this->addJSLink('/js/flydown.js');
         $this->addJSLink('/js/yui/build/container/container.js');
         //add me last
         $this->addJSLink('/js/statusbox.js');
         $this->addJSLink('/js/ajaxsubmit.js');
         $this->addJSLink('/js/autocomplete.js');
         $this->addJSLink('/js/calendar.js');
         $this->addJSLink('/js/datatable.js');
         $this->addJSLink('/js/edittable.js');
         $this->addJSLink('/js/edittable-training.js');
         $this->addJSLink('/js/fileupload.js');
         $this->addJSLink('/js/itech.js');
         $burl = Settings::$COUNTRY_BASE_URL;
         if (substr($burl, -1) != '/' && substr($burl, -1) != '\\') {
             $burl = $burl . '/';
         }
         self::$jsincludes[] = '<script src="' . $burl . 'index/js-aggregate" type="text/javascript"></script>';
     }
 }
 public static function translate($key_phrase)
 {
     $tTable = new Translation();
     $select = $tTable->select()->where("key_phrase = '{$key_phrase}'");
     $db_phrase = $tTable->fetchRow($select)->phrase;
     if (ITechTranslate::getLocale() == 'en_EN.UTF-8') {
         return $db_phrase;
     } else {
         return t($db_phrase);
     }
 }
 public function preDispatch()
 {
     require_once 'models/table/User.php';
     //add identity to view variables
     $auth = Zend_Auth::getInstance();
     $identity = null;
     if ($auth->hasIdentity()) {
         //get ACLs and add to identity
         $acls = User::getACLs($auth->getIdentity()->id);
         $identity = $auth->getIdentity();
         $identity->acls = $acls;
         $auth->getStorage()->write($identity);
         $this->view->assign('identity', $identity);
     }
     //set up localization
     //get country default locale, then check user settings
     if (isset($_COOKIE['locale']) and array_key_exists($_COOKIE['locale'], ITechTranslate::getLanguages())) {
         $locale = $_COOKIE['locale'];
     } else {
         $locale = $this->_countrySettings['locale'];
     }
     if (!$locale) {
         $locale = 'en_EN.UTF-8';
     }
     if ($auth->hasIdentity() and $auth->getIdentity()->locale) {
         $locale = $auth->getIdentity()->locale;
     }
     //set up localization
     ITechTranslate::init($locale);
     // get Country-specific phrases for fields
     self::$_translations = Translation::getAll();
     $this->view->assign('translation', self::translations());
     //look for any status messages in the session and put the validation container in the view scope
     $statusObj = ValidationContainer::instance();
     if (isset($_SESSION['status'])) {
         $statusObj->setStatusMessage($_SESSION['status']);
         unset($_SESSION['status']);
     }
     $this->view->assign('status', $statusObj);
 }
 public function __construct()
 {
     if (self::$instance == null) {
         self::$instance = $this;
         # CSS YUI
         $this->addCSSLink('/js/yui/build/reset-fonts-grids/reset-fonts-grids.css');
         $this->addCSSLink('/js/yui/build/resize/assets/skins/sam/resize.css');
         $this->addCSSLink('/js/yui/build/button/assets/skins/sam/button.css');
         $this->addCSSLink('/js/yui/build/autocomplete/assets/skins/sam/autocomplete.css');
         $this->addCSSLink('/js/yui/build/calendar/assets/skins/sam/calendar.css');
         $this->addCSSLink('/js/yui/build/container/assets/skins/sam/container.css');
         $this->addCSSLink('/js/yui/build/datatable/assets/skins/sam/datatable.css');
         #CSS
         $this->addCSSLink('/css/style.css');
         $this->addCSSLink('/css/calendar.css');
         $this->addCSSLink('/css/media/demo_page.css');
         $this->addCSSLink('/css/media/demo_table_jui.css');
         $this->addCSSLink('/css/media/jquery-ui-1.8.17.custom.css');
         //	$this->addCSSLink('/css/trainsmart/ts.css');
         //	$this->addCSSLink('/css/media/trainsmart.css');
         $url_parts = explode('.', $_SERVER['HTTP_HOST']);
         if (@$url_parts[0] == 'eventsmart' or isset($url_parts[1]) && @$url_parts[1] == 'eventsmart') {
             $this->addCSSLink('/css/style-engender.css');
         }
         # TransLations
         $locale = ITechTranslate::getLocale();
         if ($locale !== null) {
             $this->addJSLink('/js/translation-' . $locale . '.js');
         }
         # Javascript
         $this->addJSLink('/js/itech-namespace.js');
         # jQuery
         $this->addJSLink('/js/scripts/jquery-1.7.1-min.js');
         $this->addJSLink('/js/scripts/jquery.dataTables.min.js');
         $this->addJSLink('/js/scripts/jquery-ui-1.8.17.custom-min.js');
         # Javascript - PRESERVICE
         $this->addJSLink('/js/scripts/validate/jquery.validate.js');
         $this->addJSLink('/js/scripts/jquery.comboedit.js');
         $this->addJSLink('/js/scripts/preservice.js');
         # Javascript - YUI
         $this->addJSLink('/js/yui/build/yahoo-dom-event/yahoo-dom-event.js');
         $this->addJSLink('/js/yui/build/connection/connection.js');
         $this->addJSLink('/js/yui/build/animation/animation.js');
         $this->addJSLink('/js/yui/build/autocomplete/autocomplete.js');
         $this->addJSLink('/js/yui/build/utilities/utilities.js');
         $this->addJSLink('/js/yui/build/datasource/datasource-beta.js');
         $this->addJSLink('/js/yui/build/datatable/datatable-beta.js');
         $this->addJSLink('/js/yui/build/dragdrop/dragdrop.js');
         $this->addJSLink('/js/yui/build/button/button.js');
         $this->addJSLink('/js/yui/build/calendar/calendar.js');
         $this->addJSLink('/js/yui/build/element/element-beta.js');
         $this->addJSLink('/js/yui/build/json/json.js');
         # Javascript - TrainSMART
         $this->addJSLink('/js/flydown.js');
         $this->addJSLink('/js/yui/build/container/container.js');
         //add me last
         $this->addJSLink('/js/statusbox.js');
         $this->addJSLink('/js/ajaxsubmit.js');
         $this->addJSLink('/js/autocomplete.js');
         $this->addJSLink('/js/calendar.js');
         $this->addJSLink('/js/datatable.js');
         $this->addJSLink('/js/edittable.js');
         $this->addJSLink('/js/edittable-training.js');
         $this->addJSLink('/js/fileupload.js');
         $this->addJSLink('/js/itech.js');
         $this->addJSLink('/js/dropdown.js');
         $burl = Settings::$COUNTRY_BASE_URL;
         if (substr($burl, -1) != '/' && substr($burl, -1) != '\\') {
             $burl = $burl . '/';
         }
         self::$jsincludes[] = '<script src="' . $burl . 'index/js-aggregate" type="text/javascript"></script>';
     }
 }
 public function languageAction()
 {
     require_once 'models/Session.php';
     require_once 'models/table/User.php';
     if ($this->isLoggedIn() and array_key_exists($this->getSanParam('opt'), ITechTranslate::getLanguages())) {
         $user = new User();
         $userRow = $user->find(Session::getCurrentUserId())->current();
         $user->updateLocale($this->getSanParam('opt'), Session::getCurrentUserId());
         $auth = Zend_Auth::getInstance();
         $identity = $auth->getIdentity();
         $identity->locale = $this->getSanParam('opt');
         $auth->getStorage()->write($identity);
         setcookie('locale', $this->getSanParam('opt'), null, Globals::$BASE_PATH);
     }
     $this->_redirect($_SERVER['HTTP_REFERER']);
 }
 public function countrySettingsAction()
 {
     require_once 'models/table/System.php';
     $sysTable = new System();
     // For "Labels"
     require_once 'models/table/Translation.php';
     $labelNames = array('label_country' => 'Country', 'label_regiona' => 'Region A (Province)', 'label_regionb' => 'Region B (Health District)', 'label_regionc' => 'Region C (Local Region)', 'label_regiond' => 'Region D', 'label_regione' => 'Region E', 'label_regionf' => 'Region F', 'label_regiong' => 'Region G', 'label_regionh' => 'Region H', 'label_regioni' => 'Region I', 'label_citytown' => 'City or Town', 'label_application_name' => 'Application Name', 'label_training' => 'Training', 'label_trainings' => 'Trainings', 'label_trainer' => 'Trainer', 'label_trainers' => 'Trainers', 'label_training_center' => 'Training Center', 'label_participant' => 'Participant', 'label_participants' => 'Participants');
     // _system settings
     $checkboxFields = array('check_mod_eval' => 'module_evaluation_enabled', 'check_mod_approvals' => 'module_approvals_enabled', 'check_mod_historical' => 'module_historical_data_enabled', 'check_mod_unknown' => 'module_unknown_participants_enabled', 'check_mod_attendance' => 'module_attendance_enabled', 'display_training_partner' => 'display_training_partner', 'display_mod_skillsmart' => 'display_mod_skillsmart', 'fiscal_year_start' => 'fiscal_year_start', 'check_mod_employee' => 'module_employee_enabled');
     if ($this->getRequest()->isPost()) {
         // Update db
         $updateData = array();
         $country = $this->_getParam('country');
         $this->putSetting('country', $country);
         // update translation labels
         $tranTable = new Translation();
         foreach ($labelNames as $input_key => $db_key) {
             if ($this->_getParam($input_key)) {
                 try {
                     $tranTable->update(array('phrase' => $this->_getParam($input_key)), "key_phrase = '{$db_key}'");
                     $this->viewAssignEscaped($input_key, $this->_getParam($input_key));
                 } catch (Zend_Exception $e) {
                     error_log($e);
                 }
             }
         }
         // save locale
         $updateData['locale_enabled'] = implode(',', $this->_getParam('locales'));
         if ($this->_getParam('locale_default')) {
             $updateData['locale'] = $this->_getParam('locale_default');
         }
         // update _system (checkboxes)
         foreach ($checkboxFields as $input_key => $db_field) {
             $value = $this->_getParam($input_key) == NULL ? 0 : 1;
             $updateData[$db_field] = $value;
             $this->view->assign($input_key, $value);
         }
         $updateData['fiscal_year_start'] = $this->_getParam('fiscal_year_start');
         $sysTable->update($updateData, '');
     } else {
         // view
         // labels
         $t = Translation::getAll();
         foreach ($labelNames as $input_key => $db_key) {
             $this->viewAssignEscaped($input_key, $t[$db_key]);
         }
         // checkboxes
         $sysRows = $sysTable->fetchRow($sysTable->select()->limit(1));
         foreach ($checkboxFields as $input_key => $field_key) {
             $this->view->assign($input_key, $sysRows->{$field_key});
         }
     }
     // country
     $country = $this->getSetting('country');
     $this->view->assign('country', htmlspecialchars($country));
     // locale
     $this->view->assign('languages', ITechTranslate::getLanguages());
     $this->view->assign('locale', $this->getSetting('locale'));
     $this->view->assign('locale_enabled', ITechTranslate::getLocaleEnabled());
     // redirect to next page
     if ($this->_getParam('saveonly')) {
         $status = ValidationContainer::instance();
         $status->setStatusMessage(t('Your settings have been updated.'));
         //reload the page
         $this->_redirect('admin/country-settings');
     } else {
         if ($this->_getParam('redirect')) {
             header("Location: " . $this->_getParam('redirect'));
             exit;
         }
     }
 }
 public function historyAction()
 {
     $person_id = $this->getSanParam('id');
     //history
     require_once 'models/table/History.php';
     $history = new History('person');
     $changes = $history->fetchAllPerson($person_id);
     foreach ($changes as $ck => $crow) {
         $c = $crow['changes'];
         $keys = array();
         $values = array();
         if (!isset($this->setting['display_mod_skillsmart']) || $this->setting['display_mod_skillsmart'] !== 1) {
             unset($c['pvid']);
         }
         unset($c['vid']);
         unset($c['id']);
         unset($c['timestamp_created']);
         unset($c['timestamp_updated']);
         unset($c['created_by']);
         unset($c['modified_by']);
         unset($c['active_trainer_option_id']);
         unset($c['is_active']);
         unset($c['secondary_responsibility_option_id']);
         unset($c['primary_responsibility_option_id']);
         unset($c['primary_qualification_option_id']);
         unset($c['facility_id']);
         unset($c['affiliation_option_id']);
         if ($this->setting('display_mod_skillsmart')) {
             if (count($c) == 0) {
                 unset($changes[$ck]);
                 continue;
             }
         }
         foreach ($c as $k => $v) {
             $translated = htmlentities(ITechTranslate::db_tr($k));
             //	if ((strstr ( $translated, '_' ) == false)) {
             $keys[] = $translated;
             if ($this->setting('display_mod_skillsmart')) {
                 if (strpos($v, "_Oth") > 0) {
                     $rmi = strrev($v);
                     if (strpos($rmi, "_") == 1) {
                         $v = strrev(substr($rmi, 2));
                     }
                 }
                 $values[] = htmlentities(str_replace("Z_Other (", "Other (", $v));
             } else {
                 $values[] = htmlentities($v);
             }
             //	}
         }
         $changes[$ck]['translated_keys'] = implode(', ', $keys);
         $changes[$ck]['translated_values'] = implode(', ', $values);
     }
     if ($this->setting('display_mod_skillsmart')) {
         $changes = array_values($changes);
     }
     $this->sendData($changes);
 }