266 $this->providers[] = $provider;
275 foreach ($this as $provider) {
276 if ($provider->getId() != $providerId) {
293 $conditions[] = $DIC->database()->in(
'id', $this->
getIdsFilter(),
false,
'integer');
301 $conditions[] =
"availability = " . $DIC->database()->quote(
309 case self::SCOPE_GLOBAL:
310 $conditions[] =
"global = " . $DIC->database()->quote(1,
'integer');
312 case self::SCOPE_USER:
313 $conditions[] =
"global = " . $DIC->database()->quote(0,
'integer');
315 case self::SCOPE_BOTH:
320 $conditions[] =
"creator = " . $DIC->database()->quote($this->
getCreatorFilter(),
'integer');
324 $conditions[] = $DIC->database()->like(
'title',
'text',
"%{$this->getTitleFilter()}%");
328 $conditions[] =
"category = " . $DIC->database()->quote($this->
getCategoryFilter(),
'text');
332 $conditions[] = $DIC->database()->like(
'keywords',
'text',
"%{$this->getKeywordFilter()}%");
336 $conditions[] =
"has_outcome = " . $DIC->database()->quote((
int) $this->
getHasOutcomeFilter(),
'integer');
340 $conditions[] =
"external_provider = " . $DIC->database()->quote((
int) $this->
getIsExternalFilter(),
'integer');
348 if (!count($conditions)) {
352 return implode(
"\n\t\t\tAND ", $conditions);
359 FROM lti_ext_provider 360 WHERE {$this->getWhereExpression()} 372 while ($row = $DIC->database()->fetchAssoc(
$res)) {
374 $provider->assignFromDbRow($row);
375 $this->
add($provider);
383 $res = $DIC->database()->query(
" 384 SELECT 'untrashed' query, oset.provider_id, COUNT(oset.obj_id) cnt 385 FROM lti_consumer_settings oset 386 INNER JOIN object_reference oref 387 ON oref.obj_id = oset.obj_id 388 AND oref.deleted IS NULL 389 GROUP BY oset.provider_id 393 SELECT 'trashed' query, oset.provider_id, COUNT(oset.obj_id) cnt 394 FROM lti_consumer_settings oset 395 INNER JOIN object_reference oref 396 ON oref.obj_id = oset.obj_id 397 AND oref.deleted IS NOT NULL 398 GROUP BY oset.provider_id 401 while ($row = $DIC->database()->fetchAssoc(
$res)) {
402 if ($row[
'query'] ==
'untrashed') {
403 $this->usagesUntrashed[ $row[
'provider_id'] ] = (int) $row[
'cnt'];
404 } elseif ($row[
'query'] ==
'trashed') {
405 $this->usagesTrashed[ $row[
'provider_id'] ] = (int) $row[
'cnt'];
425 return isset($this->usagesUntrashed[$providerId]) && $this->usagesUntrashed[$providerId];
434 return isset($this->usagesTrashed[$providerId]) && $this->usagesTrashed[$providerId];
444 $tableData = array();
446 foreach ($this as $provider) {
449 $tblRow[
'id'] = $provider->getId();
450 $tblRow[
'title'] = $provider->getTitle();
451 $tblRow[
'description'] = $provider->getDescription();
452 $tblRow[
'category'] = $provider->getCategory();
453 $tblRow[
'keywords'] = $provider->getKeywordsArray();
454 $tblRow[
'outcome'] = $provider->getHasOutcome();
455 $tblRow[
'external'] = $provider->isExternalProvider();
456 $tblRow[
'provider_key_customizable'] = $provider->isProviderKeyCustomizable();
457 $tblRow[
'availability'] = $provider->getAvailability();
458 $tblRow[
'creator'] = $provider->getCreator();
459 $tblRow[
'accepted_by'] = $provider->getAcceptedBy();
461 if ($provider->getProviderIcon()->exists()) {
462 $tblRow[
'icon'] = $provider->getProviderIcon()->getAbsoluteFilePath();
465 $tblRow[
'usages_untrashed'] = 0;
466 if (isset($this->usagesUntrashed[$provider->getId()])) {
467 $tblRow[
'usages_untrashed'] = $this->usagesUntrashed[$provider->getId()];
470 $tblRow[
'usages_trashed'] = 0;
471 if (isset($this->usagesTrashed[$provider->getId()])) {
472 $tblRow[
'usages_trashed'] = $this->usagesTrashed[$provider->getId()];
475 $tableData[] = $tblRow;
486 if (!(
bool) $tableRow[
'usages_trashed'] && !(
bool) $tableRow[
'usages_untrashed']) {
489 foreach ($this->
loadUsedBy($tableRow[
'id']) as $usedByObjId => $usedByData) {
490 $tableData[
$i] = $tableRow;
491 $tableData[
$i][
'usedByObjId'] = $usedByObjId;
492 $tableData[
$i][
'usedByRefId'] = $usedByData[
'ref_id'];
493 $tableData[
$i][
'usedByTitle'] = $usedByData[
'title'];
494 $tableData[
$i][
'usedByIsTrashed'] = $usedByData[
'trashed'];
506 $pId = $DIC->database()->quote($providerId,
'integer');
507 $res = $DIC->database()->query(
508 "SELECT oset.obj_id AS obj_id, oref.ref_id AS ref_id, oref.deleted as trashed, odata.title AS title" .
509 " FROM lti_consumer_settings oset, object_reference oref, object_data odata" .
510 " WHERE oset.provider_id = " . $pId .
511 " AND oref.obj_id = oset.obj_id" .
512 " AND odata.obj_id = oset.obj_id" 514 while ($row = $DIC->database()->fetchAssoc(
$res)) {
515 $retArr[$row[
'obj_id']] = [
516 'ref_id' => $row[
'ref_id'],
517 'title' => $row[
'title'],
518 'trashed' => null !== $row[
'trashed'] ? true : false
526 return current($this->providers);
530 return next($this->providers);
534 return key($this->providers);
538 return key($this->providers) !== null;
542 return reset($this->providers);
setKeywordFilter(string $keywordFilter)
getIsProviderKeyCustomizableFilter()
const AVAILABILITY_CREATE
setIdsFilter(array $idsFilter)
setProviders(array $providers)
setHasOutcomeFilter($hasOutcomeFilter)
foreach($_POST as $key=> $value) $res
hasTrashedUsages(int $providerId)
$isProviderKeyCustomizableFilter
hasUsages(int $providerId)
setScopeFilter($scopeFilter)
add(ilLTIConsumeProvider $provider)
setIsProviderKeyCustomizableFilter($isProviderKeyCustomizableFilter)
setCategoryFilter(string $categoryFilter)
const AVAILABILITY_EXISTING
setIsExternalFilter($isExternalFilter)
setAvailabilityFilter(string $availabilityFilter)
setTitleFilter(string $titleFilter)
setCreatorFilter($creatorFilter)
hasUntrashedUsages(int $providerId)