Ejemplo n.º 1
0
 function testValidateOperator()
 {
     $c = new Condition();
     $c->add('foo', 'bar', 'SQL injection!');
     $this->setExpectedException('InvalidArgumentException');
     $stmnt = $c->getQueryStatement();
     $stmnt->setConnection(DBManager::getConnection());
 }
Ejemplo n.º 2
0
 public function testToArray()
 {
     $con = new Condition();
     $con->add('id', '=', '1');
     $this->assertEquals(array(array(Condition::COLUMN => 'id', Condition::OPERATOR => '=', Condition::VALUE => '1', Condition::CONJUNCTION => 'AND', Condition::TYPE => Condition::TYPE_SCALAR)), $con->toArray());
 }
Ejemplo n.º 3
0
 public function processImportConditions($conditions, $id_lang)
 {
     foreach ($conditions as $condition) {
         try {
             if (Condition::getIdByIdPs($condition->id_ps_condition)) {
                 continue;
             }
             //only add new condition, if already exist we continue
             $cond = new Condition();
             $cond->hydrate((array) $condition, (int) $id_lang);
             $time = 86400;
             if ($cond->calculation_type == 'time') {
                 $time = 86400 * (int) $cond->calculation_detail;
             }
             $cond->date_upd = date('Y-m-d H:i:s', time() - $time);
             $cond->date_add = date('Y-m-d H:i:s');
             $condition->calculation_detail = trim($condition->calculation_detail);
             $cond->add(false);
             if ($condition->calculation_type == 'hook' && !$this->isRegisteredInHook($condition->calculation_detail) && Validate::isHookName($condition->calculation_detail)) {
                 $this->registerHook($condition->calculation_detail);
             }
             unset($cond);
         } catch (Exception $e) {
             continue;
         }
     }
 }
 public function find_events(&$Model, $event_type, $user, $from, $to, $options)
 {
     if (is_numeric($from)) {
         $from = date('Y-m-d H:i:s', $from);
     }
     if (is_numeric($to)) {
         $to = date('Y-m-d H:i:s', $to);
     }
     $provider_options = $this->settings[$event_type][$Model->alias];
     if (empty($provider_options)) {
         return $this->cakeError('error', array('message' => "Can not provide {$event_type} events."));
     }
     $scope_options = array();
     $cond = new Condition();
     if ($from && $to) {
         $cond->add(array($provider_options['timestamp'] . " BETWEEN ? AND ?" => array($from, $to)));
     }
     if (isset($options['author'])) {
         if (empty($provider_options['author_key'])) {
             return array();
         }
         $cond->add(array($provider_options['author_key'] => $options['author']['id']));
     }
     if (isset($provider_options['permission'])) {
         $project =& ClassRegistry::init('Project');
         $cond->add($project->allowed_to_condition($user, $provider_options['permission'], $options));
     }
     $scope_options['conditions'] = $cond->conditions;
     $scope_options['order'] = $Model->alias . ".id DESC";
     if (isset($options['limit']) && $options['limit'] > 1) {
         // id and creation time should be in same order in most cases
         $scope_options['limit'] = $options['limit'];
     }
     if (isset($provider_options['include']) && !(array_key_exists('CustomField', $provider_options['include']) || in_array('CustomField', $provider_options['include']))) {
         $Model->_customFieldAfterFindDisable = false;
     }
     $values = $Model->find('all', array_merge_recursive($provider_options['find_options'], $scope_options));
     $ret = array();
     list($mname, $cname) = explode('.', $provider_options['timestamp']);
     $_ids = array();
     foreach ($values as $value) {
         if (in_array($value[$mname][$Model->primaryKey], $_ids)) {
             continue;
         }
         $_ids[] = $value[$mname][$Model->primaryKey];
         $time = strtotime($value[$mname][$cname]);
         $day = strtotime(date('Y-m-d 00:00:00', strtotime($value[$mname][$cname])));
         if (!isset($ret[$day])) {
             $ret[$day] = array();
         }
         if (!isset($ret[$day][$time])) {
             $ret[$day][$time] = array();
         }
         $ret[$day][$time][] = $value;
     }
     return $ret;
 }