settings) || empty($data->settings) || !json_decode($data->settings)) { throw new MissingParameterException('settings'); } $links = json_decode($data->settings); $pages = self::selectContentPages(array_keys((array)$links)); foreach ($links as $link) { if (!isset($pages[$link->id])) { unset($links->{$link->id}); } } return ['links' => $links]; } public static function selectContentPages($ids) { $allowedStatuses = [IContent::STATUS_PUBLIC]; if (\Auth::user()) { $allowedStatuses[] = IContent::STATUS_PROTECTED; } $pages = Content::where('language', LaravelLocalization::getCurrentLocale()) ->whereIn('id', $ids) ->whereIn('status', $allowedStatuses) ->get(); $used = []; foreach ($pages as $page) { $used[$page->id] = $page; } return $used; } }