Chamilo is a learning management system focused on ease of use and accessibility
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.
 
 
 
 
 
 
chamilo-lms/main/course_description/ajax_controller.class.php

172 lines
3.8 KiB

<?php
namespace CourseDescription;
use \Display;
use \Template;
use \FormValidator;
use \Security;
use \Uri;
use Header;
/**
* Ajax controller. Dispatch request and perform required action.
*
* - delete category/link
*
* Usage:
*
* $controller = AjaxController::instance();
* $controller->run();
*
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Genevas
* @license /license.txt
*/
class AjaxController extends \Controller
{
const ACTION_DELETE = 'delete';
const ACTION_DELETE_BY_COURSE = 'delete_by_course';
/**
* Return the instance of the controller.
*
* @return \CourseDescription\AjaxController
*/
public static function instance()
{
static $result = null;
if (empty($result)) {
$result = new self();
}
return $result;
}
protected function __construct()
{
}
/**
* Prepare the environment. Set up breadcrumps and raise tracking event.
*/
protected function prolog()
{
event_access_tool(TOOL_COURSE_DESCRIPTION);
}
public function is_allowed_to_edit()
{
if (Request::is_student_view()) {
return false;
}
$session_id = Request::get_session_id();
if ($session_id != 0 && api_is_allowed_to_session_edit(false, true) == false) {
return false;
}
if (!api_is_allowed_to_edit(false, true, true)) {
return false;
}
return true;
}
public function authorize()
{
$authorize = api_protect_course_script();
if (!$authorize) {
return false;
}
$c_id = Request::get_c_id();
if (empty($c_id)) {
return false;
}
if (Request::is_student_view()) {
return false;
}
if (!$this->is_allowed_to_edit()) {
return false;
}
return true;
}
/**
*
*/
public function delete()
{
if (!$this->is_allowed_to_edit()) {
$this->forbidden();
return;
}
$description = (object) array();
$description->c_id = Request::get_c_id();
$description->id = Request::get_id();
$success = CourseDescription::repository()->remove($description);
$this->response($success);
}
/**
*
*/
public function delete_by_course()
{
if (!$this->is_allowed_to_edit()) {
$this->forbidden();
return;
}
$course = (object) array();
$course->c_id = Request::get_c_id();
$course->session_id = Request::get_session_id();
$success = CourseDescription::repository()->remove_by_course($course);
$this->response($success);
}
function forbidden()
{
$this->response(false, get_lang('YouAreNotAuthorized'));
}
public function unknown()
{
$this->response(false, get_lang('UnknownAction'));
}
/**
* Action exists but implementation is missing.
*/
public function missing()
{
$this->response(false, get_lang('NoImplementation'));
}
/**
* Display a standard json responce.
*
* @param bool $success
* @param string $message
* @param object $data
*/
public function response($success = false, $message = '', $data = null)
{
$message = trim($message);
$response = (object) array();
$response->success = $success;
if ($message) {
$response->message = Display::return_message($message, $success ? 'normal' : 'error');
} else {
$response->message = '';
}
$response->data = $data;
$this->render_json($response);
}
}