public function afterFind(Model $Model, $results, $primary = false)
 {
     if (!$primary) {
         return parent::afterFind($results, $primary);
     }
     foreach ($results as $key => $val) {
         if ($primary && array_key_exists($Model->alias, $val) && array_key_exists('id', $val[$Model->alias])) {
             $Like = ClassRegistry::init('Social.Like');
             // Getting total likes
             $totalLikes = $Like->find('count', array('conditions' => array('Like.object_id' => $val[$Model->alias]['id'], 'Like.object' => $Model->alias)));
             $results[$key]['Liked']['total'] = $totalLikes;
             // Checking if current content is liked by current user
             $uid = CakeSession::read("Auth.User.id");
             $isLiked = 0;
             if ($uid) {
                 $_like = $Like->find('first', array('conditions' => array('Like.object_id' => $val[$Model->alias]['id'], 'Like.object' => $Model->alias, 'Like.user_id' => $uid)));
                 if ($_like) {
                     $results[$key]['Liked']['id'] = $_like['Like']['id'];
                     $results[$key]['Liked']['is_liked'] = 1;
                 } else {
                     $results[$key]['Liked']['is_liked'] = 0;
                 }
             } else {
                 $results[$key]['Liked']['is_liked'] = 0;
             }
             // Getting the name of the last two persons who liked this besides the current user
             $Like->bindModel(array('belongsTo' => array('User')), true);
             $options = array('conditions' => array('Like.object_id' => $val[$Model->alias]['id'], 'Like.object' => $Model->alias, 'User.id NOT' => $uid), 'contain' => array('User' => array('fields' => array('id', 'first_name', 'last_name'))), 'limit' => 2, 'order' => 'Like.created');
             $_like = $Like->find('all', $options);
             $results[$key]['Liked']['last_liked'] = $_like;
         }
     }
     return $results;
 }
 /**
  * After find callback. Can be used to modify any results returned by find.
  *
  * @param Model   $model   Model using this behavior
  * @param mixed   $results The results of the find operation
  * @param boolean $primary Whether this model is being queried directly (vs. being queried as an association)
  *
  * @return mixed An array value will replace the value of $results - any other value will be ignored.
  */
 public function afterFind(Model $model, $results, $primary = false)
 {
     parent::afterFind($model, $results, $primary);
     if ($primary && array_key_exists($model->alias, $results[0])) {
         $arrObj = new ArrayObject($results);
         $iterator = $arrObj->getIterator();
         while ($iterator->valid()) {
             $result = [];
             if (isset($iterator->current()[$model->alias]) && count($iterator->current()[$model->alias]) > 0) {
                 $key = "{$model->alias}.{$this->settings[$model->alias]['key']}";
                 $value = "{$model->alias}.{$this->settings[$model->alias]['value']}";
                 $result = Hash::combine($iterator->current(), $key, $value);
             }
             if (!array_key_exists($this->settings[$model->alias]['key'], $iterator->current()[$model->alias]) && !array_key_exists($this->settings[$model->alias]['value'], $iterator->current()[$model->alias])) {
                 $results[$iterator->key()][$model->alias] = Hash::merge($iterator->current()[$model->alias], $result);
             } else {
                 $results[$iterator->key()][$model->alias] = $result;
             }
             $iterator->next();
         }
     } elseif (array_key_exists($model->alias, $results)) {
         $key = "{n}.{$model->alias}.{$this->settings[$model->alias]['key']}";
         $value = "{n}.{$model->alias}.{$this->settings[$model->alias]['value']}";
         $output = Hash::combine($results, $key, $value);
         $results[$model->alias] = $output;
     }
     return $results;
 }
 public function afterFind(Model $Model, $results, $primary = false)
 {
     if (!$primary) {
         return parent::afterFind($results, $primary);
     }
     foreach ($results as $key => $val) {
         if (array_key_exists($Model->alias, $val) && array_key_exists('id', $val[$Model->alias]) && array_key_exists('Feed', $val)) {
             //debug($val);
             $Subscription = ClassRegistry::init('Social.Subscription');
             // Getting total Subscriptions
             $totalSubscriptions = $Subscription->find('count', array('conditions' => array('Subscription.feed_id' => $val['Feed']['id'])));
             $results[$key]['Subscribed']['total'] = $totalSubscriptions;
             // Checking if current content is liked by current user
             $uid = CakeSession::read("Auth.User.id");
             if ($uid) {
                 $_subscription = $Subscription->find('first', array('conditions' => array('Subscription.feed_id' => $val['Feed']['id'], 'Subscription.user_id' => $uid)));
                 if ($_subscription) {
                     $results[$key]['Subscribed']['is_subscribed'] = 1;
                 } else {
                     $results[$key]['Subscribed']['is_subscribed'] = 0;
                 }
             } else {
                 $results[$key]['Subscribed']['is_subscribed'] = 0;
             }
         }
     }
     return $results;
 }
 function afterFind(\Model $model, $results, $primary)
 {
     parent::afterFind($model, $results, $primary);
     if ($model->id) {
         $data = array('model' => $model->alias, 'model_id' => $model->id, 'activity_type' => 'R', 'user_id' => $model->loginUser['id']);
         $activity = new Activity();
         $activity->save($data);
     }
 }
