public function relativeDateTime(Zend_Date $date = null)
 {
     if (null === $date) {
         return $this;
     }
     $todayDate = new Zend_Date();
     $diff = $todayDate->sub($date);
     $mt = new Zend_Measure_Time($diff);
     $units = $mt->getConversionList();
     $chunks = array(Zend_Measure_Time::YEAR, Zend_Measure_Time::MONTH, Zend_Measure_Time::WEEK, Zend_Measure_Time::DAY, Zend_Measure_Time::HOUR, Zend_Measure_Time::MINUTE, Zend_Measure_Time::SECOND);
     for ($i = 0, $count = count($chunks); $i < $count; ++$i) {
         $seconds = $units[$chunks[$i]][0];
         $unitKey = $chunks[$i];
         if (0.0 !== ($result = floor($diff->get(Zend_Date::TIMESTAMP) / $seconds))) {
             break;
         }
     }
     $translateHelper = new Zend_View_Helper_Translate();
     if ($result === (double) 1) {
         $formatedString = $translateHelper->translate($this->getUnitTemplate($unitKey));
     } else {
         $formatedString = $translateHelper->translate($this->getUnitTemplate($unitKey . 'S'));
     }
     $formatedString = str_replace('%value%', (string) $result, $formatedString);
     return $formatedString;
 }
示例#2
0
文件: Date.php 项目: fredcido/simuweb
 /**
  *
  * @param Zend_Date $iniDate
  * @return int
  */
 public static function getMonth(Zend_Date $iniDate, $now = null)
 {
     $date = $now ? $now : new Zend_Date();
     $difference = $date->sub($iniDate);
     $measure = new Zend_Measure_Time($difference->toValue(), Zend_Measure_Time::SECOND);
     $measure->convertTo(Zend_Measure_Time::MONTH);
     return round($measure->getValue());
 }
示例#3
0
 /**
  * 
  * @return int|bool
  */
 public function save()
 {
     $dbAdapter = Zend_Db_Table_Abstract::getDefaultAdapter();
     $dbAdapter->beginTransaction();
     try {
         $dateStart = new Zend_Date($this->_data['date_start']);
         $dateFinish = new Zend_Date($this->_data['date_finish']);
         $mapperRule = new Fefop_Model_Mapper_Rule();
         $mapperRule->validate($this->_message, $this->_data, Fefop_Model_Mapper_Expense::CONFIG_PFPCI_RI);
         // Check if the initial date is later than finish date
         if ($dateStart->isLater($dateFinish)) {
             $this->_message->addMessage('Data loron keta liu data remata.');
             $this->addFieldError('date_start')->addFieldError('date_finish');
             return false;
         }
         // If there is no contract yet
         if (empty($this->_data['fk_id_fefop_contract'])) {
             $dataContract = array('module' => Fefop_Model_Mapper_Module::RI, 'district' => $this->_data['fk_id_adddistrict']);
             $mapperFefopContract = new Fefop_Model_Mapper_Contract();
             $this->_data['fk_id_fefop_contract'] = $mapperFefopContract->save($dataContract);
         }
         $this->_data['amount'] = App_General_String::toFloat($this->_data['amount']);
         $this->_data['date_start'] = $dateStart->toString('yyyy-MM-dd');
         $this->_data['date_finish'] = $dateFinish->toString('yyyy-MM-dd');
         $dataForm = $this->_data;
         // Save the contract
         $dataForm['id_ri_contract'] = parent::_simpleSave();
         // Save budget category
         $this->_saveExpenses($dataForm);
         if (empty($this->_data['id_ri_contract'])) {
             $history = 'REJISTU KONTRAKTU RI: %s';
         } else {
             $history = 'ATUALIZA KONTRAKTU RI: %s';
         }
         $history = sprintf($history, $dataForm['id_ri_contract']);
         $this->_sysAudit($history);
         if ($this->_data['amount'] > self::LIMIT_AMOUNT) {
             $this->_sendWarningAmount($dataForm['id_ri_contract']);
         }
         $diff = $dateFinish->sub($dateStart);
         $measure = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
         $diffMonth = preg_replace('/[^0-9.]/i', '', $measure->convertTo(Zend_Measure_Time::MONTH, 0));
         if ((double) $diffMonth > self::MOUNTH_LIMIT) {
             $this->_sendWarningDuration($dataForm['id_ri_contract']);
         }
         $dbAdapter->commit();
         return $dataForm['id_ri_contract'];
     } catch (Exception $e) {
         $dbAdapter->rollBack();
         $this->_message->addMessage($this->_config->messages->error, App_Message::ERROR);
         return false;
     }
 }
