ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilStudyProgrammeUserTable Class Reference

ilStudyProgrammeUserTable provides a flattened list of progresses at a programme-node. More...

+ Collaboration diagram for ilStudyProgrammeUserTable:

Public Member Functions

 __construct (protected ilDBInterface $db, protected ilExportFieldsInfo $export_fields_info, protected ilPRGAssignmentDBRepository $assignment_repo, protected ilLanguage $lng, protected ilPRGPermissionsHelper $permissions, protected ilCertificateDownloadValidator $cert_validator)
 
 getColumns (int $prg_id, bool $add_active_column=false, bool $add_cert_column=false)
 
 countFetchData (int $prg_id, ?array $valid_user_ids, ilPRGAssignmentFilter $custom_filters)
 
 fetchData (int $prg_id, ?array $valid_user_ids, Order $order, ?ilPRGAssignmentFilter $custom_filters=null, ?int $limit=null, ?int $offset=null)
 
 fetchSingleUserRootAssignments (int $usr_id)
 
 disablePermissionCheck ($flag=false)
 
 statusToRepresent ($a_status)
 
 boolToRepresent (bool $value)
 
 validToRepresent (ilPRGProgress $pgs)
 
 activeToRepresent (bool $value)
 
 assignmentSourceToRepresent (bool $manually, int $assignment_src)
 
 completionByToRepresent (ilPRGProgress $progress)
 

Static Public Member Functions

static lookupTitle (int $obj_id)
 

Data Fields

const OPTION_ALL = -1
 
const VALIDITY_OPTION_VALID = 1
 
const VALIDITY_OPTION_INVALID = 3
 
const OPTION_USR_ACTIVE = 1
 
const OPTION_USR_INACTIVE = 2
 
const PRG_COLS
 

Protected Member Functions

 getUserDataColumns (int $prg_id)
 
 getPrgColumns ()
 
 includeLearningProgress (int $usr_id)
 
 toRow (ilPRGAssignment $ass, int $node_id, array $cert_ass_ids)
 
 getUserDateFormat ()
 
 completionByToCollection (ilPRGProgress $progress)
 
 postOrder (array $list, \ILIAS\Data\Order $order)
 

Protected Attributes

array $user_ids_viewer_may_read_learning_progress_of
 
 $skip_perm_check_on_user = false
 

Private Attributes

const ORDER_MAPPING
 

Detailed Description

ilStudyProgrammeUserTable provides a flattened list of progresses at a programme-node.

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

Constructor & Destructor Documentation

◆ __construct()

ilStudyProgrammeUserTable::__construct ( protected ilDBInterface  $db,
protected ilExportFieldsInfo  $export_fields_info,
protected ilPRGAssignmentDBRepository  $assignment_repo,
protected ilLanguage  $lng,
protected ilPRGPermissionsHelper  $permissions,
protected ilCertificateDownloadValidator  $cert_validator 
)

Definition at line 69 of file class.ilStudyProgrammeUserTable.php.

76 {
77 $this->lng->loadLanguageModule("prg");
78 $this->user_ids_viewer_may_read_learning_progress_of = $this->permissions->getUserIdsSusceptibleTo(
80 );
81 }

References ILIAS\Repository\lng(), and ilOrgUnitOperation\OP_READ_LEARNING_PROGRESS.

+ Here is the call graph for this function:

Member Function Documentation

◆ activeToRepresent()

ilStudyProgrammeUserTable::activeToRepresent ( bool  $value)

Definition at line 300 of file class.ilStudyProgrammeUserTable.php.