Exemple #5
0
 /**
  * After find callback. Can be used to modify any results returned by find and findAll.
  *
  * @param object $model Model using this behavior
  * @param mixed $results The results of the find operation
  * @param boolean $primary Whether this model is being queried directly (vs. being queried as an association)
  * @return mixed Result of the find operation
  */
 public function afterFind($model, $results, $primary)
 {
     $return = parent::afterFind($model, $results, $primary);
     if (is_array($return)) {
         $results = $return;
     }
     foreach ($this->settings[$model->alias] as $field) {
         foreach ($results as $i => $record) {
             if (isset($record[$model->alias][$field])) {
                 $results[$i][$model->alias][$field] = $this->uncompress($model, $record[$model->alias][$field]);
             }
         }
     }
     return $results;
 }
 /**
  * afterFind method
  *
  * @param Model $model
  * @param array $results
  * @param bool $primary
  * @return void
  */
 public function afterFind(Model $model, $results, $primary = false)
 {
     $settings = $this->settings[$model->alias];
     if (!isset($settings['afterFind']) || $settings['afterFind'] === 'off') {
         return parent::afterFind($model, $results, $primary);
     }
     switch ($settings['afterFind']) {
         case 'on':
             return array();
         case 'test':
             return true;
         case 'test2':
             return null;
         case 'modify':
             return Hash::extract($results, "{n}.{$model->alias}");
     }
 }
 public function afterFind(Model $Model, $results, $primary = false)
 {
     if (!$primary) {
         return parent::afterFind($results, $primary);
     }
     foreach ($results as $key => $val) {
         if ($primary && array_key_exists($Model->alias, $val) && array_key_exists('id', $val[$Model->alias])) {
             $Comment = ClassRegistry::init('Social.Comment');
             // Getting total Comments
             $totalComments = $Comment->find('count', array('conditions' => array('Comment.object_id' => $val[$Model->alias]['id'], 'Comment.object' => $Model->alias)));
             $results[$key]['Commented']['total'] = $totalComments;
         }
         // Reorder the Comments by creation order
         // (even though we got them by descending order)
         if (array_key_exists('Comment', $val) && count($val['Comment'])) {
             $results[$key]['Comment'] = Hash::sort($val['Comment'], '{n}.created', 'asc');
         }
     }
     return $results;
 }
 public function afterFind(\Model $model, $results, $primary = false)
 {
     parent::afterFind($model, $results, $primary);
 }
