19 declare(strict_types=1);
   240         throw new ilException(
'provider does not exist in list! (id=' . $providerId . 
')');
   250             $conditions[] = $DIC->database()->in(
'id', $this->
getIdsFilter(), 
false, 
'integer');
   258                     $conditions[] = 
"availability = " . $DIC->database()->quote(
   266             case self::SCOPE_GLOBAL:
   267                 $conditions[] = 
"global = " . $DIC->database()->quote(1, 
'integer');
   269             case self::SCOPE_USER:
   270                 $conditions[] = 
"global = " . $DIC->database()->quote(0, 
'integer');
   272             case self::SCOPE_BOTH:
   277             $conditions[] = 
"creator = " . $DIC->database()->quote($this->
getCreatorFilter(), 
'integer');
   281             $conditions[] = $DIC->database()->like(
'title', 
'text', 
"%{$this->getTitleFilter()}%");
   285             $conditions[] = 
"category = " . $DIC->database()->quote($this->
getCategoryFilter(), 
'text');
   289             $conditions[] = $DIC->database()->like(
'keywords', 
'text', 
"%{$this->getKeywordFilter()}%");
   293             $conditions[] = 
"has_outcome = " . $DIC->database()->quote((
int) $this->
getHasOutcomeFilter(), 
'integer');
   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)) {
   338         $res = $DIC->database()->query(
"   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'];
   372         return isset($this->usagesUntrashed[$providerId]) && $this->usagesUntrashed[
$providerId];
   377         return isset($this->usagesTrashed[$providerId]) && $this->usagesTrashed[
$providerId];
   387         $tableData = array();
   392             $tblRow[
'id'] = $provider->getId();
   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'];
   455         $pId = $DIC->database()->quote($providerId, 
'integer');
   456         $res = $DIC->database()->query(
   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
   475         return current($this->providers);
   480         next($this->providers);
   483     public function key(): mixed
   485         return key($this->providers);
   490         return key($this->providers) !== null;
   495         reset($this->providers);
   500         return implode(
'<br />', $keywords);
 
setKeywordFilter(string $keywordFilter)
 
getIsProviderKeyCustomizableFilter()
 
const AVAILABILITY_CREATE
 
if(empty($clientId)) $providerId
 
setIdsFilter(array $idsFilter)
 
setProviders(array $providers)
 
getKeywordsFormatted(array $keywords)
 
setScopeFilter(string $scopeFilter)
 
hasTrashedUsages(int $providerId)
 
hasUsages(int $providerId)
 
setCreatorFilter(int $creatorFilter)
 
add(ilLTIConsumeProvider $provider)
 
loadUsedBy(int $providerId)
 
setIsProviderKeyCustomizableFilter(?bool $isProviderKeyCustomizableFilter)
 
setHasOutcomeFilter(?bool $hasOutcomeFilter)
 
setCategoryFilter(string $categoryFilter)
 
const AVAILABILITY_EXISTING
 
string $availabilityFilter
 
setIsExternalFilter(?bool $isExternalFilter)
 
setAvailabilityFilter(string $availabilityFilter)
 
setTitleFilter(string $titleFilter)
 
bool $isProviderKeyCustomizableFilter
 
hasUntrashedUsages(int $providerId)