Skip to content
Snippets Groups Projects
Select Git revision
  • d91e60c58e7fc0295a008e0023d41aa89b73e4fe
  • master default protected
  • 4xx_dev
  • 33_STABLE
  • excel-export-evaluation
  • 2022050502
  • 2022050501
  • 2022021501
  • 2022021500
9 results

local_hsh.php

Blame
  • mod_form.php 10.23 KiB
    <?php
    /**
     * @package mod
     * @subpackage adobeconnect
     * @author Akinsaya Delamarre (adelamarre@remote-learner.net)
     * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
     */
    
    if (!defined('MOODLE_INTERNAL')) {
        die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
    }
    
    require_once($CFG->dirroot.'/course/moodleform_mod.php');
    require_once($CFG->dirroot.'/mod/adobeconnect/locallib.php');
    
    class mod_adobeconnect_mod_form extends moodleform_mod {
    
        function definition() {
    
            global $COURSE, $CFG;
            $mform =& $this->_form;
    
            /// Adding the "general" fieldset, where all the common settings are showed
            $mform->addElement('header', 'general', get_string('general', 'form'));
    
    
            /// Adding the standard "name" field
            $mform->addElement('text', 'name', get_string('adobeconnectname', 'adobeconnect'), array('size'=>'64'));
            if (!empty($CFG->formatstringstriptags)) {
                $mform->setType('name', PARAM_TEXT);
            } else {
                $mform->setType('name', PARAM_CLEANHTML);
            }
            $mform->addRule('name', null, 'required', null, 'client');
            $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
    
            /// Adding the required "intro" field to hold the description of the instance
            $this->add_intro_editor(false, get_string('adobeconnectintro', 'adobeconnect'));
    
    //        $mform->addElement('htmleditor', 'intro', get_string('adobeconnectintro', 'adobeconnect'));
    //        $mform->setType('intro', PARAM_RAW);
    //        $mform->addRule('intro', get_string('required'), 'required', null, 'client');
    //        $mform->setHelpButton('intro', array('writing', 'richtext'), false, 'editorhelpbutton');
    
    /// Adding "introformat" field
    //        $mform->addElement('format', 'introformat', get_string('format'));
    //-------------------------------------------------------------------------------
    /// Adding the rest of adobeconnect settings, spreeading all them into this fieldset
    /// or adding more fieldsets ('header' elements) if needed for better logic
    
            $mform->addElement('header', 'adobeconnectfieldset', get_string('adobeconnectfieldset', 'adobeconnect'));
    
            // Meeting URL
            $attributes=array('size'=>'20');
            $mform->addElement('text', 'meeturl', get_string('meeturl', 'adobeconnect'), $attributes);
            $mform->setType('meeturl', PARAM_PATH);
            $mform->addHelpButton('meeturl', 'meeturl', 'adobeconnect');
    //        $mform->addHelpButton('meeturl', array('meeturl', get_string('meeturl', 'adobeconnect'), 'adobeconnect'));
            $mform->disabledIf('meeturl', 'tempenable', 'eq', 0);
    
            // Public or private meeting
            $meetingpublic = array(1 => get_string('public', 'adobeconnect'), 0 => get_string('private', 'adobeconnect'));
            $mform->addElement('select', 'meetingpublic', get_string('meetingtype', 'adobeconnect'), $meetingpublic);
            $mform->addHelpButton('meetingpublic', 'meetingtype', 'adobeconnect');
    //        $mform->addHelpButton('meetingpublic', array('meetingtype', get_string('meetingtype', 'adobeconnect'), 'adobeconnect'));
    
            // Meeting Template
            $templates = array();
            $templates = $this->get_templates();
            ksort($templates);
            $mform->addElement('select', 'templatescoid', get_string('meettemplates', 'adobeconnect'), $templates);
            $mform->addHelpButton('templatescoid', 'meettemplates', 'adobeconnect');
    //        $mform->addHelpButton('templatescoid', array('templatescoid', get_string('meettemplates', 'adobeconnect'), 'adobeconnect'));
            $mform->disabledIf('templatescoid', 'tempenable', 'eq', 0);
    
    
            $mform->addElement('hidden', 'tempenable');
            $mform->setType('type', PARAM_INT);
    
            // Start and end date selectors
            $time       = time();
            $starttime  = usertime($time);
            $mform->addElement('date_time_selector', 'starttime', get_string('starttime', 'adobeconnect'));
            $mform->addElement('date_time_selector', 'endtime', get_string('endtime', 'adobeconnect'));
            $mform->setDefault('endtime', strtotime('+2 hours', $starttime));
    
    
    
    //-------------------------------------------------------------------------------
            // add standard elements, common to all modules
            $this->standard_coursemodule_elements(array('groups' => true));
    
            // Disabled the group mode if the meeting has already been created
            $mform->disabledIf('groupmode', 'tempenable', 'eq', 0);
    //-------------------------------------------------------------------------------
            // add standard buttons, common to all modules
            $this->add_action_buttons();
    
        }
    
        function data_preprocessing(&$default_values) {
            global $CFG, $DB;
    
            if (array_key_exists('update', $default_values)) {
    
                $params = array('instanceid' => $default_values['id']);
                $sql = "SELECT id FROM {adobeconnect_meeting_groups} WHERE ".
                       "instanceid = :instanceid";
    
                if ($DB->record_exists_sql($sql, $params)) {
                    $default_values['tempenable'] = 0;
                }
            }
        }
    
        function validation($data, $files) {
            global $CFG, $DB;
    
            $errors = parent::validation($data, $files);
    
            $aconnect = aconnect_login();
    
            // Search for a Meeting with the same starting name.  It will cause a duplicate
            // meeting name (and error) when the user begins to add participants to the meeting
            //
            // DFNVC
            //
            $meetfldscoid = aconnect_get_meeting_folder($aconnect);
            //
            //
            $filter = array('filter-like-name' => $data['name']);
            $namematches = aconnect_meeting_exists($aconnect, $meetfldscoid, $filter);
    
            if (empty($namematches)) {
                $namematches = array();
            }
            
            // Now search for existing meeting room URLs
            $url = $data['meeturl'];
            $url = $data['meeturl'] = adobeconnect_clean_meet_url($data['meeturl']);
    
            // Check to see if there are any trailing slashes or additional parts to the url
            // ex. mymeeting/mysecondmeeting/  Only the 'mymeeting' part is valid
            if ((0 != substr_count($url, '/')) and (false !== strpos($url, '/', 1))) {
                $errors['meeturl'] = get_string('invalidadobemeeturl', 'adobeconnect');
            }
    
            if (empty($urlmatches)) {
                $urlmatches = array();
            }
            else {
                // format url for comparison
                if ((false === strpos($url, '/')) or (0 != strpos($url, '/'))) {
                    $url = '/' . $url;
                }
            }
    
            // Check URL for correct length and format
            if (strlen($data['meeturl']) > 60) {
                $errors['meeturl'] = get_string('longurl', 'adobeconnect');
            } elseif (empty($data['meeturl'])) {
                // Do nothing
            } elseif (!preg_match('/^[a-z][a-z\-]*/i', $data['meeturl'])) {
                $errors['meeturl'] = get_string('invalidurl', 'adobeconnect');
            }
    
    
            if (empty($data['update'])) {
                //
                // Adding activity
                //
                if ($data['starttime'] == $data['endtime']) {
                    $errors['starttime'] = get_string('samemeettime', 'adobeconnect');
                    $errors['endtime'] = get_string('samemeettime', 'adobeconnect');
                } elseif ($data['endtime'] < $data['starttime']) {
                    $errors['starttime'] = get_string('greaterstarttime', 'adobeconnect');
                }
    
                // Check for local activities with the same name
                $params = array('name' => $data['name']);
                if ($DB->record_exists('adobeconnect', $params)) {
                    $errors['name'] = get_string('duplicatemeetingname', 'adobeconnect');
                    return $errors;
                }
    
                // Check Adobe connect server for duplicated names
                foreach($namematches as $matchkey => $match) {
                    if (0 == substr_compare($match->name, $data['name'] . '_', 0, strlen($data['name'] . '_'), false)) {
                        $errors['name'] = get_string('duplicatemeetingname', 'adobeconnect');
                    }
                }
    
                if (aconnect_urlpath_exists($aconnect, $url)) {
                    $errors['meeturl'] = get_string('duplicateurl', 'adobeconnect');
                }
                
            } else {
                // Updating activity
                // Look for existing meeting names, excluding this activity's group meeting(s)
                $params = array('instanceid' => $data['instance']);
                $sql = "SELECT meetingscoid, groupid FROM {adobeconnect_meeting_groups} ".
                       " WHERE instanceid = :instanceid";
    
                $grpmeetings = $DB->get_records_sql($sql, $params);
    
                if (empty($grpmeetings)) {
                    $grpmeetings = array();
                }
    
                foreach($namematches as $matchkey => $match) {
                    if (!array_key_exists($match->scoid, $grpmeetings)) {
                        if (0 == substr_compare($match->name, $data['name'] . '_', 0, strlen($data['name'] . '_'), false)) {
                            $errors['name'] = get_string('duplicatemeetingname', 'adobeconnect');
                        }
                    }
                }
    
                if (aconnect_urlpath_exists($aconnect, $url)) {
                    $errors['meeturl'] = get_string('duplicateurl', 'adobeconnect');
                }
                
                // Validate start and end times
                if ($data['starttime'] == $data['endtime']) {
                    $errors['starttime'] = get_string('samemeettime', 'adobeconnect');
                    $errors['endtime'] = get_string('samemeettime', 'adobeconnect');
                } elseif ($data['endtime'] < $data['starttime']) {
                    $errors['starttime'] = get_string('greaterstarttime', 'adobeconnect');
                }
            }
    
            aconnect_logout($aconnect);
    
            return $errors;
        }
    
        function get_templates() {
            $aconnect = aconnect_login();
    
            $templates_meetings = aconnect_get_templates_meetings($aconnect);
            aconnect_logout($aconnect);
            return $templates_meetings;
        }
    
    }