19declare(strict_types=1);
36 self::VIEW_SELECTED_ITEMS =>
'favourites',
37 self::VIEW_RECOMMENDED_CONTENT =>
'recommended_content',
38 self::VIEW_MY_MEMBERSHIPS =>
'memberships',
39 self::VIEW_LEARNING_SEQUENCES =>
'learning_sequences',
40 self::VIEW_MY_STUDYPROGRAMME =>
'study_programmes',
56 self::VIEW_SELECTED_ITEMS => [
62 self::VIEW_RECOMMENDED_CONTENT => [
67 self::VIEW_MY_MEMBERSHIPS => [
74 self::VIEW_LEARNING_SEQUENCES => [
78 self::VIEW_MY_STUDYPROGRAMME => [
85 self::VIEW_SELECTED_ITEMS => [
89 self::VIEW_RECOMMENDED_CONTENT => [
93 self::VIEW_MY_MEMBERSHIPS => [
97 self::VIEW_LEARNING_SEQUENCES => [
101 self::VIEW_MY_STUDYPROGRAMME => [
110 self::SORT_MANUALLY => [
'top',
'bot'],
122 int $view = self::VIEW_SELECTED_ITEMS,
131 $this->currentView = $view;
217 return self::$availableSortOptionsByView[$view] ?? [];
222 $sorting = $this->
settings->get(
'pd_def_sort_view_' . $view, self::SORT_BY_LOCATION);
242 return self::$availablePresentationsByView[$view];
247 if (!in_array($type, $active,
true)) {
253 $this->
settings->set(
'pd_def_sort_view_' . $view, $type);
254 $this->
settings->set(
'pd_active_sort_view_' . $view, serialize($active));
259 foreach ($options as $sorting => $option) {
262 'pd_sort_options_' . $view .
'_' . $sorting,
273 $val = $this->
settings->get(
'pd_active_sort_view_' . $view);
274 if ($val ===
'' || $val ===
null) {
277 $active_sortings = unserialize($val, [
'allowed_classes' =>
false]);
281 fn(
string $sorting):
bool => in_array(
294 if (!in_array($default, $active,
true)) {
295 $active[] = $default;
297 $this->
settings->set(
'pd_def_pres_view_' . $view, $default);
298 $this->
settings->set(
'pd_active_pres_view_' . $view, serialize($active));
303 return $this->
settings->get(
'pd_def_pres_view_' . $view,
'list');
311 $val = $this->
settings->get(
'pd_active_pres_view_' . $view,
'');
315 : unserialize($val, [
'allowed_classes' =>
false]);
323 $this->
settings->set(
'pd_view_positions', serialize($positions));
331 $val = $this->
settings->get(
'pd_view_positions',
'');
334 : unserialize($val, [
'allowed_classes' =>
false]);
373 throw new InvalidArgumentException(
'Unknown view: $view');
379 return (
int) $this->
settings->get(
'disable_my_memberships',
'0') === 0;
384 return (
int) $this->
settings->get(
'disable_my_offers',
'0') === 0;
389 $this->
settings->set(
'disable_my_memberships', $status ?
'0' :
'1');
394 $this->
settings->set(
'disable_my_offers', $status ?
'0' :
'1');
414 $this->
settings->set(
'personal_items_default_view', (
string) $view);
427 $mode = $this->actor->getPref(
'pd_view_pres_' . $this->currentView);
438 $mode = $this->actor->getPref(
'pd_order_items_' . $this->currentView);
452 return array_intersect(
463 if (!$this->
access->canChangePresentation($this->actor->getId())) {
466 return array_intersect(
475 $this->actor->writePref(
476 'pd_view_pres_' . $this->currentView,
485 $this->actor->writePref(
486 'pd_order_items_' . $this->currentView,
509 return in_array($view, $this->validViews,
true);
554 return (
int) $this->
settings->get(
'disable_learning_sequences',
'1') === 0;
559 return (
int) $this->
settings->get(
'disable_study_programmes',
'1') === 0;
564 $this->
settings->set(
'disable_learning_sequences', $status ?
'0' :
'1');
569 $this->
settings->set(
'disable_study_programmes', $status ?
'0' :
'1');
574 return self::$viewNames[$view];
584 return in_array($mode, self::$has_data,
true) ?
585 json_decode($this->actor->getPref($key) ?:
'[]',
true, 2) :
597 if (in_array($mode, self::$has_options,
true)) {
598 $this->actor->writePref(
'pd_order_data_' . $this->
getCurrentView() .
'_' . $mode, json_encode(
$data));
604 return self::$options_by_sortation[$sortation] ?? [];
612 return array_merge(...array_map(fn($sorting) => [
613 $sorting => json_decode(
614 $this->
settings->get(
'pd_sort_options_' . $view .
'_' . $sorting) ?:
'[]',
618 ], self::$has_options));
isStudyProgrammeViewActive()
storeActorPresentationMode(string $presentationMode)
enabledRecommendedContent()
enableView(int $view, bool $status)
storeViewSorting(int $view, string $type, array $active)
getActiveSortingsByView(int $view)
getDefaultPresentationByView(int $view)
enableLearningSequences(bool $status)
getTilePresentationMode()
enableMemberships(bool $status)
storeDefaultView(int $view)
enabledLearningSequences()
static array $availableViews
getDefaultSortingByView(int $view)
getEffectiveSortingMode()
getAvailableOptionsBySortation(string $sortation)
string $currentSortOption
enableSelectedItems(bool $status)
getEffectivePresentationMode()
storeActorSortingData(array $data)
getSortingOptionsByView(int $view)
static array $availableSortOptionsByView
enableStudyProgrammes(bool $status)
getRecommendedContentView()
getActivePresentationsByView(int $view)
setViewPositions(array $positions)
isRecommendedContentViewActive()
isSelectedItemsViewActive()
string $currentPresentationOption
getListPresentationMode()
__construct(ilObjUser $actor, int $view=self::VIEW_SELECTED_ITEMS, ?Setting $settings=null, ?DashboardAccess $access=null)
getEffectiveSortingData()
static array $availablePresentationsByView
getSelectableSortingModes()
storeViewPresentation(int $view, string $default, array $active)
static array $options_by_sortation
getLearningSequenceView()
static array $has_options
getEffectiveSortingOptions()
storeActorSortingMode(string $sortingMode)
isMembershipsViewActive()
static array $availableSortOptions
storeViewSortingOptions(int $view, array $options)
getAvailableSortOptionsByView(int $view)
getAvailablePresentationsByView(int $view)
getSelectablePresentationModes()
static array $availablePresentations
isLearningSequenceViewActive()
const VIEW_RECOMMENDED_CONTENT
const VIEW_MY_STUDYPROGRAMME
const VIEW_SELECTED_ITEMS
const VIEW_MY_MEMBERSHIPS
const VIEW_LEARNING_SEQUENCES