Example #1
0
 /**
  * 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;
 }