示例#1
0
 /**
  * Add a Newsfeed item.
  *
  * @static
  * @param   Model_User  $user
  * @param   string      $class  e.g. 'user'
  * @param   string      $type   e.g. 'login'
  * @param   array       $data   Data to be user with item
  * @return  boolean
  */
 protected static function add(Model_User $user, $class, $type, array $data = null)
 {
     $item = new Model_NewsfeedItem();
     // Update item if previous added less than time window specified time
     $update = DB::update($item->get_table_name())->set(array('stamp' => time()))->where('user_id', '=', $user->id)->and_where('class', '=', $class)->and_where('type', '=', $type)->and_where('stamp', '>', strtotime(Newsfeed::UPDATE_WINDOW));
     $data ? $update->and_where('data', '=', @json_encode($data)) : $update->and_where('data', 'IS', null);
     // Update any?
     if ($update->execute()) {
         return true;
     }
     // No new enough item found, insert
     $item->set_fields(array('user_id' => $user->id, 'class' => $class, 'type' => $type, 'data' => $data, 'stamp' => time()));
     $item->save();
     return $item->loaded();
 }