示例#4
0
 protected function getDiff(Zend_Date $timeThen, $timeNow = null)
 {
     if (!$timeNow instanceof Zend_Date) {
         $timeNow = new Zend_Date();
     }
     $difference = $timeNow->isLater($timeThen) ? $timeNow->sub($timeThen) : $timeThen->sub($timeNow);
     //$difference = $timeNow->sub($timeThen);
     $measure = new Zend_Measure_Time($difference->toValue(), Zend_Measure_Time::SECOND);
     if ($measure->compare(new Zend_Measure_Time(0)) == 0) {
         return $measure->convertTo(Zend_Measure_Time::SECOND, 0);
     }
     $units = array('SECOND' => array('1', 's'), 'MINUTE' => array('60', 'min'), 'HOUR' => array('3600', 'h'), 'DAY' => array('86400', 'day'), 'WEEK' => array('604800', 'week'), 'MONTH' => array('2628600', 'month'), 'YEAR' => array('31536000', 'year'));
     foreach ($units as $unitId => $unit) {
         if (is_array($unit) && $unit[0] / abs($measure->getValue(-1)) > 1) {
             break;
         }
         $convertTo = $unitId;
     }
     return $measure->convertTo($convertTo, 0);
 }
示例#5
0
文件: TimeTest.php 项目: netvlies/zf
 /**
  * @group ZF-9078
  */
 public function testSetTypeOnPhpMathWithStrippedValue()
 {
     $locale = new Zend_Locale('en_US');
     $time = new Zend_Measure_Time(0, Zend_Measure_Time::SECOND);
     $time->setLocale($locale);
     $time->setType(Zend_Measure_Time::SECOND);
     $seconds = $time->getValue();
     $this->assertEquals(0, $seconds);
     $this->assertEquals(Zend_Measure_Time::SECOND, $time->getType());
 }
 /**
  * 
  */
 public function calcDiffDaysAction()
 {
     $dateInit = new Zend_Date($this->_getParam('date_start'));
     $dateFinish = new Zend_Date($this->_getParam('date_finish'));
     $diff = $dateFinish->sub($dateInit);
     $measure = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
     $diffDays = $measure->convertTo(Zend_Measure_Time::DAY, 0);
     $this->_helper->json(array('diff' => preg_replace('/[^0-9]/i', '', $diffDays) + 1));
 }
示例#7
0
 /**
  *
  * @param int $feContract
  * @return string 
  */
 public function getFEGreaterDuration($feContract)
 {
     $view = Zend_Layout::getMvcInstance()->getView();
     $link = '<a href="%s" target="_blank">%s</a>';
     $feContractNum = Fefop_Model_Mapper_Contract::buildNumRow($feContract);
     $feLink = sprintf($link, $view->baseUrl('/fefop/fe-contract/edit/id/' . $feContract->id_fe_contract), $feContractNum);
     $measure = new Zend_Measure_Time(Fefop_Model_Mapper_FEContract::MOUNTH_LIMIT, Zend_Measure_Time::MONTH);
     $diffMonths = $measure->convertTo(Zend_Measure_Time::MONTH, 0);
     $dateInit = new Zend_Date($feContract->date_start);
     $dateFinish = new Zend_Date($feContract->date_finish);
     $diff = $dateFinish->sub($dateInit);
     $measure = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
     $diiffMonth = $measure->convertTo(Zend_Measure_Time::MONTH, 0);
     return sprintf(self::FE_DURATION_GREATER, $feLink, $diffMonths, $diiffMonth);
 }