300 : string
301 {
302 return $value ? $this->lng->txt('active') : $this->lng->txt('inactive');
303 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ assignmentSourceToRepresent()

ilStudyProgrammeUserTable::assignmentSourceToRepresent ( bool  $manually,
int  $assignment_src 
)

Definition at line 305 of file class.ilStudyProgrammeUserTable.php.

305 : string
306 {
309 if ($manually || ! array_key_exists($assignment_src, $srcs)) {
310 return $this::lookupTitle($assignment_src);
311 }
312 return implode(' ', [
313 $this->lng->txt('prg_autoassignment'),
314 $this->lng->txt($srcs[$assignment_src])
315 ]);
316 }

References ilPRGAssignment\AUTO_ASSIGNED_BY_RESTART, ILIAS\Repository\lng(), and ilStudyProgrammeAutoMembershipSource\SOURCE_MAPPING.

+ Here is the call graph for this function:

◆ boolToRepresent()

ilStudyProgrammeUserTable::boolToRepresent ( bool  $value)

Definition at line 287 of file class.ilStudyProgrammeUserTable.php.

287 : string
288 {
289 return ($value) ? $this->lng->txt("yes") : $this->lng->txt("no");
290 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ completionByToCollection()

ilStudyProgrammeUserTable::completionByToCollection ( ilPRGProgress  $progress)
protected

Definition at line 333 of file class.ilStudyProgrammeUserTable.php.

333 : array
334 {
335 $completion_by = $progress->getCompletionBy();
336 if ($completion_by !== ilPRGProgress::COMPLETED_BY_SUBNODES) {
337 return [$completion_by];
338 }
339 $successful_subnodes = array_filter(
340 $progress->getSubnodes(),
341 static fn(ilPRGProgress $pgs): bool => $pgs->isSuccessful()
342 );
343 return array_map(
344 static fn(ilPRGProgress $pgs): int => $pgs->getNodeId(),
345 $successful_subnodes
346 );
347 }
A Progress is the status of a user on a single node of an assignment; it is unique by assignment_id:u...

References ilPRGProgress\COMPLETED_BY_SUBNODES, ilPRGProgress\getCompletionBy(), ilPRGProgress\getNodeId(), ILIAS\StudyProgramme\Assignment\Node\getSubnodes(), and ilPRGProgress\isSuccessful().

+ Here is the call graph for this function:

◆ completionByToRepresent()

ilStudyProgrammeUserTable::completionByToRepresent ( ilPRGProgress  $progress)

Definition at line 318 of file class.ilStudyProgrammeUserTable.php.

318 : string
319 {
320 $completion_by = $progress->getCompletionBy();
321 if ($completion_by !== ilPRGProgress::COMPLETED_BY_SUBNODES) {
322 return $this::lookupTitle($completion_by);
323 }
324
325 $out = array_map(
326 fn(int $node_obj_id): string => self::lookupTitle($node_obj_id),
327 $this->completionByToCollection($progress)
328 );
329
330 return implode(', ', $out);
331 }
$out
Definition: buildRTE.php:24
completionByToCollection(ilPRGProgress $progress)

References $out, ilPRGProgress\COMPLETED_BY_SUBNODES, and ilPRGProgress\getCompletionBy().

+ Here is the call graph for this function:

◆ countFetchData()

ilStudyProgrammeUserTable::countFetchData ( int  $prg_id,
?array  $valid_user_ids,
ilPRGAssignmentFilter  $custom_filters 
)

Definition at line 129 of file class.ilStudyProgrammeUserTable.php.

129 : int
130 {
131 return $this->assignment_repo->countAllForNodeIsContained($prg_id, $valid_user_ids, $custom_filters);
132 }

◆ disablePermissionCheck()

ilStudyProgrammeUserTable::disablePermissionCheck (   $flag = false)

Definition at line 180 of file class.ilStudyProgrammeUserTable.php.

180 : void
181 {
182 $this->skip_perm_check_on_user = $flag;
183 }

◆ fetchData()

ilStudyProgrammeUserTable::fetchData ( int  $prg_id,
?array  $valid_user_ids,
Order  $order,
?ilPRGAssignmentFilter  $custom_filters = null,
?int  $limit = null,
?int  $offset = null 
)
Returns
ilStudyProgrammeUserTableRow[]
Exceptions
ilException

Definition at line 138 of file class.ilStudyProgrammeUserTable.php.

145 : array {
146 $data = $this->assignment_repo->getAllForNodeIsContained(
147 $prg_id,
148 $valid_user_ids,
149 $custom_filters
150 );
151
152 $root_assignemnts = array_filter(
153 $data,
154 fn($ass) => $ass->getRootId() === $prg_id
155 );
156 $root_usr_ids = array_map(fn($r) => $r->getUserid(), $root_assignemnts);
157 $cert_ass_ids = $this->assignment_repo->getCertificateRelevantAssignmentIds(
158 $prg_id,
159 ...$root_usr_ids
160 );
161
162 $rows = array_map(fn($ass) => $this->toRow($ass, $prg_id, $cert_ass_ids), $data);
163 $rows = $this->postOrder($rows, $order);
164 if ($limit) {
165 $offset = $offset ?? 0;
166 $rows = array_slice($rows, $offset, $limit);
167 }
168 return $rows;
169 }
postOrder(array $list, \ILIAS\Data\Order $order)
toRow(ilPRGAssignment $ass, int $node_id, array $cert_ass_ids)

◆ fetchSingleUserRootAssignments()

ilStudyProgrammeUserTable::fetchSingleUserRootAssignments ( int  $usr_id)

Definition at line 171 of file class.ilStudyProgrammeUserTable.php.

171 : array
172 {
173 $data = $this->assignment_repo->getForUser($usr_id);
174 $row = array_map(fn($ass) => $this->toRow($ass, $ass->getRootId(), []), $data);
175 return $row;
176 }

References $data.

◆ getColumns()

ilStudyProgrammeUserTable::getColumns ( int  $prg_id,
bool  $add_active_column = false,
bool  $add_cert_column = false 
)

Definition at line 104 of file class.ilStudyProgrammeUserTable.php.

108 : array {
109 $prg_cols = $this->getPrgColumns();
110 $prg_cols_pre = array_slice($prg_cols, 0, 2);
111 $prg_cols_post = array_slice($prg_cols, 2);
112
113 $columns = array_merge(
114 $prg_cols_pre,
115 $this->getUserDataColumns($prg_id),
116 $prg_cols_post
117 );
118
119 if ($add_active_column) {
120 $columns["active"] = ["active", $this->lng->txt("active"), true, true, true];
121 }
122 if ($add_cert_column) {
123 $columns["cert_relevance"] = ["cert_relevance", $this->lng->txt("cert_relevance"), true, true, true];
124 }
125 return $columns;
126 }

◆ getPrgColumns()

ilStudyProgrammeUserTable::getPrgColumns ( )
protected

Definition at line 93 of file class.ilStudyProgrammeUserTable.php.

93 : array
94 {
95 $cols = [];
96 foreach (self::PRG_COLS as $k) {
97 $k[1] = $this->lng->txt($k[1]);
98 $cols[$k[0]] = $k;
99 }
100
101 return $cols;
102 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ getUserDataColumns()

ilStudyProgrammeUserTable::getUserDataColumns ( int  $prg_id)
protected

Definition at line 83 of file class.ilStudyProgrammeUserTable.php.

83 : array
84 {
85 $cols = [];
86 $user_data_cols = $this->export_fields_info->getSelectableFieldsInfo($prg_id);
87 foreach ($user_data_cols as $k => $column_definition) {
88 $cols[$k] = [$k, $column_definition['txt'], true, true, true];
89 }
90 return $cols;
91 }

◆ getUserDateFormat()

ilStudyProgrammeUserTable::getUserDateFormat ( )
protected

Definition at line 259 of file class.ilStudyProgrammeUserTable.php.

259 : string
260 {
261 return ilCalendarUtil::getUserDateFormat(0, true);
262 }
static getUserDateFormat(int $a_add_time=0, bool $a_for_parsing=false)
Parse current user setting into date/time format.

References ilCalendarUtil\getUserDateFormat().

+ Here is the call graph for this function:

◆ includeLearningProgress()

ilStudyProgrammeUserTable::includeLearningProgress ( int  $usr_id)
protected

Definition at line 185 of file class.ilStudyProgrammeUserTable.php.

185 : bool
186 {
187 return $this->skip_perm_check_on_user
188 || in_array($usr_id, $this->user_ids_viewer_may_read_learning_progress_of);
189 }

◆ lookupTitle()

static ilStudyProgrammeUserTable::lookupTitle ( int  $obj_id)
static

Definition at line 349 of file class.ilStudyProgrammeUserTable.php.

349 : string
350 {
351 $type = ilObject::_lookupType($obj_id);
352 switch ($type) {
353 case 'usr':
354 return ilObject::_lookupTitle($obj_id);
355 case 'prg':
356 $title = ilObject::_lookupTitle($obj_id);
358 return sprintf('(%s)', $title);
359 }
360 return $title;
361 case 'crs':
362 $title = ilObject::_lookupTitle($obj_id);
363 $refs = ilObject::_getAllReferences($obj_id);
364 $target_ref_id = array_shift($refs) ?? null;
365 if ($target_ref_id === null || ilObject::_isInTrash($target_ref_id)) {
366 return sprintf('(%s)', $title);
367 }
368 return $title;
369 }
370
371 if ($del = ilObjectDataDeletionLog::get($obj_id)) {
372 return sprintf('(%s)', $del['title']);
373 }
374 return 'object id ' . $obj_id;
375 }
static getRefIdFor(int $obj_id)
static _lookupType(int $id, bool $reference=false)
static _getAllReferences(int $id)
get all reference ids for object ID
static _isInTrash(int $ref_id)
static _lookupTitle(int $obj_id)

References ilObject\_getAllReferences(), ilObject\_isInTrash(), ilObject\_lookupTitle(), ilObject\_lookupType(), ilObjectDataDeletionLog\get(), and ilObjStudyProgramme\getRefIdFor().

Referenced by ilStudyProgrammeIndividualPlanTableGUI\fetchData(), and ilStudyProgrammeMembersTableGUI\fillRow().

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

◆ postOrder()

ilStudyProgrammeUserTable::postOrder ( array  $list,
\ILIAS\Data\Order  $order 
)
protected

Definition at line 377 of file class.ilStudyProgrammeUserTable.php.

377 : array
378 {
379 [$aspect, $direction] = $order->join('', function ($i, $k, $v) {
380 return [$k, $v];
381 });
382
383 if (array_key_exists($aspect, self::ORDER_MAPPING)) {
384 $aspect = self::ORDER_MAPPING[$aspect];
385 }
386
387 $user_date_format = $this->getUserDateFormat();
388 usort($list, static function (ilStudyProgrammeUserTableRow $a, ilStudyProgrammeUserTableRow $b) use ($aspect, $user_date_format): int {
389 $a = $a->toArray();
390 $b = $b->toArray();
391
392 if (is_numeric($a[$aspect])) {
393 return $a[$aspect] <=> $b[$aspect];
394 }
395 if (is_bool($a[$aspect])) {
396 return (int) $a[$aspect] <=> (int) $b[$aspect];
397 }
398
399 if (in_array($aspect, [
400 'completion_date',
401 'deadline',
402 'assign_date',
403 'expiry_date',
404 ])) {
405 return \DateTimeImmutable::createFromFormat($user_date_format, $a[$aspect])
406 <=> \DateTimeImmutable::createFromFormat($user_date_format, $b[$aspect]);
407 }
408 return strcmp($a[$aspect], $b[$aspect]);
409 });
410
411 if ($direction === $order::DESC) {
412 $list = array_reverse($list);
413 }
414 return $list;
415 }
ilStudyProgrammeUserTable provides a flattened list of progresses at a programme-node.
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples

References Vendor\Package\$a, and Vendor\Package\$b.

◆ statusToRepresent()

ilStudyProgrammeUserTable::statusToRepresent (   $a_status)
Exceptions
ilException

Definition at line 267 of file class.ilStudyProgrammeUserTable.php.

267 : string
268 {
269 if ($a_status == ilPRGProgress::STATUS_IN_PROGRESS) {
270 return $this->lng->txt("prg_status_in_progress");
271 }
272 if ($a_status == ilPRGProgress::STATUS_COMPLETED) {
273 return $this->lng->txt("prg_status_completed");
274 }
275 if ($a_status == ilPRGProgress::STATUS_ACCREDITED) {
276 return $this->lng->txt("prg_status_accredited");
277 }
278 if ($a_status == ilPRGProgress::STATUS_NOT_RELEVANT) {
279 return $this->lng->txt("prg_status_not_relevant");
280 }
281 if ($a_status == ilPRGProgress::STATUS_FAILED) {
282 return $this->lng->txt("prg_status_failed");
283 }
284 throw new ilException("Unknown status: '$a_status'");
285 }
Base class for ILIAS Exception handling.

References ILIAS\Repository\lng(), ilPRGProgress\STATUS_ACCREDITED, ilPRGProgress\STATUS_COMPLETED, ilPRGProgress\STATUS_FAILED, ilPRGProgress\STATUS_IN_PROGRESS, and ilPRGProgress\STATUS_NOT_RELEVANT.

+ Here is the call graph for this function:

◆ toRow()

ilStudyProgrammeUserTable::toRow ( ilPRGAssignment  $ass,
int  $node_id,
array  $cert_ass_ids 
)
protected

Definition at line 191 of file class.ilStudyProgrammeUserTable.php.

192 {
193 $pgs = $ass->getProgressForNode($node_id);
195 $ass->getId(),
196 $ass->getUserId(),
197 $node_id,
198 $ass->getRootId() === $node_id,
199 $ass->getUserInformation()
200 );
201
202 $show_lp = $this->includeLearningProgress($ass->getUserId());
203
204 $prg_node = ilObjStudyProgramme::getInstanceByObjId($node_id);
205 $points_reachable = (string) $pgs->getPossiblePointsOfRelevantChildren();
206 if ($prg_node->getLPMode() === ilStudyProgrammeSettings::MODE_LP_COMPLETED) {
207 $points_reachable = (string) $pgs->getAmountOfPoints();
208 }
209
210 $prg_lifecycle_status = $prg_node->getStatus();
211 $row = $row
212 ->withUserActiveRaw($ass->getUserInformation()->isActive())
213 ->withUserActive($this->activeToRepresent($ass->getUserInformation()->isActive()))
214 ->withFirstname($ass->getUserInformation()->getFirstname())
215 ->withLastname($ass->getUserInformation()->getLastname())
216 ->withLogin($ass->getUserInformation()->getLogin())
217 ->withOrgUs($ass->getUserInformation()->getOrguRepresentation())
218 ->withGender($this->lng->txt('gender_' . $ass->getUserInformation()->getGender()))
219 ->withStatus($show_lp ? $this->statusToRepresent($pgs->getStatus()) : '')
220 ->withStatusRaw($pgs->getStatus())
221 ->withCompletionDate(
222 $show_lp && $pgs->getCompletionDate() ? $pgs->getCompletionDate()->format($this->getUserDateFormat()) : ''
223 )
224 ->withCompletionBy(
225 $show_lp && $pgs->getCompletionBy() ? $this->completionByToRepresent($pgs) : ''
226 )
227 ->withCompletionByObjIds(
228 $show_lp && $pgs->getCompletionBy() ? $this->completionByToCollection($pgs) : null
229 )
230 ->withPointsReachable($points_reachable)
231 ->withPointsRequired((string) $pgs->getAmountOfPoints())
232 ->withPointsCurrent($show_lp ? (string) $pgs->getCurrentAmountOfPoints() : '')
233 ->withCustomPlan($this->boolToRepresent($pgs->hasIndividualModifications()))
234 ->withBelongsTo($this::lookupTitle($ass->getRootId()))
235 ->withAssignmentDate($pgs->getAssignmentDate()->format($this->getUserDateFormat()))
236 ->withAssignmentBy(
238 $ass->isManuallyAssigned(),
239 $ass->getLastChangeBy()
240 )
241 )
242 ->withDeadline(
243 $show_lp && $pgs->getDeadline() && !$pgs->isSuccessful() ? $pgs->getDeadline()->format($this->getUserDateFormat()) : ''
244 )
245 ->withExpiryDate(
246 $show_lp && $pgs->getValidityOfQualification() ? $pgs->getValidityOfQualification()->format($this->getUserDateFormat()) : ''
247 )
248 ->withValidity($show_lp ? $this->validToRepresent($pgs) : '')
249 ->withRestartDate($ass->getRestartDate() ? $ass->getRestartDate()->format($this->getUserDateFormat()) : '')
250 ->withNodeLifecycleStatus($prg_lifecycle_status)
251 ->withCertificateRelevance(
252 in_array($ass->getId(), $cert_ass_ids)
253 && $this->cert_validator->isCertificateDownloadable($ass->getUserId(), $ass->getRootId())
254 )
255 ;
256 return $row;
257 }
static getInstanceByObjId(int $obj_id)
getProgressForNode(int $node_id)
completionByToRepresent(ilPRGProgress $progress)
assignmentSourceToRepresent(bool $manually, int $assignment_src)

