4 include_once(
"./Services/Tracking/classes/class.ilLPTableBaseGUI.php");
20 function __construct($a_parent_obj, $a_parent_cmd, array $a_preselect = null, $a_load_items =
true)
24 $this->preselected = $a_preselect;
26 $this->
setId(
"lpobjstattbl");
35 $this->
addColumn($lng->txt(
"trac_title"),
"title");
36 $this->
addColumn($lng->txt(
"object_id"),
"obj_id");
37 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
39 foreach($this->
getMonthsYear($this->filter[
"yearmonth"]) as $num => $caption)
41 $this->
addColumn($caption,
"month_".$num,
"",
false,
"ilRight");
44 $this->
addColumn($lng->txt(
"total"),
"total",
"",
false,
"ilRight");
46 $this->
setTitle($this->lng->txt(
"trac_object_stat_access"));
49 $this->
addMultiCommand(
"showAccessGraph", $lng->txt(
"trac_show_graph"));
53 $this->
setFormAction($ilCtrl->getFormAction($a_parent_obj, $a_parent_cmd));
54 $this->
setRowTemplate(
"tpl.lp_object_statistics_row.html",
"Services/Tracking");
71 if($a_field !=
"title")
88 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
92 $si->readFromSession();
97 $this->filter[
"type"] =
$si->getValue();
100 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
101 $ti =
new ilTextInputGUI($lng->txt(
"trac_title_description"),
"query");
105 $ti->readFromSession();
106 $this->filter[
"query"] = $ti->getValue();
110 $si->setOptions(array(
"read_count"=>$lng->txt(
"trac_read_count"),
111 "spent_seconds"=>$lng->txt(
"trac_spent_seconds"),
112 "users"=>$lng->txt(
"users")));
114 $si->readFromSession();
117 $si->setValue(
"read_count");
119 $this->filter[
"measure"] =
$si->getValue();
125 $si->readFromSession();
128 $si->setValue(date(
"Y-m"));
130 $this->filter[
"yearmonth"] =
$si->getValue();
140 include_once
"Services/Tracking/classes/class.ilTrQuery.php";
142 $yearmonth = explode(
"-", $this->filter[
"yearmonth"]);
143 if(
sizeof($yearmonth) == 1)
147 $data[$obj_id][
"obj_id"] = $obj_id;
150 foreach($months as $month => $values)
152 $idx = $yearmonth[0].
"-".str_pad($month, 2,
"0", STR_PAD_LEFT);
153 $data[$obj_id][
"month_".$idx] = (int)$values[$this->filter[
"measure"]];
154 $data[$obj_id][
"total"] += (int)$values[$this->filter[
"measure"]];
162 $data[$obj_id][
"obj_id"] = $obj_id;
165 foreach($days as $day => $values)
167 $data[$obj_id][
"day_".$day] = (int)$values[$this->filter[
"measure"]];
168 $data[$obj_id][
"total"] += (int)$values[$this->filter[
"measure"]];
174 foreach(array_keys($objects) as $obj_id)
176 if(!isset(
$data[$obj_id]))
178 $data[$obj_id][
"obj_id"] = $obj_id;
196 $this->tpl->setVariable(
"OBJ_ID", $a_set[
"obj_id"]);
198 $this->tpl->setVariable(
"ICON_ALT", $this->lng->txt($type));
199 $this->tpl->setVariable(
"TITLE_TEXT", $a_set[
"title"]);
201 if($this->preselected && in_array($a_set[
"obj_id"], $this->preselected))
203 $this->tpl->setVariable(
"CHECKBOX_STATE",
" checked=\"checked\"");
207 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
209 $this->tpl->setCurrentBlock(
"month");
210 foreach(array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $num)
212 $value = (int)$a_set[
"month_".$num];
213 if($this->filter[
"measure"] !=
"spent_seconds")
221 $this->tpl->setVariable(
"MONTH_VALUE", $value);
222 $this->tpl->parseCurrentBlock();
226 if($this->filter[
"measure"] ==
"spent_seconds")
234 $this->tpl->setVariable(
"TOTAL", $sum);
241 include_once
"Services/Chart/classes/class.ilChart.php";
242 $chart =
new ilChart(
"objstacc", 700, 500);
245 $chart->setLegend($legend);
248 foreach($this->
getData() as $object)
250 if(in_array($object[
"obj_id"], $a_graph_items))
255 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
257 foreach(array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $idx => $num)
259 $value = (int)$object[
"month_".$num];
260 $max_value = max($max_value, $value);
261 if($this->filter[
"measure"] !=
"spent_seconds")
265 $series->addPoint($idx, $value);
270 for($loop = 1; $loop<32; $loop++)
272 $value = (int)$object[
"day_".$loop];
273 $max_value = max($max_value, $value);
274 if($this->filter[
"measure"] !=
"spent_seconds")
278 $series->addPoint($loop, $value);
282 $chart->addData($series);
286 $value_ticks = $this->
buildValueScale($max_value, ($this->filter[
"measure"] !=
"spent_seconds"),
287 ($this->filter[
"measure"] ==
"spent_seconds"));
290 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
292 foreach(array_values($this->
getMonthsYear($this->filter[
"yearmonth"],
true)) as $idx => $caption)
294 $labels[$idx] = $caption;
299 for($loop = 1; $loop<32; $loop++)
301 $labels[$loop] = $loop.
".";
304 $chart->setTicks($labels, $value_ticks,
true);
306 return $chart->getHTML();
317 $a_worksheet->write($a_row, 1, $a_set[
"obj_id"]);
320 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
322 foreach(array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $num)
324 $value = (int)$a_set[
"month_".$num];
325 if($this->filter[
"measure"] !=
"spent_seconds")
331 $a_worksheet->write($a_row, $col, $value);
335 if($this->filter[
"measure"] ==
"spent_seconds")
339 $sum = (int)$a_set[
"total"];
346 $a_worksheet->write($a_row, $col, $sum);
357 $a_csv->addColumn($a_set[
"obj_id"]);
359 if(strpos($this->filter[
"yearmonth"],
"-") ===
false)
361 foreach(array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $num)
363 $value = (int)$a_set[
"month_".$num];
364 if($this->filter[
"measure"] !=
"spent_seconds")
369 $a_csv->addColumn($value);
373 if($this->filter[
"measure"] ==
"spent_seconds")
377 $sum = (int)$a_set[
"total"];
383 $a_csv->addColumn($sum);