示例#1
0
  static public function create($year=0, $month=0, $day=0, $hour=0, $minute=0, $second=0)
  {
    $d = new Date();

    $d->setYear($year);
    $d->setMonth($month);
    $d->setDay($day);
    $d->setHour($hour);
    $d->setMinute($minute);
    $d->setSecond($second);

    return $d;
  }
示例#2
0
 /**
  * Check start/end dates - note that check is the reverse of normal check:
  * if the operation interval is <= 60, must be start/end of an hour, to
  * make sure we update all the operation intervals in the hour, and if
  * the operation interval > 60, must be the start/end of an operation
  * interval, to make sure we update all the hours in the operation interval.
  *
  * @static
  * @param Date $oStartDate
  * @param Date $oEndDate
  * @return boolean
  */
 function checkDates($oStartDate, $oEndDate)
 {
     $aConf = $GLOBALS['_MAX']['CONF'];
     $operationInterval = $aConf['maintenance']['operation_interval'];
     if ($operationInterval <= 60) {
         // Must ensure that only one hour is being summarised
         if (!OX_OperationInterval::checkDatesInSameHour($oStartDate, $oEndDate)) {
             return false;
         }
         // Now check that the start and end dates are match the start and
         // end of the hour
         $oHourStart = new Date();
         $oHourStart->setYear($oStartDate->getYear());
         $oHourStart->setMonth($oStartDate->getMonth());
         $oHourStart->setDay($oStartDate->getDay());
         $oHourStart->setHour($oStartDate->getHour());
         $oHourStart->setMinute('00');
         $oHourStart->setSecond('00');
         $oHourEnd = new Date();
         $oHourEnd->setYear($oEndDate->getYear());
         $oHourEnd->setMonth($oEndDate->getMonth());
         $oHourEnd->setDay($oEndDate->getDay());
         $oHourEnd->setHour($oEndDate->getHour());
         $oHourEnd->setMinute('59');
         $oHourEnd->setSecond('59');
         if (!$oStartDate->equals($oHourStart)) {
             return false;
         }
         if (!$oEndDate->equals($oHourEnd)) {
             return false;
         }
     } else {
         // Must ensure that only one operation interval is being summarised
         $operationIntervalID = OX_OperationInterval::convertDaySpanToOperationIntervalID($oStartDate, $oEndDate, $operationInterval);
         if (is_bool($operationIntervalID) && !$operationIntervalID) {
             return false;
         }
         // Now check that the start and end dates match the start and end
         // of the operation interval
         list($oOperationIntervalStart, $oOperationIntervalEnd) = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oStartDate, $operationInterval);
         if (!$oStartDate->equals($oOperationIntervalStart)) {
             return false;
         }
         if (!$oEndDate->equals($oOperationIntervalEnd)) {
             return false;
         }
     }
     return true;
 }
