本文整理汇总了PHP中Tinebase_DateTime::sub方法的典型用法代码示例。如果您正苦于以下问题:PHP Tinebase_DateTime::sub方法的具体用法?PHP Tinebase_DateTime::sub怎么用?PHP Tinebase_DateTime::sub使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tinebase_DateTime
的用法示例。
在下文中一共展示了Tinebase_DateTime::sub方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _checkDeadline
/**
* checks deadline of record
*
* @param Timetracker_Model_Timesheet $_record
* @param boolean $_throwException
* @return void
* @throws Timetracker_Exception_Deadline
*/
protected function _checkDeadline(Timetracker_Model_Timesheet $_record, $_throwException = TRUE)
{
// get timeaccount
$timeaccount = Timetracker_Controller_Timeaccount::getInstance()->get($_record->timeaccount_id);
if (isset($timeaccount->deadline) && $timeaccount->deadline == Timetracker_Model_Timeaccount::DEADLINE_LASTWEEK) {
if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Check if deadline is exceeded for timeaccount ' . $timeaccount->title);
}
// it is only on monday allowed to add timesheets for last week
$date = new Tinebase_DateTime();
$date->setTime(0, 0, 0);
$dayOfWeek = $date->get('w');
if ($dayOfWeek >= 2) {
// only allow to add ts for this week
$date->sub($dayOfWeek, Tinebase_DateTime::MODIFIER_DAY);
} else {
// only allow to add ts for last week
$date->sub($dayOfWeek + 7, Tinebase_DateTime::MODIFIER_DAY);
}
// convert start date to Tinebase_DateTime
$startDate = new Tinebase_DateTime($_record->start_date);
if ($date->compare($startDate) >= 0) {
if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Deadline exceeded: ' . $startDate . ' < ' . $date);
}
if ($this->checkRight(Timetracker_Acl_Rights::MANAGE_TIMEACCOUNTS, FALSE) || Timetracker_Model_TimeaccountGrants::hasGrant($_record->timeaccount_id, Tinebase_Model_Grants::GRANT_ADMIN)) {
if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' User with admin / manage all rights is allowed to save Timesheet even if it exceeds the deadline.');
}
} else {
if ($_throwException) {
throw new Timetracker_Exception_Deadline();
}
}
} else {
if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Valid date: ' . $startDate . ' >= ' . $date);
}
}
}
}
示例2: _getFirstAndLastDayOfWeek
/**
* get string representation of first and last days of the week defined by date/week number
*
* @param Tinebase_DateTime $_date
* @param integer $_weekNumber optional
* @return array
*/
protected function _getFirstAndLastDayOfWeek(Tinebase_DateTime $_date, $_weekNumber = NULL)
{
$firstDayOfWeek = $this->_getFirstDayOfWeek();
if ($_weekNumber !== NULL) {
$_date->setWeek($_weekNumber);
}
$dayOfWeek = $_date->get('w');
// in some locales sunday is last day of the week -> we need to init dayOfWeek with 7
$dayOfWeek = $firstDayOfWeek == 1 && $dayOfWeek == 0 ? 7 : $dayOfWeek;
$_date->sub($dayOfWeek - $firstDayOfWeek, Tinebase_DateTime::MODIFIER_DAY);
$firstDay = $_date->toString($this->_dateFormat);
$_date->add(6, Tinebase_DateTime::MODIFIER_DAY);
$lastDay = $_date->toString($this->_dateFormat);
$result = array($firstDay, $lastDay);
return $result;
}
示例3: _grantTestHelper
/**
* try to add a Timesheet with different grants
*
* @param Tinebase_Record_RecordSet $_grants
* @param string $_action
* @param mixed $_expect
* @param Timetracker_Model_Timesheet
*/
protected function _grantTestHelper($_grants, $_action = 'create', $_expect = NULL, $_ts = NULL)
{
// take default ts?
$ts = $_ts ? $_ts : $this->_objects['timesheet'];
// remove BOOK_OWN + BOOK_ALL + ADMIN grant
Timetracker_Model_TimeaccountGrants::setTimeaccountGrants($this->_objects['timeaccount'], $_grants, TRUE);
// try to create timesheet
switch ($_action) {
case 'create':
if ($_expect === 'Exception') {
$this->setExpectedException('Tinebase_Exception_AccessDenied');
$this->_timesheetController->create($ts);
} else {
$ts = $this->_timesheetController->create($ts);
$this->assertEquals(Tinebase_Core::getUser()->getId(), $ts->created_by);
}
break;
case 'create_deadline':
// date is before deadline
$date = new Tinebase_DateTime();
$date->sub(8, Tinebase_DateTime::MODIFIER_DAY);
$ts->start_date = $date->toString('Y-m-d');
$this->setExpectedException('Timetracker_Exception_Deadline');
$this->_timesheetController->create($ts);
break;
case 'search_bookable':
$filter = $this->_getTimeaccountFilter(TRUE);
$result = $this->_timeaccountController->search($filter);
$this->assertEquals($_expect, count($result));
break;
case 'searchTA':
$filter = $this->_getTimeaccountFilter();
$result = $this->_timeaccountController->search($filter);
$this->assertEquals($_expect, count($result));
break;
case 'searchTS':
$filter = $this->_getTimesheetFilter();
$ts = $this->_timesheetController->create($ts);
$result = $this->_timesheetController->search($filter);
$this->assertEquals($_expect, count($result));
break;
case 'searchTSExport':
$filter = $this->_getTimesheetFilter();
$result = $this->_timesheetController->search($filter, NULL, FALSE, FALSE, 'export');
$this->assertEquals($_expect, count($result));
break;
default:
echo "nothing tested.";
}
// delete (set delete grant first)
$grants = new Tinebase_Record_RecordSet('Timetracker_Model_TimeaccountGrants', array(array('account_id' => Tinebase_Core::getUser()->getId(), 'account_type' => 'user', Timetracker_Model_TimeaccountGrants::MANAGE_BILLABLE => TRUE, Tinebase_Model_Grants::GRANT_ADMIN => TRUE, Timetracker_Model_TimeaccountGrants::BOOK_ALL => TRUE, Timetracker_Model_TimeaccountGrants::BOOK_OWN => TRUE, Timetracker_Model_TimeaccountGrants::VIEW_ALL => TRUE, Tinebase_Model_Grants::GRANT_EXPORT => TRUE)));
Timetracker_Model_TimeaccountGrants::setTimeaccountGrants($this->_objects['timeaccount'], $grants, TRUE);
}