From ea08d0956761b5ad63686dda40f1693d16a2e281 Mon Sep 17 00:00:00 2001 From: Benjamin Renard <benjamin.renard@akka.eu> Date: Thu, 11 Mar 2021 13:04:23 +0100 Subject: [PATCH] Add WS requests in statistics --- php/classes/AmdaStats.php | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 68 insertions(+), 31 deletions(-) diff --git a/php/classes/AmdaStats.php b/php/classes/AmdaStats.php index dcc0d83..0efed51 100644 --- a/php/classes/AmdaStats.php +++ b/php/classes/AmdaStats.php @@ -8,6 +8,7 @@ class AmdaStats { public $statXml; public $tasks = array('plot', 'mining', 'print', 'statistics'); + public $tasksWs = array('ws_print', 'ws_plot'); public $tasksAdd = array('ttoper', 'samp', 'upload', 'create', 'images'); public $usersToExclude = array('bouchemit', 'impex'); public $success = true; @@ -61,8 +62,24 @@ class AmdaStats { if (!$status) $this->success = false; } + else { + $allTasks = array_merge($this->tasks, $this->tasksAdd, $this->tasksWs); + $newTask = FALSE; + foreach ($allTasks as $task) { + $items = $this->statXml->getElementsByTagName($task); + if ($items->length == 0) { + //add missing task + $element = $this->statXml->createElement("$task"); + $this->statXml->documentElement->appendChild($element); + $newTask = TRUE; + } + } + if ($newTask) { + $this->statXml->save(StatsXml); + } + } } - } + } /* * Merge individual User Stats.xml into one generique Stats.xml @@ -71,27 +88,33 @@ class AmdaStats { // long procedure ini_set('max_execution_time', 600); - $tags = array_merge($this->tasks, $this->tasksAdd); + $allTasks = array_merge($this->tasks, $this->tasksAdd, $this->tasksWs); - $doc2 = new DomDocument("1.0"); + $userDoc = new DomDocument("1.0"); if ($year == null) $year = date("Y"); $users=glob(USERPATH."*"); foreach ($users as $user) { - $name2 = $user."/Stats$year.xml"; - - if (!file_exists($name2)) continue; - - $doc2->load($name2); - - foreach ($tags as $tag) { - $tag1 = $this->statXml->getElementsByTagName($tag)->item(0); - $tag2 = $doc2->getElementsByTagName($tag)->item(0); - $items2 = $tag2->getElementsByTagName("item"); - if ($items2->length > 0) { - foreach ($items2 as $item2) { - $item1 = $this->statXml->importNode($item2, true); - $tag1->appendChild($item1); + $userXmlPath = $user."/Stats$year.xml"; + + if (!file_exists($userXmlPath)) continue; + + $userDoc->load($userXmlPath); + + foreach ($allTasks as $task) { + $globalTaskItems = $this->statXml->getElementsByTagName($task); + if ($globalTaskItems->length == 0) + continue; + $globalTaskItem = $globalTaskItems->item(0); + $userTaskItems = $userDoc->getElementsByTagName($task); + if ($userTaskItems->length == 0) + continue; + $userTaskItem = $userTaskItems->item(0); + $userItems = $userTaskItem->getElementsByTagName("item"); + if ($userItems->length > 0) { + foreach ($userItems as $userItem) { + $globalItem = $this->statXml->importNode($userItem, true); + $globalTaskItem->appendChild($globalItem); } } } @@ -109,7 +132,7 @@ class AmdaStats { $rootElement = $this->statXml->createElement('stats'); - $allTasks = array_merge($this->tasks, $this->tasksAdd); + $allTasks = array_merge($this->tasks, $this->tasksAdd, $this->tasksWs); foreach ($allTasks as $task) { $element = $this->statXml->createElement("$task"); @@ -122,7 +145,7 @@ class AmdaStats { } public function addTask($user, $task, $vars) { - + // if (!$this->user) { // error_log('User is null', 1, email); // return; @@ -181,14 +204,18 @@ class AmdaStats { $taskArray = array(); - foreach (array_merge($this->tasks,$this->tasksAdd) as $task) { - $theTask = $this->statXml->getElementsByTagName($task)->item(0); + foreach (array_merge($this->tasks,$this->tasksAdd, $this->tasksWs) as $task) { + $taskItems = $this->statXml->getElementsByTagName($task); + if ($taskItems->length < 1) + return; + $theTask = $taskItems->item(0); $items = $theTask->getElementsByTagName('item'); $hints = $items->length; $startStop = $this->getStartStop($items, $start, $stop); - $taskArray[] = array('task' => $task, 'number' => $hints, - 'start' => $startStop[0], 'stop' => $startStop[1]); + + $taskArray[] = array('task' => $task, 'number' => $hints, + 'start' => $startStop[0], 'stop' => $startStop[1]); } $objToReturn = json_encode(array('stats' => $taskArray)); @@ -213,8 +240,13 @@ class AmdaStats { $STOParray = array(); $usersArray = array(); - foreach ($this->tasks as $task) { - $theTask = $this->statXml->getElementsByTagName($task)->item(0); + $dataTasks = array_merge($this->tasks, $this->tasksWs); + + foreach ($dataTasks as $task) { + $taskItems = $this->statXml->getElementsByTagName($task); + if ($taskItems->length < 1) + continue; + $theTask = $taskItems->item(0); $items = $theTask->getElementsByTagName('item'); $TASKarray = array(); @@ -307,12 +339,17 @@ class AmdaStats { if (!$stop) $stop = 100000000000; $date = array(); - - foreach ($items as $item) { - $newDate = strtotime($item->getAttribute('date')); - if (($newDate > $start) && ($newDate < $stop)) - $date[] = $newDate; + if ($items->length < 1) { + return array(0, 0); + } + else { + foreach ($items as $item) { + $newDate = strtotime($item->getAttribute('date')); + + if (($newDate > $start) && ($newDate < $stop)) + $date[] = $newDate; + } } return array(min($date), max($date)); @@ -323,7 +360,7 @@ class AmdaStats { if (!file_exists(StatsXml)) return 0; if (!file_exists($inXml)) return 0; - $tags = array_merge($this->tasks,$this->tasksAdd); + $tags = array_merge($this->tasks,$this->tasksAdd, $this->tasksWs); $doc1 = new DomDocument("1.0"); $doc2 = new DomDocument("1.0"); -- libgit2 0.21.2