function create_conference() {
  global $log, $spUser,$_POST,$data; 
  $msgs = array(); 
  // check the title
  if (!$_POST[conference_name] ) { 
    $msgs[] = "Conference must have a title";
    return $msgs  ; 
  } 

  // validate the date ... 
  if (($conference_uts = strtotime($_POST[conference_date]))===false )  { 
    $msgs[] = "Conference date is an Invalid date.";
    return $msgs  ; 
  } 
  list ($m,$d,$y) = split('-',$_POST[conference_date]);

  // Make date objects...
  $confDate = new Date(); 
  $confDate->setMonth($m); 
  $confDate->setYear($y); 
  $confDate->setDay($d); 
  $confDate->setHour(0); 
  $confDate->setMinute(0); 
  $confDate->setSecond(0); 
  $beginTime = $confDate; 
  $endTime = $confDate; 

  list ($beginHour,$beginMinute) = split(':', $_POST[begin_time] ); 
  list ($endHour,$endMinute) = split(':', $_POST[end_time] ); 

  $beginTime->setHour($beginHour); 
  $beginTime->setMinute($beginMinute); 
  $endTime->setHour($endHour); 
  $endTime->setMinute($endMinute); 

  // see if it's the past
  if ($endTime->isPast() ){ 
    $msgs[] = "Conference date is in the Past.";
    return $msgs ; 
  }   

  // Make sure the end time is not less than the begin time
  if (Date::compare($endTime, $beginTime) != 1     ){ 
    $msgs[] = "Start time must be before end time.";
    return $msgs ; 
  }   
  
  // create a new Conference object

  $conference = new Conference($data->db, $spUser->username,$spUser->domain); 

  // get the user's company Id and load the companies constraints
  $conference->getCompanyId(); 
  $conference->loadConstraints() ; 
  // set the date objects.
  $conference->conferenceDate = $confDate; 
  $conference->beginTime = $beginTime; 
  $conference->endTime = $endTime; 
  $conference->conferenceName = $_POST[conference_name] ; 

  // Is the conference too long
  if (!$conference->isMaxTime()) {
    $msgs[] = "Your conference exceeds the maximum amount of minutes.";
    return $msgs  ; 
  } 
  
  // Are there other conferences scheduled for this time.
  if (!$conference->isMaxConcurrent()) {
    $msgs[] = "Your company has other conferences scheduled for this time.";
    return $msgs  ; 
  } 
  $error = "nay!"; 
  if ($conference->create($error) ) { 
    $msgs[] = "Conference created id = " . $conference->conferenceId;
    Header("Location: conference.php?msg=Conference created ") ;
  } else {
    $msgs[] = "Failed to create conference. ";
     $msgs[] = "$error";
  } 
  $owner = new Invitee($data->db, $conference->conferenceId);
  $owner->domain = $spUser->domain;
  $owner->username = $spUser->username;
  $owner->companyId = $conference->companyId; 
  $owner->inviteeEmail = $spUser->dbFields[email_address] ; 
  $owner->ownerFlag =  1; 
  $owner->inviteeName = $spUser->dbFields[first_name] . " " . $spUser->dbFields[last_name] ; 
  // genereate that unique code
  $owner->generateInviteeCode();   
  $owner->create();   
  $owner->sendNotify();   
  
  return $msgs  ; 


}
示例#4
0
 /**
  * A method to get the hourly revenuo of a monthly tenancy campaign
  *
  * Monthly tenancy calculation sponsored by www.admost.nl
  *
  * @param array $aInfo The finance information, as returned by _saveSummaryGetAdFinanceInfo
  * @param Date $oStartDate
  * @param Date $oEndDate
  * @param string $table
  * @return double
  */
 function getMtRevenue($aInfo, $oStartDate, $oEndDate, $table)
 {
     OA::debug(sprintf("  - Calculating MT revenue for banner [id%d] between %s and %s:", $aInfo['ad_id'], $oStartDate->format('%Y-%m-%d %H:%M:%S %Z'), $oEndDate->format('%Y-%m-%d %H:%M:%S %Z')), PEAR_LOG_DEBUG);
     $aConf = $GLOBALS['_MAX']['CONF'];
     $oMonthStart = new Date($oStartDate);
     // Set timezone
     if (!empty($aInfo['advertiser_id'])) {
         $doClient = OA_Dal::staticGetDO('clients', $aInfo['advertiser_id']);
         $aAdvertiserPrefs = OA_Preferences::loadAccountPreferences($doClient->account_id, true);
         if (!empty($aAdvertiserPrefs['timezone'])) {
             $oMonthStart->convertTZbyID($aAdvertiserPrefs['timezone']);
         }
     }
     // Get ad/zone combinations for the campaign
     if (!isset($this->aMtRevenueCache[$aInfo['campaign_id']])) {
         $query = "\n                SELECT\n                    COUNT(*) as cnt\n                FROM\n                    " . $this->oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table'][$table], true) . " d JOIN\n                    " . $this->oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['banners'], true) . " a ON (a.bannerid = d.ad_id)\n                WHERE\n                    a.campaignid = {$aInfo['campaign_id']}\n                    AND d.date_time >= " . $this->oDbh->quote($oStartDate->format('%Y-%m-%d %H:%M:%S'), 'timestamp') . "\n                    AND d.date_time <= " . $this->oDbh->quote($oEndDate->format('%Y-%m-%d %H:%M:%S'), 'timestamp');
         $this->aMtRevenueCache[$aInfo['campaign_id']] = $this->oDbh->query($query)->fetchOne();
     }
     $oMonthStart->setDay(1);
     $oMonthStart->setHour(0);
     $oMonthStart->setMinute(0);
     $oMonthStart->setSecond(0);
     OA::debug(sprintf("    - Month start: %s", $oMonthStart->format('%Y-%m-%d %H:%M:%S %Z')), PEAR_LOG_DEBUG);
     $daysInMonth = $oMonthStart->getDaysInMonth();
     OA::debug(sprintf("    - Days in month: %d", $daysInMonth), PEAR_LOG_DEBUG);
     $oMonthEnd = new Date($oMonthStart);
     $oMonthEnd->setDay($daysInMonth);
     $oMonthEnd = $oMonthEnd->getNextDay();
     $oMonthEnd->setTZ($oMonthStart->tz);
     OA::debug(sprintf("    - Month end: %s", $oMonthEnd->format('%Y-%m-%d %H:%M:%S %Z')), PEAR_LOG_DEBUG);
     $oDiff = new Date_Span();
     $oDiff->setFromDateDiff($oMonthEnd, $oMonthStart);
     $hoursPerMonth = ceil($oDiff->toHours());
     OA::debug(sprintf("    - Hours per month: %d", $hoursPerMonth), PEAR_LOG_DEBUG);
     $oDiff = new Date_Span();
     $oDiff->setFromDateDiff($oEndDate, $oStartDate);
     $hoursPerInterval = ceil($oDiff->toHours());
     OA::debug(sprintf("    - Hours per interval: %d", $hoursPerInterval), PEAR_LOG_DEBUG);
     $adZoneCombinations = $this->aMtRevenueCache[$aInfo['campaign_id']];
     OA::debug(sprintf("    - Ad/zone/OI combinations for campaign [id%d]: %d", $aInfo['campaign_id'], $this->aMtRevenueCache[$aInfo['campaign_id']]), PEAR_LOG_DEBUG);
     $result = $aInfo['revenue'] / $hoursPerMonth * $hoursPerInterval / $adZoneCombinations;
     OA::debug(sprintf("    - Result: %0.4f", $result), PEAR_LOG_DEBUG);
     return $result;
 }
        trace("__LINE__", __LINE__);
        $this->priv1();
        $this->spf1();
    }
    // public vs. private doesn't matter
    private function priv1()
    {
        echo "Inside " . __METHOD__ . "\n";
        trace("__FUNCTION__", __FUNCTION__);
    }
    public static function spf1()
    {
        echo "Inside " . __METHOD__ . "\n";
        trace("__FUNCTION__", __FUNCTION__);
    }
}
$date1 = new Date();
$date1->setDay(22);
echo "-----------------------------------------\n";
class DatePlus extends Date
{
    public function xx()
    {
        trace("__CLASS__", __CLASS__);
        echo "Inside " . __METHOD__ . "\n";
        trace("__FUNCTION__", __FUNCTION__);
    }
}
$datePlus1 = new DatePlus();
$datePlus1->xx();
include_once 'includefile.inc';
示例#6
0
 /**
  * Convert Date from iso 8601 format.
  *
  * @access private
  *
  * @param string $date  date string in ISO 8601 format
  * @param PEAR::Date &$oResult  transformed date
  * @param XML_RPC_Response &$oResponseWithError  response with error message
  *
  * @return boolean  shows true if method was executed successfully
  */
 function _convertDateFromIso8601Format($date, &$oResult, &$oResponseWithError)
 {
     $datetime = explode('T', $date);
     $year = substr($datetime[0], 0, strlen($datetime[0]) - 4);
     $month = substr($datetime[0], -4, 2);
     $day = substr($datetime[0], -2, 2);
     // Explicitly allow the "zero date" value to be set
     if ($year == 0 && $month == 0 && $day == 0) {
         return new Date('0000-00-00');
     }
     if ($year < 1970 || $year > 2038) {
         $oResponseWithError = XmlRpcUtils::generateError('Year should be in range 1970-2038');
         return false;
     } elseif ($month < 1 || $month > 12) {
         $oResponseWithError = XmlRpcUtils::generateError('Month should be in range 1-12');
         return false;
     } elseif ($day < 1 || $day > 31) {
         $oResponseWithError = XmlRpcUtils::generateError('Day should be in range 1-31');
         return false;
     } else {
         $oResult = new Date();
         $oResult->setYear($year);
         $oResult->setMonth($month);
         $oResult->setDay($day);
         return true;
     }
 }
