/**
  * Returns itself when evaluating.
  */
 function evaluate()
 {
     try {
         $val = $this->getParameters()->evaluate();
         //Dates should be formated before being cast to a string
         if ($val instanceof SugarDateTime && !empty($val->def)) {
             global $timedate;
             require_once "include/Expressions/Expression/Date/DateExpression.php";
             $date = DateExpression::roundTime($val);
             if ($val->def['type'] == "date") {
                 //Date
                 $date->setTimezone(new DateTimeZone("UTC"));
                 $retstr = $timedate->asUserDate($date);
             } else {
                 //Datetime
                 $retstr = $timedate->asUser($date);
             }
         } else {
             $retstr = $val . "";
         }
     } catch (Exception $e) {
         $GLOBALS['log']->warn('DefineStringExpression::evaluate() returned empty string due to received exception: ' . $e->getMessage());
         $retstr = "";
     }
     return $retstr;
 }
 /**
  * Return current month
  */
 function evaluate()
 {
     $params = DateExpression::parse($this->getParameters()->evaluate());
     if (!$params) {
         return false;
     }
     return $params->month;
 }
 /**
  * Returns number of hours from now until the specified date.
  */
 public function evaluate()
 {
     $params = DateExpression::parse($this->getParameters()->evaluate());
     if (!$params) {
         return false;
     }
     $now = TimeDate::getInstance()->getNow(true);
     $tsdiff = $params->ts - $now->ts;
     return (int) ($tsdiff / 3600);
 }
 /**
  * Returns itself when evaluating.
  */
 function evaluate()
 {
     $params = $this->getParameters();
     $a = DateExpression::parse($params[0]->evaluate());
     $b = DateExpression::parse($params[1]->evaluate());
     if (empty($a) || empty($b)) {
         return false;
     }
     if ($a < $b) {
         return AbstractExpression::$TRUE;
     }
     return AbstractExpression::$FALSE;
 }
 /**
  * Returns the entire enumeration bare.
  */
 function evaluate()
 {
     $params = $this->getParameters();
     $date = DateExpression::parse($params[0]->evaluate());
     if (!$date) {
         return false;
     }
     $days = $params[1]->evaluate();
     if ($days < 0) {
         return $date->modify("{$days} day");
     }
     return $date->modify("+{$days} day");
 }
 /**
  * Returns the entire enumeration bare.
  */
 public function evaluate()
 {
     $date = $this->getParameters()->evaluate();
     $params = DateExpression::parse($date);
     if (!$params) {
         return false;
     }
     // if the date expression doesn't have a time on it or the def is type of 'date' then force
     // the time to be midnight on that day
     if (!DateExpression::hasTime($date) || isset($date->def) && $date->def['type'] === 'date') {
         $params->setTime(0, 0, 0);
     }
     return $params->getTimestamp();
 }
 /**
  * Returns the entire enumeration bare.
  */
 function evaluate()
 {
     $params = DateExpression::parse($this->getParameters()->evaluate());
     if (!$params) {
         return false;
     }
     $now = TimeDate::getInstance()->getNow(true);
     //set the time to 0, as we are returning an integer based on the date.
     $params->setTime(0, 0, 0);
     // this will be the timestamp delimiter of the day.
     $tsdiff = $params->ts - $now->ts;
     $diff = (int) ceil($tsdiff / 86400);
     return $diff;
 }
示例#8
0
 /**
  * Applies the Action to the target.
  *
  * @param SugarBean $target
  */
 function fire(&$target)
 {
     set_error_handler('handleExpressionError', E_ERROR);
     try {
         $result = Parser::evaluate($this->expression, $target)->evaluate();
     } catch (Exception $e) {
         $GLOBALS['log']->fatal("Exception evaluating expression in SetValueAction, {$this->expression} : {$e->getMessage()}\n{$e->getTraceAsString()}");
         $result = "";
     }
     restore_error_handler();
     $field = $this->targetField;
     $def = array();
     if (!empty($target->field_defs[$field])) {
         $def = $target->field_defs[$field];
     }
     if ($result instanceof DateTime) {
         global $timedate;
         if (isset($def['type']) && ($def['type'] == "datetime" || $def['type'] == "datetimecombo")) {
             $result = DateExpression::roundTime($result);
             $target->{$field} = $timedate->asDb($result);
         } else {
             if (isset($def['type']) && $def['type'] == "date") {
                 $result = DateExpression::roundTime($result);
                 $target->{$field} = $timedate->asDbDate($result);
             } else {
                 //If the target field isn't a date, convert it to a user formated string
                 if (isset($result->isDate) && $result->isDate) {
                     $target->{$field} = $timedate->asUserDate($result);
                 } else {
                     $target->{$field} = $timedate->asUser($result);
                 }
             }
         }
     } else {
         if (isset($def['type']) && $def['type'] == "bool") {
             $target->{$field} = $result === true || $result === AbstractExpression::$TRUE;
         } else {
             if (is_array($result) && $def['type'] != 'multienum') {
                 $target->{$field} = implode(', ', $result);
             } else {
                 $target->{$field} = $result;
             }
         }
     }
 }
 /**
  * Get the date from date expression, understands all strftime() formats
  */
 function evaluate()
 {
     $params = $this->getParameters()->evaluate();
     return DateExpression::parse($params);
 }