37 $a_update_last =
false 41 $ilDB = $DIC->database();
44 if ($a_obj_type ==
"") {
48 if (is_array($a_info_params)) {
49 foreach ($a_info_params as $key =>
$param) {
50 $a_info_params[$key] = str_replace(
",",
",",
$param);
52 $a_info_params = implode(
",", $a_info_params);
56 $last_entry_sql =
"SELECT * FROM history WHERE " .
57 " obj_id = " .
$ilDB->quote($a_obj_id,
"integer") .
" AND " .
58 " obj_type = " .
$ilDB->quote($a_obj_type,
"text") .
" ORDER BY hdate DESC";
59 $last_entry_set =
$ilDB->query($last_entry_sql);
60 $last_entry =
$ilDB->fetchAssoc($last_entry_set);
66 if (($a_user_comment !=
"" && $last_entry[
"user_comment"] !=
"")
67 || !$a_update_last || $a_action != $last_entry[
"action"]
68 ||
$ilUser->getId() != $last_entry[
"usr_id"]) {
69 $id =
$ilDB->nextId(
"history");
70 $ilDB->insert(
"history", array(
71 "id" => array(
"integer", $id),
72 "obj_id" => array(
"integer", $a_obj_id),
73 "obj_type" => array(
"text", $a_obj_type),
74 "action" => array(
"text", $a_action),
76 "usr_id" => array(
"integer",
$ilUser->getId()),
77 "info_params" => array(
"text", $a_info_params),
78 "user_comment" => array(
"clob", $a_user_comment)
110 if ($a_user_comment !=
"") {
111 $fields[
"user_comment"] = array(
"clob", $a_user_comment);
114 $ilDB->update(
"history", $fields, array(
115 "id" => array(
"integer", $id)
132 $ilDB = $DIC->database();
134 if ($a_obj_type ==
"") {
137 $query =
"SELECT * FROM history WHERE obj_id = " .
138 $ilDB->quote($a_obj_id,
"integer") .
" AND " .
139 "obj_type = " .
$ilDB->quote($a_obj_type,
"text") .
140 " ORDER BY hdate DESC";
143 $hist_items = array();
144 while ($hist_rec =
$ilDB->fetchAssoc($hist_set)) {
145 $hist_items[] = array(
"date" => $hist_rec[
"hdate"],
146 "user_id" => $hist_rec[
"usr_id"],
147 "obj_id" => $hist_rec[
"obj_id"],
148 "obj_type" => $hist_rec[
"obj_type"],
149 "action" => $hist_rec[
"action"],
150 "info_params" => $hist_rec[
"info_params"],
151 "user_comment" => $hist_rec[
"user_comment"],
152 "hist_entry_id" => $hist_rec[
"id"]);
155 if ($a_obj_type ==
"lm") {
156 $query =
"SELECT h.*, l.title as title FROM history h, lm_data l WHERE " .
157 " l.lm_id = " .
$ilDB->quote($a_obj_id,
"integer") .
" AND " .
158 " l.obj_id = h.obj_id AND " .
159 " (h.obj_type=" .
$ilDB->quote($a_obj_type .
":pg",
"text") .
" OR h.obj_type=" .
$ilDB->quote($a_obj_type .
":st",
"text") .
") " .
160 " ORDER BY h.hdate DESC";
163 while ($hist_rec =
$ilDB->fetchAssoc($hist_set)) {
164 $hist_items[] = array(
"date" => $hist_rec[
"hdate"],
165 "user_id" => $hist_rec[
"usr_id"],
166 "obj_id" => $hist_rec[
"obj_id"],
167 "obj_type" => $hist_rec[
"obj_type"],
168 "action" => $hist_rec[
"action"],
169 "info_params" => $hist_rec[
"info_params"],
170 "user_comment" => $hist_rec[
"user_comment"],
171 "hist_entry_id" => $hist_rec[
"id"],
172 "title" => $hist_rec[
"title"]);
174 usort($hist_items, array(
"ilHistory",
"_compareHistArray"));
175 $hist_items2 = array_reverse($hist_items);
184 if (
$a[
"date"] ==
$b[
"date"]) {
187 return (
$a[
"date"] <
$b[
"date"]) ? -1 : 1;
201 $ilDB = $DIC->database();
203 $q =
"DELETE FROM history WHERE obj_id = " .
204 $ilDB->quote($a_obj_id,
"integer");
205 $r =
$ilDB->manipulate($q);
221 $ilDB = $DIC->database();
223 $q =
"SELECT * FROM history WHERE obj_id = " .
224 $ilDB->quote($a_src_id,
"integer");
225 $r =
$ilDB->query($q);
227 while ($row =
$ilDB->fetchObject($r)) {
228 $id =
$ilDB->nextId(
"history");
229 $ilDB->insert(
"history", array(
230 "id" => array(
"integer", $id),
231 "obj_id" => array(
"integer", $a_dst_id),
232 "obj_type" => array(
"text", $row->obj_type),
233 "action" => array(
"text", $row->action),
235 "usr_id" => array(
"integer", $row->usr_id),
236 "info_params" => array(
"text", $row->info_params),
237 "user_comment" => array(
"clob", $row->user_comment)
267 $ilDB = $DIC->database();
269 $q =
"SELECT * FROM history WHERE id = " .
270 $ilDB->quote($a_hist_entry_id,
"integer");
271 $r =
$ilDB->query($q);
273 return $ilDB->fetchAssoc($r);
285 $ilDB = $DIC->database();
287 $q =
"DELETE FROM history WHERE id = " .
288 $ilDB->quote($a_hist_entry_id,
"integer");
289 $ilDB->manipulate($q);
302 $ilDB = $DIC->database();
306 array(
"usr_id" => array(
"integer", $new_user_id)),
307 array(
"id" => array(
"integer", $a_hist_entry_id))
static _removeEntryByHistoryID($a_hist_entry_id)
Removes a single entry from the history.
static _changeUserId($a_hist_entry_id, $new_user_id)
Changes the user id of the specified history entry.
static _compareHistArray($a, $b)
static now()
Return current timestamp in Y-m-d H:i:s format.
static _createEntry( $a_obj_id, $a_action, $a_info_params="", $a_obj_type="", $a_user_comment="", $a_update_last=false)
Creates a new history entry for an object.
static _getEntryByHistoryID($a_hist_entry_id)
returns a single history entry
This class methods for maintain history enties for objects.
static _copyEntriesForObject($a_src_id, $a_dst_id)
copy all history entries for an object
static _getEntriesForObject($a_obj_id, $a_obj_type="")
get all history entries for an object
static _lookupType($a_id, $a_reference=false)
lookup object type
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
static _removeEntriesForObject($a_obj_id)
remove all history entries for an object