Select Git revision
-
DFNVC authored
Meetings können nicht mehr versehentlich gelöscht werden, falls noch Aufzeichnungen enthalten sind. Neue Veranstalter-Löschfunktion für Aufzeichungen. Eine Adobe-Connect-Aktivität kann nicht mehr erzeugt werden, wenn die angegebene Meeting-URL bereits existiert.
DFNVC authoredMeetings können nicht mehr versehentlich gelöscht werden, falls noch Aufzeichnungen enthalten sind. Neue Veranstalter-Löschfunktion für Aufzeichungen. Eine Adobe-Connect-Aktivität kann nicht mehr erzeugt werden, wenn die angegebene Meeting-URL bereits existiert.
connect_class_dom.php 5.24 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
*/
require_once('connect_class.php');
class connect_class_dom extends connect_class {
public function __construct($serverurl = '', $serverport = '',
$username = '', $password = '',
$cookie = '', $https) {
parent::__construct($serverurl, $serverport, $username, $password, $cookie, $https);
}
public function create_request($params = array(), $sentrequest = true) {
if (empty($params)) {
return false;
}
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('params');
$dom->appendChild($root);
foreach($params as $key => $data) {
// DFNVC
// htmlentities() durch htmlspecialchars() ersetzt,
// damit auch Nutzer agelegt werden können, deren Namen
// Umlaute enthalten.
//
$datahtmlent = htmlspecialchars($data);
$child = $dom->createElement('param', $datahtmlent);
$root->appendChild($child);
$attribute = $dom->createAttribute('name');
$child->appendChild($attribute);
$text = $dom->createTextNode($key);
$attribute->appendChild($text);
}
$this->_xmlrequest = $dom->saveXML();
if ($sentrequest) {
$this->_xmlresponse = $this->send_request();
}
}
/**
* Parses through xml and looks for the 'cookie' parameter
* @param string $xml the xml to parse through
* @return string $sessoin returns the session id
*/
public function read_cookie_xml($xml = '') {
global $USER, $COURSE, $CFG;
if (empty($xml)) {
if (is_siteadmin($USER->id)) {
notice(get_string('adminemptyxml', 'adobeconnect'),
$CFG->wwwroot . '/admin/settings.php?section=modsettingadobeconnect');
} else {
notice(get_string('emptyxml', 'adobeconnect'),
'', $COURSE);
}
}
$dom = new DomDocument();
$dom->loadXML($xml);
$domnodelist = $dom->getElementsByTagName('cookie');
if (isset($domnodelist->item(0)->nodeValue)) {
$this->_cookie = $domnodelist->item(0)->nodeValue;
} else {
$this->_cookie = null;
}
}
public function call_success() {
global $USER, $COURSE, $CFG;
if (empty($this->_xmlresponse)) {
if (is_siteadmin($USER->id)) {
notice(get_string('adminemptyxml', 'adobeconnect'),
$CFG->wwwroot . '/admin/settings.php?section=modsettingadobeconnect');
} else {
notice(get_string('emptyxml', 'adobeconnect'),
'', $COURSE);
}
}
$dom = new DomDocument();
$dom->loadXML($this->_xmlresponse);
$domnodelist = $dom->getElementsByTagName('status');
if ($domnodelist->item(0)->hasAttributes()) {
$domnode = $domnodelist->item(0)->attributes->getNamedItem('code');
if (!is_null($domnode)) {
if (0 == strcmp('ok', $domnode->nodeValue)) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
private function create_http_head_login_xml() {
$params = array('action' => 'login',
'external-auth' => 'use',
);
$this->create_request($params, false);
}
public function user_session_cookie_old($username = '') {
global $CFG;
$header = array();
$params = array('action' => 'lms-user-login',
'login' => $username,
);
$this->create_request($params, true);
$data = $this->_xmlresponse;
$sessionval = false;
$sessionstart = strpos($data, 'BREEZESESSION=');
if (false !== $sessionstart) {
$sessionend = strpos($data, ';');
$sessionlength = strlen('BREEZESESSION=');
$sessionvallength = $sessionend - ($sessionstart + $sessionlength);
$sessionval = substr($data, $sessionstart+$sessionlength, $sessionvallength);
return $sessionval;
}
else {
return false;
}
}
public function user_session_cookie($username = '') {
global $CFG;
$header = array();
$params = array('action' => 'lms-user-login',
'login' => $username,
);
$this->create_request($params, true);
if ($this->call_success()) {
$xmldoc = new DomDocument();
$xmldoc->loadXML($this->_xmlresponse);
$xpath = new DomXpath($xmldoc);
$cookie = $xpath->query("//cookie")->item(0)->nodeValue;
return $cookie;
}
else {
return false;
}
}
}