You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							260 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							260 lines
						
					
					
						
							11 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
/**
 | 
						|
 * Class CourseDescriptionController
 | 
						|
 * This file contains class used like controller,
 | 
						|
 * it should be included inside a dispatcher file (e.g: index.php)
 | 
						|
 * @author Christian Fasanando <christian1827@gmail.com>
 | 
						|
 * @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'], '<iframe') !== false
 | 
						|
                && $browser['name'] == 'Chrome'
 | 
						|
            ) {
 | 
						|
                header("X-XSS-Protection: 0");
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        // render to the view
 | 
						|
        $this->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;
 | 
						|
        if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
 | 
						|
            if (!empty($_POST['title']) && !empty($_POST['contentDescription'])) {
 | 
						|
                if (1) {
 | 
						|
                    $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);
 | 
						|
                        $course_description->update();
 | 
						|
                    } else {
 | 
						|
                        $course_description->insert();
 | 
						|
                    }
 | 
						|
 | 
						|
                    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'])) {
 | 
						|
                if (1) {
 | 
						|
                    $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);
 | 
						|
                        $course_description->insert(api_get_course_int_id());
 | 
						|
                    }
 | 
						|
 | 
						|
                    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);
 | 
						|
    }
 | 
						|
}
 | 
						|
 |