COTONTI.CMSWORKS.RU
Сборка фриланс-биржи на cotonti

Projects edit hooks

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

kopusha

#1/10.01.2018 17:19
0

Пользователи

Карма: +103

Проблематика - я выполняю в плагине следующий код - 


$listperformer = $db->query("SELECT COUNT(*) offer_userid FROM $db_projects_offers WHERE offer_choise = 'performer' AND offer_pid=?",array($id))->fetchColumn();     

if($listperformer >= $item['item_performers'])

{

    $db->update($db_projects, array("item_realized" => 1), "item_id=" . (int)$id);

}

else

{

    $db->update($db_projects, array("item_realized" => 0), "item_id=" . (int)$id);

}

$item['item_performers'] это экстраполе в $db_projects - если у меня listperformer больше или равно выставленного в экстраполе item_performers числа то я делаю проект реализованным. Всюду все работает, но не могу понять один нюанс.

Я захожу в редактирование проекта. Меняю там значение $item['item_performers'] экстраполя, жму опубликовать и НЕ считает это условие указанное выше с новыми данными. После этого захожу опять Редактировать-Опубликовать - не меняя никаких данных - уже все верно. Как я понимаю это связано с тем что у меня при редактировании новые данные в экстраполе вносятся,  но сразу оно не считает из за того что у меня не верный этап (привязка к хуку)

Я пробовал * Hooks=projects.edit.update.done

судя по "page.edit.update.done Хук после занесения данных в mysql. Может использоваться для уведомлений о модифицированном контенте" мне нужен именно он, но нет, не срабатывает.

 

 

пробовал уже и edit.done edit.main edit.update.first и тд и тп)

 

Перечитал что написал и попробую другими словами
Я сам проект меняю динамически из состояния реализован и обратно (item_realized) в зависимости от того сколько людей там могут принимать участие (экстраполе в projects item_performers) и сколько людей назначил владелец проекта - $listperformer
При редактировании проекта если менять значение в экстраполе item_performers и нажать сохранить - считает НЕ верно - код привязанный к projects.edit.update.done срабатывает взяв прошлое значение item_performers. Если еще раз открыть редактирование и ничего не меняя нажать Сохранить - то уже все работает нормально. Как мне заставить код работать сразу?

.edit.first  и .edit.update.first тоже не помогают...
 

Сообщения: 266

Cmsworks

#2/10.01.2018 18:21
0

Администраторы

Карма: +868

Скорее всего нужно перед выполнением вашего кода добавить

global $db_projects_offers;

потому что хук projects.edit.update.done находится внутри функции cot_projects_update().

Сообщения: 2435 Доступный хостинг для ваших проектов

kopusha

#3/10.01.2018 18:46
0

Пользователи

Карма: +103

Там все это есть - require_once cot_langfile('projects', 'module');
global $db_projects_offers, $db_projects;

 

 

Добавлено 4 минуты спустя:

 * Hooks=projects.edit.main,projects.edit.update.first,projects.edit,projects.edit.update,projects.edit.first
 Order=11
 

Тоже не хочет. 

Еще раз - у меня условие при котором 
если SELECT COUNT исполнителей больше экстраполя то item_realized" => 1
Нет так нет. Допустим сейчас у меня 2 исполнителя и экстраполе == 2. У меня  item_realized" => 1
Захожу в projects.edit меняю экстраполе на 1 - должно item_realized" => 0

Но нет. Захожу еще раз в projects.edit - там экстраполе 1 - не меняю ничего - просто сохраняю - и уже условие верно срабатывает.

Добавлено 3 минуты спустя:

Добавлено 1 минута спустя:

Выдирал код с юзерпоинтов - потому там хвосты.

Сообщения: 266

Cmsworks

#4/10.01.2018 18:59
+1

Администраторы

Карма: +868

Может не $item а $ritem надо использовать?

Сообщения: 2435 Доступный хостинг для ваших проектов

kopusha

#5/10.01.2018 19:07
0

Пользователи

Карма: +103

Да, так работает. Спс большое!

Сообщения: 266