ezpublish.ru / Форумы / Для разработчиков / Уведомления при изменении профайлов




Уведомления при изменении профайлов

Для доступа к форумам необходимо авторизоваться. Это можно сделать здесь

Автор Сообщение

Artem K

Чт, 15 мая 2008 9:59:54

Как сделать что бы при обновлении профайла отсылалось письмо админу с этими изменениями?

Андрей Астахов

Чт, 22 мая 2008 16:24:31

Я пользуюсь контрибьюшеном ezinformation: http://ez.no/developer/contribs/workflow/information_workflow_event

Немного обточил его напильником и поставил на сайте.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Artem K

Пн, 2 июня 2008 8:36:50

А нельзя ли немного подробнее? Extension установил, покопался немного в настройках... Насколько я понял, чтобы приходили уведомления об изменении какого-то контента, необходимо указать в ini-файле id соотвествующего этому контенту класса. А какой класс у user profile?

Андрей Астахов

Пн, 2 июня 2008 10:04:26

А что такое user profile? это не класс user?

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Artem K

Пн, 2 июня 2008 14:08:42

Все получилось.
ID нужного класса (вдруг кому понадобится) - 4.

Artem K

Пн, 2 июня 2008 14:09:38

>> А что такое user profile? это не класс user?

Угумс, именно так.

Artem K

Ср, 25 июня 2008 7:03:54

Возник новый вопрос - как отловить событие ДО? Т.е. до того, как измененный профайл будет сохранен. Пробовал подключить триггер before, но в списке нужный workflow почему-то не отображается(

Андрей Астахов

Ср, 25 июня 2008 7:40:47

ezinformation заточен на after
смотрите в коде ezinformationtype.php строчку $this->setTriggerTypes( array( 'content' => array( 'publish' => array ( 'after' ) ) ) );
Что будет если тут просто заменить на before, я не знаю Гарантировать бессбойную работу не буду.

На самом деле не вижу никакой разницы в данном случае - до или после придет оповещение. В workflow, реализующую before, имеет смысл делать какие-то проверки, которые в конечном счете могут не дать сохранить профайл. А вот с отправкой письма разницы никакой.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Artem K

Ср, 25 июня 2008 8:49:26

Пробовал в setTrigger ставить before - все равно выполняется после. А необходимо чтобы на почту высылались только изменившиеся поля. Т.е. мне нужно сравнить то, что было ДО с тем, что получилось ПОСЛЕ и если поле изменилось выслать его имя и два значения.

Андрей Астахов

Ср, 25 июня 2008 9:29:09

Попробуйте зафетчить 2 версии: текущую и предыдущую и сравните по ним наборы аттрибутов.
У вас в воркфлоу есть объект:
$object =& eZContentObject::fetch( $parameters['object_id'] );

Из него можно получить набор аттрибутов по номеру версии)
$object->fetchDataMap( $version)

как получить список номеров версий сходу не скажу.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/

Artem K

Ср, 25 июня 2008 10:09:48

Я так и хотел сделать, думал в этом направлении... Но вот пока номер предыдущей версии найти не удается(

P.S. Спасибо за метод, при помощи которого можно получить объект по номеру версии.

Artem K

Ср, 25 июня 2008 10:39:13

foreach ( $object->attribute('versions') as $version ) {

foreach ( $version->attribute('contentobject_attributes') as $attr ) {

Как-то так) Теперь бы 2 последних зацепить только...

Artem K

Ср, 25 июня 2008 11:07:07

Все, разобрался. Спасибо за советы.

Artem K

Чт, 10 июля 2008 13:44:27

Хм... возник еще один вопрос - откуда можно вытащить юзерлогин того, чей это профайл?

Андрей Астахов

Чт, 10 июля 2008 14:19:31

У контент-объекта класса User есть аттрибут user_account (вытащить можно из датамапа). Это, насколько я помню, отдельный объект, в котором есть и логин юзера и информация о его пароле.

-----------------------------------
Простобанк Консалтинг
http://www.prostobank.com/