示例#8
0
文件: Rule.php 项目: fredcido/simuweb
 /**
  * 
  * @param string $unit
  * @return mixed
  * @throws Exception
  */
 protected function _getDiff($unit)
 {
     $start_date = null;
     $finish_date = null;
     switch (true) {
         case !empty($this->_dataModel['date_start']):
             $start_date = $this->_dataModel['date_start'];
             break;
         case !empty($this->_dataModel['start_date']):
             $start_date = $this->_dataModel['start_date'];
             break;
     }
     switch (true) {
         case !empty($this->_dataModel['date_finish']):
             $finish_date = $this->_dataModel['date_finish'];
             break;
         case !empty($this->_dataModel['finish_date']):
             $finish_date = $this->_dataModel['finish_date'];
             break;
     }
     if (empty($start_date) || empty($finish_date)) {
         $message = 'La hetan loron hahu no loron remata ba halo validasaun';
         $this->_messageModel->addMessage($message, App_Message::ERROR);
         throw new Exception($message);
     }
     $dateStart = new Zend_Date($start_date);
     $dateFinish = new Zend_Date($finish_date);
     $diff = $dateFinish->sub($dateStart);
     $measure = null;
     switch ($unit) {
         case 'D':
             $measure = Zend_Measure_Time::DAY;
             break;
         case 'M':
             $measure = Zend_Measure_Time::MONTH;
             break;
         case 'Y':
             $measure = Zend_Measure_Time::YEAR;
             break;
     }
     $measureZend = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
     $diffFinal = $measureZend->convertTo($measure, 0);
     return preg_replace('/[^0-9]/i', '', $diffFinal);
 }
示例#9
0
 /**
  * 
  */
 public function fetchClassAction()
 {
     $mapperStudentClass = new StudentClass_Model_Mapper_StudentClass();
     $studentClass = $mapperStudentClass->detailStudentClass($this->_getParam('id'));
     $data = array();
     $data['fk_id_fefpstudentclass'] = $studentClass['id_fefpstudentclass'];
     $data['class_name'] = $studentClass['class_name'];
     $data['date_start'] = $this->view->date($studentClass['start_date']);
     $data['date_finish'] = $this->view->date($studentClass['schedule_finish_date']);
     $dateInit = new Zend_Date($studentClass['start_date']);
     $dateFinish = new Zend_Date($studentClass['schedule_finish_date']);
     $diff = $dateFinish->sub($dateInit);
     $measure = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
     $diffDays = $measure->convertTo(Zend_Measure_Time::DAY, 0);
     $data['duration'] = preg_replace('/[^0-9]/i', '', $diffDays);
     $this->_helper->json($data);
 }
示例#10
0
 /**
  * Return the difference of 2 dates in seconds
  * @param $startDate
  * @param $endDate
  *
  * @return int|string
  */
 public static function getDifferenceInSeconds($startDate, $endDate)
 {
     $locale = Mage::getModel('core/locale')->getLocale();
     $start_date = new Zend_Date($startDate, 'yyyy-MM-dd HH:mm:ss', $locale);
     $end_date = new Zend_Date($endDate, 'yyyy-MM-dd HH:mm:ss', $locale);
     $difference = $end_date->sub($start_date);
     $measure = new Zend_Measure_Time($difference->toValue(), Zend_Measure_Time::SECOND);
     return $measure->getValue();
 }
示例#11
0
 /**
  * 
  */
 public function notifyFollowupCase()
 {
     $dbAdapter = Zend_Db_Table_Abstract::getDefaultAdapter();
     $dbAdapter->beginTransaction();
     try {
         $filters = array('status' => 1);
         $today = new Zend_Date();
         $mapperCase = new Client_Model_Mapper_Case();
         $rows = $mapperCase->listByFilters($filters);
         // Search the user who must receive notes to follow up cases
         $noteTypeMapper = new Admin_Model_Mapper_NoteType();
         $users = $noteTypeMapper->getUsersByNoteType(Admin_Model_Mapper_NoteType::CASE_FOLLOW_UP);
         $noteModelMapper = new Default_Model_Mapper_NoteModel();
         $noteMapper = new Default_Model_Mapper_Note();
         foreach ($rows as $row) {
             $dateCase = new Zend_Date($row->date_start, 'dd/MM/yyyy');
             $days = $today->sub($dateCase);
             $measure = new Zend_Measure_Time($days->toValue(), Zend_Measure_Time::SECOND);
             $diffDays = $measure->convertTo(Zend_Measure_Time::DAY, 0);
             $diff = (double) preg_replace('/[^0-9]/i', '', $diffDays);
             if ($diff % 15 != 0) {
                 continue;
             }
             $usersWarning = $users;
             $usersWarning[] = $row->fk_id_counselor;
             $dataNote = array('title' => 'HALO AKOMPAÑAMENTU KAZU HO KLIENTE', 'level' => 0, 'message' => $noteModelMapper->getFollowUpCase($row->client), 'users' => $usersWarning);
             $noteMapper->setData($dataNote)->saveNote();
         }
         $dbAdapter->commit();
         return true;
     } catch (Exception $e) {
         $dbAdapter->rollBack();
         echo "Error sending cases follow-ups notifications: " . $e->getMessage() . "\n";
         return false;
     }
 }