function showSelectPage()
{
    global $tpl;
    global $us;
    global $badgerDb;
    handleOldFinishedTransactions(new AccountManager($badgerDb));
    $widgets = new WidgetEngine($tpl);
    $widgets->addCalendarJS();
    $widgets->addToolTipJS();
    $tpl->addJavaScript("js/behaviour.js");
    $tpl->addJavaScript("js/prototype.js");
    $tpl->addJavaScript("js/statistics.js");
    $tpl->addHeaderTag('<script type="text/javascript">var badgerHelpChapter = "Statistiken";</script>');
    $dataGrid = new DataGrid($tpl);
    $dataGrid->sourceXML = BADGER_ROOT . "/core/XML/getDataGridXML.php?q=AccountManager";
    $dataGrid->headerName = array(getBadgerTranslation2('statistics', 'accColTitle'), getBadgerTranslation2('statistics', 'accColBalance'), getBadgerTranslation2('statistics', 'accColCurrency'));
    $dataGrid->columnOrder = array("title", "balance", 'currency');
    $dataGrid->initialSort = "title";
    $dataGrid->initialSortDirection = "asc";
    $dataGrid->headerSize = array(160, 100, 75);
    $dataGrid->cellAlign = array("left", 'right', 'left');
    $dataGrid->width = '30em';
    $dataGrid->height = '7em';
    $dataGrid->initDataGridJS();
    try {
        $preselectedAccounts = $us->getProperty('statisticsPreselectedAccounts');
        foreach ($preselectedAccounts as $currentPreselectedAccount) {
            $tpl->addOnLoadEvent("dgPreselectId('{$currentPreselectedAccount}');");
        }
    } catch (BadgerException $ex) {
    }
    $tpl->addOnLoadEvent("Behaviour.register(statisticsBehaviour);");
    $tpl->addOnLoadEvent("Behaviour.apply();");
    $widgets->addNavigationHead();
    $selectTitle = getBadgerTranslation2('statistics', 'pageTitle');
    echo $tpl->getHeader($selectTitle);
    $widgets->addToolTipLayer();
    $selectFormAction = BADGER_ROOT . '/modules/statistics/statistics.php';
    $graphTypeText = getBadgerTranslation2('statistics', 'type');
    $categoryTypeText = getBadgerTranslation2('statistics', 'category');
    $timeFrameText = getBadgerTranslation2('statistics', 'period');
    $summarizeCategoriesText = getBadgerTranslation2('statistics', 'catMerge');
    $accountsText = getBadgerTranslation2('statistics', 'accounts');
    $differentCurrencyWarningText = getBadgerTranslation2('statistics', 'attention');
    $fromText = getBadgerTranslation2('statistics', 'from');
    $toText = getBadgerTranslation2('statistics', 'to');
    $trendRadio = $widgets->createField('mode', null, 'trendPage', '', false, 'radio', 'checked="checked"');
    $trendLabel = $widgets->createLabel('mode', getBadgerTranslation2('statistics', 'trend'));
    $categoryRadio = $widgets->createField('mode', null, 'categoryPage', '', false, 'radio');
    $categoryLabel = $widgets->createLabel('mode', getBadgerTranslation2('statistics', 'categories'));
    $accountSelect = $dataGrid->writeDataGrid();
    $accountField = $widgets->createField('accounts', null, null, '', false, 'hidden');
    $monthArray = array('fullYear' => getBadgerTranslation2('statistics', 'fullYear'), '1' => getBadgerTranslation2('statistics', 'jan'), '2' => getBadgerTranslation2('statistics', 'feb'), '3' => getBadgerTranslation2('statistics', 'mar'), '4' => getBadgerTranslation2('statistics', 'apr'), '5' => getBadgerTranslation2('statistics', 'may'), '6' => getBadgerTranslation2('statistics', 'jun'), '7' => getBadgerTranslation2('statistics', 'jul'), '8' => getBadgerTranslation2('statistics', 'aug'), '9' => getBadgerTranslation2('statistics', 'sep'), '10' => getBadgerTranslation2('statistics', 'oct'), '11' => getBadgerTranslation2('statistics', 'nov'), '12' => getBadgerTranslation2('statistics', 'dec'));
    $monthSelect = $widgets->createSelectField('monthSelect', $monthArray, 'fullYear', '', false, 'onchange="updateDateRange();"');
    $now = new Date();
    $beginOfYear = new Date();
    $beginOfYear->setMonth(1);
    $beginOfYear->setDay(1);
    $yearInput = $widgets->createField('yearSelect', 4, $now->getYear(), '', false, 'text', 'onchange="updateDateRange();"');
    $startDateField = $widgets->addDateField("startDate", $beginOfYear->getFormatted());
    $endDateField = $widgets->addDateField("endDate", $now->getFormatted());
    $inputRadio = $widgets->createField('type', null, 'i', '', false, 'radio', 'checked="checked"');
    $inputLabel = $widgets->createLabel('type', getBadgerTranslation2('statistics', 'income'));
    $outputRadio = $widgets->createField('type', null, 'o', '', false, 'radio');
    $outputLabel = $widgets->createLabel('type', getBadgerTranslation2('statistics', 'expenses'));
    $summarizeRadio = $widgets->createField('summarize', null, 't', '', false, 'radio', 'checked="checked"');
    $summarizeLabel = $widgets->createLabel('summarize', getBadgerTranslation2('statistics', 'subCat'));
    $distinguishRadio = $widgets->createField('summarize', null, 'f', '', false, 'radio');
    $distinguishLabel = $widgets->createLabel('summarize', getBadgerTranslation2('statistics', 'subCat2'));
    $dateFormatField = $widgets->createField('dateFormat', null, $us->getProperty('badgerDateFormat'), null, false, 'hidden');
    $errorMsgAccountMissingField = $widgets->createField('errorMsgAccountMissing', null, getBadgerTranslation2('statistics', 'errorMissingAcc'), null, false, 'hidden');
    $errorMsgStartBeforeEndField = $widgets->createField('errorMsgStartBeforeEnd', null, getBadgerTranslation2('statistics', 'errorDate'), null, false, 'hidden');
    $errorMsgEndInFutureField = $widgets->createField('errorMsgEndInFuture', null, getBadgerTranslation2('statistics', 'errorEndDate'), null, false, 'hidden');
    $submitButton = $widgets->createButton('submit', getBadgerTranslation2('statistics', 'showButton'), 'submitSelect();', "Widgets/accept.gif");
    eval('echo "' . $tpl->getTemplate('statistics/select') . '";');
    eval('echo "' . $tpl->getTemplate('badgerFooter') . '";');
}
 /**
  * Expands the planned transactions.
  * 
  * All occurences of planned transactions between now and the targetFutureCalcDate will be inserted
  * in finishedTransactions. For distinction the planned transactions will have a 'p' as first character
  * in their id.
  * 
  * @throws BadgerException If an illegal repeat unit is used.
  */
 public function expandPlannedTransactions()
 {
     $now = new Date();
     $now->setHour(0);
     $now->setMinute(0);
     $now->setSecond(0);
     foreach ($this->plannedTransactions as $currentTransaction) {
         $date = new Date($currentTransaction->getBeginDate());
         $dayOfMonth = $date->getDay();
         //While we have not reached targetFutureCalcDate
         while ($this->targetFutureCalcDate->after($date) && !$date->after(is_null($tmp = $currentTransaction->getEndDate()) ? new Date('9999-12-31') : $tmp)) {
             $inRange = true;
             //Check if there is one or more valutaDate filter and apply them
             foreach ($this->filter as $currentFilter) {
                 if ($currentFilter['key'] == 'valutaDate') {
                     switch ($currentFilter['op']) {
                         case 'eq':
                             if (Date::compare($date, $currentFilter['val']) != 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'lt':
                             if (Date::compare($date, $currentFilter['val']) >= 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'le':
                             if (Date::compare($date, $currentFilter['val']) > 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'gt':
                             if (Date::compare($date, $currentFilter['val']) <= 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'ge':
                             if (Date::compare($date, $currentFilter['val']) < 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'ne':
                             if (Date::compare($date, $currentFilter['val']) == 0) {
                                 $inRange = false;
                             }
                             break;
                         case 'bw':
                         case 'ew':
                         case 'ct':
                             if (strncasecmp($date->getFormatted(), $currentFilter['val']->getFormatted(), 9999) != 0) {
                                 $inRange = false;
                             }
                             break;
                     }
                     if (!$inRange) {
                         break;
                     }
                 }
             }
             if (!$date->before($now) && $inRange) {
                 $this->finishedTransactions[] = new FinishedTransaction($this->badgerDb, $this, 'p' . $currentTransaction->getId() . '_' . $date->getDate(), $currentTransaction->getTitle(), $currentTransaction->getAmount(), $currentTransaction->getDescription(), new Date($date), $currentTransaction->getTransactionPartner(), $currentTransaction->getCategory(), $currentTransaction->getOutsideCapital(), false, true, $currentTransaction, 'PlannedTransaction');
             }
             //do the date calculation
             switch ($currentTransaction->getRepeatUnit()) {
                 case 'day':
                     $date->addSeconds($currentTransaction->getRepeatFrequency() * 24 * 60 * 60);
                     break;
                 case 'week':
                     $date->addSeconds($currentTransaction->getRepeatFrequency() * 7 * 24 * 60 * 60);
                     break;
                 case 'month':
                     //Set the month
                     $date = new Date(Date_Calc::endOfMonthBySpan($currentTransaction->getRepeatFrequency(), $date->getMonth(), $date->getYear(), '%Y-%m-%d'));
                     //And count back as far as the last valid day of this month
                     while ($date->getDay() > $dayOfMonth) {
                         $date->subtractSeconds(24 * 60 * 60);
                     }
                     break;
                 case 'year':
                     $newYear = $date->getYear() + $currentTransaction->getRepeatFrequency();
                     if ($dayOfMonth == 29 && $date->getMonth() == 2 && !Date_Calc::isLeapYear($newYear)) {
                         $date->setDay(28);
                     } else {
                         $date->setDay($dayOfMonth);
                     }
                     $date->setYear($newYear);
                     break;
                 default:
                     throw new BadgerException('Account', 'IllegalRepeatUnit', $currentTransaction->getRepeatUnit());
                     exit;
             }
         }
     }
 }
 private function previousOccurence($date, $start = null)
 {
     if (is_null($start)) {
         $start = $this->beginDate;
     }
     $dayOfMonth = $start->getDay();
     //do the date calculation
     switch ($this->repeatUnit) {
         case 'day':
             $date->subtractSeconds($this->repeatFrequency * 24 * 60 * 60);
             break;
         case 'week':
             $date->subtractSeconds($this->repeatFrequency * 7 * 24 * 60 * 60);
             break;
         case 'month':
             //Set the month
             $date = new Date(Date_Calc::endOfMonthBySpan(-$this->repeatFrequency, $date->getMonth(), $date->getYear(), '%Y-%m-%d'));
             //And count back as far as the last valid day of this month
             while ($date->getDay() > $dayOfMonth) {
                 $date->subtractSeconds(24 * 60 * 60);
             }
             break;
         case 'year':
             $newYear = $date->getYear() - $this->repeatFrequency;
             if ($dayOfMonth == 29 && $date->getMonth() == 2 && !Date_Calc::isLeapYear($newYear)) {
                 $date->setDay(28);
             } else {
                 $date->setDay($dayOfMonth);
             }
             $date->setYear($newYear);
             break;
         default:
             throw new BadgerException('Account', 'IllegalRepeatUnit', $this->repeatUnit);
             exit;
     }
     //switch
     return $date;
 }
示例#10
0
 public static function createCalendarioMes($mes, $ano, $modo)
 {
     //include_once('CalendarShow.class.php');
     $cal = new CalendarShow();
     $fecha = new Date();
     $fecha->setDay(1);
     $fecha->setMonth($mes);
     $fecha->setYear($ano);
     $fecha_uno = $fecha->toString(FMT_DATEMYSQL);
     $fecha->addMonths(1);
     $fecha->addDays(-1);
     $fecha_dos = $fecha->toString(FMT_DATEMYSQL);
     $diasEvento = array();
     $diasTareas = array();
     $c1 = TareaPeer::getCriterioAlcance();
     $crit0 = $c1->getNewCriterion(TareaPeer::FECHA_INICIO, $fecha_uno . " 00:00:00", Criteria::GREATER_EQUAL);
     $crit1 = $c1->getNewCriterion(TareaPeer::FECHA_INICIO, $fecha_dos . " 23:59:59", Criteria::LESS_EQUAL);
     $crit0->addAnd($crit1);
     $crit2 = $c1->getNewCriterion(TareaPeer::FECHA_VENCIMIENTO, $fecha_uno . " 00:00:00", Criteria::GREATER_EQUAL);
     $crit3 = $c1->getNewCriterion(TareaPeer::FECHA_VENCIMIENTO, $fecha_dos . " 23:59:59", Criteria::LESS_EQUAL);
     $crit2->addAnd($crit3);
     $crit0->addOr($crit2);
     $c1->add($crit0);
     $c1->setDistinct();
     $dias = TareaPeer::doSelect($c1);
     $ruta = UsuarioPeer::getRuta();
     foreach ($dias as $dia) {
         $fecha_inicio = $dia->getFechaInicio('Y-m-d');
         $fecha_fin = $dia->getFechaVencimiento('Y-m-d');
         if ($fecha_inicio == $fecha_fin) {
             if ($dia->getEsEvento() == '1') {
                 if (!isset($diasEvento[$fecha_inicio])) {
                     $diasEvento[$fecha_inicio] = "";
                 }
                 //$diasEvento[$fecha_inicio] .= "<div style=\"background-color: #4078B5; color: #ffffff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";
                 $diasEvento[$fecha_inicio] .= $dia->getResumen();
             } else {
                 if (!isset($diasTareas[$fecha_inicio])) {
                     $diasTareas[$fecha_inicio] = "";
                 }
                 //$diasTareas[$fecha_inicio] .= "<div style=\"background-color: #76BB5F; color: #fff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";
                 $diasTareas[$fecha_inicio] .= $dia->getResumen();
             }
         } else {
             if ($dia->getEsEvento() == '1') {
                 if (!isset($diasEvento[$fecha_inicio])) {
                     $diasEvento[$fecha_inicio] = "";
                 }
                 if (!isset($diasEvento[$fecha_fin])) {
                     $diasEvento[$fecha_fin] = "";
                 }
                 //$diasEvento[$fecha_inicio] .= "<div style=\"background-color: #4078B5; color: #ffffff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">Inicio Evento: ".$dia->getResumen()."</a></div>";
                 $diasEvento[$fecha_inicio] .= $dia->getResumen();
                 //$diasEvento[$fecha_fin] .= "<div style=\"background-color: #4078B5; color: #ffffff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">Vencimiento Evento: ".$dia->getResumen()."</a></div>";
                 $diasEvento[$fecha_fin] .= $dia->getResumen();
             } else {
                 if (!isset($diasTareas[$fecha_inicio])) {
                     $diasTareas[$fecha_inicio] = "";
                 }
                 if (!isset($diasTareas[$fecha_fin])) {
                     $diasTareas[$fecha_fin] = "";
                 }
                 //$diasTareas[$fecha_inicio] .= "<div style=\"background-color: #76BB5F; color: #fff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">Inicio Tarea: ".$dia->getResumen()."</a></div>";
                 $diasTareas[$fecha_inicio] .= $dia->getResumen();
                 //$diasTareas[$fecha_fin] .= "<div style=\"background-color: #76BB5F; color: #fff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">Vencimiento Tarea: ".$dia->getResumen()."</a></div>";
                 $diasTareas[$fecha_fin] .= $dia->getResumen();
             }
         }
         /*
         if ($dia->getEsEvento() == '1') {
             if (isset($diasEvento[$fecha]))
                 $diasEvento[$fecha] .= "<div style=\"background-color: #4078B5; color: #ffffff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";
             else
                 $diasEvento[$fecha] = "<div style=\"background-color: #4078B5; color: #ffffff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";		 		
         }
         else {
         		if (isset($diasTareas[$fecha]))
                 $diasTareas[$fecha] .= "<div style=\"background-color: #76BB5F; color: #fff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";
         		else
         		    $diasTareas[$fecha] = "<div style=\"background-color: #76BB5F; color: #fff;\"><a href=\"".$ruta."/tareas/show/?id_tarea=".$dia->getIdTarea()."\" style=\"color: #ffffff;\">".$dia->getResumen()."</a></div>";
         }
         */
         $filters = array();
         $filters['fecha_inicio']['from'] = $dia->getFechaInicio('d/m/Y');
         $filters['fecha_inicio']['to'] = $dia->getFechaVencimiento('d/m/Y');
         if ($modo) {
             if ($fecha_inicio != $fecha_fin) {
                 $cal->setDateLink($fecha_inicio, "tareas/list?mes=" . $dia->getFechaInicio('m') . "&year=" . $dia->getFechaInicio('Y') . "&filters=" . $filters);
                 $cal->setDateLink($fecha_fin, "tareas/list?mes=" . $dia->getFechaInicio('m') . "&year=" . $dia->getFechaInicio('Y') . "&filters=" . $filters);
             } else {
                 $cal->setDateLink($fecha_inicio, "tareas/list?mes=" . $dia->getFechaInicio('m') . "&year=" . $dia->getFechaInicio('Y') . "&filters=" . $filters);
             }
         } else {
             if ($fecha_inicio != $fecha_fin) {
                 $cal->setDateLink($fecha_inicio, "1");
                 $cal->setDateLink($fecha_fin, "1");
             } else {
                 $cal->setDateLink($fecha_inicio, "1");
             }
         }
     }
     $cal->setDaysInColor($diasEvento);
     $cal->setDaysFree($diasTareas);
     return $cal;
 }
示例#11
0
 /**
  * @covers Geissler\Converter\Model\Date::getDay
  */
 public function testGetDay()
 {
     $this->assertInstanceOf($this->class, $this->object->setDay(19));
     $this->assertEquals(19, $this->object->getDay());
 }
示例#12
0
 /**
  * Compares the given date and the current date.
  *
  * @return integer
  * @link http://www.php.net/manual/en/function.mktime.php
  */
 function _compareGivenDateAndCurrentDate()
 {
     $givenDate = new Date();
     $givenDate->setYear($this->_year);
     $givenDate->setMonth($this->_month);
     $givenDate->setDay($this->_day);
     $givenDate->setHour(0);
     $givenDate->setMinute(0);
     $givenDate->setSecond(0);
     $currentDate = new Date();
     $currentDate->setHour(0);
     $currentDate->setMinute(0);
     $currentDate->setSecond(0);
     return @Date::compare($givenDate, $currentDate);
 }
示例#13
0
function transferFinishedTransactions($account, $plannedTransaction)
{
    $now = new Date();
    $date = new Date($plannedTransaction->getBeginDate());
    $dayOfMonth = $date->getDay();
    //While we are before now and the end date of this transaction
    while (!$date->after($now) && !$date->after(is_null($tmp = $plannedTransaction->getEndDate()) ? new Date('9999-12-31') : $tmp)) {
        $account->addFinishedTransaction($plannedTransaction->getAmount(), $plannedTransaction->getTitle(), $plannedTransaction->getDescription(), new Date($date), $plannedTransaction->getTransactionPartner(), $plannedTransaction->getCategory(), $plannedTransaction->getOutsideCapital(), false, true);
        //do the date calculation
        switch ($plannedTransaction->getRepeatUnit()) {
            case 'day':
                $date->addSeconds($plannedTransaction->getRepeatFrequency() * 24 * 60 * 60);
                break;
            case 'week':
                $date->addSeconds($plannedTransaction->getRepeatFrequency() * 7 * 24 * 60 * 60);
                break;
            case 'month':
                //Set the month
                $date = new Date(Date_Calc::endOfMonthBySpan($plannedTransaction->getRepeatFrequency(), $date->getMonth(), $date->getYear(), '%Y-%m-%d'));
                //And count back as far as the last valid day of this month
                while ($date->getDay() > $dayOfMonth) {
                    $date->subtractSeconds(24 * 60 * 60);
                }
                break;
            case 'year':
                $newYear = $date->getYear() + $plannedTransaction->getRepeatFrequency();
                if ($dayOfMonth == 29 && $date->getMonth() == 2 && !Date_Calc::isLeapYear($newYear)) {
                    $date->setDay(28);
                } else {
                    $date->setDay($dayOfMonth);
                }
                $date->setYear($newYear);
                break;
            default:
                throw new BadgerException('Account', 'IllegalRepeatUnit', $plannedTransaction->getRepeatUnit());
                exit;
        }
    }
}
示例#14
0
 /**
  * Specifically handle month recurrence
  *
  * This method will take care of parsing the month
  * recurrence data and correctly rescheduling a
  * scan if the recurrence time has been met
  *
  * @param array $parameters Array of the parameters
  *	from the database entry for this recurrence
  *	setting
  */
 private function handle_month_recurrence($parameters)
 {
     $the_interval = $parameters['the_interval'];
     $profile_id = $parameters['profile_id'];
     $date_scheduled = $parameters['date_scheduled'];
     $rules_string = $parameters['rules_string'];
     $specific_time = $this->specific_time($parameters['specific_time']);
     // The monthly rules string is colon delimited with a max of 3 items
     $tmp = explode(':', $rules_string);
     // The type of monthly recursion will be 'day' or 'gen'
     $type = $tmp[0];
     // This is either the day of the month, or a relative day of the week
     $day = $tmp[1];
     /**
      * Take the date the scan was scheduled, and only return the
      * year and month because my calculations are based off of the 0th
      * day of the month at midnight. Using 0th day because of how 
      * strtotime determines it's offset
      */
     $month_time = strtotime($date_scheduled);
     $month_time = strftime("%Y-%m-00 00:00:00", $month_time);
     /**
      * Get X months in the future from the last date scheduled
      * Because the remaining date calculations will be based
      * off of that future time.
      */
     $time = strtotime("+{$the_interval} month", strtotime($month_time));
     /**
      * Turn the future date into PEAR object so I can use
      * the PEAR object's methods.
      */
     $future_date = new Date($time);
     $future_month = $future_date->getMonth();
     $future_year = $future_date->getYear();
     switch ($type) {
         case "gen":
             // Get the weekday that was specified
             $weekday = $this->get_weekday_fullname($tmp[2]);
             // Get the number of days in the month
             $days_in_month = Date_Calc::daysInMonth($future_month, $future_year);
             /**
              * Turn the above into an array where the day of the
              * month is the value. The last value will be the last
              * day of the month
              */
             for ($day = 1; $day <= $days_in_month; $day++) {
                 $days[] = $day;
             }
             $days_in_month = $days;
             switch ($day) {
                 case "1st":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday);
                     $future_date->setDay($day);
                     break;
                 case "2nd":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 2);
                     $future_date->setDay($day);
                     break;
                 case "3rd":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 3);
                     $future_date->setDay($day);
                     break;
                 case "4th":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 4);
                     $future_date->setDay($day);
                     break;
                 case "last":
                     $days_in_month = array_reverse($days_in_month);
                     /**
                      * I reversed the array above, so in essence we're
                      * starting from the end of the month, therefore the
                      * "last" day of the month will, in this case, be
                      * the first match
                      */
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday);
                     $future_date->setDay($day);
                     break;
                 case "2_last":
                     $days_in_month = array_reverse($days_in_month);
                     /**
                      * I reversed the array above, so in essence we're
                      * starting from the end of the month, therefore the
                      * "2nd to last" day of the month will, in this case, be
                      * the second match
                      */
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 2);
                     $future_date->setDay($day);
                     break;
             }
             break;
         default:
             $future_date->setDay($day);
             break;
     }
     $future_date = $this->set_new_time($future_date, $specific_time);
     // Compare the dates
     if ($this->today->after($future_date)) {
         // Update the date scheduled field
         $this->reschedule_scan($profile_id, $this->today->getDate());
         // Reschedule the scan
         $this->update_scan_status($profile_id, 'F', 'P');
     }
 }
