1<?php 2/** 3 * OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures 4 * all the essential functionalities required for any enterprise. 5 * Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com 6 * 7 * OrangeHRM is free software; you can redistribute it and/or modify it under the terms of 8 * the GNU General Public License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * OrangeHRM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 12 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 13 * See the GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along with this program; 16 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA 18 */ 19class EmployeeLanguageForm extends sfForm { 20 21 private $employeeService; 22 public $fullName; 23 private $widgets = array(); 24 public $empLanguageList; 25 26 /** 27 * Get EmployeeService 28 * @returns EmployeeService 29 */ 30 public function getEmployeeService() { 31 if(is_null($this->employeeService)) { 32 $this->employeeService = new EmployeeService(); 33 $this->employeeService->setEmployeeDao(new EmployeeDao()); 34 } 35 return $this->employeeService; 36 } 37 38 /** 39 * Set EmployeeService 40 * @param EmployeeService $employeeService 41 */ 42 public function setEmployeeService(EmployeeService $employeeService) { 43 $this->employeeService = $employeeService; 44 } 45 46 public function configure() { 47 $this->languagePermissions = $this->getOption('languagePermissions'); 48 49 $empNumber = $this->getOption('empNumber'); 50 $employee = $this->getEmployeeService()->getEmployee($empNumber); 51 $this->fullName = $employee->getFullName(); 52 53 $this->empLanguageList = $this->getEmployeeService()->getEmployeeLanguages($empNumber); 54 55 $i18nHelper = sfContext::getInstance()->getI18N(); 56 57 $this->langTypeList = array("" => '-- ' . $i18nHelper->__('Select') . ' --', 58 1 => $i18nHelper->__('Writing'), 59 2 => $i18nHelper->__('Speaking'), 60 3 => $i18nHelper->__('Reading')); 61 $this->competencyList = array("" => '-- ' . $i18nHelper->__('Select') . ' --', 62 1 => $i18nHelper->__('Poor'), 63 2 => $i18nHelper->__('Basic'), 64 3 => $i18nHelper->__('Good'), 65 4 => $i18nHelper->__('Mother Tongue')); 66 67 $widgets = array('emp_number' => new sfWidgetFormInputHidden(array(), array('value' => $empNumber))); 68 $validators = array('emp_number' => new sfValidatorString(array('required' => true))); 69 70 if ($this->languagePermissions->canRead()) { 71 72 $languageWidgets = $this->getLanguageWidgets(); 73 $languageValidators = $this->getLanguageValidators(); 74 75 if (!($this->languagePermissions->canUpdate() || $this->languagePermissions->canCreate()) ) { 76 foreach ($languageWidgets as $widgetName => $widget) { 77 $widget->setAttribute('disabled', 'disabled'); 78 } 79 } 80 $widgets = array_merge($widgets, $languageWidgets); 81 $validators = array_merge($validators, $languageValidators); 82 } 83 84 $this->setWidgets($widgets); 85 $this->setValidators($validators); 86 87 $this->widgetSchema->setNameFormat('language[%s]'); 88 $this->getWidgetSchema()->setLabels($this->getFormLabels()); 89 90 } 91 92 /** 93 * 94 * @return \sfWidgetFormInputHidden 95 */ 96 private function getLanguageWidgets() { 97 $availableLanguageList = $this->_getLanguageList(); 98 99 $widgets = array(); 100 $widgets['code'] = new sfWidgetFormSelect(array('choices' => $availableLanguageList)); 101 $widgets['lang_type'] = new sfWidgetFormSelect(array('choices' => $this->langTypeList)); 102 $widgets['competency'] = new sfWidgetFormSelect(array('choices' => $this->competencyList)); 103 $widgets['comments'] = new sfWidgetFormTextarea(); 104 return $widgets; 105 } 106 107 private function getLanguageValidators() { 108 $availableLanguageList = $this->_getLanguageList(); 109 110 $validators = array( 111 'code' => new sfValidatorChoice(array('choices' => array_keys($availableLanguageList))), 112 'lang_type' => new sfValidatorChoice(array('choices' => array_keys($this->langTypeList))), 113 'competency' => new sfValidatorChoice(array('choices' => array_keys($this->competencyList))), 114 'comments' => new sfValidatorString(array('required' => false, 'max_length' => 100)) 115 ); 116 return $validators; 117 } 118 119 public function getLangTypeDesc($langType) { 120 $langTypeDesc = ""; 121 if (isset($this->langTypeList[$langType])) { 122 $langTypeDesc = $this->langTypeList[$langType]; 123 } 124 return $langTypeDesc; 125 } 126 127 public function getCompetencyDesc($competency) { 128 $competencyDesc = ""; 129 if (isset($this->competencyList[$competency])) { 130 $competencyDesc = $this->competencyList[$competency]; 131 } 132 return $competencyDesc; 133 } 134 135 private function _getLanguageList() { 136 $languageService = new LanguageService(); 137 $languageList = $languageService->getLanguageList(); 138 $list = array("" => "-- " . __('Select') . " --"); 139 140 foreach($languageList as $language) { 141 $list[$language->getId()] = $language->getName(); 142 } 143 144 return $list; 145 } 146 147 /** 148 * 149 * @return array 150 */ 151 protected function getFormLabels() { 152 $required = '<em> *</em>'; 153 $labels = array( 154 'code' => __('Language') . $required, 155 'lang_type' => __('Fluency') . $required, 156 'competency' => __('Competency') . $required, 157 'comments' => __('Comments'), 158 ); 159 return $labels; 160 } 161} 162?>