ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilBenchmarkTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5
15{
16
20 function __construct($a_parent_obj, $a_parent_cmd, $a_records, $a_mode = "chronological")
21 {
22 global $ilCtrl, $lng, $ilAccess, $lng;
23
24 parent::__construct($a_parent_obj, $a_parent_cmd);
25 $this->setLimit(9999);
26 $this->mode = $a_mode;
27
28 switch ($this->mode)
29 {
30 case "slowest_first":
31 $this->setData(ilUtil::sortArray($a_records, "time", "desc", true));
32 $this->setTitle($lng->txt("adm_db_bench_slowest_first"));
33 $this->addColumn($this->lng->txt("adm_time"));
34 $this->addColumn($this->lng->txt("adm_sql"));
35 break;
36
37 case "sorted_by_sql":
38 $this->setData(ilUtil::sortArray($a_records, "sql", "asc"));
39 $this->setTitle($lng->txt("adm_db_bench_sorted_by_sql"));
40 $this->addColumn($this->lng->txt("adm_time"));
41 $this->addColumn($this->lng->txt("adm_sql"));
42 break;
43
44 case "by_first_table":
45 $this->setData($this->getDataByFirstTable($a_records));
46 $this->setTitle($lng->txt("adm_db_bench_by_first_table"));
47 $this->addColumn($this->lng->txt("adm_time"));
48 $this->addColumn($this->lng->txt("adm_nr_statements"));
49 $this->addColumn($this->lng->txt("adm_table"));
50 break;
51
52 default:
53 $this->setData($a_records);
54 $this->setTitle($lng->txt("adm_db_bench_chronological"));
55 $this->addColumn($this->lng->txt("adm_time"));
56 $this->addColumn($this->lng->txt("adm_sql"));
57 break;
58
59 }
60
61 $this->setEnableHeader(true);
62 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
63 $this->setRowTemplate("tpl.db_bench.html", "Modules/SystemFolder");
64 $this->disable("footer");
65 $this->setEnableTitle(true);
66
67// $this->addMultiCommand("", $lng->txt(""));
68// $this->addCommandButton("", $lng->txt(""));
69 }
70
77 function getFirst($a_str, $a_needles)
78 {
79 $pos = 0;
80 foreach ($a_needles as $needle)
81 {
82 $pos2 = strpos($a_str, $needle);
83
84 if ($pos2 > 0 && ($pos2 < $pos || $pos == 0))
85 {
86 $pos = $pos2;
87 }
88 }
89
90 return $pos;
91 }
92
99 function extractFirstTableFromSQL($a_sql)
100 {
101 $pos1 = $this->getFirst(strtolower($a_sql), array("from ", "from\n", "from\t", "from\r"));
102
103 $table = "";
104 if ($pos1 > 0)
105 {
106 $tablef = substr(strtolower($a_sql), $pos1+5);
107 $pos2 = $this->getFirst($tablef, array(" ", "\n", "\t", "\r"));
108 if ($pos2 > 0)
109 {
110 $table =substr($tablef, 0, $pos2);
111 }
112 else
113 {
114 $table = $tablef;
115 }
116 }
117 if (trim($table) != "")
118 {
119 return $table;
120 }
121
122 return "";
123 }
124
125
132 function getDataByFirstTable($a_records)
133 {
134 $data = array();
135 foreach ($a_records as $r)
136 {
137 $table = $this->extractFirstTableFromSQL($r["sql"]);
138 $data[$table]["table"] = $table;
139 $data[$table]["cnt"]++;
140 $data[$table]["time"] += $r["time"];
141 }
142 if (count($data) > 0)
143 {
144 $data = ilUtil::sortArray($data, "time", "desc", true);
145 }
146
147 return $data;
148 }
149
153 protected function fillRow($a_set)
154 {
155 global $lng;
156
157 switch ($this->mode)
158 {
159 case "by_first_table":
160 $this->tpl->setCurrentBlock("td");
161 $this->tpl->setVariable("VAL", $a_set["table"]);
162 $this->tpl->parseCurrentBlock();
163 $this->tpl->setVariable("VAL1", $a_set["time"]);
164 $this->tpl->setVariable("VAL2", $a_set["cnt"]);
165 break;
166
167 case "slowest_first":
168 case "sorted_by_sql":
169 default:
170 $this->tpl->setVariable("VAL1", $a_set["time"]);
171 $this->tpl->setVariable("VAL2", $a_set["sql"]);
172 break;
173 }
174 }
175
176}
177?>
__construct($a_parent_obj, $a_parent_cmd, $a_records, $a_mode="chronological")
Constructor.
extractFirstTableFromSQL($a_sql)
Extract first table from sql.
getDataByFirstTable($a_records)
Get data by first table.
getFirst($a_str, $a_needles)
Get first occurence of string.
fillRow($a_set)
Fill table row.
Class ilTable2GUI.
setEnableHeader($a_enableheader)
Set Enable Header.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setLimit($a_limit=0, $a_default_limit=0)
set max.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
disable($a_module_name)
diesables particular modules of table
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
$r
Definition: example_031.php:79
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40