Перехват системных событий icms2

 
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 217
Если кто-то делал, подскажите как) В частности, нужно отловить просмотр профиля пользователя (из другого контроллера, естественно) другим пользователем.
Редактировалось: 1 раз (Последний: 3 сентября 2014 в 17:31)
instantlab.ru - компонент Знакомства и встречи для instantCMS
Посетитель
small user social cms
Медаль
Сообщений: 150
А подробнее?
Хотите сказать спасибо, просто увеличьте карму!
Делай добро и бросай его в воду!
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 865
Till, До маразма тривиальное решение, надо выводить в ленту всех кто зашел в какой-либо профиль ))
>Вася П смотрит профиль Иры К
Затем читаем ленту (любым контроллером) и вуаля... ))))))))))
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 217
А подробнее?
Нужно в контроллере отловить событие входа любого юзера в профиль любого юзера.
Till, До маразма тривиальное решение, надо выводить в ленту всех кто зашел в какой-либо профиль ))
>Вася П смотрит профиль Иры К
Затем читаем ленту (любым контроллером) и вуаля... ))))))))))
Какой-то костыль...
instantlab.ru - компонент Знакомства и встречи для instantCMS
Посетитель
small user social cms
Медаль
Сообщений: 865
Till, Можно и без костылей, посмотри таблицу events
Посетитель
small user social cms
Медаль
Сообщений: 150
Till:
Нужно в контроллере отловить событие входа любого юзера в профиль любого юзера.
Т.е. Вы хотите получать информацию о всех пользователях, которые посещали, например, Вашу страницу?
Хотите сказать спасибо, просто увеличьте карму!
Делай добро и бросай его в воду!
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 217
Т.е. Вы хотите получать информацию о всех пользователях, которые посещали, например, Вашу страницу?
Примерно так.
instantlab.ru - компонент Знакомства и встречи для instantCMS
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1343
Till:
подскажите как) В частности, нужно отловить просмотр профиля пользователя
Примерно так же, как и в 1.x.

В экшене показа профиля (/system/controllers/users/actions/profile.php) есть хук:
Код PHP:
  1. $profile = cmsEventsManager::hook('users_profile_view', $profile);
В файле manifest.php в папке вашего контроллера вы объявляете перехват этого хука:
Код PHP:
  1. <?php
  2. return array(
  3. 'hooks' => array(
  4. 'users_profile_view',
  5. )
  6. );
Создаете папку /system/controllers/example/hooks и в ней файл users_profile_view.php (где example - название вашего контроллера). Название файла совпадает с названием хука.

В этом файле пишете обработчик:
Код PHP:
  1. <?php
  2. class onExampleUsersProfileView extends cmsAction {
  3.  
  4. // этот метод выполняется при вызове хука
  5. // он получает на вход тот параметр, который
  6. // был передан при вызове cmsEventManager::hook(...)
  7. public function run($profile){
  8.  
  9. $user = cmsUser::getInstance();
  10.  
  11. // Текущий пользователь: $user->id
  12. // смотрит профиль: $profile['id']
  13.  
  14. // Отсюда вы можете обращаться к своей модели:
  15. $this->model->doSomething();
  16.  
  17. // и к любому методу внутри frontend.php через $this:
  18. $this->myMethodFromFrontend();
  19.  
  20. // в конце обязательно возвращаете
  21. // входящий параметр обратно, чтобы другие
  22. // обработчики получили его дальше
  23. return $profile;
  24.  
  25. }
  26.  
  27. }
Название класса образуется из названия контроллера и хука (каждое слово с большой буквы), с приставкой on в начале.
Редактировалось: 2 раз (Последний: 3 сентября 2014 в 22:07)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 217
Большое спасибо!) Пытался делать перехват по аналогии с другими контроллерами, но пропустил manifest.php
Редактировалось: 1 раз (Последний: 3 сентября 2014 в 22:25)
instantlab.ru - компонент Знакомства и встречи для instantCMS
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
r2, огромное спасибо!!! Давно ждал подобного объяснения! dance
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.