Advertisement
matthewpoer

SugarLogic Custom Function subDate()

Nov 30th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.88 KB | None | 0 0
  1. <?php
  2. /*
  3.  * File Location:
  4.  * /custom/include/Expressions/Expression/Date/psi_SubDateExpression.php
  5.  */
  6. require_once('include/Expressions/Expression/Date/DateExpression.php');
  7.  
  8. /**
  9.  * <b>psi_subDate($date1, $date2)</b><br>
  10.  * Returns an absolute value integer of the number of days between <em>$date1</em> and <em>$date2</em>
  11.  * ex: <em>psi_subDate(date("1/1/2010"), date("1/5/2010"))</em> = "4"
  12.  **/
  13. class psi_SubDateExpression extends DateExpression{
  14.  
  15.   static function getOperationName() {
  16.     return "psi_subDays";
  17.   }
  18.  
  19.   static function getParameterTypes() {
  20.     return array("date", "date");
  21.   }
  22.  
  23.   static function getParamCount() {
  24.     return 2;
  25.   }
  26.  
  27.   function toString() {
  28.  
  29.   }
  30.  
  31.   function evaluate() {
  32.     $params = $this->getParameters();
  33.     $date1 = DateExpression::parse($params[0]->evaluate());
  34.     $date2 = DateExpression::parse($params[1]->evaluate());
  35.     if(!$date1) {
  36.       return false;
  37.     }
  38.     if(!$date2){
  39.       return false;
  40.     }
  41.    
  42.     $date1_string = $date1->format('U');
  43.     $date2_string = $date2->format('U');
  44.     $diff = $date1_string - $date2_string;
  45.     $diff = abs($diff);
  46.  
  47.     if(is_int($diff)){
  48.       $seconds = $diff;
  49.       $minutes = $diff/60;
  50.       $hours = $minutes/60;
  51.       $days = $hours/24;
  52.       return $days;
  53.     } else {
  54.       return false;
  55.     }
  56.  
  57.  
  58.   }
  59.  
  60.  
  61.   static function getJSEvaluate() {
  62.   return <<<EOQ
  63.   var params = this.getParameters();
  64.   var date1 = SUGAR.util.DateUtils.parse(params[0].evaluate(), 'user');
  65.   var date2 = SUGAR.util.DateUtils.parse(params[1].evaluate(), 'user');
  66.  
  67.   /*
  68.    * heavily derived from this SO posting...
  69.    * http://stackoverflow.com/a/12004010
  70.    * -- Matt Poer
  71.    */
  72.   var datediff = date1.getTime() - date2.getTime(); //store the getTime diff - or +
  73.   return (datediff / (24*60*60*1000)); //Convert values to -/+ days and return value
  74. EOQ;
  75.   }
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement