ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilRating Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Collaboration diagram for ilRating:

Static Public Member Functions

static writeRatingForUserAndObject (int $a_obj_id, string $a_obj_type, ?int $a_sub_obj_id, ?string $a_sub_obj_type, int $a_user_id, int $a_rating, int $a_category_id=0)
 Write rating for a user and an object. More...
 
static resetRatingForUserAndObject (int $a_obj_id, string $a_obj_type, int $a_sub_obj_id, string $a_sub_obj_type, int $a_user_id)
 Reset rating for a user and an object. More...
 
static getRatingForUserAndObject (int $a_obj_id, string $a_obj_type, int $a_sub_obj_id, string $a_sub_obj_type, int $a_user_id, int $a_category_id=null)
 Get rating for a user and an object. More...
 
static getOverallRatingForObject (int $a_obj_id, string $a_obj_type, int $a_sub_obj_id=null, string $a_sub_obj_type=null, int $a_category_id=null)
 Get overall rating for an object. More...
 
static getExportData (int $a_obj_id, string $a_obj_type, array $a_category_ids=null)
 Get export data. More...
 
static preloadListGUIData (array $a_obj_ids)
 Preload rating data for list guis. More...
 
static hasRatingInListGUI (int $a_obj_id, string $a_obj_type)
 

Static Protected Attributes

static array $list_data = []
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning Class ilRating

Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 24 of file class.ilRating.php.

Member Function Documentation

◆ getExportData()

static ilRating::getExportData ( int  $a_obj_id,
string  $a_obj_type,
array  $a_category_ids = null 
)
static

Get export data.

Parameters
int$a_obj_id
string$a_obj_type
?array$a_category_ids
Returns
array

Definition at line 225 of file class.ilRating.php.

References $DIC, $ilDB, and $res.

Referenced by ilRatingCategoryGUI\export().

229  : array {
230  global $DIC;
231 
232  $ilDB = $DIC->database();
233 
234  $res = array();
235  $q = "SELECT sub_obj_id, sub_obj_type, rating, category_id, user_id, tstamp " .
236  "FROM il_rating WHERE " .
237  "obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
238  "obj_type = " . $ilDB->quote($a_obj_type, "text") .
239  " ORDER BY tstamp";
240  if ($a_category_ids) {
241  $q .= " AND " . $ilDB->in("category_id", $a_category_ids, "", "integer");
242  }
243  $set = $ilDB->query($q);
244  while ($row = $ilDB->fetchAssoc($set)) {
245  $res[] = $row;
246  }
247  return $res;
248  }
$res
Definition: ltiservices.php:69
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ getOverallRatingForObject()

static ilRating::getOverallRatingForObject ( int  $a_obj_id,
string  $a_obj_type,
int  $a_sub_obj_id = null,
string  $a_sub_obj_type = null,
int  $a_category_id = null 
)
static

Get overall rating for an object.

Parameters
int$a_obj_idObject ID
string$a_obj_typeObject Type
?int$a_sub_obj_id Subobject ID
?string$a_sub_obj_type Subobject Type
?int$a_category_id Category ID

Definition at line 174 of file class.ilRating.php.

References $DIC, and $ilDB.

Referenced by ilWikiStat\getAverageRating(), ilDclRatingRecordFieldModel\getExportValue(), ilRatingGUI\getHTML(), ilObjForumGUI\getSafePostCommands(), ilDclRatingRecordFieldModel\getValue(), and ilRatingGUI\renderDetails().

180  : array {
181  global $DIC;
182 
183  $ilDB = $DIC->database();
184 
185  if (isset(self::$list_data["all"][$a_obj_type . "/" . $a_obj_id])) {
186  return self::$list_data["all"][$a_obj_type . "/" . $a_obj_id];
187  }
188 
189  $q = "SELECT AVG(rating) av FROM il_rating" .
190  " WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer") .
191  " AND obj_type = " . $ilDB->quote($a_obj_type, "text");
192  if ($a_sub_obj_id) {
193  $q .= " AND sub_obj_id = " . $ilDB->quote($a_sub_obj_id, "integer") .
194  " AND " . $ilDB->equals("sub_obj_type", $a_sub_obj_type, "text", true);
195  } else {
196  $q .= " AND sub_obj_type = " . $ilDB->quote("-", "text"); // #13913
197  }
198 
199  if ($a_category_id !== null) {
200  $q .= " AND category_id = " . $ilDB->quote($a_category_id, "integer");
201  }
202  $q .= " GROUP BY user_id";
203  $set = $ilDB->query($q);
204  $avg = $cnt = 0;
205  while ($rec = $ilDB->fetchAssoc($set)) {
206  $cnt++;
207  $avg += $rec["av"];
208  }
209  if ($cnt > 0) {
210  $avg = $avg / $cnt;
211  } else {
212  $avg = 0;
213  }
214  return array("cnt" => $cnt, "avg" => $avg);
215  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ getRatingForUserAndObject()

static ilRating::getRatingForUserAndObject ( int  $a_obj_id,
string  $a_obj_type,
int  $a_sub_obj_id,
string  $a_sub_obj_type,
int  $a_user_id,
int  $a_category_id = null 
)
static

Get rating for a user and an object.

Parameters
int$a_obj_idObject ID
string$a_obj_typeObject Type
int$a_sub_obj_idSubobject ID
string$a_sub_obj_typeSubobject Type
int$a_user_idUser ID
?int$a_category_id Category ID

Definition at line 135 of file class.ilRating.php.

References $DIC, and $ilDB.

Referenced by ilRatingGUI\getHTML(), ilExcCriteriaRating\hasValue(), ilExerciseManagementCollectFilesJob\isExcelNeeded(), and ilRatingGUI\renderDetails().

142  : float {
143  global $DIC;
144 
145  $ilDB = $DIC->database();
146 
147  if (isset(self::$list_data["user"][$a_obj_type . "/" . $a_obj_id])) {
148  return self::$list_data["user"][$a_obj_type . "/" . $a_obj_id] ?? 0;
149  }
150 
151  $q = "SELECT AVG(rating) av FROM il_rating WHERE " .
152  "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " .
153  "obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
154  "obj_type = " . $ilDB->quote($a_obj_type, "text") . " AND " .
155  "sub_obj_id = " . $ilDB->quote($a_sub_obj_id, "integer") . " AND " .
156  $ilDB->equals("sub_obj_type", $a_sub_obj_type, "text", true);
157  if ($a_category_id !== null) {
158  $q .= " AND category_id = " . $ilDB->quote($a_category_id, "integer");
159  }
160  $set = $ilDB->query($q);
161  $rec = $ilDB->fetchAssoc($set);
162  return (float) $rec["av"];
163  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ hasRatingInListGUI()

static ilRating::hasRatingInListGUI ( int  $a_obj_id,
string  $a_obj_type 
)
static

Definition at line 327 of file class.ilRating.php.

Referenced by ilObjectListGUI\getListItemHTML().

330  : bool {
331  return isset(self::$list_data["all"][$a_obj_type . "/" . $a_obj_id]);
332  }
+ Here is the caller graph for this function:

◆ preloadListGUIData()

static ilRating::preloadListGUIData ( array  $a_obj_ids)
static

Preload rating data for list guis.

Parameters
int[]$a_obj_ids

Definition at line 255 of file class.ilRating.php.

References $DIC, $id, $ilDB, $ilUser, and $res.

Referenced by ilObjectListGUIPreloader\preload().

257  : void {
258  global $DIC;
259 
260  $ilDB = $DIC->database();
261  $ilUser = $DIC->user();
262 
263  $tmp = $res = $res_user = array();
264 
265  // collapse by categories
266  $q = "SELECT obj_id, obj_type, user_id, AVG(rating) av" .
267  " FROM il_rating" .
268  " WHERE " . $ilDB->in("obj_id", $a_obj_ids, "", "integer") .
269  " AND sub_obj_id = " . $ilDB->quote(0, "integer") .
270  " GROUP BY obj_id, obj_type, user_id";
271  $set = $ilDB->query($q);
272  while ($rec = $ilDB->fetchAssoc($set)) {
273  $tmp[$rec["obj_type"] . "/" . $rec["obj_id"]][$rec["user_id"]] = (float) $rec["av"];
274  if ($rec["user_id"] == $ilUser->getId()) {
275  // add final average to user result (no sub-objects)
276  $res_user[$rec["obj_type"] . "/" . $rec["obj_id"]] = (float) $rec["av"];
277  }
278  }
279 
280  // average for main objects without sub-objects
281  foreach ($tmp as $obj_id => $votes) {
282  $res[$obj_id] = array("avg" => array_sum($votes) / sizeof($votes),
283  "cnt" => sizeof($votes));
284  }
285 
286  // file/wiki/lm rating toggles
287 
288  $set = $ilDB->query("SELECT file_id, rating" .
289  " FROM file_data" .
290  " WHERE " . $ilDB->in("file_id", $a_obj_ids, "", 'integer'));
291  while ($row = $ilDB->fetchAssoc($set)) {
292  $id = "file/" . $row["file_id"];
293  if ($row["rating"] && !isset($res[$id])) {
294  $res[$id] = array("avg" => 0, "cnt" => 0);
295  } elseif (!$row["rating"] && isset($res[$id])) {
296  unset($res[$id]);
297  }
298  }
299 
300  $set = $ilDB->query("SELECT id, rating_overall" .
301  " FROM il_wiki_data" .
302  " WHERE " . $ilDB->in("id", $a_obj_ids, "", 'integer'));
303  while ($row = $ilDB->fetchAssoc($set)) {
304  $id = "wiki/" . $row["id"];
305  if ($row["rating_overall"] && !isset($res[$id])) {
306  $res[$id] = array("avg" => 0, "cnt" => 0);
307  } elseif (!$row["rating_overall"] && isset($res[$id])) {
308  unset($res[$id]);
309  }
310  }
311 
312  $set = $ilDB->query("SELECT id, rating" .
313  " FROM content_object" .
314  " WHERE " . $ilDB->in("id", $a_obj_ids, "", 'integer'));
315  while ($row = $ilDB->fetchAssoc($set)) {
316  $id = "lm/" . $row["id"];
317  if ($row["rating"] && !isset($res[$id])) {
318  $res[$id] = array("avg" => 0, "cnt" => 0);
319  } elseif (!$row["rating"] && isset($res[$id])) {
320  unset($res[$id]);
321  }
322  }
323 
324  self::$list_data = array("all" => $res, "user" => $res_user);
325  }
$res
Definition: ltiservices.php:69
global $DIC
Definition: feed.php:28
$ilUser
Definition: imgupload.php:34
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the caller graph for this function:

◆ resetRatingForUserAndObject()

static ilRating::resetRatingForUserAndObject ( int  $a_obj_id,
string  $a_obj_type,
int  $a_sub_obj_id,
string  $a_sub_obj_type,
int  $a_user_id 
)
static

Reset rating for a user and an object.

Parameters
int$a_obj_idObject ID
string$a_obj_typeObject Type
int$a_sub_obj_idSubobject ID
string$a_sub_obj_typeSubobject Type
int$a_user_idUser ID

Definition at line 105 of file class.ilRating.php.

References $DIC, and $ilDB.

Referenced by ilExcCriteriaRating\resetReview(), ilRatingGUI\resetUserRating(), and ilLMPresentationGUI\updatePageRating().

111  : void {
112  global $DIC;
113 
114  $ilDB = $DIC->database();
115 
116  $ilDB->manipulate("DELETE FROM il_rating WHERE " .
117  "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " .
118  "obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
119  "obj_type = " . $ilDB->quote($a_obj_type, "text") . " AND " .
120  "sub_obj_id = " . $ilDB->quote($a_sub_obj_id, "integer") . " AND " .
121  $ilDB->equals("sub_obj_type", $a_sub_obj_type, "text", true));
122  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ writeRatingForUserAndObject()

static ilRating::writeRatingForUserAndObject ( int  $a_obj_id,
string  $a_obj_type,
?int  $a_sub_obj_id,
?string  $a_sub_obj_type,
int  $a_user_id,
int  $a_rating,
int  $a_category_id = 0 
)
static

Write rating for a user and an object.

Parameters
int$a_obj_idObject ID
string$a_obj_typeObject Type
?int$a_sub_obj_id Subobject ID
?string$a_sub_obj_type Subobject Type
int$a_user_idUser ID
int$a_ratingRating
int$a_category_idCategory ID

Definition at line 39 of file class.ilRating.php.

References $DIC, $ilDB, and ANONYMOUS_USER_ID.

Referenced by ilRatingGUI\saveRating(), ilExcCriteriaRating\updateFromAjax(), and ilLMPresentationGUI\updatePageRating().

47  : void {
48  global $DIC;
49 
50  $ilDB = $DIC->database();
51 
52  if ($a_rating < 0) {
53  $a_rating = 0;
54  }
55 
56  if ($a_rating > 5) {
57  $a_rating = 5;
58  }
59 
60  if ($a_user_id == ANONYMOUS_USER_ID) {
61  return;
62  }
63 
64  if ($a_category_id) {
65  $ilDB->manipulate("DELETE FROM il_rating WHERE " .
66  "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " .
67  "obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
68  "obj_type = " . $ilDB->quote($a_obj_type, "text") . " AND " .
69  "sub_obj_id = " . $ilDB->quote((int) $a_sub_obj_id, "integer") . " AND " .
70  $ilDB->equals("sub_obj_type", $a_sub_obj_type, "text", true) . " AND " .
71  "category_id = " . $ilDB->quote(0, "integer"));
72  }
73 
74  $ilDB->manipulate("DELETE FROM il_rating WHERE " .
75  "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " .
76  "obj_id = " . $ilDB->quote($a_obj_id, "integer") . " AND " .
77  "obj_type = " . $ilDB->quote($a_obj_type, "text") . " AND " .
78  "sub_obj_id = " . $ilDB->quote((int) $a_sub_obj_id, "integer") . " AND " .
79  $ilDB->equals("sub_obj_type", $a_sub_obj_type, "text", true) . " AND " .
80  "category_id = " . $ilDB->quote($a_category_id, "integer"));
81 
82  if ($a_rating) {
83  $ilDB->manipulate("INSERT INTO il_rating (user_id, obj_id, obj_type," .
84  "sub_obj_id, sub_obj_type, category_id, rating, tstamp) VALUES (" .
85  $ilDB->quote($a_user_id, "integer") . "," .
86  $ilDB->quote($a_obj_id, "integer") . "," .
87  $ilDB->quote($a_obj_type, "text") . "," .
88  $ilDB->quote((int) $a_sub_obj_id, "integer") . "," .
89  $ilDB->quote($a_sub_obj_type, "text") . "," .
90  $ilDB->quote($a_category_id, "integer") . "," .
91  $ilDB->quote($a_rating, "integer") . "," .
92  $ilDB->quote(time(), "integer") . ")");
93  }
94  }
const ANONYMOUS_USER_ID
Definition: constants.php:27
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

Field Documentation

◆ $list_data

array ilRating::$list_data = []
staticprotected

Definition at line 26 of file class.ilRating.php.


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