本文整理汇总了PHP中JemHelper::convert2CharsDaysToInt方法的典型用法代码示例。如果您正苦于以下问题:PHP JemHelper::convert2CharsDaysToInt方法的具体用法?PHP JemHelper::convert2CharsDaysToInt怎么用?PHP JemHelper::convert2CharsDaysToInt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JemHelper
的用法示例。
在下文中一共展示了JemHelper::convert2CharsDaysToInt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: calculate_recurrence
/**
* this methode calculate the next date
*/
static function calculate_recurrence($recurrence_row)
{
// get the recurrence information
$recurrence_number = $recurrence_row['recurrence_number'];
$recurrence_type = $recurrence_row['recurrence_type'];
$day_time = 86400; // 60s * 60min * 24h
$week_time = $day_time * 7;
$date_array = JemHelper::generate_date($recurrence_row['dates'], $recurrence_row['enddates']);
switch($recurrence_type) {
case "1":
// +1 hour for the Summer to Winter clock change
$start_day = mktime(1, 0, 0, $date_array["month"], $date_array["day"], $date_array["year"]);
$start_day = $start_day + ($recurrence_number * $day_time);
break;
case "2":
// +1 hour for the Summer to Winter clock change
$start_day = mktime(1, 0, 0, $date_array["month"], $date_array["day"], $date_array["year"]);
$start_day = $start_day + ($recurrence_number * $week_time);
break;
case "3": // month recurrence
/*
* warning here, we have to make sure the date exists:
* 31 of october + 1 month = 31 of november, which doesn't exists => skip the date!
*/
$start_day = mktime(1,0,0,($date_array["month"] + $recurrence_number),$date_array["day"],$date_array["year"]);
$i = 1;
while (date('d', $start_day) != $date_array["day"] && $i < 20) { // not the same day of the month... try next date !
$i++;
$start_day = mktime(1,0,0,($date_array["month"] + $recurrence_number*$i),$date_array["day"],$date_array["year"]);
}
break;
case "4": // weekday
// the selected weekdays
$selected = JemHelper::convert2CharsDaysToInt(explode(',', $recurrence_row['recurrence_byday']), 0);
$days_names = array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday');
$litterals = array('first', 'second', 'third', 'fourth');
if (count($selected) == 0)
{
// this shouldn't happen, but if it does, to prevent problem use the current weekday for the repetition.
JError::raiseWarning(500, JText::_('COM_JEM_WRONG_EVENTRECURRENCE_WEEKDAY'));
$current_weekday = (int) $date_array["weekday"];
$selected = array($current_weekday);
}
$start_day = null;
foreach ($selected as $s)
{
$next = null;
switch ($recurrence_number) {
case 6: // before last 'x' of the month
$next = strtotime("previous ".$days_names[$s].' - 1 week ',
mktime(1,0,0,$date_array["month"]+1 ,1,$date_array["year"]));
$nextmonth = strtotime("previous ".$days_names[$s].' - 1 week ',
mktime(1,0,0,$date_array["month"]+2 ,1,$date_array["year"]));
break;
case 5: // last 'x' of the month
$next = strtotime("previous ".$days_names[$s],
mktime(1,0,0,$date_array["month"]+1 ,1,$date_array["year"]));
$nextmonth = strtotime("previous ".$days_names[$s],
mktime(1,0,0,$date_array["month"]+2 ,1,$date_array["year"]));
break;
case 4: // xth 'x' of the month
case 3:
case 2:
case 1:
default:
$next = strtotime($litterals[$recurrence_number-1]." ".$days_names[$s].' of this month',
mktime(1,0,0,$date_array["month"] ,1,$date_array["year"]));
$nextmonth = strtotime($litterals[$recurrence_number-1]." ".$days_names[$s].' of this month',
mktime(1,0,0,$date_array["month"]+1 ,1,$date_array["year"]));
break;
}
// is the next / nextm day eligible for next date ?
if ($next && $next > strtotime($recurrence_row['dates'])) // after current date !
{
if (!$start_day || $start_day > $next) { // comes before the current 'start_date'
$start_day = $next;
}
}
if ($nextmonth && (!$start_day || $start_day > $nextmonth)) {
$start_day = $nextmonth;
}
}
break;
}
if (!$start_day) {
return false;
}
$recurrence_row['dates'] = date("Y-m-d", $start_day);
if ($recurrence_row['enddates']) {
$recurrence_row['enddates'] = date("Y-m-d", $start_day + $date_array["day_diff"]);
//.........这里部分代码省略.........