Flotter Totte
9 years ago
27 changed files with 1204 additions and 1588 deletions
@ -1,112 +0,0 @@ |
|||||
<?php |
|
||||
/** |
|
||||
* ************************************************************************* |
|
||||
* * Apply Enrol ** |
|
||||
* ************************************************************************* |
|
||||
* @copyright emeneo.com ** |
|
||||
* @link emeneo.com ** |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
|
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
|
||||
*/ |
|
||||
require ('../../config.php'); |
|
||||
require_once($CFG->dirroot.'/enrol/renderer.php'); |
|
||||
require_once($CFG->dirroot.'/enrol/locallib.php'); |
|
||||
require_once($CFG->dirroot.'/lib/outputcomponents.php'); |
|
||||
require_once ('lib.php'); |
|
||||
|
|
||||
$site = get_site (); |
|
||||
$systemcontext = context_system::instance(); |
|
||||
|
|
||||
$id = required_param ( 'id', PARAM_INT ); // course id |
|
||||
$course = $DB->get_record ( 'course', array ('id' => $id ), '*', MUST_EXIST ); |
|
||||
$context = context_course::instance($course->id, MUST_EXIST); |
|
||||
|
|
||||
$enrolid = optional_param('enrolid', 0, PARAM_INT); |
|
||||
|
|
||||
require_login ( $course ); |
|
||||
require_capability ( 'moodle/course:enrolreview', $context ); |
|
||||
|
|
||||
$PAGE->set_url ( '/enrol/apply.php', array ('id' => $course->id ) ); |
|
||||
//$PAGE->set_context($systemcontext); |
|
||||
$PAGE->set_pagelayout ( 'admin' ); |
|
||||
$PAGE->set_heading ( $course->fullname ); |
|
||||
|
|
||||
$PAGE->navbar->add ( get_string ( 'confirmusers', 'enrol_apply' ) ); |
|
||||
$PAGE->set_title ( "$site->shortname: " . get_string ( 'confirmusers', 'enrol_apply' ) ); |
|
||||
|
|
||||
$userenrolments = optional_param_array('userenrolments', null, PARAM_INT); |
|
||||
if ($userenrolments != null) { |
|
||||
if ($_POST ['type'] == 'confirm') { |
|
||||
confirmEnrolment($userenrolments); |
|
||||
} elseif ($_POST ['type'] == 'wait') { |
|
||||
waitEnrolment ($userenrolments); |
|
||||
} elseif ($_POST ['type'] == 'cancel') { |
|
||||
cancelEnrolment($userenrolments); |
|
||||
} |
|
||||
redirect ( "$CFG->wwwroot/enrol/apply/apply.php?id=" . $id . "&enrolid=" . $enrolid ); |
|
||||
} |
|
||||
|
|
||||
$enrols = getAllEnrolment ($enrolid); |
|
||||
$applicationinfo = $DB->get_records_sql(' |
|
||||
SELECT userenrolmentid, comment |
|
||||
FROM {enrol_apply_applicationinfo} |
|
||||
WHERE userenrolmentid IN ( |
|
||||
SELECT id |
|
||||
FROM {user_enrolments} |
|
||||
WHERE enrolid = ?)', array($enrolid)); |
|
||||
|
|
||||
echo $OUTPUT->header (); |
|
||||
echo $OUTPUT->heading ( get_string ( 'confirmusers', 'enrol_apply' ) ); |
|
||||
echo get_string('confirmusers_desc', 'enrol_apply'); |
|
||||
echo '<form id="frmenrol" method="post" action="apply.php?id=' . $id . '&enrolid=' . $enrolid . '">'; |
|
||||
echo '<input type="hidden" id="type" name="type" value="confirm">'; |
|
||||
echo '<table class="generalbox editcourse boxaligncenter"><tr class="header">'; |
|
||||
echo '<th class="header" scope="col"> </th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'coursename', 'enrol_apply' ) . '</th>'; |
|
||||
echo '<th class="header" scope="col"> </th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'applyuser', 'enrol_apply' ) . '</th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'applyusermail', 'enrol_apply' ) . '</th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'applydate', 'enrol_apply' ) . '</th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'comment', 'enrol_apply' ) . '</th>'; |
|
||||
echo '</tr>'; |
|
||||
foreach ( $enrols as $enrol ) { |
|
||||
$picture = get_user_picture($enrol->userid); |
|
||||
if ($enrol->status == 2) { |
|
||||
echo '<tr style="vertical-align: top; background-color: #ccc;">'; |
|
||||
} else { |
|
||||
echo '<tr style="vertical-align: top;">'; |
|
||||
} |
|
||||
echo '<td><input type="checkbox" name="userenrolments[]" value="' . $enrol->id . '"></td>'; |
|
||||
echo '<td>' . format_string($enrol->course) . '</td>'; |
|
||||
echo '<td>' . $OUTPUT->render($picture) . '</td>'; |
|
||||
echo '<td>'.$enrol->firstname . ' ' . $enrol->lastname.'</td>'; |
|
||||
echo '<td>' . $enrol->email . '</td>'; |
|
||||
echo '<td>' . date ( "Y-m-d", $enrol->timecreated ) . '</td>'; |
|
||||
echo '<td>' . htmlspecialchars($applicationinfo[$enrol->id]->comment) . '</td>'; |
|
||||
echo '</tr>'; |
|
||||
} |
|
||||
echo '</table>'; |
|
||||
echo '<p align="center">'; |
|
||||
echo '<input type="button" value="' . get_string ( 'btnconfirm', 'enrol_apply' ) . '" onclick="doSubmit(\'confirm\');">'; |
|
||||
echo '<input type="button" value="' . get_string ( 'btnwait', 'enrol_apply' ) . '" onclick="doSubmit(\'wait\');">'; |
|
||||
echo '<input type="button" value="' . get_string ( 'btncancel', 'enrol_apply' ) . '" onclick="doSubmit(\'cancel\');">'; |
|
||||
echo '</p>'; |
|
||||
echo '</form>'; |
|
||||
echo '<script>function doSubmit(type){ |
|
||||
document.getElementById("type").value=type; |
|
||||
document.getElementById("frmenrol").submit(); |
|
||||
}</script>'; |
|
||||
echo $OUTPUT->footer (); |
|
||||
|
|
||||
|
|
||||
function get_user_picture($userid){ |
|
||||
global $DB; |
|
||||
|
|
||||
$extrafields[] = 'lastaccess'; |
|
||||
$ufields = user_picture::fields('u', $extrafields); |
|
||||
$sql = "SELECT DISTINCT $ufields FROM {user} u where u.id=$userid"; |
|
||||
|
|
||||
$user = $DB->get_record_sql($sql); |
|
||||
return new user_picture($user); |
|
||||
} |
|
@ -0,0 +1,82 @@ |
|||||
|
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
|
/** |
||||
|
* @package enrol_apply |
||||
|
* @copyright emeneo.com (http://emeneo.com/) |
||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
|
* @author emeneo.com (http://emeneo.com/) |
||||
|
* @author Johannes Burk <johannes.burk@sudile.com> |
||||
|
*/ |
||||
|
|
||||
|
defined('MOODLE_INTERNAL') || die(); |
||||
|
|
||||
|
require_once($CFG->libdir.'/formslib.php'); |
||||
|
require_once($CFG->dirroot.'/user/editlib.php'); |
||||
|
require_once($CFG->dirroot.'/user/profile/lib.php'); |
||||
|
|
||||
|
class enrol_apply_apply_form extends moodleform { |
||||
|
protected $instance; |
||||
|
|
||||
|
/** |
||||
|
* Overriding this function to get unique form id for multiple apply enrolments |
||||
|
* |
||||
|
* @return string form identifier |
||||
|
*/ |
||||
|
protected function get_form_identifier() { |
||||
|
$formid = $this->_customdata->id.'_'.get_class($this); |
||||
|
return $formid; |
||||
|
} |
||||
|
|
||||
|
public function definition() { |
||||
|
global $USER; |
||||
|
|
||||
|
$mform = $this->_form; |
||||
|
$instance = $this->_customdata; |
||||
|
$this->instance = $instance; |
||||
|
$plugin = enrol_get_plugin('apply'); |
||||
|
|
||||
|
$heading = $plugin->get_instance_name($instance); |
||||
|
$mform->addElement('header', 'selfheader', $heading); |
||||
|
|
||||
|
$mform->addElement('html', '<p>'.$instance->customtext1.'</p>'); |
||||
|
$mform->addElement('textarea', 'applydescription', get_string('comment', 'enrol_apply'), 'cols="80"'); |
||||
|
$mform->setType('applydescription', PARAM_TEXT); |
||||
|
|
||||
|
// User profile... |
||||
|
$editoroptions = $filemanageroptions = null; |
||||
|
|
||||
|
if ($instance->customint1) { |
||||
|
useredit_shared_definition($mform, $editoroptions, $filemanageroptions, $USER); |
||||
|
} |
||||
|
|
||||
|
if ($instance->customint2) { |
||||
|
profile_definition($mform, $USER->id); |
||||
|
} |
||||
|
|
||||
|
$mform->setDefaults((array)$USER); |
||||
|
|
||||
|
$this->add_action_buttons(false, get_string('enrolme', 'enrol_self')); |
||||
|
|
||||
|
$mform->addElement('hidden', 'id'); |
||||
|
$mform->setType('id', PARAM_INT); |
||||
|
$mform->setDefault('id', $instance->courseid); |
||||
|
|
||||
|
$mform->addElement('hidden', 'instance'); |
||||
|
$mform->setType('instance', PARAM_INT); |
||||
|
$mform->setDefault('instance', $instance->id); |
||||
|
} |
||||
|
} |
@ -1,41 +0,0 @@ |
|||||
<?php |
|
||||
|
|
||||
/** |
|
||||
* ************************************************************************* |
|
||||
* * Apply Enrol ** |
|
||||
* ************************************************************************* |
|
||||
* @copyright emeneo.com ** |
|
||||
* @link emeneo.com ** |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
|
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
|
||||
*/ |
|
||||
|
|
||||
/** |
|
||||
* apply enrol plugin installation script |
|
||||
* |
|
||||
* @package enrol |
|
||||
* @subpackage apply |
|
||||
* @copyright 2010 Petr Skoda {@link http://skodak.org} |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
||||
*/ |
|
||||
defined('MOODLE_INTERNAL') || die(); |
|
||||
|
|
||||
function xmldb_enrol_apply_install() { |
|
||||
global $CFG, $DB; |
|
||||
|
|
||||
// migrate welcome message |
|
||||
if (isset($CFG->sendcoursewelcomemessage)) { |
|
||||
set_config('sendcoursewelcomemessage', $CFG->sendcoursewelcomemessage, 'enrol_apply'); // new course default |
|
||||
$DB->set_field('enrol', 'customint4', $CFG->sendcoursewelcomemessage, array('enrol'=>'apply')); // each instance has different setting now |
|
||||
unset_config('sendcoursewelcomemessage'); |
|
||||
} |
|
||||
|
|
||||
// migrate long-time-no-see feature settings |
|
||||
if (isset($CFG->longtimenosee)) { |
|
||||
$nosee = $CFG->longtimenosee * 3600 * 24; |
|
||||
set_config('longtimenosee', $nosee, 'enrol_apply'); |
|
||||
$DB->set_field('enrol', 'customint2', $nosee, array('enrol'=>'apply')); |
|
||||
unset_config('longtimenosee'); |
|
||||
} |
|
||||
} |
|
@ -1,187 +0,0 @@ |
|||||
<?php |
|
||||
/** |
|
||||
* ************************************************************************* |
|
||||
* * Apply Enrol ** |
|
||||
* ************************************************************************* |
|
||||
* @copyright emeneo.com ** |
|
||||
* @link emeneo.com ** |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
|
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
|
||||
*/ |
|
||||
|
|
||||
require('../../config.php'); |
|
||||
require_once($CFG->dirroot.'/enrol/apply/selectlib.php'); |
|
||||
|
|
||||
$enrolid = required_param('enrolid', PARAM_INT); |
|
||||
$roleid = optional_param('roleid', -1, PARAM_INT); |
|
||||
$extendperiod = optional_param('extendperiod', 0, PARAM_INT); |
|
||||
$extendbase = optional_param('extendbase', 3, PARAM_INT); |
|
||||
|
|
||||
$instance = $DB->get_record('enrol', array('id'=>$enrolid, 'enrol'=>'apply'), '*', MUST_EXIST); |
|
||||
$course = $DB->get_record('course', array('id'=>$instance->courseid), '*', MUST_EXIST); |
|
||||
$context = context_course::instance($course->id, MUST_EXIST); |
|
||||
|
|
||||
require_login($course); |
|
||||
//require_capability('enrol/manual:enrol', $context); |
|
||||
//require_capability('enrol/manual:manage', $context); |
|
||||
//require_capability('enrol/manual:unenrol', $context); |
|
||||
|
|
||||
if ($roleid < 0) { |
|
||||
$roleid = $instance->roleid; |
|
||||
} |
|
||||
$roles = get_assignable_roles($context); |
|
||||
$roles = array('0'=>get_string('none')) + $roles; |
|
||||
|
|
||||
if (!isset($roles[$roleid])) { |
|
||||
// weird - security always first! |
|
||||
$roleid = 0; |
|
||||
} |
|
||||
|
|
||||
if (!$enrol_manual = enrol_get_plugin('apply')) { |
|
||||
throw new coding_exception('Can not instantiate enrol_manual'); |
|
||||
} |
|
||||
|
|
||||
$instancename = $enrol_manual->get_instance_name($instance); |
|
||||
|
|
||||
$PAGE->set_url('/enrol/apply/enroluser.php', array('enrolid'=>$instance->id)); |
|
||||
$PAGE->set_pagelayout('admin'); |
|
||||
$PAGE->set_title($enrol_manual->get_instance_name($instance)); |
|
||||
$PAGE->set_heading($course->fullname); |
|
||||
navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('id'=>$course->id))); |
|
||||
|
|
||||
// Create the user selector objects. |
|
||||
$options = array('enrolid' => $enrolid); |
|
||||
|
|
||||
$potentialuserselector = new enrol_apply_potential_participant('addselect', $options); |
|
||||
$currentuserselector = new enrol_apply_current_participant('removeselect', $options); |
|
||||
|
|
||||
// Build the list of options for the enrolment period dropdown. |
|
||||
$unlimitedperiod = get_string('unlimited'); |
|
||||
$periodmenu = array(); |
|
||||
for ($i=1; $i<=365; $i++) { |
|
||||
$seconds = $i * 86400; |
|
||||
$periodmenu[$seconds] = get_string('numdays', '', $i); |
|
||||
} |
|
||||
// Work out the apropriate default setting. |
|
||||
if ($extendperiod) { |
|
||||
$defaultperiod = $extendperiod; |
|
||||
} else { |
|
||||
$defaultperiod = $instance->enrolperiod; |
|
||||
} |
|
||||
|
|
||||
// Build the list of options for the starting from dropdown. |
|
||||
$timeformat = get_string('strftimedatefullshort'); |
|
||||
$today = time(); |
|
||||
$today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0); |
|
||||
|
|
||||
// enrolment start |
|
||||
$basemenu = array(); |
|
||||
if ($course->startdate > 0) { |
|
||||
$basemenu[2] = get_string('coursestart') . ' (' . userdate($course->startdate, $timeformat) . ')'; |
|
||||
} |
|
||||
$basemenu[3] = get_string('today') . ' (' . userdate($today, $timeformat) . ')' ; |
|
||||
|
|
||||
// process add and removes |
|
||||
if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { |
|
||||
$userstoassign = $potentialuserselector->get_selected_users(); |
|
||||
if (!empty($userstoassign)) { |
|
||||
foreach($userstoassign as $adduser) { |
|
||||
switch($extendbase) { |
|
||||
case 2: |
|
||||
$timestart = $course->startdate; |
|
||||
break; |
|
||||
case 3: |
|
||||
default: |
|
||||
$timestart = $today; |
|
||||
break; |
|
||||
} |
|
||||
|
|
||||
if ($extendperiod <= 0) { |
|
||||
$timeend = 0; |
|
||||
} else { |
|
||||
$timeend = $timestart + $extendperiod; |
|
||||
} |
|
||||
//echo "<pre>";print_r($instance);exit(); |
|
||||
$enrol_manual->enrol_user($instance, $adduser->id, $roleid, $timestart, $timeend); |
|
||||
|
|
||||
// Deprecated fixed by Shiro <gigashiro@gmail.com> |
|
||||
//add_to_log($course->id, 'course', 'enrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere! |
|
||||
$context = context_course::instance($course->id); |
|
||||
\core\event\user_enrolment_created::create(array('context' => $context))->trigger(); |
|
||||
} |
|
||||
|
|
||||
$potentialuserselector->invalidate_selected_users(); |
|
||||
$currentuserselector->invalidate_selected_users(); |
|
||||
|
|
||||
//TODO: log |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Process incoming role unassignments |
|
||||
if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { |
|
||||
$userstounassign = $currentuserselector->get_selected_users(); |
|
||||
if (!empty($userstounassign)) { |
|
||||
foreach($userstounassign as $removeuser) { |
|
||||
$enrol_manual->unenrol_user($instance, $removeuser->id); |
|
||||
|
|
||||
// Deprecated fixed by Shiro <gigashiro@gmail.com> |
|
||||
//add_to_log($course->id, 'course', 'unenrol', '../enrol/users.php?id='.$course->id, $course->id); //there should be userid somewhere! |
|
||||
$context = context_course::instance($course->id); |
|
||||
\core\event\user_enrolment_deleted::delete(array('context' => $context))->trigger(); |
|
||||
} |
|
||||
|
|
||||
$potentialuserselector->invalidate_selected_users(); |
|
||||
$currentuserselector->invalidate_selected_users(); |
|
||||
|
|
||||
//TODO: log |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
echo $OUTPUT->header(); |
|
||||
echo $OUTPUT->heading($instancename); |
|
||||
|
|
||||
?> |
|
||||
<form id="assignform" method="post" action="<?php echo $PAGE->url ?>"><div> |
|
||||
<input type="hidden" name="sesskey" value="<?php echo sesskey() ?>" /> |
|
||||
|
|
||||
<table summary="" class="roleassigntable generaltable generalbox boxaligncenter" cellspacing="0"> |
|
||||
<tr> |
|
||||
<td id="existingcell"> |
|
||||
<p><label for="removeselect"><?php print_string('enrolledusers', 'enrol'); ?></label></p> |
|
||||
<?php $currentuserselector->display() ?> |
|
||||
</td> |
|
||||
<td id="buttonscell"> |
|
||||
<div id="addcontrols"> |
|
||||
<input name="add" id="add" type="submit" value="<?php echo $OUTPUT->larrow().' '.get_string('add'); ?>" title="<?php print_string('add'); ?>" /><br /> |
|
||||
|
|
||||
<div class="enroloptions"> |
|
||||
|
|
||||
<p><label for="roleid"><?php print_string('assignrole', 'enrol_manual') ?></label><br /> |
|
||||
<?php echo html_writer::select($roles, 'roleid', $roleid, false); ?></p> |
|
||||
|
|
||||
<p><label for="extendperiod"><?php print_string('enrolperiod', 'enrol') ?></label><br /> |
|
||||
<?php echo html_writer::select($periodmenu, 'extendperiod', $defaultperiod, $unlimitedperiod); ?></p> |
|
||||
|
|
||||
<p><label for="extendbase"><?php print_string('startingfrom') ?></label><br /> |
|
||||
<?php echo html_writer::select($basemenu, 'extendbase', $extendbase, false); ?></p> |
|
||||
|
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div id="removecontrols"> |
|
||||
<input name="remove" id="remove" type="submit" value="<?php echo get_string('remove').' '.$OUTPUT->rarrow(); ?>" title="<?php print_string('remove'); ?>" /> |
|
||||
</div> |
|
||||
</td> |
|
||||
<td id="potentialcell"> |
|
||||
<p><label for="addselect"><?php print_string('enrolcandidates', 'enrol'); ?></label></p> |
|
||||
<?php $potentialuserselector->display() ?> |
|
||||
</td> |
|
||||
</tr> |
|
||||
</table> |
|
||||
</div></form> |
|
||||
<?php |
|
||||
|
|
||||
|
|
||||
echo $OUTPUT->footer(); |
|
@ -1,526 +1,383 @@ |
|||||
<?php |
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
/** |
/** |
||||
* ************************************************************************* |
* @package enrol_apply |
||||
* * Apply Enrol ** |
* @copyright emeneo.com (http://emeneo.com/) |
||||
* ************************************************************************* |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
* @copyright emeneo.com ** |
* @author emeneo.com (http://emeneo.com/) |
||||
* @link emeneo.com ** |
* @author Johannes Burk <johannes.burk@sudile.com> |
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
*/ |
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
/** The user is put onto a waiting list and therefore the enrolment not active (used in user_enrolments->status) */ |
||||
*/ |
define('ENROL_APPLY_USER_WAIT', 2); |
||||
|
|
||||
class enrol_apply_plugin extends enrol_plugin { |
class enrol_apply_plugin extends enrol_plugin { |
||||
|
|
||||
/** |
/** |
||||
* Add new instance of enrol plugin with default settings. |
* Add new instance of enrol plugin with default settings. |
||||
* @param object $course |
* @param object $course |
||||
* @return int id of new instance |
* @return int id of new instance |
||||
*/ |
*/ |
||||
public function add_default_instance($course) { |
public function add_default_instance($course) { |
||||
$fields = $this->get_instance_defaults(); |
$fields = $this->get_instance_defaults(); |
||||
return $this->add_instance($course, $fields); |
return $this->add_instance($course, $fields); |
||||
} |
} |
||||
|
|
||||
public function allow_unenrol(stdClass $instance) { |
public function allow_unenrol(stdClass $instance) { |
||||
// users with unenrol cap may unenrol other users manually manually |
// Users with unenrol cap may unenrol other users manually. |
||||
return true; |
return true; |
||||
} |
} |
||||
|
|
||||
public function get_newinstance_link($courseid) { |
/** |
||||
$context = context_course::instance($courseid, MUST_EXIST); |
* Returns link to page which may be used to add new instance of enrolment plugin in course. |
||||
|
* Multiple instances supported. |
||||
if (!has_capability('moodle/course:enrolconfig', $context) or !has_capability('enrol/apply:config', $context)) { |
* @param int $courseid |
||||
return NULL; |
* @return moodle_url page url |
||||
} |
*/ |
||||
// multiple instances supported - different roles with different password |
public function get_newinstance_link($courseid) { |
||||
return new moodle_url('/enrol/apply/edit.php', array('courseid'=>$courseid)); |
$context = context_course::instance($courseid, MUST_EXIST); |
||||
} |
|
||||
|
if (!has_capability('moodle/course:enrolconfig', $context) or !has_capability('enrol/apply:config', $context)) { |
||||
public function enrol_page_hook(stdClass $instance) { |
return null; |
||||
global $CFG, $OUTPUT, $SESSION, $USER, $DB; |
} |
||||
|
return new moodle_url('/enrol/apply/edit.php', array('courseid' => $courseid)); |
||||
if (isguestuser()) { |
} |
||||
// can not enrol guest!! |
|
||||
return null; |
public function enrol_page_hook(stdClass $instance) { |
||||
} |
global $CFG, $OUTPUT, $SESSION, $USER, $DB; |
||||
if ($DB->record_exists('user_enrolments', array('userid'=>$USER->id, 'enrolid'=>$instance->id))) { |
|
||||
//TODO: maybe we should tell them they are already enrolled, but can not access the course |
if (isguestuser()) { |
||||
//return null; |
// Can not enrol guest! |
||||
return $OUTPUT->notification(get_string('notification', 'enrol_apply'), 'notifysuccess'); |
return null; |
||||
} |
} |
||||
|
if ($DB->record_exists('user_enrolments', array('userid' => $USER->id, 'enrolid' => $instance->id))) { |
||||
require_once("$CFG->dirroot/enrol/apply/locallib.php"); |
return $OUTPUT->notification(get_string('notification', 'enrol_apply'), 'notifysuccess'); |
||||
|
} |
||||
$form = new enrol_apply_enrol_form(NULL, $instance); |
|
||||
|
require_once("$CFG->dirroot/enrol/apply/apply_form.php"); |
||||
$instanceid = optional_param('instance', 0, PARAM_INT); |
|
||||
if ($instance->id == $instanceid) { |
$form = new enrol_apply_apply_form(null, $instance); |
||||
if ($data = $form->get_data()) { |
|
||||
$userInfo = $data; |
if ($data = $form->get_data()) { |
||||
$applydescription = $userInfo->applydescription; |
// Only process when form submission is for this instance (multi instance support). |
||||
unset($userInfo->applydescription); |
if ($data->instance == $instance->id) { |
||||
$userInfo->id = $USER->id; |
$timestart = 0; |
||||
|
$timeend = 0; |
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
$roleid = $instance->roleid; |
||||
|
|
||||
$show_standard_user_profile = $show_extra_user_profile = false; |
$this->enrol_user($instance, $USER->id, $roleid, $timestart, $timeend, ENROL_USER_SUSPENDED); |
||||
if($instance->customint1 != ''){ |
$userenrolment = $DB->get_record( |
||||
($instance->customint1 == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
'user_enrolments', |
||||
}else{ |
array( |
||||
($apply_setting['show_standard_user_profile']->value == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
'userid' => $USER->id, |
||||
} |
'enrolid' => $instance->id), |
||||
|
'id', MUST_EXIST); |
||||
if($instance->customint2 != ''){ |
$applicationinfo = new stdClass(); |
||||
($instance->customint2 == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
$applicationinfo->userenrolmentid = $userenrolment->id; |
||||
}else{ |
$applicationinfo->comment = $data->applydescription; |
||||
($apply_setting['show_extra_user_profile']->value == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
$DB->insert_record('enrol_apply_applicationinfo', $applicationinfo, false); |
||||
} |
|
||||
|
$this->send_application_notification($instance, $USER->id, $data); |
||||
if(!$show_standard_user_profile && $show_extra_user_profile){ |
|
||||
profile_save_data($userInfo); |
redirect("$CFG->wwwroot/course/view.php?id=$instance->courseid"); |
||||
$res = $DB->update_record('user',$userInfoProfile); |
} |
||||
//$res = $DB->update_record('user',$userInfo); |
} |
||||
} |
|
||||
/*elseif($show_standard_user_profile && $show_extra_user_profile){ |
$output = $form->render(); |
||||
profile_save_data($userInfo); |
|
||||
$res = $DB->update_record('user',$userInfo); |
return $OUTPUT->box($output); |
||||
}*/ |
} |
||||
|
|
||||
$enrol = enrol_get_plugin('self'); |
public function get_action_icons(stdClass $instance) { |
||||
$timestart = time(); |
global $OUTPUT; |
||||
if ($instance->enrolperiod) { |
|
||||
$timeend = $timestart + $instance->enrolperiod; |
if ($instance->enrol !== 'apply') { |
||||
} else { |
throw new coding_exception('invalid enrol instance!'); |
||||
$timeend = 0; |
} |
||||
} |
$context = context_course::instance($instance->courseid); |
||||
|
|
||||
$roleid = $instance->roleid; |
$icons = array(); |
||||
if(!$roleid){ |
|
||||
$role = $DB->get_record_sql("select * from ".$CFG->prefix."role where archetype='student' limit 1"); |
if (has_capability('enrol/apply:config', $context)) { |
||||
$roleid = $role->id; |
$editlink = new moodle_url("/enrol/apply/edit.php", array('courseid' => $instance->courseid, 'id' => $instance->id)); |
||||
} |
$icons[] = $OUTPUT->action_icon($editlink, new pix_icon( |
||||
|
't/edit', |
||||
$this->enrol_user($instance, $USER->id, $roleid, $timestart, $timeend,1); |
get_string('edit'), |
||||
$userenrolment = $DB->get_record('user_enrolments', array('userid' => $USER->id, 'enrolid' => $instance->id), 'id', MUST_EXIST); |
'core', |
||||
$applicationinfo = new stdClass(); |
array('class' => 'iconsmall'))); |
||||
$applicationinfo->userenrolmentid = $userenrolment->id; |
} |
||||
$applicationinfo->comment = $applydescription; |
|
||||
$DB->insert_record('enrol_apply_applicationinfo', $applicationinfo, false); |
if (has_capability('enrol/apply:manageapplications', $context)) { |
||||
sendConfirmMailToTeachers($instance, $data, $applydescription); |
$managelink = new moodle_url("/enrol/apply/manage.php", array('id' => $instance->id)); |
||||
sendConfirmMailToManagers($instance, $data, $applydescription); |
$icons[] = $OUTPUT->action_icon($managelink, new pix_icon( |
||||
|
'i/users', |
||||
// Deprecated fixed by Shiro <gigashiro@gmail.com> |
get_string('confirmenrol', 'enrol_apply'), |
||||
//add_to_log($instance->courseid, 'course', 'enrol', '../enrol/users.php?id='.$instance->courseid, $instance->courseid); //there should be userid somewhere! |
'core', |
||||
$context = context_course::instance($instance->courseid); |
array('class' => 'iconsmall'))); |
||||
\core\event\user_enrolment_created::create( |
|
||||
array( |
|
||||
'objectid' => $instance->id, |
|
||||
'courseid' => $instance->courseid, |
|
||||
'context' => $context, |
|
||||
'relateduserid' => $USER->id, |
|
||||
'other' => array('enrol' => 'apply') |
|
||||
))->trigger(); |
|
||||
|
|
||||
redirect("$CFG->wwwroot/course/view.php?id=$instance->courseid"); |
|
||||
} |
|
||||
} |
|
||||
//exit; |
|
||||
ob_start(); |
|
||||
$form->display(); |
|
||||
$output = ob_get_clean(); |
|
||||
|
|
||||
return $OUTPUT->box($output); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public function get_action_icons(stdClass $instance) { |
|
||||
global $OUTPUT; |
|
||||
|
|
||||
if ($instance->enrol !== 'apply') { |
|
||||
throw new coding_exception('invalid enrol instance!'); |
|
||||
} |
|
||||
$context = context_course::instance($instance->courseid); |
|
||||
|
|
||||
$icons = array(); |
|
||||
|
|
||||
if (has_capability('enrol/apply:config', $context)) { |
|
||||
$editlink = new moodle_url("/enrol/apply/edit.php", array('courseid'=>$instance->courseid, 'id'=>$instance->id)); |
|
||||
$icons[] = $OUTPUT->action_icon($editlink, new pix_icon('t/edit', get_string('edit'), 'core', array('class' => 'iconsmall'))); |
|
||||
} |
} |
||||
|
|
||||
if (has_capability('enrol/apply:manage', $context)) { |
return $icons; |
||||
$managelink = new moodle_url("/enrol/apply/apply.php", array('id'=>$_GET['id'],'enrolid'=>$instance->id)); |
} |
||||
$icons[] = $OUTPUT->action_icon($managelink, new pix_icon('i/users', get_string('confirmenrol', 'enrol_apply'), 'core', array('class'=>'iconsmall'))); |
|
||||
} |
/** |
||||
|
* Is it possible to hide/show enrol instance via standard UI? |
||||
if (has_capability("enrol/apply:enrol", $context)) { |
* @param stdClass $instance |
||||
$enrollink = new moodle_url("/enrol/apply/enroluser.php", array('enrolid'=>$instance->id)); |
* @return bool |
||||
$icons[] = $OUTPUT->action_icon($enrollink, new pix_icon('t/enrolusers', get_string('enrolusers', 'enrol_apply'), 'core', array('class'=>'iconsmall'))); |
*/ |
||||
} |
public function can_hide_show_instance($instance) { |
||||
|
$context = context_course::instance($instance->courseid); |
||||
return $icons; |
return has_capability('enrol/apply:config', $context); |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* Is it possible to hide/show enrol instance via standard UI? |
* Is it possible to delete enrol instance via standard UI? |
||||
* |
* |
||||
* @param stdClass $instance |
* @param stdClass $instance |
||||
* @return bool |
* @return bool |
||||
*/ |
*/ |
||||
public function can_hide_show_instance($instance) { |
public function can_delete_instance($instance) { |
||||
$context = context_course::instance($instance->courseid); |
$context = context_course::instance($instance->courseid); |
||||
return has_capability('enrol/apply:config', $context); |
return has_capability('enrol/apply:config', $context); |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* Is it possible to delete enrol instance via standard UI? |
* Sets up navigation entries. |
||||
* |
* |
||||
* @param stdClass $instance |
* @param stdClass $instancesnode |
||||
* @return bool |
* @param stdClass $instance |
||||
*/ |
* @return void |
||||
|
*/ |
||||
public function can_delete_instance($instance) { |
public function add_course_navigation($instancesnode, stdClass $instance) { |
||||
$context = context_course::instance($instance->courseid); |
|
||||
return has_capability('enrol/apply:config', $context); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* Sets up navigation entries. |
|
||||
* |
|
||||
* @param stdClass $instancesnode |
|
||||
* @param stdClass $instance |
|
||||
* @return void |
|
||||
*/ |
|
||||
public function add_course_navigation($instancesnode, stdClass $instance) { |
|
||||
if ($instance->enrol !== 'apply') { |
if ($instance->enrol !== 'apply') { |
||||
throw new coding_exception('Invalid enrol instance type!'); |
throw new coding_exception('Invalid enrol instance type!'); |
||||
} |
} |
||||
|
|
||||
$context = context_course::instance($instance->courseid); |
$context = context_course::instance($instance->courseid); |
||||
if (has_capability('enrol/apply:config', $context)) { |
if (has_capability('enrol/apply:config', $context)) { |
||||
$managelink = new moodle_url('/enrol/apply/edit.php', array('courseid'=>$instance->courseid, 'id'=>$instance->id)); |
$managelink = new moodle_url('/enrol/apply/edit.php', array('courseid' => $instance->courseid, 'id' => $instance->id)); |
||||
$instancesnode->add($this->get_instance_name($instance), $managelink, navigation_node::TYPE_SETTING); |
$instancesnode->add($this->get_instance_name($instance), $managelink, navigation_node::TYPE_SETTING); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
public function get_user_enrolment_actions(course_enrolment_manager $manager, $ue) { |
public function get_user_enrolment_actions(course_enrolment_manager $manager, $ue) { |
||||
$actions = array(); |
$actions = array(); |
||||
$context = $manager->get_context(); |
$context = $manager->get_context(); |
||||
$instance = $ue->enrolmentinstance; |
$instance = $ue->enrolmentinstance; |
||||
$params = $manager->get_moodlepage()->url->params(); |
$params = $manager->get_moodlepage()->url->params(); |
||||
$params['ue'] = $ue->id; |
$params['ue'] = $ue->id; |
||||
if ($this->allow_unenrol($instance) && has_capability("enrol/apply:unenrol", $context)) { |
if ($this->allow_unenrol_user($instance, $ue) && has_capability("enrol/apply:unenrol", $context)) { |
||||
$url = new moodle_url('/enrol/apply/unenroluser.php', $params); |
$url = new moodle_url('/enrol/unenroluser.php', $params); |
||||
$actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id)); |
$actions[] = new user_enrolment_action( |
||||
} |
new pix_icon('t/delete', ''), |
||||
if ($this->allow_manage($instance) && has_capability("enrol/apply:manage", $context)) { |
get_string('unenrol', 'enrol'), |
||||
$url = new moodle_url('/enrol/apply/editenrolment.php', $params); |
$url, |
||||
$actions[] = new user_enrolment_action(new pix_icon('t/edit', ''), get_string('edit'), $url, array('class'=>'editenrollink', 'rel'=>$ue->id)); |
array('class' => 'unenrollink', 'rel' => $ue->id)); |
||||
} |
} |
||||
return $actions; |
return $actions; |
||||
} |
} |
||||
|
|
||||
/** |
|
||||
* Returns defaults for new instances. |
|
||||
* @return array |
|
||||
*/ |
|
||||
public function get_instance_defaults() { |
|
||||
$fields = array(); |
|
||||
$fields['status'] = $this->get_config('status'); |
|
||||
$fields['roleid'] = $this->get_config('roleid', 0); |
|
||||
$fields['customint1'] = $this->get_config('show_standard_user_profile'); |
|
||||
$fields['customint2'] = $this->get_config('show_extra_user_profile'); |
|
||||
$fields['customint3'] = $this->get_config('sendmailtoteacher'); |
|
||||
$fields['customint4'] = $this->get_config('sendmailtomanager'); |
|
||||
|
|
||||
return $fields; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function getAllEnrolment($id = null) { |
/** |
||||
global $DB; |
* Returns defaults for new instances. |
||||
if ($id) { |
* @return array |
||||
$sql = 'SELECT ue.userid,ue.id,u.firstname,u.lastname,u.email,u.picture,c.fullname as course,ue.timecreated,ue.status |
*/ |
||||
FROM {course} c |
public function get_instance_defaults() { |
||||
JOIN {enrol} e |
$fields = array(); |
||||
ON e.courseid = c.id |
$fields['status'] = $this->get_config('status'); |
||||
JOIN {user_enrolments} ue |
$fields['roleid'] = $this->get_config('roleid', 0); |
||||
ON ue.enrolid = e.id |
$fields['customint1'] = $this->get_config('show_standard_user_profile'); |
||||
JOIN {user} u |
$fields['customint2'] = $this->get_config('show_extra_user_profile'); |
||||
ON ue.userid = u.id |
$fields['customint3'] = $this->get_config('sendmailtoteacher'); |
||||
WHERE ue.status != 0 |
$fields['customint4'] = $this->get_config('sendmailtomanager'); |
||||
AND e.id = ?'; |
|
||||
$userenrolments = $DB->get_records_sql($sql, array($id)); |
return $fields; |
||||
} else { |
} |
||||
$sql = 'SELECT ue.id,ue.userid,u.firstname,u.lastname,u.email,u.picture,c.fullname as course,ue.timecreated |
|
||||
FROM {user_enrolments} ue |
|
||||
LEFT JOIN {user} u |
|
||||
ON ue.userid = u.id |
|
||||
LEFT JOIN {enrol} e |
|
||||
ON ue.enrolid = e.id |
|
||||
LEFT JOIN {course} c |
|
||||
ON e.courseid = c.id |
|
||||
WHERE ue.status != 0 |
|
||||
AND e.enrol = ?'; |
|
||||
$userenrolments = $DB->get_records_sql($sql, array('apply')); |
|
||||
} |
|
||||
return $userenrolments; |
|
||||
} |
|
||||
|
|
||||
function confirmEnrolment($enrols){ |
public function confirm_enrolment($enrols) { |
||||
global $DB; |
global $DB; |
||||
global $CFG; |
foreach ($enrols as $enrol) { |
||||
foreach ($enrols as $enrol){ |
$userenrolment = $DB->get_record_select( |
||||
@$enroluser->id = $enrol; |
'user_enrolments', |
||||
@$enroluser->status = 0; |
'id = :id AND (status = :enrolusersuspended OR status = :enrolapplyuserwait)', |
||||
|
array( |
||||
if($DB->update_record('user_enrolments',$enroluser)){ |
'id' => $enrol, |
||||
$userenrolments = $DB->get_record_sql('select * from '.$CFG->prefix.'user_enrolments where id='.$enrol); |
'enrolusersuspended' => ENROL_USER_SUSPENDED, |
||||
$role = $DB->get_record_sql("select * from ".$CFG->prefix."role where archetype='student' limit 1"); |
'enrolapplyuserwait' => ENROL_APPLY_USER_WAIT), |
||||
@$roleAssignments->userid = $userenrolments->userid; |
'*', |
||||
@$roleAssignments->roleid = $role->id; |
MUST_EXIST); |
||||
@$roleAssignments->contextid = 3; |
|
||||
@$roleAssignments->timemodified = time(); |
$instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST); |
||||
@$roleAssignments->modifierid = 2; |
|
||||
$DB->insert_record('role_assignments',$roleAssignments); |
// Check privileges. |
||||
$info = getRelatedInfo($enrol); |
$context = context_course::instance($instance->courseid, MUST_EXIST); |
||||
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); |
if (!has_capability('enrol/apply:manageapplications', $context)) { |
||||
sendConfirmMail($info); |
continue; |
||||
} |
} |
||||
} |
|
||||
} |
$this->update_user_enrol($instance, $userenrolment->userid, ENROL_USER_ACTIVE); |
||||
|
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); |
||||
|
|
||||
|
$subject = get_config('enrol_apply', 'confirmmailsubject'); |
||||
|
$body = get_config('enrol_apply', 'confirmmailcontent'); |
||||
|
$this->send_mail_to_applicant($instance, $userenrolment->userid, $subject, $body); |
||||
|
} |
||||
|
} |
||||
|
|
||||
function waitEnrolment($enrols){ |
public function wait_enrolment($enrols) { |
||||
global $DB; |
global $DB; |
||||
global $CFG; |
foreach ($enrols as $enrol) { |
||||
foreach ($enrols as $enrol){ |
$userenrolment = $DB->get_record( |
||||
@$enroluser->id = $enrol; |
'user_enrolments', |
||||
@$enroluser->status = 2; |
array('id' => $enrol, 'status' => ENROL_USER_SUSPENDED), |
||||
|
'*', IGNORE_MISSING); |
||||
if($DB->update_record('user_enrolments',$enroluser)){ |
|
||||
$info = getRelatedInfo($enrol); |
if ($userenrolment != null) { |
||||
sendWaitMail($info); |
$instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST); |
||||
} |
|
||||
} |
// Check privileges. |
||||
} |
$context = context_course::instance($instance->courseid, MUST_EXIST); |
||||
|
if (!has_capability('enrol/apply:manageapplications', $context)) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
$this->update_user_enrol($instance, $userenrolment->userid, ENROL_APPLY_USER_WAIT); |
||||
|
|
||||
|
$subject = get_config('enrol_apply', 'waitmailsubject'); |
||||
|
$body = get_config('enrol_apply', 'waitmailcontent'); |
||||
|
$this->send_mail_to_applicant($instance, $userenrolment->userid, $subject, $body); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
function cancelEnrolment($enrols){ |
public function cancel_enrolment($enrols) { |
||||
global $DB; |
global $DB; |
||||
foreach ($enrols as $enrol){ |
foreach ($enrols as $enrol) { |
||||
$info = getRelatedInfo($enrol); |
$userenrolment = $DB->get_record_select( |
||||
if($DB->delete_records('user_enrolments',array('id'=>$enrol))){ |
'user_enrolments', |
||||
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); |
'id = :id AND (status = :enrolusersuspended OR status = :enrolapplyuserwait)', |
||||
sendCancelMail($info); |
array( |
||||
} |
'id' => $enrol, |
||||
} |
'enrolusersuspended' => ENROL_USER_SUSPENDED, |
||||
} |
'enrolapplyuserwait' => ENROL_APPLY_USER_WAIT), |
||||
|
'*', |
||||
|
MUST_EXIST); |
||||
|
|
||||
|
$instance = $DB->get_record('enrol', array('id' => $userenrolment->enrolid, 'enrol' => 'apply'), '*', MUST_EXIST); |
||||
|
|
||||
|
// Check privileges. |
||||
|
$context = context_course::instance($instance->courseid, MUST_EXIST); |
||||
|
if (!has_capability('enrol/apply:manageapplications', $context)) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
$this->unenrol_user($instance, $userenrolment->userid); |
||||
|
$DB->delete_records('enrol_apply_applicationinfo', array('userenrolmentid' => $enrol)); |
||||
|
|
||||
|
$subject = get_config('enrol_apply', 'cancelmailsubject'); |
||||
|
$body = get_config('enrol_apply', 'cancelmailcontent'); |
||||
|
$this->send_mail_to_applicant($instance, $userenrolment->userid, $subject, $body); |
||||
|
} |
||||
|
} |
||||
|
|
||||
function sendCancelMail($info){ |
private function send_mail_to_applicant($instance, $userid, $subject, $body) { |
||||
global $DB; |
global $DB; |
||||
global $CFG; |
global $CFG; |
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
|
||||
|
|
||||
$replace = array('firstname'=>$info->firstname,'content'=>format_string($info->coursename),'lastname'=>$info->lastname,'username'=>$info->username); |
$course = get_course($instance->courseid); |
||||
$body = $apply_setting['cancelmailcontent']->value; |
$user = core_user::get_user($userid); |
||||
$body = updateMailContent($body,$replace); |
|
||||
$contact = core_user::get_support_user(); |
|
||||
email_to_user($info, $contact, $apply_setting['cancelmailsubject']->value, html_to_text($body), $body); |
|
||||
} |
|
||||
|
|
||||
function sendConfirmMail($info){ |
$body = $this->update_mail_content($body, $course, $user); |
||||
global $DB; |
$contact = core_user::get_support_user(); |
||||
global $CFG; |
email_to_user($user, $contact, $subject, html_to_text($body), $body); |
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
} |
||||
|
|
||||
$replace = array('firstname'=>$info->firstname,'content'=>format_string($info->coursename),'lastname'=>$info->lastname,'username'=>$info->username); |
private function send_application_notification($instance, $userid, $data) { |
||||
$body = $apply_setting['confirmmailcontent']->value; |
global $CFG, $PAGE; |
||||
$body = updateMailContent($body,$replace); |
|
||||
$contact = core_user::get_support_user(); |
|
||||
email_to_user($info, $contact, $apply_setting['confirmmailsubject']->value, html_to_text($body), $body); |
|
||||
} |
|
||||
|
|
||||
function sendWaitMail($info){ |
$renderer = $PAGE->get_renderer('enrol_apply'); |
||||
global $DB; |
|
||||
global $CFG; |
|
||||
//global $USER; |
|
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
|
||||
|
|
||||
$replace = array('firstname'=>$info->firstname,'content'=>format_string($info->coursename),'lastname'=>$info->lastname,'username'=>$info->username); |
|
||||
$body = get_config('enrol_apply', 'waitmailcontent'); |
|
||||
$body = updateMailContent($body,$replace); |
|
||||
$contact = get_admin(); |
|
||||
//confirm mail will sent by the admin |
|
||||
//$contact = $USER; |
|
||||
email_to_user($info, $contact, get_config('enrol_apply', 'waitmailsubject'), html_to_text($body), $body); |
|
||||
} |
|
||||
|
|
||||
function sendConfirmMailToTeachers($instance,$info,$applydescription){ |
$course = get_course($instance->courseid); |
||||
global $DB; |
$user = core_user::get_user($userid); |
||||
global $CFG; |
$contact = core_user::get_support_user(); |
||||
global $USER; |
|
||||
|
|
||||
$courseid = $instance->courseid; |
|
||||
$instanceid = $instance->id; |
|
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
|
||||
|
|
||||
$show_standard_user_profile = $show_extra_user_profile = false; |
|
||||
if($instance->customint1 != ''){ |
|
||||
($instance->customint1 == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_standard_user_profile']->value == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($instance->customint2 != ''){ |
|
||||
($instance->customint2 == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_extra_user_profile']->value == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($instance->customint3 == 1){ |
|
||||
$course = get_course($courseid); |
|
||||
$context = context_course::instance($courseid, MUST_EXIST); |
|
||||
$teacherType = $DB->get_record('role',array("shortname"=>"editingteacher")); |
|
||||
$teachers = $DB->get_records('role_assignments', array('contextid'=>$context->id,'roleid'=>$teacherType->id)); |
|
||||
foreach($teachers as $teacher){ |
|
||||
$editTeacher = $DB->get_record('user',array('id'=>$teacher->userid)); |
|
||||
$body = '<p>'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'</p>'; |
|
||||
$body .= '<p>'. get_string('applyuser', 'enrol_apply') .': '.$USER->firstname.' '.$USER->lastname.'</p>'; |
|
||||
$body .= '<p>'. get_string('comment', 'enrol_apply') .': '.$applydescription.'</p>'; |
|
||||
|
|
||||
if($show_standard_user_profile){ |
|
||||
$body .= '<p><strong>'. get_string('user_profile', 'enrol_apply').'</strong></p>'; |
|
||||
$body .= '<p>'. get_string('firstname') .': '.$info->firstname.'</p>'; |
|
||||
$body .= '<p>'. get_string('lastname') .': '.$info->lastname.'</p>'; |
|
||||
$body .= '<p>'. get_string('email') .': '.$info->email.'</p>'; |
|
||||
$body .= '<p>'. get_string('city') .': '.$info->city.'</p>'; |
|
||||
$body .= '<p>'. get_string('country') .': '.$info->country.'</p>'; |
|
||||
$body .= '<p>'. get_string('preferredlanguage') .': '.$info->lang.'</p>'; |
|
||||
$body .= '<p>'. get_string('description') .': '.$info->description_editor['text'].'</p>'; |
|
||||
|
|
||||
$body .= '<p>'. get_string('firstnamephonetic') .': '.$info->firstnamephonetic.'</p>'; |
|
||||
$body .= '<p>'. get_string('lastnamephonetic') .': '.$info->lastnamephonetic.'</p>'; |
|
||||
$body .= '<p>'. get_string('middlename') .': '.$info->middlename.'</p>'; |
|
||||
$body .= '<p>'. get_string('alternatename') .': '.$info->alternatename.'</p>'; |
|
||||
$body .= '<p>'. get_string('url') .': '.$info->url.'</p>'; |
|
||||
$body .= '<p>'. get_string('icqnumber') .': '.$info->icq.'</p>'; |
|
||||
$body .= '<p>'. get_string('skypeid') .': '.$info->skype.'</p>'; |
|
||||
$body .= '<p>'. get_string('aimid') .': '.$info->aim.'</p>'; |
|
||||
$body .= '<p>'. get_string('yahooid') .': '.$info->yahoo.'</p>'; |
|
||||
$body .= '<p>'. get_string('msnid') .': '.$info->msn.'</p>'; |
|
||||
$body .= '<p>'. get_string('idnumber') .': '.$info->idnumber.'</p>'; |
|
||||
$body .= '<p>'. get_string('institution') .': '.$info->institution.'</p>'; |
|
||||
$body .= '<p>'. get_string('department') .': '.$info->department.'</p>'; |
|
||||
$body .= '<p>'. get_string('phone') .': '.$info->phone1.'</p>'; |
|
||||
$body .= '<p>'. get_string('phone2') .': '.$info->phone2.'</p>'; |
|
||||
$body .= '<p>'. get_string('address') .': '.$info->address.'</p>'; |
|
||||
} |
|
||||
|
|
||||
if($show_extra_user_profile){ |
|
||||
require_once($CFG->dirroot.'/user/profile/lib.php'); |
|
||||
$user = $DB->get_record('user',array('id'=>$USER->id)); |
|
||||
profile_load_custom_fields($user); |
|
||||
foreach ($user->profile as $key => $value) { |
|
||||
$body .= '<p>'. $key .': '.$value.'</p>'; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
$body .= '<p>'. html_writer::link(new moodle_url("/enrol/apply/apply.php", array('id'=>$courseid,'enrolid'=>$instanceid)), get_string('applymanage', 'enrol_apply')).'</p>'; |
|
||||
$contact = core_user::get_support_user(); |
|
||||
$info = $editTeacher; |
|
||||
$info->coursename = $course->fullname; |
|
||||
email_to_user($info, $contact, get_string('mailtoteacher_suject', 'enrol_apply'), html_to_text($body), $body); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function sendConfirmMailToManagers($instance,$info,$applydescription){ |
// Include standard user profile fields? |
||||
global $DB; |
$standarduserfields = null; |
||||
global $CFG; |
if ($instance->customint1) { |
||||
global $USER; |
$standarduserfields = clone $data; |
||||
|
unset($standarduserfields->applydescription); |
||||
$courseid = $instance->courseid; |
} |
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
|
||||
|
|
||||
$show_standard_user_profile = $show_extra_user_profile = false; |
|
||||
if($instance->customint1 != ''){ |
|
||||
($instance->customint1 == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_standard_user_profile']->value == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($instance->customint2 != ''){ |
|
||||
($instance->customint2 == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_extra_user_profile']->value == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($apply_setting['sendmailtomanager']->value == 1){ |
|
||||
$course = get_course($courseid); |
|
||||
$context = context_system::instance(); |
|
||||
$managerType = $DB->get_record('role',array("shortname"=>"manager")); |
|
||||
$managers = $DB->get_records('role_assignments', array('contextid'=>$context->id,'roleid'=>$managerType->id)); |
|
||||
foreach($managers as $manager){ |
|
||||
$userWithManagerRole = $DB->get_record('user',array('id'=>$manager->userid)); |
|
||||
$body = '<p>'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'</p>'; |
|
||||
$body .= '<p>'. get_string('applyuser', 'enrol_apply') .': '.$USER->firstname.' '.$USER->lastname.'</p>'; |
|
||||
$body .= '<p>'. get_string('comment', 'enrol_apply') .': '.$applydescription.'</p>'; |
|
||||
if($show_standard_user_profile){ |
|
||||
$body .= '<p><strong>'. get_string('user_profile', 'enrol_apply').'</strong></p>'; |
|
||||
$body .= '<p>'. get_string('firstname') .': '.$info->firstname.'</p>'; |
|
||||
$body .= '<p>'. get_string('lastname') .': '.$info->lastname.'</p>'; |
|
||||
$body .= '<p>'. get_string('email') .': '.$info->email.'</p>'; |
|
||||
$body .= '<p>'. get_string('city') .': '.$info->city.'</p>'; |
|
||||
$body .= '<p>'. get_string('country') .': '.$info->country.'</p>'; |
|
||||
$body .= '<p>'. get_string('preferredlanguage') .': '.$info->lang.'</p>'; |
|
||||
$body .= '<p>'. get_string('description') .': '.$info->description_editor['text'].'</p>'; |
|
||||
|
|
||||
$body .= '<p>'. get_string('firstnamephonetic') .': '.$info->firstnamephonetic.'</p>'; |
|
||||
$body .= '<p>'. get_string('lastnamephonetic') .': '.$info->lastnamephonetic.'</p>'; |
|
||||
$body .= '<p>'. get_string('middlename') .': '.$info->middlename.'</p>'; |
|
||||
$body .= '<p>'. get_string('alternatename') .': '.$info->alternatename.'</p>'; |
|
||||
$body .= '<p>'. get_string('url') .': '.$info->url.'</p>'; |
|
||||
$body .= '<p>'. get_string('icqnumber') .': '.$info->icq.'</p>'; |
|
||||
$body .= '<p>'. get_string('skypeid') .': '.$info->skype.'</p>'; |
|
||||
$body .= '<p>'. get_string('aimid') .': '.$info->aim.'</p>'; |
|
||||
$body .= '<p>'. get_string('yahooid') .': '.$info->yahoo.'</p>'; |
|
||||
$body .= '<p>'. get_string('msnid') .': '.$info->msn.'</p>'; |
|
||||
$body .= '<p>'. get_string('idnumber') .': '.$info->idnumber.'</p>'; |
|
||||
$body .= '<p>'. get_string('institution') .': '.$info->institution.'</p>'; |
|
||||
$body .= '<p>'. get_string('department') .': '.$info->department.'</p>'; |
|
||||
$body .= '<p>'. get_string('phone') .': '.$info->phone1.'</p>'; |
|
||||
$body .= '<p>'. get_string('phone2') .': '.$info->phone2.'</p>'; |
|
||||
$body .= '<p>'. get_string('address') .': '.$info->address.'</p>'; |
|
||||
} |
|
||||
|
|
||||
if($show_extra_user_profile){ |
|
||||
require_once($CFG->dirroot.'/user/profile/lib.php'); |
|
||||
$user = $DB->get_record('user',array('id'=>$USER->id)); |
|
||||
profile_load_custom_fields($user); |
|
||||
foreach ($user->profile as $key => $value) { |
|
||||
$body .= '<p>'. $key .': '.$value.'</p>'; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
$body .= '<p>'. html_writer::link(new moodle_url('/enrol/apply/manage.php'), get_string('applymanage', 'enrol_apply')).'</p>'; |
|
||||
$contact = core_user::get_support_user(); |
|
||||
$info = $userWithManagerRole; |
|
||||
$info->coursename = $course->fullname; |
|
||||
email_to_user($info, $contact, get_string('mailtoteacher_suject', 'enrol_apply'), html_to_text($body), $body); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function getRelatedInfo($enrolid){ |
// Include extra user profile fields? |
||||
global $DB; |
$extrauserfields = null; |
||||
global $CFG; |
if ($instance->customint2) { |
||||
return $DB->get_record_sql('select u.*,c.fullname as coursename from '.$CFG->prefix.'user_enrolments as ue left join '.$CFG->prefix.'user as u on ue.userid=u.id left join '.$CFG->prefix.'enrol as e on ue.enrolid=e.id left |
require_once($CFG->dirroot.'/user/profile/lib.php'); |
||||
join '.$CFG->prefix.'course as c on e.courseid=c.id where ue.id='.$enrolid); |
profile_load_custom_fields($user); |
||||
} |
$extrauserfields = $user->profile; |
||||
|
} |
||||
|
|
||||
|
// Send notification to Teachers? Instance depending. |
||||
|
if ($instance->customint3 == 1) { |
||||
|
$context = context_course::instance($instance->courseid); |
||||
|
$editingteacherroles = get_archetype_roles('editingteacher'); |
||||
|
$editingteacherrole = reset($editingteacherroles); |
||||
|
$teachers = get_role_users($editingteacherrole->id, $context); |
||||
|
|
||||
|
$manageurl = new moodle_url("/enrol/apply/manage.php", array('id' => $instance->id)); |
||||
|
$body = $renderer->application_notification_mail_body( |
||||
|
$course, |
||||
|
$user, |
||||
|
$manageurl, |
||||
|
$data->applydescription, |
||||
|
$standarduserfields, |
||||
|
$extrauserfields); |
||||
|
foreach ($teachers as $teacher) { |
||||
|
email_to_user($teacher, $contact, get_string('mailtoteacher_suject', 'enrol_apply'), html_to_text($body), $body); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Send notification to managers in system context? |
||||
|
if (get_config('enrol_apply', 'sendmailtomanager') == 1) { |
||||
|
$context = context_system::instance(); |
||||
|
$managerroles = get_archetype_roles('manager'); |
||||
|
$managerrole = reset($editingteacherroles); |
||||
|
$managers = get_role_users($managerrole->id, $context); |
||||
|
|
||||
|
$manageurl = new moodle_url('/enrol/apply/manage.php'); |
||||
|
$body = $renderer->application_notification_mail_body( |
||||
|
$course, |
||||
|
$user, |
||||
|
$manageurl, |
||||
|
$data->applydescription, |
||||
|
$standarduserfields, |
||||
|
$extrauserfields); |
||||
|
foreach ($managers as $manager) { |
||||
|
email_to_user($manager, $contact, get_string('mailtoteacher_suject', 'enrol_apply'), html_to_text($body), $body); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
function updateMailContent($content,$replace){ |
private function update_mail_content($content, $course, $user) { |
||||
foreach ($replace as $key=>$val) { |
$replace = array( |
||||
$content = str_replace("{".$key."}",$val,$content); |
'firstname' => $user->firstname, |
||||
} |
'content' => format_string($course->fullname), |
||||
return $content; |
'lastname' => $user->lastname, |
||||
|
'username' => $user->username); |
||||
|
foreach ($replace as $key => $val) { |
||||
|
$content = str_replace('{' . $key . '}', $val, $content); |
||||
|
} |
||||
|
return $content; |
||||
|
} |
||||
} |
} |
||||
|
@ -1,157 +0,0 @@ |
|||||
<?php |
|
||||
|
|
||||
/** |
|
||||
* ************************************************************************* |
|
||||
* * Apply Enrol ** |
|
||||
* ************************************************************************* |
|
||||
* @copyright emeneo.com ** |
|
||||
* @link emeneo.com ** |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
|
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
|
||||
*/ |
|
||||
/** |
|
||||
* Self enrol plugin implementation. |
|
||||
* |
|
||||
* @package enrol |
|
||||
* @subpackage self |
|
||||
* @copyright 2010 Petr Skoda {@link http://skodak.org} |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
||||
*/ |
|
||||
|
|
||||
defined('MOODLE_INTERNAL') || die(); |
|
||||
|
|
||||
require_once("$CFG->libdir/formslib.php"); |
|
||||
|
|
||||
class enrol_apply_enrol_form extends moodleform { |
|
||||
protected $instance; |
|
||||
|
|
||||
/** |
|
||||
* Overriding this function to get unique form id for multiple self enrolments |
|
||||
* |
|
||||
* @return string form identifier |
|
||||
*/ |
|
||||
protected function get_form_identifier() { |
|
||||
$formid = $this->_customdata->id.'_'.get_class($this); |
|
||||
return $formid; |
|
||||
} |
|
||||
|
|
||||
public function definition() { |
|
||||
global $DB; |
|
||||
$mform = $this->_form; |
|
||||
$instance = $this->_customdata; |
|
||||
$this->instance = $instance; |
|
||||
$plugin = enrol_get_plugin('apply'); |
|
||||
|
|
||||
$heading = $plugin->get_instance_name($instance); |
|
||||
$mform->addElement('header', 'selfheader', $heading); |
|
||||
|
|
||||
if ($instance->password) { |
|
||||
$heading = $plugin->get_instance_name($instance); |
|
||||
$mform->addElement('header', 'selfheader', $heading); |
|
||||
//change the id of self enrolment key input as there can be multiple self enrolment methods |
|
||||
$mform->addElement('passwordunmask', 'enrolpassword', get_string('password', 'enrol_self'), |
|
||||
array('id' => $instance->id."_enrolpassword")); |
|
||||
} else { |
|
||||
// nothing? |
|
||||
} |
|
||||
|
|
||||
$mform->addElement('html', '<p>'.$instance->customtext1.'</p>'); |
|
||||
$mform->addElement('textarea', 'applydescription', get_string('comment', 'enrol_apply'),'cols="80"'); |
|
||||
|
|
||||
//user profile |
|
||||
global $USER,$CFG,$DB; |
|
||||
require_once($CFG->libdir.'/gdlib.php'); |
|
||||
require_once($CFG->dirroot.'/user/edit_form.php'); |
|
||||
require_once($CFG->dirroot.'/user/editlib.php'); |
|
||||
require_once($CFG->dirroot.'/user/profile/lib.php'); |
|
||||
require_once($CFG->dirroot.'/user/lib.php'); |
|
||||
|
|
||||
$user = $DB->get_record('user',array('id'=>$USER->id)); |
|
||||
$editoroptions = $filemanageroptions = null; |
|
||||
|
|
||||
$apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); |
|
||||
|
|
||||
$show_standard_user_profile = $show_extra_user_profile = false; |
|
||||
if($instance->customint1 != ''){ |
|
||||
($instance->customint1 == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_standard_user_profile']->value == 0)?$show_standard_user_profile = true:$show_standard_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($instance->customint2 != ''){ |
|
||||
($instance->customint2 == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
}else{ |
|
||||
($apply_setting['show_extra_user_profile']->value == 0)?$show_extra_user_profile = true:$show_extra_user_profile = false; |
|
||||
} |
|
||||
|
|
||||
if($show_standard_user_profile){ |
|
||||
useredit_shared_definition($mform, $editoroptions, $filemanageroptions,$user); |
|
||||
} |
|
||||
|
|
||||
if($show_extra_user_profile){ |
|
||||
profile_definition($mform, $user->id); |
|
||||
} |
|
||||
|
|
||||
$profile_default_values = $user; |
|
||||
if (is_object($profile_default_values)) { |
|
||||
$profile_default_values = (array)$profile_default_values; |
|
||||
} |
|
||||
$mform->setDefaults($profile_default_values); |
|
||||
|
|
||||
$this->add_action_buttons(false, get_string('enrolme', 'enrol_self')); |
|
||||
|
|
||||
$mform->addElement('hidden', 'id'); |
|
||||
$mform->setType('id', PARAM_INT); |
|
||||
$mform->setDefault('id', $instance->courseid); |
|
||||
|
|
||||
$mform->addElement('hidden', 'instance'); |
|
||||
$mform->setType('instance', PARAM_INT); |
|
||||
$mform->setDefault('instance', $instance->id); |
|
||||
|
|
||||
//$mform->addElement('html',"<script type='text/javascript' src='../../lib/jquery/jquery-1.10.2.min.js'></script>"); |
|
||||
//$mform->addElement('html','<script>$(document).ready(function(){$(".collapsible-actions a").trigger("click");})</script>'); |
|
||||
//$mform->addElement('html','<script type="text/javascript">$(document).ready(function(){setTimeout(function(){$(".collapseexpand").trigger("click");},3000)})</script>'); |
|
||||
} |
|
||||
|
|
||||
public function validation($data, $files) { |
|
||||
global $DB, $CFG; |
|
||||
|
|
||||
$errors = parent::validation($data, $files); |
|
||||
$instance = $this->instance; |
|
||||
|
|
||||
if ($instance->password) { |
|
||||
if ($data['enrolpassword'] !== $instance->password) { |
|
||||
if ($instance->customint1) { |
|
||||
$groups = $DB->get_records('groups', array('courseid'=>$instance->courseid), 'id ASC', 'id, enrolmentkey'); |
|
||||
$found = false; |
|
||||
foreach ($groups as $group) { |
|
||||
if (empty($group->enrolmentkey)) { |
|
||||
continue; |
|
||||
} |
|
||||
if ($group->enrolmentkey === $data['enrolpassword']) { |
|
||||
$found = true; |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
if (!$found) { |
|
||||
// we can not hint because there are probably multiple passwords |
|
||||
$errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); |
|
||||
} |
|
||||
|
|
||||
} else { |
|
||||
$plugin = enrol_get_plugin('self'); |
|
||||
if ($plugin->get_config('showhint')) { |
|
||||
$textlib = textlib_get_instance(); |
|
||||
$hint = $textlib->substr($instance->password, 0, 1); |
|
||||
$errors['enrolpassword'] = get_string('passwordinvalidhint', 'enrol_self', $hint); |
|
||||
} else { |
|
||||
$errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return $errors; |
|
||||
} |
|
||||
} |
|
@ -1,62 +1,76 @@ |
|||||
<?php |
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
/** |
/** |
||||
* ************************************************************************* |
* @package enrol_apply |
||||
* * Apply Enrol ** |
* @copyright emeneo.com (http://emeneo.com/) |
||||
* ************************************************************************* |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
* @copyright emeneo.com ** |
* @author emeneo.com (http://emeneo.com/) |
||||
* @link emeneo.com ** |
* @author Johannes Burk <johannes.burk@sudile.com> |
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
*/ |
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
require_once('../../config.php'); |
||||
*/ |
require_once($CFG->dirroot.'/enrol/apply/lib.php'); |
||||
require ('../../config.php'); |
require_once($CFG->dirroot.'/enrol/apply/manage_table.php'); |
||||
require_once ('lib.php'); |
require_once($CFG->dirroot.'/enrol/apply/renderer.php'); |
||||
|
|
||||
|
$id = optional_param('id', null, PARAM_INT); |
||||
|
$userenrolments = optional_param_array('userenrolments', null, PARAM_INT); |
||||
|
|
||||
require_login(); |
require_login(); |
||||
require_capability('enrol/apply:manage', context_system::instance()); |
|
||||
|
$manageurlparams = array(); |
||||
$site = get_site (); |
if ($id == null) { |
||||
$systemcontext = context_system::instance(); |
$context = context_system::instance(); |
||||
|
require_capability('enrol/apply:manageapplications', $context); |
||||
$PAGE->set_url ( '/enrol/manage.php'); |
$pageheading = get_string('confirmusers', 'enrol_apply'); |
||||
$PAGE->set_context($systemcontext); |
} else { |
||||
$PAGE->set_pagelayout ( 'admin' ); |
$instance = $DB->get_record('enrol', array('id' => $id, 'enrol' => 'apply'), '*', MUST_EXIST); |
||||
//$PAGE->set_heading ( $course->fullname ); |
require_course_login($instance->courseid); |
||||
|
$course = get_course($instance->courseid); |
||||
$PAGE->navbar->add ( get_string ( 'confirmusers', 'enrol_apply' ) ); |
$context = context_course::instance($course->id, MUST_EXIST); |
||||
$PAGE->set_title ( "$site->shortname: " . get_string ( 'confirmusers', 'enrol_apply' ) ); |
require_capability('enrol/apply:manageapplications', $context); |
||||
|
$manageurlparams['id'] = $instance->id; |
||||
if (isset ( $_POST ['enrolid'] )) { |
$pageheading = $course->fullname; |
||||
if ($_POST ['enrolid']) { |
|
||||
if ($_POST ['type'] == 'confirm') { |
|
||||
confirmEnrolment ( $_POST ['enrolid'] ); |
|
||||
} elseif ($_POST ['type'] == 'cancel') { |
|
||||
cancelEnrolment ( $_POST ['enrolid'] ); |
|
||||
} |
|
||||
redirect ( "$CFG->wwwroot/enrol/apply/manage.php" ); |
|
||||
} |
|
||||
} |
} |
||||
|
|
||||
$enrols = getAllEnrolment(); |
$manageurl = new moodle_url('/enrol/apply/manage.php', $manageurlparams); |
||||
echo $OUTPUT->header (); |
|
||||
echo $OUTPUT->heading ( get_string ( 'confirmusers', 'enrol_apply' ) ); |
$PAGE->set_context($context); |
||||
echo '<form id="frmenrol" method="post" action="manage.php">'; |
$PAGE->set_url($manageurl); |
||||
echo '<input type="hidden" id="type" name="type" value="confirm">'; |
$PAGE->set_pagelayout('admin'); |
||||
echo '<table class="generalbox editcourse boxaligncenter"><tr class="header">'; |
$PAGE->set_heading($pageheading); |
||||
echo '<th class="header" scope="col"> </th>'; |
$PAGE->navbar->add(get_string('confirmusers', 'enrol_apply')); |
||||
echo '<th class="header" scope="col">' . get_string ( 'coursename', 'enrol_apply' ) . '</th>'; |
$PAGE->set_title(get_string('confirmusers', 'enrol_apply')); |
||||
echo '<th class="header" scope="col">' . get_string ( 'applyuser', 'enrol_apply' ) . '</th>'; |
$PAGE->requires->css('/enrol/apply/style.css'); |
||||
echo '<th class="header" scope="col">' . get_string ( 'applyusermail', 'enrol_apply' ) . '</th>'; |
|
||||
echo '<th class="header" scope="col">' . get_string ( 'applydate', 'enrol_apply' ) . '</th>'; |
if ($userenrolments != null) { |
||||
echo '</tr>'; |
$enrolapply = enrol_get_plugin('apply'); |
||||
foreach ( $enrols as $enrol ) { |
if (optional_param('confirm', false, PARAM_BOOL)) { |
||||
echo '<tr><td><input type="checkbox" name="enrolid[]" value="' . $enrol->id . '"></td>'; |
$enrolapply->confirm_enrolment($userenrolments); |
||||
echo '<td>' . format_string($enrol->course) . '</td>'; |
} else if (optional_param('wait', false, PARAM_BOOL)) { |
||||
echo '<td>' . $enrol->firstname . ' ' . $enrol->lastname . '</td>'; |
$enrolapply->wait_enrolment($userenrolments); |
||||
echo '<td>' . $enrol->email . '</td>'; |
} else if (optional_param('cancel', false, PARAM_BOOL)) { |
||||
echo '<td>' . date ( "Y-m-d", $enrol->timecreated ) . '</td></tr>'; |
$enrolapply->cancel_enrolment($userenrolments); |
||||
|
} |
||||
|
redirect($manageurl); |
||||
} |
} |
||||
echo '</table>'; |
|
||||
echo '<p align="center"><input type="button" value="' . get_string ( 'btnconfirm', 'enrol_apply' ) . '" onclick="doSubmit(\'confrim\');"> <input type="button" value="' . get_string ( 'btncancel', 'enrol_apply' ) . '" onclick="doSubmit(\'cancel\');"></p>'; |
$table = new enrol_apply_manage_table($id); |
||||
echo '</form>'; |
$table->define_baseurl($manageurl); |
||||
echo '<script>function doSubmit(type){if(type=="cancel"){document.getElementById("type").value=type;}document.getElementById("frmenrol").submit();}</script>'; |
|
||||
echo $OUTPUT->footer (); |
$renderer = $PAGE->get_renderer('enrol_apply'); |
||||
|
$renderer->manage_page($table, $manageurl); |
||||
|
@ -0,0 +1,87 @@ |
|||||
|
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
* @package enrol_apply |
||||
|
* @copyright 2016 sudile GbR (http://www.sudile.com) |
||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
|
* @author Johannes Burk <johannes.burk@sudile.com> |
||||
|
*/ |
||||
|
|
||||
|
defined('MOODLE_INTERNAL') || die(); |
||||
|
|
||||
|
require_once($CFG->libdir . '/tablelib.php'); |
||||
|
|
||||
|
class enrol_apply_manage_table extends table_sql { |
||||
|
|
||||
|
public $is_collapsible = false; |
||||
|
|
||||
|
public function __construct($enrolid = null) { |
||||
|
parent::__construct('enrol_apply_manage_table'); |
||||
|
|
||||
|
global $DB; |
||||
|
|
||||
|
$sqlwhere = 'ue.status != 0'; |
||||
|
$sqlparams = array(); |
||||
|
if ($enrolid != null) { |
||||
|
$sqlwhere .= " AND e.id = :enrolid"; |
||||
|
$sqlparams['enrolid'] = $enrolid; |
||||
|
} else { |
||||
|
$sqlwhere .= " AND e.enrol = :enrol"; |
||||
|
$sqlparams['enrol'] = 'apply'; |
||||
|
} |
||||
|
|
||||
|
$this->set_sql( |
||||
|
'ue.id AS userenrolmentid, ue.userid, ue.status AS enrolstatus, ue.timecreated AS applydate, |
||||
|
ai.comment AS applycomment, u.*, c.fullname as course', |
||||
|
"{user_enrolments} AS ue |
||||
|
LEFT JOIN {enrol_apply_applicationinfo} ai ON ai.userenrolmentid = ue.id |
||||
|
JOIN {user} u ON u.id = ue.userid |
||||
|
JOIN {enrol} e ON e.id = ue.enrolid |
||||
|
JOIN {course} c ON c.id = e.courseid", |
||||
|
$sqlwhere, |
||||
|
$sqlparams); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get any extra classes names to add to this row in the HTML. |
||||
|
* @param $row array the data for this row. Note (Johannes): this is actually an object with all sql columns. |
||||
|
* @return string added to the class="" attribute of the tr. |
||||
|
*/ |
||||
|
public function get_row_class($row) { |
||||
|
if ($row->enrolstatus == 2) { |
||||
|
return 'enrol_apply_waitinglist_highlight'; |
||||
|
} |
||||
|
return ''; |
||||
|
} |
||||
|
|
||||
|
public function col_checkboxcolumn($row) { |
||||
|
return html_writer::checkbox('userenrolments[]', $row->userenrolmentid, false); |
||||
|
} |
||||
|
|
||||
|
public function col_fullname($row) { |
||||
|
// The $row variable contains all user fields, see sql query. |
||||
|
global $OUTPUT; |
||||
|
$col = $OUTPUT->user_picture($row, array('popup' => true)); |
||||
|
$col .= fullname($row); |
||||
|
return $col; |
||||
|
} |
||||
|
|
||||
|
public function col_applydate($row) { |
||||
|
return date("Y-m-d", $row->applydate); |
||||
|
} |
||||
|
} |
@ -0,0 +1,137 @@ |
|||||
|
<?php |
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
* @package enrol_apply |
||||
|
* @copyright 2016 sudile GbR (http://www.sudile.com) |
||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
|
* @author Johannes Burk <johannes.burk@sudile.com> |
||||
|
*/ |
||||
|
|
||||
|
defined('MOODLE_INTERNAL') || die(); |
||||
|
|
||||
|
class enrol_apply_renderer extends plugin_renderer_base { |
||||
|
public function manage_page($table, $manageurl) { |
||||
|
echo $this->header(); |
||||
|
echo $this->heading(get_string('confirmusers', 'enrol_apply')); |
||||
|
echo get_string('confirmusers_desc', 'enrol_apply'); |
||||
|
$this->manage_form($table, $manageurl); |
||||
|
echo $this->footer(); |
||||
|
} |
||||
|
|
||||
|
public function edit_page($mform) { |
||||
|
echo $this->header(); |
||||
|
echo $this->heading(get_string('pluginname', 'enrol_apply')); |
||||
|
$mform->display(); |
||||
|
echo $this->footer(); |
||||
|
} |
||||
|
|
||||
|
public function manage_form($table, $manageurl) { |
||||
|
echo html_writer::start_tag('form', array( |
||||
|
'id' => 'enrol_apply_manage_form', |
||||
|
'method' => 'post', |
||||
|
'action' => $manageurl->out())); |
||||
|
|
||||
|
$this->manage_table($table); |
||||
|
|
||||
|
echo html_writer::start_tag('p', array('align' => 'center')); |
||||
|
|
||||
|
echo html_writer::empty_tag('input', array( |
||||
|
'type' => 'submit', |
||||
|
'name' => 'confirm', |
||||
|
'value' => get_string('btnconfirm', 'enrol_apply'))); |
||||
|
echo html_writer::empty_tag('input', array( |
||||
|
'type' => 'submit', |
||||
|
'name' => 'wait', |
||||
|
'value' => get_string('btnwait', 'enrol_apply'))); |
||||
|
echo html_writer::empty_tag('input', array( |
||||
|
'type' => 'submit', |
||||
|
'name' => 'cancel', |
||||
|
'value' => get_string('btncancel', 'enrol_apply'))); |
||||
|
|
||||
|
echo html_writer::end_tag('p'); |
||||
|
echo html_writer::end_tag('form'); |
||||
|
} |
||||
|
|
||||
|
public function manage_table($table) { |
||||
|
$columns = array( |
||||
|
'checkboxcolumn', |
||||
|
'course', |
||||
|
'fullname', // Magic happens here: The column heading will automatically be set. |
||||
|
'email', |
||||
|
'applydate', |
||||
|
'applycomment'); |
||||
|
$headers = array( |
||||
|
'', |
||||
|
get_string('course'), |
||||
|
'fullname', // Magic happens here: The column heading will automatically be set due to column name 'fullname'. |
||||
|
get_string('email'), |
||||
|
get_string('applydate', 'enrol_apply'), |
||||
|
get_string('comment', 'enrol_apply')); |
||||
|
$table->define_columns($columns); |
||||
|
$table->define_headers($headers); |
||||
|
|
||||
|
$table->sortable(true, 'id'); |
||||
|
|
||||
|
$table->out(50, true); |
||||
|
} |
||||
|
|
||||
|
public function application_notification_mail_body( |
||||
|
$course, $user, $manageurl, $applydescription, $standarduserfields = null, $extrauserfields = null) { |
||||
|
|
||||
|
$body = '<p>'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'</p>'; |
||||
|
$body .= '<p>'. get_string('applyuser', 'enrol_apply') .': '.$user->firstname.' '.$user->lastname.'</p>'; |
||||
|
$body .= '<p>'. get_string('comment', 'enrol_apply') .': '.$applydescription.'</p>'; |
||||
|
if ($standarduserfields) { |
||||
|
$body .= '<p><strong>'. get_string('user_profile', 'enrol_apply').'</strong></p>'; |
||||
|
$body .= '<p>'. get_string('firstname') .': '.$standarduserfields->firstname.'</p>'; |
||||
|
$body .= '<p>'. get_string('lastname') .': '.$standarduserfields->lastname.'</p>'; |
||||
|
$body .= '<p>'. get_string('email') .': '.$standarduserfields->email.'</p>'; |
||||
|
$body .= '<p>'. get_string('city') .': '.$standarduserfields->city.'</p>'; |
||||
|
$body .= '<p>'. get_string('country') .': '.$standarduserfields->country.'</p>'; |
||||
|
$body .= '<p>'. get_string('preferredlanguage') .': '.$standarduserfields->lang.'</p>'; |
||||
|
$body .= '<p>'. get_string('description') .': '.$standarduserfields->description_editor['text'].'</p>'; |
||||
|
|
||||
|
$body .= '<p>'. get_string('firstnamephonetic') .': '.$standarduserfields->firstnamephonetic.'</p>'; |
||||
|
$body .= '<p>'. get_string('lastnamephonetic') .': '.$standarduserfields->lastnamephonetic.'</p>'; |
||||
|
$body .= '<p>'. get_string('middlename') .': '.$standarduserfields->middlename.'</p>'; |
||||
|
$body .= '<p>'. get_string('alternatename') .': '.$standarduserfields->alternatename.'</p>'; |
||||
|
$body .= '<p>'. get_string('url') .': '.$standarduserfields->url.'</p>'; |
||||
|
$body .= '<p>'. get_string('icqnumber') .': '.$standarduserfields->icq.'</p>'; |
||||
|
$body .= '<p>'. get_string('skypeid') .': '.$standarduserfields->skype.'</p>'; |
||||
|
$body .= '<p>'. get_string('aimid') .': '.$standarduserfields->aim.'</p>'; |
||||
|
$body .= '<p>'. get_string('yahooid') .': '.$standarduserfields->yahoo.'</p>'; |
||||
|
$body .= '<p>'. get_string('msnid') .': '.$standarduserfields->msn.'</p>'; |
||||
|
$body .= '<p>'. get_string('idnumber') .': '.$standarduserfields->idnumber.'</p>'; |
||||
|
$body .= '<p>'. get_string('institution') .': '.$standarduserfields->institution.'</p>'; |
||||
|
$body .= '<p>'. get_string('department') .': '.$standarduserfields->department.'</p>'; |
||||
|
$body .= '<p>'. get_string('phone') .': '.$standarduserfields->phone1.'</p>'; |
||||
|
$body .= '<p>'. get_string('phone2') .': '.$standarduserfields->phone2.'</p>'; |
||||
|
$body .= '<p>'. get_string('address') .': '.$standarduserfields->address.'</p>'; |
||||
|
} |
||||
|
|
||||
|
if ($extrauserfields) { |
||||
|
foreach ($extrauserfields as $key => $value) { |
||||
|
$body .= '<p>'. $key .': '.$value.'</p>'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$body .= '<p>'. html_writer::link($manageurl, get_string('applymanage', 'enrol_apply')).'</p>'; |
||||
|
|
||||
|
return $body; |
||||
|
} |
||||
|
} |
@ -1,155 +0,0 @@ |
|||||
<?php |
|
||||
// This file is part of Moodle - http://moodle.org/ |
|
||||
// |
|
||||
// Moodle is free software: you can redistribute it and/or modify |
|
||||
// it under the terms of the GNU General Public License as published by |
|
||||
// the Free Software Foundation, either version 3 of the License, or |
|
||||
// (at your option) any later version. |
|
||||
// |
|
||||
// Moodle is distributed in the hope that it will be useful, |
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// GNU General Public License for more details. |
|
||||
// |
|
||||
// You should have received a copy of the GNU General Public License |
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
|
||||
|
|
||||
/** |
|
||||
* Auxiliary manual user enrolment lib, the main purpose is to lower memory requirements... |
|
||||
* |
|
||||
* @package enrol |
|
||||
* @subpackage manual |
|
||||
* @copyright 2010 Petr Skoda {@link http://skodak.org} |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
||||
*/ |
|
||||
|
|
||||
defined('MOODLE_INTERNAL') || die(); |
|
||||
|
|
||||
require_once($CFG->dirroot . '/user/selector/lib.php'); |
|
||||
|
|
||||
/** |
|
||||
* Enrol candidates |
|
||||
*/ |
|
||||
class enrol_apply_potential_participant extends user_selector_base { |
|
||||
protected $enrolid; |
|
||||
|
|
||||
public function __construct($name, $options) { |
|
||||
$this->enrolid = $options['enrolid']; |
|
||||
parent::__construct($name, $options); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Candidate users |
|
||||
* @param <type> $search |
|
||||
* @return array |
|
||||
*/ |
|
||||
public function find_users($search) { |
|
||||
global $DB; |
|
||||
//by default wherecondition retrieves all users except the deleted, not confirmed and guest |
|
||||
list($wherecondition, $params) = $this->search_sql($search, 'u'); |
|
||||
$params['enrolid'] = $this->enrolid; |
|
||||
|
|
||||
$fields = 'SELECT ' . $this->required_fields_sql('u'); |
|
||||
$countfields = 'SELECT COUNT(1)'; |
|
||||
|
|
||||
$sql = " FROM {user} u |
|
||||
WHERE $wherecondition |
|
||||
AND u.id NOT IN (SELECT ue.userid |
|
||||
FROM {user_enrolments} ue |
|
||||
JOIN {enrol} e ON (e.id = ue.enrolid AND e.id = :enrolid))"; |
|
||||
|
|
||||
$order = ' ORDER BY u.lastname ASC, u.firstname ASC'; |
|
||||
|
|
||||
if (!$this->is_validating()) { |
|
||||
$potentialmemberscount = $DB->count_records_sql($countfields . $sql, $params); |
|
||||
if ($potentialmemberscount > 100) { |
|
||||
return $this->too_many_results($search, $potentialmemberscount); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
$availableusers = $DB->get_records_sql($fields . $sql . $order, $params); |
|
||||
|
|
||||
if (empty($availableusers)) { |
|
||||
return array(); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
if ($search) { |
|
||||
$groupname = get_string('enrolcandidatesmatching', 'enrol', $search); |
|
||||
} else { |
|
||||
$groupname = get_string('enrolcandidates', 'enrol'); |
|
||||
} |
|
||||
|
|
||||
return array($groupname => $availableusers); |
|
||||
} |
|
||||
|
|
||||
protected function get_options() { |
|
||||
$options = parent::get_options(); |
|
||||
$options['enrolid'] = $this->enrolid; |
|
||||
$options['file'] = 'enrol/apply/selectlib.php'; |
|
||||
return $options; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Enroled users |
|
||||
*/ |
|
||||
class enrol_apply_current_participant extends user_selector_base { |
|
||||
protected $courseid; |
|
||||
protected $enrolid; |
|
||||
|
|
||||
public function __construct($name, $options) { |
|
||||
$this->enrolid = $options['enrolid']; |
|
||||
parent::__construct($name, $options); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* Candidate users |
|
||||
* @param <type> $search |
|
||||
* @return array |
|
||||
*/ |
|
||||
public function find_users($search) { |
|
||||
global $DB; |
|
||||
//by default wherecondition retrieves all users except the deleted, not confirmed and guest |
|
||||
list($wherecondition, $params) = $this->search_sql($search, 'u'); |
|
||||
$params['enrolid'] = $this->enrolid; |
|
||||
|
|
||||
$fields = 'SELECT ' . $this->required_fields_sql('u'); |
|
||||
$countfields = 'SELECT COUNT(1)'; |
|
||||
|
|
||||
$sql = " FROM {user} u |
|
||||
JOIN {user_enrolments} ue ON (ue.userid = u.id AND ue.enrolid = :enrolid) |
|
||||
WHERE $wherecondition"; |
|
||||
|
|
||||
$order = ' ORDER BY u.lastname ASC, u.firstname ASC'; |
|
||||
|
|
||||
if (!$this->is_validating()) { |
|
||||
$potentialmemberscount = $DB->count_records_sql($countfields . $sql, $params); |
|
||||
if ($potentialmemberscount > 100) { |
|
||||
return $this->too_many_results($search, $potentialmemberscount); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
$availableusers = $DB->get_records_sql($fields . $sql . $order, $params); |
|
||||
|
|
||||
if (empty($availableusers)) { |
|
||||
return array(); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
if ($search) { |
|
||||
$groupname = get_string('enrolledusersmatching', 'enrol', $search); |
|
||||
} else { |
|
||||
$groupname = get_string('enrolledusers', 'enrol'); |
|
||||
} |
|
||||
|
|
||||
return array($groupname => $availableusers); |
|
||||
} |
|
||||
|
|
||||
protected function get_options() { |
|
||||
$options = parent::get_options(); |
|
||||
$options['enrolid'] = $this->enrolid; |
|
||||
$options['file'] = 'enrol/apply/locallib.php'; |
|
||||
return $options; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,3 @@ |
|||||
|
.enrol_apply_waitinglist_highlight { |
||||
|
border-left: 6px solid grey; |
||||
|
} |
@ -1,98 +0,0 @@ |
|||||
<?php |
|
||||
/** |
|
||||
* ************************************************************************* |
|
||||
* * Apply Enrol ** |
|
||||
* ************************************************************************* |
|
||||
* @copyright emeneo.com ** |
|
||||
* @link emeneo.com ** |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later ** |
|
||||
* ************************************************************************* |
|
||||
* ************************************************************************ |
|
||||
*/ |
|
||||
/** |
|
||||
* Unenrol a user who was enrolled through a self enrolment. |
|
||||
* |
|
||||
* @package enrol |
|
||||
* @subpackage self |
|
||||
* @copyright 2011 Sam Hemelryk |
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|
||||
*/ |
|
||||
|
|
||||
require('../../config.php'); |
|
||||
require_once("$CFG->dirroot/enrol/locallib.php"); |
|
||||
require_once("$CFG->dirroot/enrol/renderer.php"); |
|
||||
|
|
||||
$ueid = required_param('ue', PARAM_INT); // user enrolment id |
|
||||
$filter = optional_param('ifilter', 0, PARAM_INT); |
|
||||
$confirm = optional_param('confirm', false, PARAM_BOOL); |
|
||||
|
|
||||
// Get the user enrolment object |
|
||||
$ue = $DB->get_record('user_enrolments', array('id' => $ueid), '*', MUST_EXIST); |
|
||||
// Get the user for whom the enrolment is |
|
||||
$user = $DB->get_record('user', array('id'=>$ue->userid), '*', MUST_EXIST); |
|
||||
// Get the course the enrolment is to |
|
||||
//list($ctxsql, $ctxjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx'); |
|
||||
$ctxsql = context_helper::get_preload_record_columns_sql('ctx'); |
|
||||
$sql = "SELECT c.*, $ctxsql |
|
||||
FROM {course} c |
|
||||
LEFT JOIN {enrol} e ON e.courseid = c.id |
|
||||
LEFT JOIN {context} ctx ON (ctx.instanceid = c.id AND ctx.contextlevel = :contextcourse) |
|
||||
WHERE e.id = :enrolid"; |
|
||||
$params = array('enrolid' => $ue->enrolid, 'contextcourse' => CONTEXT_COURSE); |
|
||||
$course = $DB->get_record_sql($sql, $params, MUST_EXIST); |
|
||||
context_helper::preload_from_record($course); |
|
||||
|
|
||||
|
|
||||
// Make sure it's not the front page |
|
||||
if ($course->id == SITEID) { |
|
||||
redirect(new moodle_url('/')); |
|
||||
} |
|
||||
|
|
||||
// Obviously |
|
||||
require_login($course); |
|
||||
// Make sure the user can unenrol users. |
|
||||
require_capability("enrol/apply:unenrol", context_course::instance($course->id)); |
|
||||
|
|
||||
// Get the enrolment manager for this course |
|
||||
$manager = new course_enrolment_manager($PAGE, $course, $filter); |
|
||||
// Get an enrolment users table object. Doign this will automatically retrieve the the URL params |
|
||||
// relating to table the user was viewing before coming here, and allows us to return the user to the |
|
||||
// exact page of the users screen they can from. |
|
||||
$table = new course_enrolment_users_table($manager, $PAGE); |
|
||||
|
|
||||
// The URL of the enrolled users page for the course. |
|
||||
$usersurl = new moodle_url('/enrol/users.php', array('id' => $course->id)); |
|
||||
// The URl to return the user too after this screen. |
|
||||
$returnurl = new moodle_url($usersurl, $manager->get_url_params()+$table->get_url_params()); |
|
||||
// The URL of this page |
|
||||
$url = new moodle_url('/enrol/apply/unenroluser.php', $returnurl->params()); |
|
||||
$url->param('ue', $ueid); |
|
||||
|
|
||||
$PAGE->set_url($url); |
|
||||
$PAGE->set_pagelayout('admin'); |
|
||||
navigation_node::override_active_url($usersurl); |
|
||||
|
|
||||
list($instance, $plugin) = $manager->get_user_enrolment_components($ue); |
|
||||
if (!$plugin->allow_unenrol($instance) || $instance->enrol != 'apply' || !($plugin instanceof enrol_apply_plugin)) { |
|
||||
print_error('erroreditenrolment', 'enrol'); |
|
||||
} |
|
||||
|
|
||||
// If the unenrolment has been confirmed and the sesskey is valid unenrol the user. |
|
||||
if ($confirm && confirm_sesskey() && $manager->unenrol_user($ue)) { |
|
||||
redirect($returnurl); |
|
||||
} |
|
||||
|
|
||||
$yesurl = new moodle_url($PAGE->url, array('confirm'=>1, 'sesskey'=>sesskey())); |
|
||||
$message = get_string('unenroluser', 'enrol_self', array('user' => fullname($user, true), 'course' => format_string($course->fullname))); |
|
||||
$fullname = fullname($user); |
|
||||
$title = get_string('unenrol', 'enrol_self'); |
|
||||
|
|
||||
$PAGE->set_title($title); |
|
||||
$PAGE->set_heading($title); |
|
||||
$PAGE->navbar->add($title); |
|
||||
$PAGE->navbar->add($fullname); |
|
||||
|
|
||||
echo $OUTPUT->header(); |
|
||||
echo $OUTPUT->heading($fullname); |
|
||||
echo $OUTPUT->confirm($message, $yesurl, $returnurl); |
|
||||
echo $OUTPUT->footer(); |
|
Loading…
Reference in new issue