Esempio n. 1
0
File: utf8.php Progetto: rair/yacs
 /**
  * transcode arrays recursively
  *
  * @param array the variable to convert
  * @return converted object (which is also the input array)
  */
 public static function to_xml_recursively(&$input)
 {
     global $context;
     // sanity check
     if (!is_array($input)) {
         return utf8::to_xml($input);
     }
     // process all attributes
     foreach ($input as $name => $value) {
         if (is_array($value)) {
             $input[$name] = utf8::to_xml_recursively($value);
         } else {
             $input[$name] = utf8::to_xml($value);
         }
     }
     return $input;
 }
Esempio n. 2
0
 /**
  * the URL to start and to join the meeting
  *
  * @see overlays/events/start.php
  *
  * @return string the URL to redirect the user to the meeting, or NULL on error
  */
 function get_start_url()
 {
     global $context;
     // almost random passwords
     $this->initialize_passwords();
     // parameters to create a meeting
     $parameters = array();
     // use page id as meeting id
     $parameters[] = 'name=' . urlencode($this->attributes['id']);
     $parameters[] = 'meetingID=' . urlencode($this->attributes['id']);
     // surfer name, as authenticated by yacs
     $parameters[] = 'fullName=' . urlencode(Surfer::get_name());
     // moderator password
     $parameters[] = 'moderatorPW=' . urlencode($this->moderator_password);
     // participant password
     $parameters[] = 'attendeePW=' . urlencode($this->attendee_password);
     // ensure that the bridge number fits in the dialing plan
     $parameters[] = 'voiceBridge=' . urlencode(substr('7' . $this->attributes['id'] . '1234', 0, 5));
     // message displayed within the BigBlueButton session
     $welcome = '';
     // meeting title
     if (is_object($this->anchor)) {
         $welcome .= sprintf(i18n::s('%s: %s'), i18n::s('Title'), $this->anchor->get_title()) . "\n";
     }
     // meeting date
     if (isset($this->attributes['date_stamp'])) {
         $welcome .= sprintf(i18n::s('%s: %s'), i18n::s('Date'), Skin::build_date($this->attributes['date_stamp'], 'standalone')) . "\n";
     }
     // meeting duration
     if (isset($this->attributes['duration'])) {
         $welcome .= sprintf(i18n::s('%s: %s'), i18n::s('Duration'), $this->attributes['duration'] . ' ' . i18n::s('minutes')) . "\n";
     }
     // build a link to the owner page, if any
     if (is_object($this->anchor) && ($user = Users::get($this->anchor->get_value('owner_id')))) {
         $welcome .= sprintf(i18n::s('%s: %s'), i18n::s('Chairman'), $user['full_name']) . "\n";
     }
     // welcome message
     $parameters[] = 'welcome=' . urlencode($welcome);
     // return URL
     if (is_callable(array($this->anchor, 'get_url'))) {
         $parameters[] = 'logoutURL=' . urlencode($context['url_to_home'] . $context['url_to_root'] . $this->anchor->get_url());
     }
     // should we record this session?
     if ($this->with_session_recording()) {
         $parameters[] = 'record=true';
         $parameters[] = 'duration=125';
         // 2 hours max per recording
     }
     // link to create the meeting
     $url = $this->build_link('create', $parameters);
     // list most recent files that have been attached to this page
     $headers = NULL;
     $body = NULL;
     if (is_object($this->anchor) && ($files = Files::list_by_date_for_anchor($this->anchor->get_reference(), 0, 5, 'raw'))) {
         $headers = array("Content-Type: text/xml");
         // instruct the presentation module to pre-load these files
         $body = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<modules>' . "\n" . '	<module name="presentation">' . "\n";
         // list web address of each file
         foreach ($files as $file) {
             $body .= "\t\t" . '<document' . ' url="' . $context['url_to_home'] . $context['url_to_root'] . utf8::to_xml(Files::get_url($file['id'], 'fetch', $file['file_name'])) . '"' . ' name="' . utf8::to_xml($file['file_name']) . '"' . ' />' . "\n";
         }
         // end of the list of files
         $body .= '   </module>' . "\n" . '</modules>' . "\n";
     }
     // do create the meeting
     if (($response = http::proceed_natively($url, $headers, $body)) && ($xml = simplexml_load_string($response)) && $xml->returncode == 'SUCCESS') {
         // parameters to join the meeting
         $parameters = array();
         // use page id as meeting id
         $parameters[] = 'meetingID=' . urlencode($xml->meetingID);
         // surfer name, as authenticated by yacs
         $parameters[] = 'fullName=' . urlencode(Surfer::get_name());
         // moderator password
         $parameters[] = 'password='******'join', $parameters);
         return $url;
     }
     // problem, darling!
     return NULL;
 }
Esempio n. 3
0
 /**
  * encode some PHP value into XML
  *
  * This function tries to guess the adequate type to use.
  * Following types are supported:
  * - array
  * - base64 - type has to be set explicitly for the encoding to take place
  * - boolean
  * - date - type has to be set explicitly to get a &lt;dateTime.iso8601> element
  * - double
  * - integer
  * - struct
  * - string - type has to be set explicitly for the encoding to take place
  *
  * @param mixed the parameter to encode
  * @param type, if any
  * @return string some XML
  */
 public static function encode($parameter, $type = '')
 {
     // a date
     if ($type == 'date') {
         if (is_string($parameter)) {
             $parameter = strtotime($parameter);
         }
         $items = getdate($parameter);
         return '<dateTime.iso8601>' . sprintf('%02d%02d%02dT%02d:%02d:%02d', $items['year'], $items['mon'], $items['mday'], $items['hours'], $items['minutes'], $items['seconds']) . '</dateTime.iso8601>';
     }
     // base 64
     if ($type == 'base64') {
         return '<base64>' . base64_encode($parameter) . '</base64>';
     }
     // a string --also fix possible errors in HTML image references
     if ($type == 'string') {
         return '<string>' . utf8::to_xml(preg_replace('|<img (.+?[^/])>|mi', '<img $1 />', $parameter)) . '</string>';
     }
     // a boolean
     if ($parameter === true || $parameter === false) {
         return '<boolean>' . ($parameter ? '1' : '0') . '</boolean>';
     }
     // an integer
     if (is_integer($parameter)) {
         return '<int>' . $parameter . '</int>';
     }
     // a double
     if (is_double($parameter)) {
         return '<double>' . $parameter . '</double>';
     }
     // an array
     if (is_array($parameter)) {
         // it's a struct
         if (key($parameter)) {
             $text = '';
             foreach ($parameter as $name => $value) {
                 $text .= "\t" . '<member><name>' . $name . '</name><value>' . XML_RPC_Codec::encode($value) . "</value></member>\n";
             }
             return '<struct>' . "\n" . $text . '</struct>';
             // else it's a plain array
         } else {
             $text = '';
             foreach ($parameter as $item) {
                 $text .= "\t" . '<value>' . XML_RPC_Codec::encode($item) . "</value>\n";
             }
             if ($text) {
                 return '<array><data>' . "\n" . $text . '</data></array>';
             } else {
                 return '<array><data /></array>';
             }
         }
     }
     // encode strings
     if (is_string($parameter) && ($parameter = trim($parameter)) && substr($parameter, 0, 1) != '<') {
         return '<string>' . utf8::to_xml(preg_replace('|<img (.+?[^/])>|mi', '<img $1 />', $parameter)) . '</string>';
     }
     // do not encode possibly encoded strings
     return $parameter;
 }