You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							157 lines
						
					
					
						
							6.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							157 lines
						
					
					
						
							6.4 KiB
						
					
					
				| <?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('self'); | |
| 
 | |
|         $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); | |
|         } | |
|          | |
|         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; | |
|     } | |
| } |