/**
  * beforeFind
  * @param Event $event
  * @param Query $query
  * @param ArrayObject $options
  * @param $primary
  */
 public function beforeFind(Event $event, Query $query, ArrayObject $options, $primary)
 {
     $getOptions = $query->getOptions();
     if (!array_key_exists('enableSoftDelete', $getOptions) || $getOptions['enableSoftDelete'] == true) {
         $modelName = $this->_table->alias();
         $booleanField = $this->config('boolean');
         $timestampField = $this->config('timestamp');
         if ($booleanField !== false && $this->_table->hasField($booleanField)) {
             $query->where([$modelName . '.' . $booleanField => false]);
         }
         if ($booleanField === false && $timestampField !== false && $this->_table->hasField($timestampField)) {
             $query->where([$modelName . '.' . $timestampField . ' IS' => null]);
         }
     }
 }
Example #2
0
 /**
  * Tests getOptions() method
  *
  * @return void
  */
 public function testGetOptions()
 {
     $options = ['doABarrelRoll' => true, 'fields' => ['id', 'name']];
     $query = new Query($this->connection, $this->table);
     $query->applyOptions($options);
     $expected = ['doABarrelRoll' => true];
     $this->assertEquals($expected, $query->getOptions());
     $expected = ['doABarrelRoll' => false, 'doAwesome' => true];
     $query->applyOptions($expected);
     $this->assertEquals($expected, $query->getOptions());
 }
Example #3
0
 /**
  * Calls a finder method directly and applies it to the passed query,
  * if no query is passed a new one will be created and returned
  *
  * @param string $type name of the finder to be called
  * @param \Cake\ORM\Query $query The query object to apply the finder options to
  * @param array $options List of options to pass to the finder
  * @return \Cake\ORM\Query
  * @throws \BadMethodCallException
  */
 public function callFinder($type, Query $query, array $options = [])
 {
     $query->applyOptions($options);
     $options = $query->getOptions();
     $finder = 'find' . $type;
     if (method_exists($this, $finder)) {
         return $this->{$finder}($query, $options);
     }
     if ($this->_behaviors && $this->_behaviors->hasFinder($type)) {
         return $this->_behaviors->callFinder($type, [$query, $options]);
     }
     throw new \BadMethodCallException(sprintf('Unknown finder method "%s"', $type));
 }
Example #4
0
 /**
  * Triggers beforeFind on the target table for the query this association is
  * attaching to
  *
  * @param \Cake\ORM\Query $query the query this association is attaching itself to
  * @return void
  */
 protected function _dispatchBeforeFind($query)
 {
     $table = $this->target();
     $options = $query->getOptions();
     $table->dispatchEvent('Model.beforeFind', [$query, new \ArrayObject($options), false]);
 }
Example #5
0
 /**
  * Triggers beforeFind on the target table for the query this association is
  * attaching to
  *
  * @param \Cake\ORM\Query $query the query this association is attaching itself to
  * @return void
  */
 protected function _dispatchBeforeFind($query)
 {
     $table = $this->target();
     $options = $query->getOptions();
     $event = new Event('Model.beforeFind', $table, [$query, $options, false]);
     $table->getEventManager()->dispatch($event);
 }