ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilRbacLog Class Reference

class ilRbacLog Log changes in Rbac-related settings More...

+ Collaboration diagram for ilRbacLog:

Static Public Member Functions

static isActive ()
 
static gatherFaPa ($a_ref_id, array $a_role_ids, $a_add_action=false)
 
static diffFaPa (array $a_old, array $a_new)
 
static gatherTemplate ($a_role_ref_id, $a_role_id)
 
static diffTemplate (array $a_old, array $a_new)
 
static add ($a_action, $a_ref_id, array $a_diff, $a_source_ref_id=false)
 
static getLogItems ($a_ref_id, $a_limit, $a_offset, array $a_filter=NULL)
 
static delete ($a_ref_id)
 
static garbageCollection ()
 

Data Fields

const EDIT_PERMISSIONS = 1
 
const MOVE_OBJECT = 2
 
const LINK_OBJECT = 3
 
const COPY_OBJECT = 4
 
const CREATE_OBJECT = 5
 
const EDIT_TEMPLATE = 6
 
const EDIT_TEMPLATE_EXISTING = 7
 
const CHANGE_OWNER = 8
 

Static Protected Member Functions

static isValidAction ($a_action)
 

Detailed Description

class ilRbacLog Log changes in Rbac-related settings

Author
Jörg Lützenkirchen luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
Id
class.ilRbacReview.php 24262 2010-06-15 06:48:14Z nkrzywon

Definition at line 14 of file class.ilRbacLog.php.

Member Function Documentation

◆ add()

static ilRbacLog::add (   $a_action,
  $a_ref_id,
array  $a_diff,
  $a_source_ref_id = false 
)
static

Definition at line 162 of file class.ilRbacLog.php.

163 {
164 global $ilUser, $ilDB;
165
166 if(self::isValidAction($a_action) && sizeof($a_diff))
167 {
168 if($a_source_ref_id)
169 {
170 $a_diff["src"] = $a_source_ref_id;
171 }
172
173 $ilDB->query("INSERT INTO rbac_log (user_id, created, ref_id, action, data)".
174 " VALUES (".$ilDB->quote($ilUser->getId(), "integer").",".$ilDB->quote(time(), "integer").
175 ",".$ilDB->quote($a_ref_id, "integer").",".$ilDB->quote($a_action, "integer").
176 ",".$ilDB->quote(serialize($a_diff), "text").")");
177 return true;
178 }
179 return false;
180 }
global $ilDB
global $ilUser
Definition: imgupload.php:15

References $ilDB, and $ilUser.

Referenced by ilRbacAdmin\adjustMovedObjectPermissions(), ilObjRole\adjustPermissions(), ilPermission2GUI\changeOwner(), ilSoapUtils\cloneNode(), ilObjChatroom\cloneObject(), ilObjectCopyGUI\copyMultipleNonContainer(), ilObjectCopyGUI\copySingleObject(), ilSoapUtils\linkNode(), ilContainerGUI\performPasteIntoMultipleObjectsObject(), ilObjRoleGUI\permSaveObject(), ilObject2GUI\putObjectInTree(), ilObjectGUI\putObjectInTree(), and ilPermissionGUI\savePermissions().

+ Here is the caller graph for this function:

◆ delete()

static ilRbacLog::delete (   $a_ref_id)
static

Definition at line 237 of file class.ilRbacLog.php.

238 {
239 global $ilDB;
240
241 $ilDB->query("DELETE FROM rbac_log WHERE ref_id = ".$ilDB->quote($a_ref_id, "integer"));
242
244 }
static garbageCollection()

References $ilDB, and garbageCollection().

Referenced by ilObject\delete().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ diffFaPa()

static ilRbacLog::diffFaPa ( array  $a_old,
array  $a_new 
)
static

Definition at line 77 of file class.ilRbacLog.php.

78 {
79 $result = array();
80
81 // roles
82 foreach((array) $a_old["ops"] as $role_id => $ops)
83 {
84 $diff = array_diff($ops, $a_new["ops"][$role_id]);
85 if(sizeof($diff))
86 {
87 $result["ops"][$role_id]["rmv"] = array_values($diff);
88 }
89 $diff = array_diff($a_new["ops"][$role_id], $ops);
90 if(sizeof($diff))
91 {
92 $result["ops"][$role_id]["add"] = array_values($diff);
93 }
94 }
95
96 if(isset($a_old["inht"]) || isset($a_new["inht"]))
97 {
98 if(isset($a_old["inht"]) && !isset($a_new["inht"]))
99 {
100 $result["inht"]["rmv"] = $a_old["inht"];
101 }
102 else if(!isset($a_old["inht"]) && isset($a_new["inht"]))
103 {
104 $result["inht"]["add"] = $a_new["inht"];
105 }
106 else
107 {
108 $diff = array_diff($a_old["inht"], $a_new["inht"]);
109 if(sizeof($diff))
110 {
111 $result["inht"]["rmv"] = array_values($diff);
112 }
113 $diff = array_diff($a_new["inht"], $a_old["inht"]);
114 if(sizeof($diff))
115 {
116 $result["inht"]["add"] = array_values($diff);
117 }
118 }
119 }
120
121 return $result;
122 }
$result