示例#12
0
 protected function autenticateLdap()
 {
     try {
         $container = Core_Registry::getContainers();
         $ldap = $container['ldap']->getPersist();
         $config = \Zend_Registry::get('configs');
         $samAccountNameQuery = "samAccountName={$this->getIdentity()}";
         /**
          * Modifica o host para o servidor secundário.
          */
         if ($this->_secondaryHost && isset($config['resources']['container']['ldap']['host']['secondary'])) {
             $options = $ldap->getOptions();
             $options['host'] = $config['resources']['container']['ldap']['host']['secondary'];
             $ldap = new Zend_Ldap($options);
         }
         $admUsr = $config['authenticate']['username'];
         $admPwd = $config['authenticate']['password'];
         $ldap->bind($admUsr, $admPwd);
         $userLdapCount = $ldap->count($samAccountNameQuery);
         if ($userLdapCount <= 0) {
             throw new \Sica_Auth_Exception('MN175');
         }
         $userLdap = current($ldap->search($samAccountNameQuery)->toArray());
         $pwdLastSetLDAPTimestamp = isset($userLdap['pwdlastset'][0]) ? $userLdap['pwdlastset'][0] : 0;
         $pwdLastSetLDAPTimestamp_div = bcdiv($pwdLastSetLDAPTimestamp, '10000000');
         $pwdLastSetLDAPTimestamp_sub = bcsub($pwdLastSetLDAPTimestamp_div, '11644473600');
         $pwdLastSetDate = new \Zend_Date($pwdLastSetLDAPTimestamp_sub, \Zend_Date::TIMESTAMP);
         $measureTime = new \Zend_Measure_Time(\Zend_Date::now()->sub($pwdLastSetDate)->toValue(), \Zend_Measure_Time::SECOND);
         $measureTime->convertTo(\Zend_Measure_Time::DAY);
         $daysLeftToChangePwd = ceil($measureTime->getValue());
         if ($daysLeftToChangePwd >= self::LDAP_MAX_PWD_LAST_SET_DAYS) {
             throw new \Sica_Auth_Exception('EXPIRED_PWD_MSG');
         }
         $ldap->bind($this->getIdentity(), $this->getCredential());
         return TRUE;
     } catch (\Sica_Auth_Exception $authExc) {
         $this->_authenticateResultInfo['code'] = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
         $this->_authenticateResultInfo['messages'] = $authExc->getMessage();
         return false;
     } catch (\Zend_Ldap_Exception $ldapExc) {
         $ldapCode = $ldapExc->getCode();
         $message = sprintf('[SICA-e] LDAP Error in %s: "%s"', __METHOD__, $ldapExc->getMessage());
         error_log($message);
         $message = sprintf('[Erro no LDAP] %s', $ldapExc->getMessage());
         /**
          * Se não foi possível contactar o servidor LDAP e se não
          * for uma tentativa de autenticação no servidor secundário.
          */
         if ($ldapCode == self::LDAP_CONST_CODE_CANT_CONTACT_SERVER && !$this->_secondaryHost) {
             #Tentativa de autenticação no servidor secundário.
             $this->_secondaryHost = TRUE;
             return $this->autenticateLdap();
         }
         if ($ldapCode > 0) {
             $message = sprintf('LDAP0x%02x', $ldapCode);
         }
         if (false !== strpos($ldapExc->getMessage(), self::LDAP_CONST_NT_STATUS_PASSWORD_EXPIRED)) {
             $message = 'EXPIRED_PWD_MSG';
         }
         $this->_authenticateResultInfo['code'] = Zend_Auth_Result::FAILURE_UNCATEGORIZED;
         $this->_authenticateResultInfo['messages'] = $message;
         return false;
     }
 }
