Commit | Line | Data |
---|---|---|
2387f6d1 DH |
1 | <?php |
2 | /* | |
3 | * Smarty plugin | |
4 | * ------------------------------------------------------------- | |
5 | * Type: function | |
6 | * Name: date_diff | |
7 | * Version: 2.0 | |
8 | * Date: June 22, 2008 | |
9 | * Author: Matt DeKok | |
10 | * Purpose: factor difference between two dates in days, weeks, | |
11 | * or years | |
12 | * Input: date1 = "mm/dd/yyyy" or "yyyy/mm/dd" or "yyyy-mm-dd" | |
13 | * date2 = "mm/dd/yyyy" or "yyyy/mm/dd" or "yyyy-mm-dd" or $smarty.now | |
14 | * assign = name of variable to assign difference to | |
15 | * interval = "days" (default), "weeks", "years" | |
16 | * Examples: {date_diff date1="5/12/2003" date2=$smarty.now interval="weeks"} | |
17 | * {date_diff date1="5/12/2003" date2="5/10/2008" assign="diff"}{$diff} | |
18 | * ------------------------------------------------------------- | |
19 | */ | |
20 | function smarty_function_date_diff($params, &$smarty) { | |
21 | $date1 = mktime(0,0,0,1,1,2000); | |
22 | $date2 = mktime(0,0,0,date("m"),date("d"),date("Y")); | |
23 | $assign = null; | |
24 | $interval = "days"; | |
25 | ||
26 | extract($params); | |
27 | ||
28 | $i = 1/60/60/24; | |
29 | if($interval == "weeks") { | |
30 | $i = $i/7; | |
31 | } elseif($interval == "years") { | |
32 | $i = $i/365.25; | |
33 | } | |
34 | ||
35 | $date1 = ((is_string($date1))?strtotime($date1):$date1); | |
36 | $date2 = ((is_string($date2))?strtotime($date2):$date2); | |
37 | ||
38 | if($assign != null) { | |
39 | $smarty->assign($assign,floor(($date2 - $date1)*$i)); | |
40 | } else { | |
41 | return floor(($date2 - $date1)*$i); | |
42 | } | |
43 | } | |
44 | ?> |