References $result.

Referenced by ilRbacAdmin\adjustMovedObjectPermissions(), ilObjRole\adjustPermissions(), and ilPermissionGUI\savePermissions().

+ Here is the caller graph for this function:

◆ diffTemplate()

static ilRbacLog::diffTemplate ( array  $a_old,
array  $a_new 
)
static

Definition at line 131 of file class.ilRbacLog.php.

132 {
133 $result = array();
134 $types = array_unique(array_merge(array_keys($a_old), array_keys($a_new)));
135 foreach($types as $type)
136 {
137 if(!isset($a_old[$type]))
138 {
139 $result[$type]["add"] = $a_new[$type];
140 }
141 else if(!isset($a_new[$type]))
142 {
143 $result[$type]["rmv"] = $a_old[$type];
144 }
145 else
146 {
147 $diff = array_diff($a_old[$type], $a_new[$type]);
148 if(sizeof($diff))
149 {
150 $result[$type]["rmv"] = array_values($diff);
151 }
152 $diff = array_diff($a_new[$type], $a_old[$type]);
153 if(sizeof($diff))
154 {
155 $result[$type]["add"] = array_values($diff);
156 }
157 }
158 }
159 return $result;
160 }

References $result.

Referenced by ilObjRoleGUI\permSaveObject().

+ Here is the caller graph for this function:

◆ garbageCollection()

static ilRbacLog::garbageCollection ( )
static

Definition at line 246 of file class.ilRbacLog.php.

247 {
248 global $ilDB;
249
250 include_once "Services/PrivacySecurity/classes/class.ilPrivacySettings.php";
252 $max = $settings->getRbacLogAge();
253
254 $ilDB->query("DELETE FROM rbac_log WHERE created < ".$ilDB->quote(strtotime("-".$max."months"), "integer"));
255 }
static _getInstance()
Get instance of ilPrivacySettings.

References $ilDB, and ilPrivacySettings\_getInstance().

Referenced by delete().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gatherFaPa()

static ilRbacLog::gatherFaPa (   $a_ref_id,
array  $a_role_ids,
  $a_add_action = false 
)
static

Definition at line 36 of file class.ilRbacLog.php.

37 {
38 global $rbacreview;
39
40 $result = array();
41
42 // #10946 - if result is written to log directly we need to add an "action" dimension
43 // if result is used as input to diffFaPa() we need "raw" data
44
45 // roles
46 foreach($a_role_ids as $role_id)
47 {
48 if ($role_id != SYSTEM_ROLE_ID)
49 {
50 if($a_add_action)
51 {
52 $result["ops"][$role_id]["add"] = $rbacreview->getRoleOperationsOnObject($role_id, $a_ref_id);
53 }
54 else
55 {
56 $result["ops"][$role_id] = $rbacreview->getRoleOperationsOnObject($role_id, $a_ref_id);
57 }
58 }
59 }
60
61 // inheritance
62 if($a_ref_id && $a_ref_id != ROLE_FOLDER_ID)
63 {
64 if($a_add_action)
65 {
66 $result["inht"]["add"] = $rbacreview->getRolesOfRoleFolder($a_ref_id);
67 }
68 else
69 {
70 $result["inht"] = $rbacreview->getRolesOfRoleFolder($a_ref_id);
71 }
72 }
73
74 return $result;
75 }

References $result.

Referenced by ilRbacAdmin\adjustMovedObjectPermissions(), ilObjRole\adjustPermissions(), ilSoapUtils\cloneNode(), ilObjChatroom\cloneObject(), ilObjectCopyGUI\copyMultipleNonContainer(), ilObjectCopyGUI\copySingleObject(), ilSoapUtils\linkNode(), ilContainerGUI\performPasteIntoMultipleObjectsObject(), ilObject2GUI\putObjectInTree(), ilObjectGUI\putObjectInTree(), and ilPermissionGUI\savePermissions().

+ Here is the caller graph for this function:

◆ gatherTemplate()

static ilRbacLog::gatherTemplate (   $a_role_ref_id,
  $a_role_id 
)
static