Exemple #9
0
 public function afterFind(\Model $model, $results, $primary = false)
 {
     parent::afterFind($model, $results, $primary);
     $this->modifyResults($model, $results);
     return $results;
 }
 /**
  * AfterFind
  **/
 public function afterFind(Model $model, $results = array(), $primary = false)
 {
     parent::afterFind($model, $results, $primary);
     if ($model->findQueryType == 'count') {
         return $results;
     }
     $curObj = $model->alias;
     foreach ($results as $key => $value) {
         $tmpkeys = array_keys($value);
         foreach ($tmpkeys as $curmodel) {
             $curObj = $curmodel != $model->alias ? $model->{$curmodel} : $model;
             $columnTypes = $curObj->getColumnTypes();
             $fields = array_filter($columnTypes, array($this, 'valueIsDate'));
             /**
              * @todo Array walk might be a solution for deeper associations?
              **/
             foreach ($fields as $field => $fieldvalue) {
                 $curvalues = $results[$key][$curmodel];
                 $dimensions = Hash::dimensions($curvalues);
                 if ($dimensions <= 1) {
                     if (!array_key_exists($field, $results[$key][$curmodel])) {
                         continue;
                     }
                     $results[$key][$curmodel][$field] = $this->formatDate($results[$key][$curmodel][$field]);
                     continue;
                 }
             }
         }
     }
     return $results;
 }
Exemple #11
0
 /**
  *
  * @param \Model $model
  * @param type $results
  * @param type $primary
  */
 public function afterFind(Model $Model, $results, $primary = false)
 {
     parent::afterFind($Model, $results, $primary);
     if (!empty($results[0][$Model->name]['user_roles'])) {
         $results[0]['RecordLevelAccess']['UserRole'] = unserialize($results[0][$Model->name]['user_roles']);
     }
     return $results;
 }
 /**
  * Format the data after the find to make it look like a normal relation
  *
  * @param object $Model the model that did the find
  * @param array $results the data from the find
  * @param bool $primary is it this model doing the query
  *
  * @return array the modified data from the find
  */
 public function afterFind($Model, $results, $primary = false)
 {
     parent::afterFind($Model, $results, $primary);
     $ignore = array('list', 'count', 'layoutList');
     if (in_array($Model->findQueryType, $ignore) || empty($results)) {
         return $results;
     }
     $globalContentIds = Set::extract('{n}.' . $Model->GlobalContent->alias . '.' . $Model->GlobalContent->primaryKey, $results);
     $globalTags = $Model->GlobalContent->GlobalTagged->find('all', array('fields' => array('GlobalTagged.*', 'GlobalTag.*'), 'conditions' => array('GlobalTagged.foreign_key' => $globalContentIds), 'joins' => array(array('table' => 'global_tags', 'alias' => 'GlobalTag', 'type' => 'LEFT', 'foreignKey' => false, 'conditions' => array('GlobalTag.id = GlobalTagged.tag_id')))));
     foreach ($globalTags as &$tag) {
         $tag['GlobalTagged']['GlobalTag'] = $tag['GlobalTag'];
         unset($tag['GlobalTag']);
     }
     foreach ($results as $k => $result) {
         $template = sprintf('/GlobalTagged[foreign_key=/%s/i]', $results[$k]['GlobalContent'][$Model->GlobalContent->primaryKey]);
         $results[$k]['GlobalTagged'] = Set::extract('{n}.GlobalTagged', Set::extract($template, $globalTags));
         if (isset($results[$k]['GlobalCategoryContent'])) {
             $results[$k]['GlobalCategory'] = array_merge($results[$k]['GlobalCategoryContent'], $results[$k]['GlobalCategory']);
         }
         if (isset($results[$k]['GlobalContent']['GlobalLayout'])) {
             $results[$k]['Layout'] = $results[$k]['GlobalContent']['GlobalLayout'];
         }
         if (isset($results[$k]['GlobalContent']['Group'])) {
             $results[$k]['Group'] = $results[$k]['GlobalContent']['Group'];
         }
         unset($results[$k]['GlobalContent']['GlobalLayout'], $results[$k]['GlobalContent']['Group']);
         if (isset($results[$k]['GlobalContent'])) {
             $results[$k][$Model->alias] = array_merge($results[$k]['GlobalContent'], $results[$k][$Model->alias]);
         }
     }
     return $results;
 }