References ilPRGAssignment\getId(), ilObjStudyProgramme\getInstanceByObjId(), ilPRGAssignment\getLastChangeBy(), ilPRGAssignment\getProgressForNode(), ilPRGAssignment\getRestartDate(), ilPRGAssignment\getRootId(), ilPRGAssignment\getUserId(), ilPRGAssignment\getUserInformation(), ilPRGAssignment\isManuallyAssigned(), ILIAS\Repository\lng(), and ilStudyProgrammeSettings\MODE_LP_COMPLETED.

+ Here is the call graph for this function:

◆ validToRepresent()

ilStudyProgrammeUserTable::validToRepresent ( ilPRGProgress  $pgs)

Definition at line 292 of file class.ilStudyProgrammeUserTable.php.

292 : string
293 {
294 if (!$pgs->isSuccessful()) {
295 return '-';
296 }
297 return $pgs->isInvalidated() ? $this->lng->txt("prg_not_valid") : $this->lng->txt("prg_still_valid");
298 }

References ilPRGProgress\isInvalidated(), ilPRGProgress\isSuccessful(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

Field Documentation

◆ $skip_perm_check_on_user

ilStudyProgrammeUserTable::$skip_perm_check_on_user = false
protected

Definition at line 179 of file class.ilStudyProgrammeUserTable.php.

◆ $user_ids_viewer_may_read_learning_progress_of

array ilStudyProgrammeUserTable::$user_ids_viewer_may_read_learning_progress_of
protected

Definition at line 67 of file class.ilStudyProgrammeUserTable.php.

◆ OPTION_ALL

const ilStudyProgrammeUserTable::OPTION_ALL = -1

◆ OPTION_USR_ACTIVE

const ilStudyProgrammeUserTable::OPTION_USR_ACTIVE = 1

◆ OPTION_USR_INACTIVE

const ilStudyProgrammeUserTable::OPTION_USR_INACTIVE = 2

◆ ORDER_MAPPING

const ilStudyProgrammeUserTable::ORDER_MAPPING
private
Initial value:
= [
'prg_status' => 'status',
'prg_custom_plan' => 'custom_plan',
'prg_belongs_to' => 'belongs_to',
'prg_validity' => 'validity',
'prg_orgus' => 'orgus',
'prg_completion_by' => 'completion_by',
'prg_completion_date' => 'completion_date',
'prg_assign_date' => 'assign_date',
'prg_assigned_by' => 'assigned_by',
'prg_deadline' => 'deadline',
'prg_expiry_date' => 'expiry_date',
'pgs_id' => 'prgrs_id'
]

Definition at line 52 of file class.ilStudyProgrammeUserTable.php.

◆ PRG_COLS

const ilStudyProgrammeUserTable::PRG_COLS
Initial value:
= [
['name', 'name', false, true, true],
['login', 'login', false, true, true],
['prg_status', 'prg_status', false, true, true],
['prg_completion_date', 'prg_completion_date', true, true, true],
['prg_completion_by', 'prg_completion_by', true, true, true],
['points', 'prg_points_reachable', false, true, false],
['points_required', 'prg_points_required', false, false, true],
['points_current', 'prg_points_current', false, false, true],
['prg_custom_plan', 'prg_custom_plan', true, true, true],
['prg_belongs_to', 'prg_belongs_to', true, true, true],
['prg_assign_date', 'prg_assign_date', false, true, true],
['prg_assigned_by', 'prg_assigned_by', true, true, true],
['prg_deadline', 'prg_deadline', true, true, true],
['prg_expiry_date', 'prg_expiry_date', true, true, true],
['prg_validity', 'prg_validity', true, true, true]
]

Definition at line 34 of file class.ilStudyProgrammeUserTable.php.

◆ VALIDITY_OPTION_INVALID

const ilStudyProgrammeUserTable::VALIDITY_OPTION_INVALID = 3

◆ VALIDITY_OPTION_VALID

const ilStudyProgrammeUserTable::VALIDITY_OPTION_VALID = 1

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