示例#13
0
 /**
  * 
  * @return int|bool
  */
 public function save()
 {
     $dbAdapter = Zend_Db_Table_Abstract::getDefaultAdapter();
     $dbAdapter->beginTransaction();
     try {
         $this->_data['amount'] = 0;
         foreach ($this->_data['cost_expense'] as $cost) {
             $this->_data['amount'] += App_General_String::toFloat($cost);
         }
         $mapperRule = new Fefop_Model_Mapper_Rule();
         $mapperRule->validate($this->_message, $this->_data, Fefop_Model_Mapper_Expense::CONFIG_PISE_FE);
         $dateStart = new Zend_Date($this->_data['date_start']);
         $dateFinish = new Zend_Date($this->_data['date_finish']);
         //$dateFormation = new Zend_Date( $this->_data['date_formation'] );
         // Check if the initial date is later than finish date
         if ($dateStart->isLater($dateFinish)) {
             $this->_message->addMessage('Data loron keta liu data remata.');
             $this->addFieldError('date_start')->addFieldError('date_finish');
             return false;
         }
         // If there is no contract yet
         if (empty($this->_data['fk_id_fefop_contract'])) {
             $dataContract = array('module' => Fefop_Model_Mapper_Module::FE, 'district' => $this->_data['fk_id_adddistrict']);
             $mapperFefopContract = new Fefop_Model_Mapper_Contract();
             $this->_data['fk_id_fefop_contract'] = $mapperFefopContract->save($dataContract);
         }
         $this->_data['date_start'] = $dateStart->toString('yyyy-MM-dd');
         $this->_data['date_finish'] = $dateFinish->toString('yyyy-MM-dd');
         //$this->_data['date_formation'] = $dateFormation->toString( 'yyyy-MM-dd' );
         $dataForm = $this->_data;
         // If it has linkage with trainee
         if (!empty($dataForm['fk_id_trainee'])) {
             $dataTrainee = array('date_start' => $this->_data['date_start'], 'date_finish' => $this->_data['date_finish'], 'duration' => $this->_data['duration_month']);
             $where = array('id_trainee = ?' => $dataForm['fk_id_trainee']);
             $dbTrainee = App_Model_DbTable_Factory::get('JOBTrainingTrainee');
             $dbTrainee->update($dataTrainee, $where);
         }
         // Save the contract
         $dataForm['id_fe_contract'] = parent::_simpleSave();
         // Check if the duration is longer than 6 months
         $diff = $dateFinish->sub($dateStart);
         $measure = new Zend_Measure_Time($diff->toValue(), Zend_Measure_Time::SECOND);
         $diffMonth = preg_replace('/[^0-9.]/i', '', $measure->convertTo(Zend_Measure_Time::MONTH, 0));
         // If it is longer, send a warning
         //if ( (float)$diffMonth > self::MOUNTH_LIMIT )
         //$this->_sendWarningDuration( $dataForm['id_fe_contract'] );
         // Save budget category
         $this->_saveExpenses($dataForm);
         // Check the beneficiary graduation
         $this->_checkBeneficiaryGraduation($dataForm);
         if (empty($this->_data['id_fe_contract'])) {
             $history = 'REJISTU KONTRAKTU RI: %s';
         } else {
             $history = 'ATUALIZA KONTRAKTU RI: %s';
         }
         $history = sprintf($history, $dataForm['id_fe_contract']);
         $this->_sysAudit($history);
         $dbAdapter->commit();
         return $dataForm['id_fe_contract'];
     } catch (Exception $e) {
         $dbAdapter->rollBack();
         $this->_message->addMessage($this->_config->messages->error, App_Message::ERROR);
         return false;
     }
 }
示例#14
0
文件: TimeTest.php 项目: lortnus/zf1
 /**
  * test getConversionList
  * expected array
  */
 public function testTimeConversionList()
 {
     $value = new Zend_Measure_Time('-100', Zend_Measure_Time::STANDARD, 'de');
     $unit = $value->getConversionList();
     $this->assertTrue(is_array($unit), 'Array expected');
 }