summaryrefslogtreecommitdiff
path: root/public/app/controllers/cms/Course.php
diff options
context:
space:
mode:
authorGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-27 18:16:44 +0300
committerGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-27 18:16:44 +0300
commitb52e052bd3741c1ddf1bdaa43079ba5a9eafc8bd (patch)
treeebf54306edc20705544ea4d10cb12b34a66c05cc /public/app/controllers/cms/Course.php
parent187335950742b4c7ec011ede6e6d1ae86662cb1f (diff)
downloadclassroom-b52e052bd3741c1ddf1bdaa43079ba5a9eafc8bd.tar.gz
classroom-b52e052bd3741c1ddf1bdaa43079ba5a9eafc8bd.tar.bz2
classroom-b52e052bd3741c1ddf1bdaa43079ba5a9eafc8bd.zip
setting blueprint in action
Diffstat (limited to 'public/app/controllers/cms/Course.php')
-rw-r--r--public/app/controllers/cms/Course.php251
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