Definition at line 124 of file class.ilRbacLog.php.

125 {
126 global $rbacreview;
127
128 return $rbacreview->getAllOperationsOfRole($a_role_id, $a_role_ref_id);
129 }

Referenced by ilObjRoleGUI\permSaveObject().

+ Here is the caller graph for this function:

◆ getLogItems()

static ilRbacLog::getLogItems (   $a_ref_id,
  $a_limit,
  $a_offset,
array  $a_filter = NULL 
)
static

Definition at line 193 of file class.ilRbacLog.php.

194 {
195 global $ilDB, $rbacreview;
196
197 if($a_filter)
198 {
199 $where = NULL;
200 if($a_filter["action"])
201 {
202 $where[] = "action = ".$ilDB->quote($a_filter["action"], "integer");
203 }
204 if($a_filter["date"]["from"])
205 {
206 $from = $a_filter["date"]["from"]->get(IL_CAL_UNIX);
207 $from = strtotime("00:00:00", $from);
208 $where[] = "created >= ".$ilDB->quote($from, "integer");
209 }
210 if($a_filter["date"]["to"])
211 {
212 $to = $a_filter["date"]["to"]->get(IL_CAL_UNIX);
213 $to = strtotime("23:59:59", $to);
214 $where[] = "created <= ".$ilDB->quote($to, "integer");
215 }
216 if(sizeof($where))
217 {
218 $where = " AND ".implode(" AND ", $where);
219 }
220 }
221
222 $set = $ilDB->query("SELECT COUNT(*) FROM rbac_log WHERE ref_id = ".$ilDB->quote($a_ref_id, "integer").$where);
223 $count = array_pop($ilDB->fetchAssoc($set));
224
225 $ilDB->setLimit($a_limit, $a_offset);
226 $set = $ilDB->query("SELECT * FROM rbac_log WHERE ref_id = ".$ilDB->quote($a_ref_id, "integer").
227 $where." ORDER BY created DESC");
228 $result = array();
229 while($row = $ilDB->fetchAssoc($set))
230 {
231 $row["data"] = unserialize($row["data"]);
232 $result[] = $row;
233 }
234 return array("cnt"=>$count, "set"=>$result);
235 }
const IL_CAL_UNIX

References $ilDB, $result, $row, and IL_CAL_UNIX.

Referenced by ilRbacLogTableGUI\getItems().

+ Here is the caller graph for this function:

◆ isActive()

static ilRbacLog::isActive ( )
static

Definition at line 25 of file class.ilRbacLog.php.

26 {
27 include_once "Services/PrivacySecurity/classes/class.ilPrivacySettings.php";
29 if($settings->enabledRbacLog())
30 {
31 return true;
32 }
33 return false;
34 }

References ilPrivacySettings\_getInstance().

Referenced by ilPermission2GUI\__initSubTabs(), ilRbacAdmin\adjustMovedObjectPermissions(), ilObjRole\adjustPermissions(), ilPermission2GUI\changeOwner(), ilObjectCopyGUI\copyMultipleNonContainer(), ilObjectCopyGUI\copySingleObject(), ilPermission2GUI\log(), ilContainerGUI\performPasteIntoMultipleObjectsObject(), and ilObjRoleGUI\permSaveObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isValidAction()

static ilRbacLog::isValidAction (   $a_action)
staticprotected

Definition at line 182 of file class.ilRbacLog.php.

183 {
184 if(in_array($a_action, array(self::EDIT_PERMISSIONS, self::MOVE_OBJECT, self::LINK_OBJECT,
185 self::COPY_OBJECT, self::CREATE_OBJECT, self::EDIT_TEMPLATE, self::EDIT_TEMPLATE_EXISTING,
186 self::CHANGE_OWNER)))
187 {
188 return true;
189 }
190 return false;
191 }

Field Documentation

◆ CHANGE_OWNER

const ilRbacLog::CHANGE_OWNER = 8

◆ COPY_OBJECT

◆ CREATE_OBJECT

const ilRbacLog::CREATE_OBJECT = 5

◆ EDIT_PERMISSIONS

const ilRbacLog::EDIT_PERMISSIONS = 1

◆ EDIT_TEMPLATE

const ilRbacLog::EDIT_TEMPLATE = 6

◆ EDIT_TEMPLATE_EXISTING

const ilRbacLog::EDIT_TEMPLATE_EXISTING = 7

◆ LINK_OBJECT

const ilRbacLog::LINK_OBJECT = 3

◆ MOVE_OBJECT

const ilRbacLog::MOVE_OBJECT = 2

The documentation for this class was generated from the following file: