
Всё же не совсем понятно... Как например запустить автоматизацию #100 из "Выполнить PHP скрипт"?
Пока подсказать не могу до конца. Борюсь. По всем признакам должен работать, но не работает. Пока не ясно, почему. С кнопки работает в списке записи, а вот с запуска из автоматизации, нет. Причем, видно в date_updated - обновление происходит. Не понятно.
Код: Выделить всё
/* Запуск автоматизации №73 */
$item_id = [id];
$process_id = 73;
//find process
$process_query = db_query("SELECT * FROM `app_ext_processes` WHERE `id` = {$process_id}");
$process = mysqli_fetch_assoc($process_query);
//check status
if($process['is_active'] == 0) {
die();
}
//check process filter
$reports_info_query = db_query("SELECT * FROM `app_reports` WHERE `entities_id` = '" . db_input($process['entities_id']) . "' AND `reports_type` = 'process" . $process['id'] . "'");
if($reports_info = mysqli_fetch_assoc($reports_info_query)) {
if(!reports::count_filters_by_reports_id($reports_info['id']) && !$item_id) {
die("Error: filters are not setup for process #{$process_id}!");
}
}
$processes = new processes($process['entities_id']);
//run process for single item
if($item_id) {
//check if item exists
$check_query = db_query("SELECT `id` FROM `app_entity_{$process['entities_id']}` WHERE `id` = {$item_id}");
if(!$check = mysqli_fetch_assoc($check_query)) {
die("Error: item #{$item_id} not found");
}
$processes->items_id = $item_id;
if($processes->check_buttons_filters($process)) {
$processes->run($process, false, true);
}
}
//run process for filtered items
elseif($reports_info) {
$listing_sql_query = '';
$listing_sql_query_select = '';
$listing_sql_query_having = '';
$sql_query_having = array();
//prepare forumulas query
$listing_sql_query_select = fieldtype_formula::prepare_query_select($process['entities_id']);
$listing_sql_query = reports::add_filters_query($reports_info['id'], $listing_sql_query);
//prepare having query for formula fields
if(isset($sql_query_having[$process['entities_id']]))
{
$listing_sql_query_having = reports::prepare_filters_having_query($sql_query_having[$process['entities_id']]);
}
$listing_sql_query .= $listing_sql_query_having;
$item_sql = "SELECT e.* " . $listing_sql_query_select . " FROM app_entity_" . $process['entities_id'] . " e WHERE e.id > 0 " . $listing_sql_query;
$item_query = db_query($item_sql);
while($item = mysqli_fetch_assoc($item_query))
{
$processes->items_id = $item['id'];
$processes->run($process, false, true);
}
}
Код: Выделить всё
$process_id = 26;
$process_query = db_query("SELECT * FROM app_ext_processes WHERE id =".$process_id,false); // получаем данные из таблицы процессов.
if ($process=db_fetch_array($process_query)) {
//получаем нужный id записи, который используется в процессе. Обзовем его $item_id. Возможно, придется получать список.
$processes = new processes($process['entities_id']);
$processes->items_id = $item_id;
$processes->run($process, false, true);
}