示例#15
0
 /**
  * A method to fill an array of statistics data with any weeks, days, months, day
  * of weeks or hours of data that need to be included to make the statistics screen
  * "complete".
  *
  * Also ensures that any already set weeks, days, months, day of weeks or hours have
  * the correct formatting for display applied, and that the correct URI is used for
  * the week, day, month, day of week or hour column items.
  *
  * @param array $aStats   A reference to the array of statistics that needs to be filled.
  * @param array $aDates   An array of the days, months, days of week or hours that should
  *                        be filled in $aStats.
  * @param object $oCaller The calling object. Expected to have the the following class
  *                        variables set:
  *                                  $oCaller->statsBreakdown - The way stats are broken down
  *                                  $oCaller->aEmptyRow      - What an empty row looks like
  * @param string $link    Optional partial URL to be used for creating the link for the
  *                        week, day, month, day of week or hour column items.
  */
 function fillGapsAndLink(&$aStats, $aDates, $oCaller, $link = '')
 {
     foreach ($aDates as $key => $date_f) {
         // Ensure that all the required items are set by adding empty rows, if required.
         if (!isset($aStats[$key])) {
             $aStats[$key] = array($oCaller->statsBreakdown => $key) + $oCaller->aEmptyRow;
         }
         $aStats[$key]['date_f'] = $date_f;
         // Calculate CTR and other columns, making sure that the method is available
         if (is_callable(array($oCaller, '_summarizeStats'))) {
             $oCaller->_summarizeStats($aStats[$key]);
         }
         // Prepare the array of parameters for creating the LHC day-breakdown link,
         // if required - simply the $oCaller->aPageParams array with "entity" and
         // "breakdown" set as required
         if (!empty($link)) {
             $aDayLinkParams = array();
             $aDayLinkParams['entity'] = $oCaller->entity;
             $aDayLinkParams['breakdown'] = $oCaller->dayLinkBreakdown;
             $aDayLinkParams = array_merge($oCaller->aPageParams, $aDayLinkParams);
         }
         // Add links to the left hand column items, if required
         switch ($oCaller->statsBreakdown) {
             case 'week':
             case 'day':
                 // Set the "day/week" value
                 $oDate = new Date($key);
                 $aStats[$key]['day'] = $oDate->format($GLOBALS['date_format']);
                 if (!empty($link)) {
                     // Set LHC day-breakdown link, if required:
                     $aStats[$key]['link'] = $oCaller->_addPageParamsToURI($link, $aDayLinkParams) . 'day=' . str_replace('-', '', $key);
                     $aParams = $oCaller->_removeDuplicateParams($link);
                     $aStats[$key]['linkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'day=' . str_replace('-', '', $key), 1);
                     $aStats[$key]['convlinkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'day=' . str_replace('-', '', $key), 1);
                 }
                 break;
             case 'month':
                 // Set the "month" value
                 $oMonthStart = new Date(sprintf('%s-%02d', $key, 1));
                 $oMonthEnd = new Date();
                 $oMonthEnd->copy($oMonthStart);
                 $oMonthEnd->setDay($oMonthEnd->getDaysInMonth());
                 $aStats[$key]['month'] = $key;
                 if (!empty($link)) {
                     $aParams = $oCaller->_removeDuplicateParams($link);
                     $aStats[$key]['linkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'period_preset=specific&' . 'period_start=' . $oMonthStart->format('%Y-%m-%d') . '&' . 'period_end=' . $oMonthEnd->format('%Y-%m-%d'), 1);
                     $aStats[$key]['convlinkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'period_preset=specific&' . 'period_start=' . $oMonthStart->format('%Y-%m-%d') . '&' . 'period_end=' . $oMonthEnd->format('%Y-%m-%d'), 1);
                 }
                 break;
             case 'dow':
                 // Set the "dow" value
                 $aStats[$key]['dow'] = $key;
                 break;
             case 'hour':
                 // Set the "hour" value
                 $aStats[$key]['hour'] = $key;
                 if (!empty($link) && !empty($this->aDates['day_begin']) && !empty($this->aDates['day_end']) && $this->aDates['day_begin'] == $this->aDates['day_end']) {
                     $aParams = $oCaller->_removeDuplicateParams($link);
                     $aStats[$key]['linkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'day=' . str_replace('-', '', $this->aDates['day_begin']) . '&' . 'hour=' . sprintf('%02d', $key), 1);
                     $aStats[$key]['convlinkparams'] = substr($oCaller->_addPageParamsToURI('', $aParams) . 'day=' . str_replace('-', '', $this->aDates['day_begin']) . '&' . 'hour=' . sprintf('%02d', $key), 1);
                 }
                 break;
         }
     }
 }
示例#16
0
 public function getNextRunTime($date)
 {
     // check if $date is a timestamp...
     if ($date instanceof Date == false && is_integer($date)) {
         $date = new Date($date);
     }
     // assume now $date IS instanceof Date
     $cSecond = $date->getSecond();
     $cMinute = $date->getMinute();
     $cHour = $date->getHour();
     $cDay = $date->getDay();
     $cMonth = $date->getMonth();
     $cYear = $date->getYear();
     // required to check the number of days in the month
     $found = false;
     while ($found === false) {
         while ($found === false) {
             // iterate months...
             $cMonth = $this->findNextInArray($cMonth, $this->monthArray);
             if ($cMonth === null) {
                 break;
             }
             // find the day now
             while ($found === false) {
                 $cDay = $this->findNextInArray($cDay, $this->dayArray);
                 if ($cDay === null) {
                     break;
                 }
                 // here dayOfWeek and number of days in month should be checked!
                 $date = new Date();
                 $date->setYear($cYear);
                 $date->setMonth($cMonth);
                 $numberOfDaysInMonth = $date->getDaysInMonth();
                 if ($cDay > $numberOfDaysInMonth) {
                     break;
                 }
                 if ($this->dayOfWeekArray !== null) {
                     // get day of the week
                     $date->setDay($cDay);
                     $dayOfWeek = $date->getDayOfWeek();
                     if (!in_array($dayOfWeek, $this->dayOfWeekArray)) {
                         $cDay++;
                         continue;
                     }
                 }
                 while ($found === false) {
                     if ($cHour == 24) {
                         break;
                     }
                     $cHour = $this->findNextInArray($cHour, $this->hourArray);
                     if ($cHour === null) {
                         break;
                     }
                     while ($found === false) {
                         if ($cMinute == 60) {
                             break;
                         }
                         $cMinute = $this->findNextInArray($cMinute, $this->minuteArray);
                         if ($cMinute === null) {
                             break;
                         }
                         while ($found === false) {
                             if ($cSecond == 60) {
                                 break;
                             }
                             $cSecond = $this->findNextInArray($cSecond, $this->secondArray);
                             if ($cSecond === null) {
                                 break;
                             } else {
                                 // FOUND IT!!! WOOOO!
                                 // create Date object
                                 $date = new Date();
                                 $date->setYear($cYear);
                                 $date->setMonth($cMonth);
                                 $date->setDay($cDay);
                                 $date->setHour($cHour);
                                 $date->setMinute($cMinute);
                                 $date->setSecond($cSecond);
                                 return $date;
                             }
                         }
                         $cMinute++;
                         $cSecond = 0;
                     }
                     $cHour++;
                     $cMinute = 0;
                     $cSecond = 0;
                 }
                 $cDay++;
                 $cHour = 0;
                 $cMinute = 0;
                 $cSecond = 0;
             }
             $cMonth++;
             $cDay = 0;
             $cHour = 0;
             $cMinute = 0;
             $cSecond = 0;
         }
         $cYear++;
         $cMonth = 0;
         $cDay = 0;
         $cHour = 0;
         $cMinute = 0;
         $cSecond = 0;
     }
 }
function transferFormerFinishedTransactions($account)
{
    global $us;
    if ($us->getProperty('autoExpandPlannedTransactions') == false) {
        return;
    }
    $now = new Date();
    $now->setHour(0);
    $now->setMinute(0);
    $now->setSecond(0);
    $account->setType('planned');
    $account->setFilter(array(array('key' => 'beginDate', 'op' => 'le', 'val' => $now)));
    try {
        $lastInsertDate = $us->getProperty('Account_' . $account->getId() . '_LastTransferFormerFinishedTransactions');
    } catch (BadgerException $ex) {
        $lastInsertDate = new Date('1000-01-01');
    }
    $us->setProperty('Account_' . $account->getId() . '_LastTransferFormerFinishedTransactions', $now);
    if (!$lastInsertDate->before($now)) {
        return;
    }
    while ($currentTransaction = $account->getNextPlannedTransaction()) {
        $date = new Date($currentTransaction->getBeginDate());
        $dayOfMonth = $date->getDay();
        //While we are before now and the end date of this transaction
        while (!$date->after($now) && !$date->after(is_null($tmp = $currentTransaction->getEndDate()) ? new Date('9999-12-31') : $tmp)) {
            if ($date->after($lastInsertDate)) {
                $account->addFinishedTransaction($currentTransaction->getAmount(), $currentTransaction->getTitle(), $currentTransaction->getDescription(), new Date($date), $currentTransaction->getTransactionPartner(), $currentTransaction->getCategory(), $currentTransaction->getOutsideCapital(), false, true);
            }
            //do the date calculation
            switch ($currentTransaction->getRepeatUnit()) {
                case 'day':
                    $date->addSeconds($currentTransaction->getRepeatFrequency() * 24 * 60 * 60);
                    break;
                case 'week':
                    $date->addSeconds($currentTransaction->getRepeatFrequency() * 7 * 24 * 60 * 60);
                    break;
                case 'month':
                    //Set the month
                    $date = new Date(Date_Calc::endOfMonthBySpan($currentTransaction->getRepeatFrequency(), $date->getMonth(), $date->getYear(), '%Y-%m-%d'));
                    //And count back as far as the last valid day of this month
                    while ($date->getDay() > $dayOfMonth) {
                        $date->subtractSeconds(24 * 60 * 60);
                    }
                    break;
                case 'year':
                    $newYear = $date->getYear() + $currentTransaction->getRepeatFrequency();
                    if ($dayOfMonth == 29 && $date->getMonth() == 2 && !Date_Calc::isLeapYear($newYear)) {
                        $date->setDay(28);
                    } else {
                        $date->setDay($dayOfMonth);
                    }
                    $date->setYear($newYear);
                    break;
                default:
                    throw new BadgerException('Account', 'IllegalRepeatUnit', $currentTransaction->getRepeatUnit());
                    exit;
            }
        }
    }
}