// Code to view the passed webex.
require '../../config.php';
require_once $CFG->libdir . '/completionlib.php';
$id = optional_param('id', 0, PARAM_INT);
// Course module ID.
$action = optional_param('action', false, PARAM_ALPHA);
$view = optional_param('view', false, PARAM_ALPHA);
$error = false;
// WebEx response codes.
$webexres = array();
$webexres['AT'] = optional_param('AT', false, PARAM_ALPHA);
$webexres['ST'] = optional_param('ST', false, PARAM_ALPHA);
$webexres['RS'] = optional_param('RS', false, PARAM_ALPHA);
$cm = get_coursemodule_from_id('webexactivity', $id, 0, false, MUST_EXIST);
$webexrecord = $DB->get_record('webexactivity', array('id' => $cm->instance), '*', MUST_EXIST);
$webexmeeting = \mod_webexactivity\meeting::load($webexrecord);
$webex = new \mod_webexactivity\webex();
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
// Basic completion tracking.
$completion = new completion_info($course);
$completion->set_module_viewed($cm);
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/webexactivity:view', $context);
$canhost = has_capability('mod/webexactivity:hostmeeting', $context);
$returnurl = new moodle_url('/mod/webexactivity/view.php', array('id' => $id));
$PAGE->set_url($returnurl);
// Errors from the WebEx URL API docs.
if ($webexres['ST'] === 'FAIL') {
    $error = true;
    if ($webexres['AT'] === 'JM') {
/**
 * Delete a WebEx instance.
 *
 * @param int   $id     Record id to delete.
 * @return bool
 */
function webexactivity_delete_instance($id)
{
    $meeting = \mod_webexactivity\meeting::load($id);
    return $meeting->delete();
}
 /**
  * Check and update open sessions/meetings from WebEx.
  *
  * @return bool  True on success, false on failure.
  */
 public function update_open_sessions()
 {
     global $DB;
     $xml = type\base\xml_gen::list_open_sessions();
     $response = $this->get_response($xml);
     if ($response === false) {
         return false;
     }
     $processtime = time();
     $cleartime = $processtime - 60;
     if (is_array($response) && isset($response['ep:services'])) {
         foreach ($response['ep:services'] as $service) {
             foreach ($service['#']['ep:sessions'] as $session) {
                 $session = $session['#'];
                 $meetingkey = $session['ep:sessionKey'][0]['#'];
                 if ($meetingrecord = $DB->get_record('webexactivity', array('meetingkey' => $meetingkey))) {
                     if ($meetingrecord->status !== self::WEBEXACTIVITY_STATUS_IN_PROGRESS) {
                         $meeting = meeting::load($meetingrecord);
                         $meeting->status = self::WEBEXACTIVITY_STATUS_IN_PROGRESS;
                         $meeting->laststatuscheck = $processtime;
                         $meeting->save();
                     }
                 }
             }
         }
     }
     $select = 'laststatuscheck < ? AND status = ?';
     $params = array('lasttime' => $cleartime, 'status' => self::WEBEXACTIVITY_STATUS_IN_PROGRESS);
     if ($meetings = $DB->get_records_select('webexactivity', $select, $params)) {
         foreach ($meetings as $meetingrecord) {
             $meeting = meeting::load($meetingrecord);
             $meeting->status = self::WEBEXACTIVITY_STATUS_STOPPED;
             $meeting->laststatuscheck = $processtime;
             $meeting->save();
         }
     }
 }