Adding special course agreement plugin see BT#7848

1.9.x
Julio Montoya 11 years ago
parent 0542b63625
commit f286f35837
  1. 12
      main/course_home/activity.php
  2. 52
      main/course_info/legal.php
  3. 29
      main/coursecopy/classes/CourseRestorer.class.php
  4. 34
      main/inc/lib/course.lib.php
  5. 2
      main/inc/lib/database.lib.php
  6. 15
      main/inc/lib/fileUpload.lib.php
  7. 42
      main/inc/lib/legal.lib.php
  8. 408
      plugin/courselegal/CourseLegalPlugin.php
  9. 6
      plugin/courselegal/config.php
  10. 9
      plugin/courselegal/install.php
  11. 4
      plugin/courselegal/lang/english.php
  12. 4
      plugin/courselegal/lang/spanish.php
  13. 5
      plugin/courselegal/plugin.php
  14. 51
      plugin/courselegal/start.php

@ -53,6 +53,15 @@ if (api_is_platform_admin()) {
}
}
// Course legal
$enabled = api_get_plugin_setting('courselegal', 'tool_enable');
$pluginExtra = null;
if ($enabled == 'true') {
require_once api_get_path(SYS_PLUGIN_PATH).'courselegal/config.php';
$plugin = CourseLegalPlugin::create();
$pluginExtra = $plugin->getTeacherLink();
}
// COURSE ADMIN ONLY VIEW
// Start of tools for CourseAdmins (teachers/tutors)
@ -66,6 +75,7 @@ if ($session_id == 0 && api_is_course_admin() && api_is_allowed_to_edit(null, tr
<div class="confirmation-message" id="id_confirmation_message" style="display:none"></div>
</div>';
$content .= $pluginExtra;
if (api_get_setting('show_session_data') == 'true' && $session_id > 0) {
$content .= '<div class="courseadminview">
@ -90,6 +100,7 @@ if ($session_id == 0 && api_is_course_admin() && api_is_allowed_to_edit(null, tr
$content .= return_block(get_lang('Administration'), $items , 'course-tools-administration');
} elseif (api_is_coach()) {
$content .= $pluginExtra;
if (api_get_setting('show_session_data') == 'true' && $session_id > 0) {
$content .= '<div class="row">
<span class="viewcaption">'.get_lang('SessionData').'</span>
@ -102,6 +113,7 @@ if ($session_id == 0 && api_is_course_admin() && api_is_allowed_to_edit(null, tr
$my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
$content .= CourseHome::show_tools_category($my_list);
$content .= '</div>';
} else {
$my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
if (count($my_list) > 0) {

@ -22,10 +22,48 @@ if (empty($course_code)) {
$course_info = CourseManager::get_course_information($course_code);
$course_legal = $course_info['legal'];
$enabled = api_get_plugin_setting('courselegal', 'tool_enable');
$pluginExtra = null;
$pluginLegal = false;
if ($enabled == 'true') {
$pluginLegal = true;
require_once api_get_path(SYS_PLUGIN_PATH).'courselegal/config.php';
$plugin = CourseLegalPlugin::create();
$data = $plugin->getData($course_info['real_id'], $session_id);
$userData = $plugin->getUserAcceptedLegal(
$user_id,
$course_info['real_id'],
$session_id
);
if (!empty($data)) {
$course_legal = $data['content'];
}
if (isset($_GET['web_agreement_link'])) {
$plugin->saveUserMailLegal(
$_GET['web_agreement_link'],
$user_id,
$course_info['real_id'],
$session_id
);
}
}
// Build the form
$form = new FormValidator('legal', 'GET', api_get_self().'?course_code='.$course_code.'&session_id='.$session_id);
$pluginMessage = null;
if ($pluginLegal && isset($userData)) {
if ($userData['web_agreement'] == 1 && empty($userData['mail_agreement'])) {
$pluginMessage = Display::return_message(get_lang('YouNeedToConfirmYourAgreementCheckYourEmail'));
}
}
$form->addElement('header', get_lang('CourseLegalAgreement'));
$form->addElement('label', null, $course_legal);
if ($pluginLegal && !empty($plugin)) {
$form->addElement('label', null, $plugin->getCurrentFile($course_info['real_id'], $session_id));
}
$form->addElement('hidden', 'course_code', $course_code);
$form->addElement('hidden', 'session_id', $session_id);
$form->addElement('checkbox', 'accept_legal', null, get_lang('AcceptLegal'));
@ -52,8 +90,13 @@ if (api_check_user_access_to_legal($course_info['visibility']) && Session::read(
$url = api_get_course_url($course_code, $session_id);
if (empty($session_id)) {
if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_code);
if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) ||
api_check_user_access_to_legal($course_info['visibility'])
) {
$user_accepted_legal = CourseManager::is_user_accepted_legal(
$user_id,
$course_code
);
if ($user_accepted_legal || $user_pass_open_course) {
//Redirect to course home
header('Location: '.$url);
@ -73,7 +116,7 @@ if (empty($session_id)) {
if (isset($user_session_status) || api_check_user_access_to_legal($course_info['visibility'])) {
$user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_code, $session_id);
if ($user_accepted_legal || $user_pass_open_course) {
//Redirect to course session home
// Redirect to course session home.
header('Location: '.$url);
exit;
}
@ -82,6 +125,7 @@ if (empty($session_id)) {
}
}
Display :: display_header($nameTools);
Display :: display_header();
echo $pluginMessage;
$form->display();
Display :: display_footer();

@ -1263,11 +1263,15 @@ class CourseRestorer
}
}
/**
* Restore Quiz
*/
public function restore_quizzes($session_id = 0, $respect_base_content = false)
{
/**
* Restore Quiz
* @param int $session_id
* @param bool $respect_base_content
*/
public function restore_quizzes(
$session_id = 0,
$respect_base_content = false
) {
if ($this->course->has_resources(RESOURCE_QUIZ)) {
$table_qui = Database :: get_course_table(TABLE_QUIZ_TEST);
$table_rel = Database :: get_course_table(TABLE_QUIZ_TEST_QUESTION);
@ -1309,7 +1313,9 @@ class CourseRestorer
);
global $_custom;
if (isset($_custom['exercises_clean_dates_when_restoring']) && $_custom['exercises_clean_dates_when_restoring']) {
if (isset($_custom['exercises_clean_dates_when_restoring']) &&
$_custom['exercises_clean_dates_when_restoring']
) {
$quiz->start_time = null;
$quiz->end_time = null;
}
@ -1418,7 +1424,10 @@ class CourseRestorer
if ($new_id) {
if (!empty($question->picture)) {
$question_temp = Question::read($new_id, $this->destination_course_info['real_id']);
$question_temp = Question::read(
$new_id,
$this->destination_course_info['real_id']
);
$documentPath = api_get_path(SYS_COURSE_PATH).$this->destination_course_info['path'].'/document';
// picture path
@ -1452,7 +1461,7 @@ class CourseRestorer
c_id = ".$this->destination_course_id." ,
id = '".$index."',
question_id = '".$new_id."',
answer = '".self::DBUTF8escapestring($answer['answer'])."',
answer = '".api_htmlentities(self::DBUTF8escapestring($answer['answer']))."',
correct = '".$answer['correct']."',
comment = '".self::DBUTF8escapestring($answer['comment'])."',
ponderation = '".$answer['ponderation']."',
@ -1550,8 +1559,7 @@ class CourseRestorer
} else {
$new_options = array();
if (isset($question->question_options)) {
foreach($question->question_options as $obj) {
foreach ($question->question_options as $obj) {
$item = array();
$item['question_id'] = $new_id;
$item['c_id'] = $this->destination_course_id;
@ -1561,6 +1569,7 @@ class CourseRestorer
$question_option_id = Database::insert($table_options, $item);
$new_options[$obj->obj->id] = $question_option_id;
}
foreach($correct_answers as $answer_id => $correct_answer) {
$params = array();
$params['correct'] = $new_options[$correct_answer];

@ -3993,17 +3993,27 @@ class CourseManager
*/
public static function is_user_accepted_legal($user_id, $course_code, $session_id = null)
{
$user_id = intval($user_id);
$user_id = intval($user_id);
$course_code = Database::escape_string($course_code);
$session_id = intval($session_id);
// Course legal
$enabled = api_get_plugin_setting('courselegal', 'tool_enable');
if ($enabled == 'true') {
require_once api_get_path(SYS_PLUGIN_PATH).'courselegal/config.php';
$plugin = CourseLegalPlugin::create();
return $plugin->isUserAcceptedLegal($user_id, $course_code, $session_id);
}
if (empty($session_id)) {
$table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "SELECT legal_agreement FROM $table
WHERE user_id = $user_id AND course_code ='$course_code' ";
WHERE user_id = $user_id AND course_code ='$course_code' ";
$result = Database::query($sql);
if (Database::num_rows($result) > 0 ) {
$result = Database::fetch_array($result);
if ($result['legal_agreement'] == 1 ) {
if ($result['legal_agreement'] == 1) {
return true;
}
}
@ -4011,11 +4021,11 @@ class CourseManager
} else {
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql = "SELECT legal_agreement FROM $table
WHERE id_user = $user_id AND course_code ='$course_code' AND id_session = $session_id";
WHERE id_user = $user_id AND course_code ='$course_code' AND id_session = $session_id";
$result = Database::query($sql);
if (Database::num_rows($result) > 0 ) {
$result = Database::fetch_array($result);
if ($result['legal_agreement'] == 1 ) {
if ($result['legal_agreement'] == 1) {
return true;
}
}
@ -4030,11 +4040,21 @@ class CourseManager
* @param string course code
* @param int session id
*/
function save_user_legal($user_id, $course_code, $session_id = null) {
public static function save_user_legal($user_id, $course_code, $session_id = null)
{
// Course plugin legal
$enabled = api_get_plugin_setting('courselegal', 'tool_enable');
if ($enabled == 'true') {
require_once api_get_path(SYS_PLUGIN_PATH).'courselegal/config.php';
$plugin = CourseLegalPlugin::create();
return $plugin->saveUserLegal($user_id, $course_code, $session_id);
}
$user_id = intval($user_id);
$user_id = intval($user_id);
$course_code = Database::escape_string($course_code);
$session_id = intval($session_id);
if (empty($session_id)) {
$table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql = "UPDATE $table SET legal_agreement = '1'

@ -1150,7 +1150,7 @@ class Database {
var_dump($sql);
}
return self::insert_id();
}
}
return false;
}

@ -185,7 +185,8 @@ function handle_uploaded_document(
$to_user_id = null,
$unzip = 0,
$what_if_file_exists = '',
$output = true
$output = true,
$onlyUploadFile = false
) {
if (!$user_id) {
die('Not a valid user.');
@ -263,9 +264,17 @@ function handle_uploaded_document(
$document_name = get_document_title($uploaded_file['name']);
// Size of the uploaded file (in bytes)
$file_size = $uploaded_file['size'];
$files_perm = api_get_permissions_for_new_files();
//$doc_path = '/'.$clean_name;
if ($onlyUploadFile) {
$errorResult = moveUploadedFile($uploaded_file, $store_path);
if ($errorResult) {
return $store_path;
} else {
return $errorResult;
}
}
$docId = DocumentManager::get_document_id($_course, $file_path, $current_session_id);
// What to do if the target file exists

@ -34,24 +34,26 @@ class LegalManager
if ($last['content'] != $content) {
$version = intval(LegalManager::get_last_condition_version($language));
$version++;
$sql = "INSERT INTO $legal_table
SET language_id = '".Database::escape_string($language)."',
content = '".$content."',
changes= '".$changes."',
type = '".$type."',
version = '".Database::escape_string($version)."',
date = '".$time."'";
$result = Database::query($sql);
$sql = "INSERT INTO $legal_table SET
language_id = '".Database::escape_string($language)."',
content = '".$content."',
changes= '".$changes."',
type = '".$type."',
version = '".Database::escape_string($version)."',
date = '".$time."'";
Database::query($sql);
return true;
} elseif($last['type'] != $type && $language==$last['language_id']) {
//update
$id = $last['legal_id'];
$sql = "UPDATE $legal_table
SET changes= '".$changes."',
type = '".$type."',
date = '".$time."'
$sql = "UPDATE $legal_table SET
changes= '".$changes."',
type = '".$type."',
date = '".$time."'
WHERE legal_id= $id ";
$result = Database::query($sql);
Database::query($sql);
return true;
} else {
return false;
@ -72,8 +74,7 @@ class LegalManager
* @param int $language language id
* @return array all the info of a Term and condition
*/
public static function get_last_condition_version ($language)
public static function get_last_condition_version($language)
{
$legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL);
$language= Database::escape_string($language);
@ -113,17 +114,21 @@ class LegalManager
* @param int $language language id
* @return boolean | int the version or false if does not exist
*/
public static function get_last_version ($language)
public static function get_last_version($language)
{
$legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL);
$language= Database::escape_string($language);
$sql = "SELECT version FROM $legal_conditions_table WHERE language_id = '".$language."' ORDER BY version DESC LIMIT 1 ";
$sql = "SELECT version FROM $legal_conditions_table
WHERE language_id = '".$language."'
ORDER BY version DESC LIMIT 1 ";
$result = Database::query($sql);
if (Database::num_rows($result)>0){
$version = Database::fetch_array($result);
$version = explode(':',$version[0]);
return $version[0];
} else {
return false;
}
}
@ -131,6 +136,7 @@ class LegalManager
/**
* Show the last condition
* @param array with type and content i.e array('type'=>'1', 'content'=>'hola');
*
* @return string html preview
*/
public static function show_last_condition($term_preview)
@ -247,7 +253,7 @@ class LegalManager
* @param int The language id
* @return int The current type of terms and conditions
*/
public static function get_type_of_terms_and_conditions ($legal_id,$language_id)
public static function get_type_of_terms_and_conditions($legal_id,$language_id)
{
$legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL);
$legal_id=Database::escape_string($legal_id);

@ -0,0 +1,408 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Class CourseLegalPlugin
*/
class CourseLegalPlugin extends Plugin
{
public $isCoursePlugin = true;
// When creating a new course this settings are added to the course
public $course_settings = array(
array(
'name' => 'courselegal',
'type' => 'text'
)
);
/**
* @return CourseLegalPlugin
*/
static function create()
{
static $result = null;
return $result ? $result : $result = new self();
}
/**
*
*/
protected function __construct()
{
parent::__construct(
'0.1',
'Julio Montoya',
array(
'tool_enable' => 'boolean'
)
);
}
/**
* @return string
*/
public function getTeacherLink()
{
$link = null;
if (api_is_allowed_to_edit()) {
$url = api_get_path(WEB_PLUGIN_PATH).'courselegal/start.php?'.api_get_cidreq();
$link = Display::url(
get_lang('Legal'),
$url,
array('class' => 'btn')
);
}
return $link;
}
/**
* @param int $userId
* @param int $courseId
* @param int $sessionId
*
* @return array
*/
public function getUserAcceptedLegal($userId, $courseId, $sessionId)
{
$userId = intval($userId);
$courseId = intval($courseId);
$sessionId = intval($sessionId);
$table = Database::get_main_table('session_rel_course_rel_user_legal');
$sql = "SELECT *
FROM $table
WHERE user_id = $userId AND c_id = $courseId AND session_id = $sessionId";
$result = Database::query($sql);
$data = array();
if (Database::num_rows($result) > 0 ) {
$data = Database::fetch_array($result, 'ASSOC');
}
return $data;
}
/**
* @param int $userId
* @param string $courseCode
* @param int $sessionId
*
* @return bool
*/
public function isUserAcceptedLegal($userId, $courseCode, $sessionId)
{
$courseInfo = api_get_course_info($courseCode);
$courseId = $courseInfo['real_id'];
$result = $this->getUserAcceptedLegal($userId, $courseId, $sessionId);
if (!empty($result)) {
if ($result['mail_agreement'] == 1 &&
$result['web_agreement'] == 1
) {
return true;
}
}
return false;
}
/**
* @param int $userId
* @param int $courseCode
* @param int $sessionId
*
* @return bool
*/
public function saveUserLegal($userId, $courseCode, $sessionId)
{
$courseInfo = api_get_course_info($courseCode);
$courseId = $courseInfo['real_id'];
$data = $this->getUserAcceptedLegal($userId, $courseId, $sessionId);
$id = false;
if (empty($data)) {
$table = Database::get_main_table(
'session_rel_course_rel_user_legal'
);
$uniqueId = api_get_unique_id();
$values = array(
'user_id' => $userId,
'c_id' => $courseId,
'session_id' => $sessionId,
'web_agreement' => 1,
'web_agreement_date' => api_get_utc_datetime(),
'mail_agreement_link' => $uniqueId
);
$id = Database::insert($table, $values);
$url = api_get_path(WEB_CODE_PATH).'course_info/legal.php?web_agreement_link='.$uniqueId.'&course_code='.Security::remove_XSS($courseCode).'&session_id='.$sessionId;
$courseUrl = Display::url($url, $url);
$subject = get_lang("MailAgreement");
$message = sprintf(get_lang("MailAgreementWasSentWithClickX"), $courseUrl);
MessageManager::send_message_simple($userId, $subject, $message);
}
return $id;
}
/**
* @param string $link
* @param int $userId
* @param int $courseId
* @param int $sessionId
*
* @return bool
*/
public function saveUserMailLegal($link, $userId, $courseId, $sessionId)
{
$data = $this->getUserAcceptedLegal($userId, $courseId, $sessionId);
if (empty($data)) {
return null;
}
if ($data['mail_agreement_link'] == $link) {
$table = Database::get_main_table('session_rel_course_rel_user_legal');
$id = $data['id'];
$values = array(
'mail_agreement' => 1,
'mail_agreement_date' => api_get_utc_datetime()
);
Database::update($table, $values, array('id = ?' => array($id)));
}
}
/**
* @param int $courseId
* @param int $sessionId
*/
public function warnUsersByEmail($courseId, $sessionId)
{
$courseInfo = api_get_course_info_by_id($courseId);
$courseCode = $courseInfo['code'];
if (empty($sessionId)) {
$students = CourseManager::get_student_list_from_course_code($courseCode, false);
} else {
$students = CourseManager::get_student_list_from_course_code($courseCode, true, $sessionId);
}
$url = api_get_course_url($courseCode, $sessionId);
$url = Display::url($url, $url);
$subject = get_lang("AgreementUpdated");
$message = sprintf(get_lang("AgreementWasUpdatedClickHere"), $url);
if (!empty($students)) {
foreach ($students as $student) {
$userId = $student['user_id'];
MessageManager::send_message_simple($userId, $subject, $message);
}
}
}
/**
* @param int $courseId
* @param int $sessionId
*/
public function removePreviousAgreements($courseId, $sessionId)
{
$table = Database::get_main_table('session_rel_course_rel_user_legal');
$sessionId = intval($sessionId);
$courseId = intval($courseId);
$sql = "DELETE FROM $table
WHERE c_id = '$courseId' AND session_id = $sessionId ";
Database::query($sql);
}
/**
* @param array $values
* @param array $file $_FILES['uploaded_file']
*/
public function save($values, $file = array(), $deleteFile = false)
{
$table = Database::get_main_table('session_rel_course_legal');
$courseId = $values['c_id'];
$sessionId = $values['session_id'];
$conditions = array(
'c_id' => $courseId,
'session_id' => $sessionId,
);
$legalData = $this->getData($courseId, $sessionId);
$conditions['content'] = $values['content'];
$course = api_get_course_info();
$coursePath = api_get_path(SYS_COURSE_PATH).$course['directory'].'/courselegal';
if (!is_dir($coursePath)) {
mkdir($coursePath, api_get_permissions_for_new_directories());
}
require_once api_get_path(LIBRARY_PATH) . 'fileUpload.lib.php';
$uploadOk = process_uploaded_file($file, false);
$fileName = null;
if ($uploadOk) {
$uploadResult = handle_uploaded_document(
$course,
$file,
$coursePath,
'/',
api_get_user_id(),
api_get_group_id(),
null,
false,
false,
false,
true
);
if ($uploadResult) {
$fileName = basename($uploadResult);
// Delete old one if exists.
if ($legalData) {
if (!empty($legalData['filename'])) {
$fileToDelete = $coursePath.'/'.$legalData['filename'];
if (file_exists($fileToDelete)) {
unlink($fileToDelete);
}
}
}
}
}
$conditions['filename'] = $fileName;
if (empty($legalData)) {
$id = Database::insert($table, $conditions);
} else {
$id = $legalData['id'];
Database::update(
$table,
array(
'content' => $values['content'],
'filename' => $fileName
),
array('id = ? ' => $id)
);
}
if ($deleteFile) {
Database::update(
$table,
array('filename' => ''),
array('id = ? ' => $id)
);
if (!empty($legalData['filename'])) {
$fileToDelete = $coursePath . '/' . $legalData['filename'];
if (file_exists($fileToDelete)) {
unlink($fileToDelete);
}
}
}
if (isset($values['remove_previous_agreements']) && !empty($values['remove_previous_agreements'])) {
$this->removePreviousAgreements($courseId, $sessionId);
}
if (isset($values['warn_users_by_email']) && !empty($values['warn_users_by_email'])) {
$this->warnUsersByEmail($courseId, $sessionId);
}
}
/**
* @param int $courseId
* @param int $sessionId
* @return array|mixed
*/
public function getData($courseId, $sessionId)
{
$table = Database::get_main_table('session_rel_course_legal');
$conditions = array(
'c_id = ? AND session_id = ? ' => array(
$courseId,
$sessionId
)
);
$result = Database::select('*', $table, array('where' => $conditions));
$legalData = isset($result) && !empty($result) ? current($result) : array();
return $legalData;
}
/**
* @param int $courseId
* @param int $sessionId
*
* @return string
*/
public function getCurrentFile($courseId, $sessionId)
{
$data = $this->getData($courseId, $sessionId);
if (isset($data['filename']) && !empty($data['filename'])) {
$course = api_get_course_info_by_id($courseId);
$coursePath = api_get_path(SYS_COURSE_PATH).$course['directory'].'/courselegal';
$file = $coursePath.'/'.$data['filename'];
if (file_exists($file)) {
return Display::url(
$data['filename'],
api_get_path(WEB_COURSE_PATH).$course['directory'].'/courselegal/'.$data['filename']
);
}
}
}
public function install()
{
$table = Database::get_main_table('session_rel_course_legal');
$sql = "CREATE TABLE IF NOT EXISTS $table (
id int PRIMARY KEY AUTO_INCREMENT,
c_id int,
session_id int,
content text,
filename varchar(255)
)";
Database::query($sql);
$table = Database::get_main_table('session_rel_course_rel_user_legal');
$sql = "CREATE TABLE IF NOT EXISTS $table (
id int PRIMARY KEY AUTO_INCREMENT,
user_id int,
c_id int,
session_id int,
web_agreement varchar(255),
web_agreement_date datetime,
mail_agreement varchar(255),
mail_agreement_date datetime,
mail_agreement_link varchar(255)
)";
Database::query($sql);
// Installing course settings
$this->install_course_fields_in_all_courses(false);
}
public function uninstall()
{
$table = Database::get_main_table('session_rel_course_legal');
$sql = "DROP TABLE $table ";
Database::query($sql);
$table = Database::get_main_table('session_rel_course_rel_user_legal');
$sql = "DROP TABLE $table ";
Database::query($sql);
// Deleting course settings
$this->uninstall_course_fields_in_all_courses($this->course_settings);
}
}

@ -0,0 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
require_once __DIR__ . '/../../main/inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'plugin.class.php';
require_once __DIR__.'/CourseLegalPlugin.php';

@ -0,0 +1,9 @@
<?php
/* For license terms, see /license.txt */
require_once dirname(__FILE__) . '/config.php';
if (!api_is_platform_admin()) {
die ('You must have admin permissions to install plugins');
}
CourseLegalPlugin::create()->install();

@ -0,0 +1,4 @@
<?php
$strings['plugin_title'] = "Course agreements";
$strings['plugin_comment'] = "Course agreements";

@ -0,0 +1,4 @@
<?php
$strings['plugin_title'] = "Course agreements";
$strings['plugin_comment'] = "Course agreements";

@ -0,0 +1,5 @@
<?php
require_once dirname(__FILE__) . '/config.php';
$plugin_info = CourseLegalPlugin::create()->get_info();

@ -0,0 +1,51 @@
<?php
/* For license terms, see /license.txt */
$language_file = array('document','gradebook');
require_once dirname(__FILE__) . '/config.php';
// Course legal
$enabled = api_get_plugin_setting('courselegal', 'tool_enable');
if ($enabled != 'true') {
api_not_allowed(true);
}
if (!api_is_allowed_to_edit()) {
api_not_allowed(true);
}
$legal = CourseLegalPlugin::create();
$url = api_get_self().'?'.api_get_cidreq();
$courseId = api_get_course_int_id();
$sessionId = api_get_session_id();
$form = new FormValidator('plugin', 'post', $url );
$form->addElement('header', get_lang('CourseLegal'));
$form->addElement('hidden', 'session_id', $sessionId);
$form->addElement('hidden', 'c_id', $courseId);
$form->addElement('textarea', 'content', get_lang('Text'));
$form->addElement('file', 'uploaded_file', get_lang('File'));
$file = $legal->getCurrentFile($courseId, $sessionId);
if (!empty($file)) {
$form->addElement('label', get_lang('File'), $file);
}
$form->addElement('checkbox', 'delete_file', null, get_lang('DeleteFile'));
$form->addElement('checkbox', 'remove_previous_agreements', null, get_lang('RemoveAllUserAgreements'));
$form->addElement('checkbox', 'warn_users_by_email', null, get_lang('WarnAllUsersByEmail'));
$form->addElement('button', 'submit', get_lang('Send'));
$form->setDefaults($legal->getData($courseId, $sessionId));
if ($form->validate()) {
$values = $form->getSubmitValues();
$file = isset($_FILES['uploaded_file']) ? $_FILES['uploaded_file'] : array();
$deleteFile = isset($values['delete_file']) ? $values['delete_file'] : false;
$legal->save($values, $file, $deleteFile);
header('Location: '.$url);
exit;
}
Display::display_header(get_lang('CourseLegal'));
$form->display();
Loading…
Cancel
Save