19declare(strict_types=1);
250 $conditions[] =
$DIC->database()->in(
'id', $this->
getIdsFilter(),
false,
'integer');
258 $conditions[] =
"availability = " .
$DIC->database()->quote(
267 $conditions[] =
"global = " .
$DIC->database()->quote(1,
'integer');
270 $conditions[] =
"global = " .
$DIC->database()->quote(0,
'integer');
281 $conditions[] =
$DIC->database()->like(
'title',
'text',
"%{$this->getTitleFilter()}%");
289 $conditions[] =
$DIC->database()->like(
'keywords',
'text',
"%{$this->getKeywordFilter()}%");
297 $conditions[] =
"external_provider = " .
$DIC->database()->quote((
int) $this->
getIsExternalFilter(),
'integer');
305 if (count($conditions) === 0) {
309 return implode(
"\n\t\t\tAND ", $conditions);
316 FROM lti_ext_provider
317 WHERE {$this->getWhereExpression()}
327 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
339 SELECT 'untrashed' query, oset.provider_id, COUNT(oset.obj_id) cnt
340 FROM lti_consumer_settings oset
341 INNER JOIN object_reference oref
342 ON oref.obj_id = oset.obj_id
343 AND oref.deleted IS NULL
344 GROUP BY oset.provider_id
348 SELECT 'trashed' query, oset.provider_id, COUNT(oset.obj_id) cnt
349 FROM lti_consumer_settings oset
350 INNER JOIN object_reference oref
351 ON oref.obj_id = oset.obj_id
352 AND oref.deleted IS NOT NULL
353 GROUP BY oset.provider_id
356 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
357 if ($row[
'query'] ==
'untrashed') {
358 $this->usagesUntrashed[ $row[
'provider_id'] ] = (
int) $row[
'cnt'];
359 } elseif ($row[
'query'] ==
'trashed') {
360 $this->usagesTrashed[ $row[
'provider_id'] ] = (
int) $row[
'cnt'];
387 $tableData = array();
393 $tblRow[
'title'] = htmlspecialchars(
$provider->getTitle());
394 $tblRow[
'description'] = htmlspecialchars(
$provider->getDescription());
395 $tblRow[
'category'] =
$provider->getCategory();
397 $tblRow[
'outcome'] =
$provider->getHasOutcome();
398 $tblRow[
'external'] =
$provider->isExternalProvider();
399 $tblRow[
'provider_key_customizable'] =
$provider->isProviderKeyCustomizable();
400 $tblRow[
'availability'] =
$provider->getAvailability();
401 $tblRow[
'creator'] =
$provider->getCreator();
402 $tblRow[
'accepted_by'] =
$provider->getAcceptedBy();
404 if (
$provider->getProviderIcon()->exists()) {
405 $tblRow[
'icon'] =
$provider->getProviderIcon()->getAbsoluteFilePath();
408 $tblRow[
'usages_untrashed'] = 0;
409 if (isset($this->usagesUntrashed[
$provider->getId()])) {
410 $tblRow[
'usages_untrashed'] = $this->usagesUntrashed[
$provider->getId()];
413 $tblRow[
'usages_trashed'] = 0;
414 if (isset($this->usagesTrashed[
$provider->getId()])) {
415 $tblRow[
'usages_trashed'] = $this->usagesTrashed[
$provider->getId()];
418 $tableData[] = $tblRow;
432 if (!(
bool) $tableRow[
'usages_trashed'] && !(
bool) $tableRow[
'usages_untrashed']) {
435 foreach ($this->
loadUsedBy($tableRow[
'id']) as $usedByObjId => $usedByData) {
436 $tableData[$i] = $tableRow;
437 $tableData[$i][
'usedByObjId'] = $usedByObjId;
438 $tableData[$i][
'usedByRefId'] = $usedByData[
'ref_id'];
439 $tableData[$i][
'usedByTitle'] = $usedByData[
'title'];
440 $tableData[$i][
'usedByIsTrashed'] = $usedByData[
'trashed'];
457 "SELECT oset.obj_id AS obj_id, oref.ref_id AS ref_id, oref.deleted as trashed, odata.title AS title" .
458 " FROM lti_consumer_settings oset, object_reference oref, object_data odata" .
459 " WHERE oset.provider_id = " . $pId .
460 " AND oref.obj_id = oset.obj_id" .
461 " AND odata.obj_id = oset.obj_id"
463 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
464 $retArr[$row[
'obj_id']] = [
465 'ref_id' => $row[
'ref_id'],
466 'title' => $row[
'title'],
467 'trashed' =>
null !== $row[
'trashed'] ?
true : false
478 return current($this->providers);
483 next($this->providers);
486 public function key(): mixed
488 return key($this->providers);
493 return key($this->providers) !==
null;
498 reset($this->providers);
503 return implode(
'<br />', $keywords);
Base class for ILIAS Exception handling.
bool $isProviderKeyCustomizableFilter
getKeywordsFormatted(array $keywords)
setAvailabilityFilter(string $availabilityFilter)
getIsProviderKeyCustomizableFilter()
setTitleFilter(string $titleFilter)
setKeywordFilter(string $keywordFilter)
loadUsedBy(int $providerId)
setIdsFilter(array $idsFilter)
string $availabilityFilter
setCategoryFilter(string $categoryFilter)
setProviders(array $providers)
setCreatorFilter(int $creatorFilter)
add(ilLTIConsumeProvider $provider)
hasUsages(int $providerId)
setScopeFilter(string $scopeFilter)
setIsExternalFilter(?bool $isExternalFilter)
setHasOutcomeFilter(?bool $hasOutcomeFilter)
hasTrashedUsages(int $providerId)
setIsProviderKeyCustomizableFilter(?bool $isProviderKeyCustomizableFilter)
hasUntrashedUsages(int $providerId)
const AVAILABILITY_CREATE
const AVAILABILITY_EXISTING
if(empty($clientId)) $providerId