diff options
Diffstat (limited to 'public/app/controllers/cms/Course.php')
| -rw-r--r-- | public/app/controllers/cms/Course.php | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/public/app/controllers/cms/Course.php b/public/app/controllers/cms/Course.php deleted file mode 100644 index ad8a0fb..0000000 --- a/public/app/controllers/cms/Course.php +++ /dev/null @@ -1,251 +0,0 @@ -<?php - -namespace app\controllers\cms; - -use Registry; -use Render; -use app\controllers\Auth; -use app\models\cms\Course_model; -use app\extends\Cache_service; - -class Course { - - - ## PERMITION - ## ------------------------------------------------------------------------- - - - /** is admin or permited - * - * shortcut method for checking access authorization - * - * returns true if user belogns to the admin group - * OR has the specified permition/privilege - * - * @param $privilege_id (int) - * - * NOTE: - * unlike the other authorization methods ... - * $privilege_id is NOT an array but a single privilege id - * - * @return true|false - */ - private static function is_admin_or_permited( $privilege_id ) - { - return ( - Auth::in_admin_group() - || Auth::hasPermition([ $privilege_id ]) - ); - } - - - - ## FILES - ## ------------------------------------------------------------------------- - - - /** serve file by file_path - * (request is valid only for admin users) - * - * @param $file_path (string): relative file path - * GET @param type (string) : media-type of file - */ - public static function serve_file($file_path) - { - $file = self::get_file_attributes($file_path); - - // if user is authorized - if (self::is_admin_or_permited($file['privilege_id'])) { - - $media_type = Registry::get('REQUEST')->GET['type']; // get media-type - $real_path = MEDIA_STORAGE_ROOT . $file_path; // construct real path - - if (!file_exists($real_path)) { - Render::view('error/404'); - - } else { - Render::file($real_path, $media_type); - } - - } else { - Render::view('error/404', [ - 'error_code' => 403, - 'moto' => 'Forbidden', - 'message' => '' - ]); - } - } - - - /** get_file_attributes - * - * returns attributes of a file - * (medias are proxied for speed optimization) - * - * @param $path (string) : file path - * @return $file attributes --or-- false - */ - private static function get_file_attributes($path) - { - $medias = Cache_service::files_attributes(); - - foreach($medias as $key => $medi) { - - if ($medi['path'] == $path) { - - return $medi; - } - } - - return false; - } - - - - ## COURSES - ## ------------------------------------------------------------------------- - - - /** course - * prepare and render the course view - * - * @param $id : course id - */ - public static function course($id) - { - $id = intval($id); // course id - - // collect all data needed for course view - // --- -- -- - - - - $cache = Cache_service::courses_struct(); - $tree = $cache['tree']; - $breadcrumbs = $cache['breadcrumbs']; - $lessons = Course_model::lessons_of_course(intval($id)); - - // find parent_ids of current category (to open the menu tree) - // --- - $course_path = []; - foreach($breadcrumbs[$id]['parents'] as $key => $parent) { - $course_path[] = intval($parent['id']); - } - $course_path[] = $id; - - // then Render - // --- -- -- - - - - Render::view('templates/course', [ - 'id' => $id, - 'title' => $breadcrumbs[ $id ]['rec']['label'], - 'categories' => $tree, - 'breadcrumbs' => $breadcrumbs, - 'lessons' => $lessons, - 'course_path' => $course_path, - // needed by footer - 'entity' => Cache_service::pages_list() - ]); - } - - - - ## LESSONS - ## ------------------------------------------------------------------------- - - - - /** lesson - * - * check if user is authorized to view the content; - * if so, prepare and render the lesson view - * - * @param $id : lesson id - */ - public static function lesson($id) - { - $id = intval($id); // lesson id - - $lesson = Course_model::lesson($id); // get lesson - $course_id = $lesson['course_id']; // get course id - $pri_id = $lesson['privilege_id']; // privilege needed - - - if (self::is_admin_or_permited($pri_id)) { - - // collect all data needed for course view - // --- -- -- - - - - $cache = Cache_service::courses_struct(); - $tree = $cache['tree']; - $breadcrumbs = $cache['breadcrumbs']; - - // find parent_ids of current category (to open the menu tree) - // --- - $course_path = []; - foreach($breadcrumbs[$course_id]['parents'] as $key => $parent) { - $course_path[] = intval($parent['id']); - } - $course_path[] = intval($course_id); - - // NOTE: CRITICAL: - // do not pass Class::method directly to the eported variables - // $entity = Cache_service::pages_list(); - - // var_dump($entity); die(); - - // then Render - // --- -- -- - - - - Render::view('templates/lesson', [ - // main content - 'id' => $id, - 'course_id' => $course_id, - 'title' => $lesson['title'], - 'lesson' => $lesson, - // needed for side panel and breadcrunbs - 'categories' => $tree, - 'breadcrumbs' => $breadcrumbs, - 'course_path' => $course_path, - // needed by footer - 'entity' => Cache_service::pages_list() - ]); - - } else { // user is not authorized - Render::view('error/general', [ - 'title' => 'Δεν έχετε πρόσβαση', - 'message' => 'Θα πρέπει να αγοράσετε το πακέτο πρόσβασης ' - . $pri_id - .' για να δείτε το περιεχόμενο! - <br><br> - Αγόρασε τώρα το <button class="btn">πακέτο πρόσβασης '. $pri_id .'</button>' - ]); - } - - } - - - /** lesson - * - * check if user is authorized to view the content; - * if so, prepare and render the lesson view - * - * @param $id : lesson id - */ - public static function page($id) - { - $id = intval($id); // lesson id - - $pages = Cache_service::pages_list(); - $page = $pages[$id]; - - // then Render - // --- -- -- - - - - Render::view('templates/page', [ - // main content - 'id' => $id, - 'page' => $page, - // needed by footer - 'entity' => $pages - ]); - - } - - - - -}
\ No newline at end of file |
