/**
  * 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();
         }
     }
 }