Добавление записи в ленту InstantCms 2

#1 9 января 2015 в 18:11
Доброе время суток, в документации есть описание занесения в ленту для первой версии. Но как сделать грамотное занесение для второй версии ?
На данный момент решил проблему, не очень хорошим методом, прямым занесением записи в таблицу cms_activity .

метод модели :
  1.  
  2. public function addActiveLog($data){
  3.  
  4. cmsCache::getInstance()->clean("activity.entries");
  5.  
  6. return $this->insert('activity', $data);
  7.  
  8. }
  9.  
действие в экшене:
  1.  
  2. $this->model->addActiveLog(
  3. 'type_id' => 20 , // прописан жёстко - не хорошо
  4.  
  5. 'user_id' => $uid ,
  6.  
  7. 'subject_title' => $formdata['title'],
  8.  
  9. 'subject_id' => $id,
  10.  
  11. 'subject_url' => href_to('pets' , 'page' , $id ) ,
  12.  
  13. 'is_private' => 0
  14.  
  15. )
  16.  
  17. )
  18.  
Вопрос: Какой правильный метод занесения в ленту? прошу поделиться.
#2 9 января 2015 в 22:06
Для начало, надо добавить запись в cms_activity_types
  1. INSERT INTO `cms_activity_types` (`is_enabled`, `controller`, `name`, `title`, `description`) VALUES (1, 'duels', 'add', 'Дуэль началась', 'и %s начинают дуэль');
(в запросе — 'и %s начинают дуэль' — означает что в место %s добавиться ник пользователя)
потом из своего компонента надо обращаться к компоненту activity, типа так:
  1. cmsCore::getController('activity')->addEntry('duels', "add", array(
  2. 'subject_title' => $profile['nickname'], // ник пользователя
  3. 'subject_id' => $profile['id'], // ID пользователя
  4. 'subject_url' => href_to('users', $profile['id']), // ссылка на профиль
  5. ));
#3 10 января 2015 в 14:16
Тип уже создан, интересовал сам метод занесения в базу, конечно мне кажется так будет заносить правильно, но мой способ будет быстрее по-этому оставлю всё как есть, спасибо за ответ, поставил бы плюсик к карме, да уже ставил )
#4 10 января 2015 в 21:52

но мой способ будет быстрее по-этому оставлю всё как есть

d1ms
Ваш способ зависит от места и способа хранения записей, и если однажды он изменится, то все перестанет работать.
Нужно использовать уровень абстракции, так, как описал Evanescence.
#5 12 января 2015 в 00:32
laughrofl

Вопрос: Какой правильный метод занесения в ленту? прошу поделиться.

d1ms

правильно так...

Evanescence

спасибо, но оставлю как есть!

d1ms
laugh
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.