/** * Cron action on tasks : UpdateTypology * * @param $task for log, if NULL display * **/ static function cronUpdateTypology($task = NULL) { global $DB; $cron_status = 0; $message = array(); $typo = new self(); $query_items = $typo->queryUpdateTypology(); $querys = array(Alert::END => $query_items); $task_infos = array(); $task_messages = array(); foreach ($querys as $type => $query) { $task_infos[$type] = array(); foreach ($DB->request($query) as $data) { //update all linked item to a typology if (isset($data['id'])) { $input = PluginTypologyTypology_Item::checkValidated($data); } if ($data['error'] != $input['error']) { $typo_item = new PluginTypologyTypology_Item(); $typo_item->getFromDB($data['id']); $values = array('id' => $data['id'], 'is_validated' => $input['is_validated'], 'error' => $input['error']); $typo_item->update($input); $typo->getFromDB($data['plugin_typology_typologies_id']); $entity = $typo->fields['entities_id']; if (!isset($message[$entity])) { $message = array($entity => ''); } $task_infos[$type][$entity][] = $data; if (!isset($tasks_infos[$type][$entity])) { $task_messages[$type][$entity] = __('Typology of the linked elements is updated.', 'typology') . "<br />"; } $task_messages[$type][$entity] .= $message[$entity]; } } } foreach ($querys as $type => $query) { foreach ($task_infos[$type] as $entity => $items) { Plugin::loadLang('typology'); $message = $task_messages[$type][$entity]; $cron_status = 1; if ($task) { $task->log(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}\n"); $task->addVolume(count($items)); } else { Session::addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities", $entity) . ": {$message}"); } } } return $cron_status; }