* @package chamilo.course_description */ class CourseDescriptionController { private $toolname; private $view; /** * Constructor */ public function __construct() { $this->toolname = 'course_description'; $this->view = new View($this->toolname); } /** * It's used for listing course description, * render to listing view * @param boolean true for listing history (optional) * @param array message for showing by action['edit','add','destroy'] (optional) */ public function listing($history = false, $messages = array()) { $course_description = new CourseDescription(); $session_id = api_get_session_id(); $course_description->set_session_id($session_id); $data = array(); $course_description_data = $course_description->get_description_data(); $data['descriptions'] = isset($course_description_data['descriptions']) ? $course_description_data['descriptions'] : ''; $data['default_description_titles'] = $course_description->get_default_description_title(); $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); $data['default_description_icon'] = $course_description->get_default_description_icon(); $data['messages'] = $messages; $browser = api_get_navigator(); if (!is_array($data['descriptions'])) { $data['descriptions'] = array($data['descriptions']); } foreach ($data['descriptions'] as $description) { if (!empty($description['content']) && strpos($description['content'], 'view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('listing'); $this->view->render(); } /** * It's used for editing a course description, * render to listing or edit view * @param int $id description item id * @param int $description_type description type id */ public function edit($id, $description_type) { $course_description = new CourseDescription(); $session_id = api_get_session_id(); $course_description->set_session_id($session_id); $data = array(); $data['id'] = $id; $affected_rows = null; $message = array(); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { if (!empty($_POST['title']) && !empty($_POST['contentDescription'])) { $check = Security::check_token(); if ($check) { $title = $_POST['title']; $content = $_POST['contentDescription']; $description_type = $_POST['description_type']; $id = $_POST['id']; if (empty($id)) { // If the ID was not provided, find the first matching description item given the item type $description = $course_description->get_data_by_description_type( $description_type ); if (count($description) > 0) { $id = $description['id']; } // If no corresponding description is found, edit a new one } $progress = isset($_POST['progress']) ? $_POST['progress'] : ''; $course_description->set_description_type($description_type); $course_description->set_title($title); $course_description->set_content($content); $course_description->set_progress($progress); $thematic_advance = $course_description->get_data_by_id($id); if (!empty($thematic_advance)) { $course_description->set_id($id); $affected_rows = $course_description->update(); } else { $affected_rows = $course_description->insert(); } Security::clear_token(); Display::addFlash( Display::return_message( get_lang('CourseDescriptionUpdated') ) ); } $this->listing(false); } else { $data['error'] = 1; $data['default_description_titles'] = $course_description->get_default_description_title(); $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); $data['default_description_icon'] = $course_description->get_default_description_icon(); $data['question'] = $course_description->get_default_question(); $data['information'] = $course_description->get_default_information(); $data['description_title'] = $_POST['title']; $data['description_content'] = $_POST['contentDescription']; $data['description_type'] = $_POST['description_type']; $data['progress'] = $_POST['progress']; $data['descriptions'] = $course_description->get_data_by_id($_POST['id']); // render to the view $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('edit'); $this->view->render(); } } else { $data['default_description_titles'] = $course_description->get_default_description_title(); $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); $data['default_description_icon'] = $course_description->get_default_description_icon(); $data['question'] = $course_description->get_default_question(); $data['information'] = $course_description->get_default_information(); $data['description_type'] = $description_type; if (empty($id)) { // If the ID was not provided, find the first matching description item given the item type $description = $course_description->get_data_by_description_type($description_type); if (count($description) > 0) { $id = $description['id']; } // If no corresponding description is found, edit a new one } if (!empty($id)) { if (isset($_GET['id_session'])) { $session_id = intval($_GET['id_session']); } $course_description_data = $course_description->get_data_by_id( $id, null, $session_id ); $data['description_type'] = $course_description_data['description_type']; $data['description_title'] = $course_description_data['description_title']; $data['description_content'] = $course_description_data['description_content']; $data['progress'] = $course_description_data['progress']; $data['descriptions'] = $course_description->get_data_by_description_type( $description_type, null, $session_id ); } // render to the view $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('edit'); $this->view->render(); } } /** * It's used for adding a course description, * render to listing or add view */ public function add() { $course_description = new CourseDescription(); $session_id = api_get_session_id(); $course_description->set_session_id($session_id); $data = array(); if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { if (!empty($_POST['title']) && !empty($_POST['contentDescription'])) { $check = Security::check_token(); if ($check) { $title = $_POST['title']; $content = $_POST['contentDescription']; $description_type = $_POST['description_type']; if ($description_type >= ADD_BLOCK) { $course_description->set_description_type($description_type); $course_description->set_title($title); $course_description->set_content($content); $affected_rows = $course_description->insert(api_get_course_int_id()); } Security::clear_token(); Display::addFlash( Display::return_message( get_lang('CourseDescriptionUpdated') ) ); } $this->listing(false); } else { $data['error'] = 1; $data['default_description_titles'] = $course_description->get_default_description_title(); $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); $data['default_description_icon'] = $course_description->get_default_description_icon(); $data['question'] = $course_description->get_default_question(); $data['information'] = $course_description->get_default_information(); $data['description_title'] = $_POST['title']; $data['description_content'] = $_POST['contentDescription']; $data['description_type'] = $_POST['description_type']; $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('add'); $this->view->render(); } } else { $data['default_description_titles'] = $course_description->get_default_description_title(); $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); $data['default_description_icon'] = $course_description->get_default_description_icon(); $data['question'] = $course_description->get_default_question(); $data['information'] = $course_description->get_default_information(); $data['description_type'] = $course_description->get_max_description_type(); // render to the view $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('add'); $this->view->render(); } } /** * It's used for destroy a course description, * render to listing view * @param int $id description type */ public function destroy($id) { $course_description = new CourseDescription(); $session_id = api_get_session_id(); $course_description->set_session_id($session_id); if (!empty($id)) { $course_description->set_id($id); $course_description->delete(); Display::addFlash( Display::return_message(get_lang('CourseDescriptionDeleted')) ); } $this->listing(false); } }