Merge with 1.10.x

remotes/angel/1.11.x
jmontoyaa 9 years ago
commit cb73e6d214
  1. 4
      app/Migrations/Schema/V110/Version20150609113500.php
  2. 4
      app/Migrations/Schema/V110/Version20150616093200.php
  3. 4
      app/Migrations/Schema/V110/Version20150624164100.php
  4. 4
      app/Migrations/Schema/V110/Version20150625155000.php
  5. 4
      documentation/installation_guide.html
  6. 4
      documentation/installation_guide_es_ES.html
  7. 4
      documentation/installation_guide_fr_FR.html
  8. 22
      main/auth/lostPassword.php
  9. 6
      main/document/download_scorm.php
  10. 2
      main/forum/index.php
  11. 9
      main/inc/lib/formvalidator/Element/receivers.php
  12. 26
      main/inc/lib/login.lib.php
  13. 2
      main/inc/lib/message.lib.php
  14. 18
      main/newscorm/learnpathItem.class.php
  15. 13
      main/newscorm/lp_content.php
  16. 6
      main/newscorm/lp_controller.php
  17. 46
      main/newscorm/scorm.class.php
  18. 11
      main/upload/form.scorm.php
  19. 40
      main/upload/index.php
  20. 2
      plugin/bbb/lib/bbb_api.php

@ -17,8 +17,8 @@ class Version20150609113500 extends AbstractMigrationChamilo
public function up(Schema $schema)
{
$this->addSql("INSERT INTO extra_field
(extra_field_type, field_type, variable, display_text, visible, changeable)
VALUES (2, 10, 'tags', 'Tags', 1, 1)");
(extra_field_type, field_type, variable, display_text, visible, changeable, created_at)
VALUES (2, 10, 'tags', 'Tags', 1, 1, NOW())");
}
/**

@ -17,8 +17,8 @@ class Version20150616093200 extends AbstractMigrationChamilo
public function up(Schema $schema)
{
$this->addSql("INSERT INTO extra_field (
extra_field_type, field_type, variable, display_text, visible, changeable)
VALUES (2, 19, 'video_url', 'VideoUrl', 1, 1)");
extra_field_type, field_type, variable, display_text, visible, changeable, created_at)
VALUES (2, 19, 'video_url', 'VideoUrl', 1, 1, NOW())");
}
/**

@ -17,8 +17,8 @@ class Version20150624164100 extends AbstractMigrationChamilo
public function up(Schema $schema)
{
$this->addSql("INSERT INTO extra_field
(extra_field_type, field_type, variable, display_text, visible, changeable)
VALUES (3, 16, 'image', 'Image', 1, 1)");
(extra_field_type, field_type, variable, display_text, visible, changeable, created_at)
VALUES (3, 16, 'image', 'Image', 1, 1, NOW())");
}
/**

@ -17,8 +17,8 @@ class Version20150625155000 extends AbstractMigrationChamilo
public function up(Schema $schema)
{
$this->addSql("INSERT INTO extra_field
(extra_field_type, field_type, variable, display_text, visible, changeable)
VALUES (1, 1, 'captcha_blocked_until_date', 'Account locked until', 0, 0)");
(extra_field_type, field_type, variable, display_text, visible, changeable, created_at)
VALUES (1, 1, 'captcha_blocked_until_date', 'Account locked until', 0, 0, NOW())");
}
/**

@ -701,7 +701,8 @@ If you have issues with files taking a long time to download, make sure you reco
location / {
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/badge/(\d+)/user/(\d+)$ /main/badge/issued.php?skill=$1&user=$2 last;
try_files $uri @rewrite;
}
@ -717,7 +718,6 @@ If you have issues with files taking a long time to download, make sure you reco
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite "^/badge/(\d{1,})/user/(\d{1,})$" main/badge/issued.php?skill=$1&user=$2 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

@ -694,7 +694,8 @@ por ejemplo. El efecto debería ser inmediato.
location / {
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/badge/(\d+)/user/(\d+)$ /main/badge/issued.php?skill=$1&user=$2 last;
try_files $uri @rewrite;
}
@ -710,7 +711,6 @@ por ejemplo. El efecto debería ser inmediato.
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite "^/badge/(\d{1,})/user/(\d{1,})$" main/badge/issued.php?skill=$1&user=$2 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

@ -760,7 +760,8 @@ Ce sont uniquement les redirections à placer dans un bloc server{}, comme les a
location / {
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/badge/(\d+)/user/(\d+)$ /main/badge/issued.php?skill=$1&user=$2 last;
try_files $uri @rewrite;
}
@ -776,7 +777,6 @@ Ce sont uniquement les redirections à placer dans un bloc server{}, comme les a
rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite "^/badge/(\d{1,})/user/(\d{1,})$" main/badge/issued.php?skill=$1&user=$2 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

@ -45,7 +45,7 @@ if ($reset && $userId) {
}
Display::addFlash(
Display::return_message($messageText)
Display::return_message($messageText, 'info', false)
);
header('Location: ' . api_get_path(WEB_PATH));
exit;
@ -72,7 +72,7 @@ if ($form->validate()) {
}
Display::addFlash(
Display::return_message($messageText, 'error')
Display::return_message($messageText, 'error', false)
);
header('Location: ' . api_get_self());
exit;
@ -92,7 +92,15 @@ if ($form->validate()) {
}
Display::addFlash(
Display::return_message($messageText)
Display::return_message($messageText, 'info', false)
);
header('Location: ' . api_get_path(WEB_PATH));
exit;
}
if ($user['auth_source'] == 'extldap') {
Display::addFlash(
Display::return_message(get_lang('CouldNotResetPasswordBecauseLDAP'), 'info', false)
);
header('Location: ' . api_get_path(WEB_PATH));
exit;
@ -101,11 +109,9 @@ if ($form->validate()) {
$userResetPasswordSetting = api_get_setting('user_reset_password');
if ($userResetPasswordSetting === 'true') {
$user = Database::getManager()
->getRepository('ChamiloUserBundle:User')
->find($user['uid']);
$userObj = Database::getManager()->getRepository('ChamiloUserBundle:User')->find($user['uid']);
Login::sendResetEmail($user, true);
Login::sendResetEmail($userObj, true);
if (CustomPages::enabled() && CustomPages::exists(CustomPages::INDEX_UNLOGGED)) {
CustomPages::display(
@ -130,7 +136,7 @@ if ($form->validate()) {
}
Display::addFlash(
Display::return_message($messageText)
Display::return_message($messageText, 'info', false)
);
header('Location: ' . api_get_path(WEB_PATH));
exit;

@ -27,21 +27,19 @@ if (isset($_SESSION['oLP'])) {
api_not_allowed();
}
//If is visible for the current user
// If is visible for the current user
if (!learnpath::is_lp_visible_for_student($obj->get_id(), api_get_user_id())) {
api_not_allowed();
}
$doc_url = isset($_GET['doc_url']) ? $_GET['doc_url'] : null;
// Change the '&' that got rewritten to '///' by mod_rewrite back to '&'
$doc_url = str_replace('///', '&', $doc_url);
// Still a space present? it must be a '+' (that got replaced by mod_rewrite)
$doc_url = str_replace(' ', '+', $doc_url);
$doc_url = str_replace(array('../', '\\..', '\\0', '..\\'), array('', '', '', ''), $doc_url); //echo $doc_url;
if (strpos($doc_url,'../') OR strpos($doc_url,'/..')) {
if (strpos($doc_url,'../') || strpos($doc_url,'/..')) {
$doc_url = '';
}

@ -508,7 +508,7 @@ if (is_array($forumCategories)) {
$html .= '</div>';
$html .= '</div>';
$iconEmpty='';
$iconEmpty = '';
// The number of topics and posts.
if ($forum['forum_of_group'] !== '0') {

@ -26,13 +26,13 @@ class HTML_QuickForm_receivers extends HTML_QuickForm_group
* @param array $attributes This should contain the keys 'receivers' and
* 'receivers_selected'
*/
function HTML_QuickForm_receivers($elementName = null, $elementLabel = null, $attributes = null)
public function __construct($elementName = null, $elementLabel = null, $attributes = null)
{
$this->receivers = $attributes['receivers'];
$this->receivers_selected = $attributes['receivers_selected'];
unset($attributes['receivers']);
unset($attributes['receivers_selected']);
$this->HTML_QuickForm_element($elementName, $elementLabel, $attributes);
parent::__construct($elementName, $elementLabel, $attributes);
$this->_persistantFreeze = true;
$this->_appendName = true;
$this->_type = 'receivers';
@ -51,7 +51,7 @@ class HTML_QuickForm_receivers extends HTML_QuickForm_group
/**
* HTML representation
*/
function toHtml()
public function toHtml()
{
include_once ('HTML/QuickForm/Renderer/Default.php');
$this->_separator = '<br/>';
@ -63,10 +63,11 @@ class HTML_QuickForm_receivers extends HTML_QuickForm_group
$js = $this->getElementJS();
return $renderer->toHtml().$js;
}
/**
* Get the necessary javascript
*/
function getElementJS()
public function getElementJS()
{
$js = "<script type=\"text/javascript\">
/* <![CDATA[ */

@ -155,7 +155,7 @@ class Login
);
$email_admin = api_get_setting('emailAdministrator');
$email_body = nl2br($email_body);
$result = @api_mail_html(
'',
$email_to,
@ -245,7 +245,8 @@ class Login
firstname AS firstName,
username AS loginName,
password,
email
email,
auth_source
FROM " . $tbl_user . "
WHERE user_id = $id";
$result = Database::query($sql);
@ -253,6 +254,11 @@ class Login
if ($result && $num_rows > 0) {
$user = Database::fetch_array($result);
if ($user['auth_source'] == 'extldap') {
return get_lang('CouldNotResetPassword');
}
} else {
return get_lang('CouldNotResetPassword');
}
@ -853,8 +859,19 @@ class Login
}
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$query = "SELECT user_id AS uid, lastname AS lastName, firstname AS firstName, username AS loginName, password, email,
status AS status, official_code, phone, picture_uri, creator_id
$query = "SELECT
user_id AS uid,
lastname AS lastName,
firstname AS firstName,
username AS loginName,
password,
email,
status AS status,
official_code,
phone,
picture_uri,
creator_id,
auth_source
FROM $tbl_user
WHERE ( $condition AND active = 1) ";
$result = Database::query($query);
@ -862,6 +879,7 @@ class Login
if ($result && $num_rows > 0) {
return Database::fetch_assoc($result);
}
return false;
}
}

@ -438,7 +438,7 @@ class MessageManager
$receiver_user_id,
$subject,
$message,
[],
$_FILES ? $_FILES : [],
[],
null,
null,

@ -2153,8 +2153,10 @@ class learnpathItem
// (looking for less-inclusives first).
if ($prereqs_string == '_true_') {
return true;
}
if ($prereqs_string == '_false_') {
if (empty($this->prereq_alert)) {
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
@ -2211,6 +2213,7 @@ class learnpathItem
$refs_list,
$user_id
);
if (!$andstatus) {
if (self::debug > 1) {
error_log(
@ -2234,9 +2237,11 @@ class learnpathItem
if (empty($this->prereq_alert) && !$returnstatus) {
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
}
return $returnstatus;
}
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
return false;
}
} else {
@ -2245,6 +2250,7 @@ class learnpathItem
if (self::debug > 1) {
error_log('New LP - Didnt find any AND, looking for =', 0);
}
if (strpos($prereqs_string, '=') !== false) {
if (self::debug > 1) {
error_log('New LP - Found =, looking into it', 0);
@ -2255,7 +2261,7 @@ class learnpathItem
// Right number of operands.
if (isset($items[$refs_list[$params[0]]])) {
$status = $items[$refs_list[$params[0]]]->get_status(true);
$returnstatus = ($status == $params[1]);
$returnstatus = $status == $params[1];
if (empty($this->prereq_alert) && !$returnstatus) {
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
}
@ -2274,6 +2280,7 @@ class learnpathItem
0
);
}
if (strpos($prereqs_string, '<>') !== false) {
if (self::debug > 1) {
error_log('New LP - Found <>, looking into it', 0);
@ -2284,7 +2291,7 @@ class learnpathItem
// Right number of operands.
if (isset($items[$refs_list[$params[0]]])) {
$status = $items[$refs_list[$params[0]]]->get_status(true);
$returnstatus = ($status != $params[1]);
$returnstatus = $status != $params[1];
if (empty($this->prereq_alert) && !$returnstatus) {
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
}
@ -2292,6 +2299,7 @@ class learnpathItem
return $returnstatus;
}
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
return false;
}
} else {
@ -2432,7 +2440,7 @@ class learnpathItem
foreach ($list as $cond) {
if (isset($items[$refs_list[$cond]])) {
$status = $items[$refs_list[$cond]]->get_status(true);
if ($status == $this->possible_status[2] OR
if ($status == $this->possible_status[2] ||
$status == $this->possible_status[3]
) {
$mycond = true;
@ -2604,6 +2612,7 @@ class learnpathItem
$returnstatus = false;
}
}
return $returnstatus;
} else {
$status = $items[$refs_list[$prereqs_string]]->get_status(false);
@ -2745,12 +2754,13 @@ class learnpathItem
}
if (isset($items[$refs_list[$list[0]]])) {
$status = $items[$refs_list[$list[0]]]->get_status(true);
$returnstatus = (($status == 'completed') || ($status == 'passed'));
$returnstatus = $status == 'completed' || $status == 'passed';
if (!$returnstatus && empty($this->prereq_alert)) {
$this->prereq_alert = get_lang(
'LearnpathPrereqNotCompleted'
);
}
return $returnstatus;
}
}

@ -17,7 +17,7 @@ if (empty($lp_controller_touched)) {
if ($debug > 0) {
error_log('New lp - In lp_content.php - Redirecting to lp_controller', 0);
}
header('location: lp_controller.php?action=content&lp_id='.Security::remove_XSS($_REQUEST['lp_id']).'&item_id='.Security::remove_XSS($_REQUEST['item_id']).'&'.api_get_cidreq());
header('location: lp_controller.php?action=content&lp_id='.intval($_REQUEST['lp_id']).'&item_id='.intval($_REQUEST['item_id']).'&'.api_get_cidreq());
exit;
}
$_SESSION['oLP']->error = '';
@ -37,11 +37,12 @@ $list = $_SESSION['oLP']->get_toc();
$dokeos_chapter = false;
foreach ($list as $toc) {
if ($toc['id'] == $lp_item_id && ($toc['type'] == 'dokeos_chapter' || $toc['type'] == 'dokeos_module' || $toc['type'] == 'dir')) {
if ($toc['id'] == $lp_item_id &&
($toc['type'] == 'dokeos_chapter' || $toc['type'] == 'dokeos_module' || $toc['type'] == 'dir')
) {
$dokeos_chapter = true;
}
}
if ($dokeos_chapter) {
$src = 'blank.php';
} else {
@ -63,6 +64,7 @@ if ($dokeos_chapter) {
case 2:
$_SESSION['oLP']->stop_previous_item();
$prereq_check = $_SESSION['oLP']->prerequisites_match($lp_item_id);
if ($prereq_check === true) {
$src = $_SESSION['oLP']->get_link('http', $lp_item_id);
$_SESSION['oLP']->start_current_item(); // starts time counter manually if asset
@ -103,7 +105,10 @@ if (!empty($gradebook) && $gradebook == 'view') {
}
// Define the 'doc.inc.php' as language file.
$nameTools = $_SESSION['oLP']->get_name();
$interbreadcrumb[] = array('url' => './lp_list.php', 'name' => get_lang('Doc'));
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'newscorm/lp_list.php?'.api_get_cidreq(),
'name' => get_lang('Doc'),
);
// Update global setting to avoid displaying right menu.
$save_setting = api_get_setting('show_navigation_menu');
global $_setting;

@ -1121,10 +1121,12 @@ switch ($action) {
if (!$lp_found) {
error_log('New LP - No learnpath given for content', 0);
require 'lp_list.php';
}
else {
} else {
if ($debug > 0) error_log('New LP - save_last()', 0);
$_SESSION['oLP']->save_last();
if ($debug > 0) error_log('New LP - set_current_item()', 0);
$_SESSION['oLP']->set_current_item($_GET['item_id']);
if ($debug > 0) error_log('New LP - start_current_item()', 0);
$_SESSION['oLP']->start_current_item();
require 'lp_content.php';
}

@ -306,15 +306,43 @@ class scorm extends learnpath
$row = Database::fetch_array($res_max);
$dsp = $row[0] + 1;
}
$myname = $oOrganization->get_name();
$myname = api_utf8_decode($myname);
$sql = "INSERT INTO $new_lp (c_id, lp_type, name, ref, description, path, force_commit, default_view_mod, default_encoding, js_lib,display_order, session_id, use_max_score)" .
"VALUES ($courseId , 2,'".$myname."', '".$oOrganization->get_ref()."','','".$this->subdir."', 0, 'embedded', '".$this->manifest_encoding."', 'scorm_api.php', $dsp, $sessionId, $userMaxScore)";
if ($this->debug > 1) { error_log('New LP - In import_manifest(), inserting path: '. $sql, 0); }
Database::query($sql);
$lp_id = Database::insert_id();
$myname = api_utf8_decode($oOrganization->get_name());
$now = api_get_utc_datetime();
$params = [
'c_id' => $courseId,
'lp_type' => 2,
'name' => $myname,
'ref' => $oOrganization->get_ref(),
'description' => '',
'path' => $this->subdir,
'force_commit' => 0,
'default_view_mod' => 'embedded',
'default_encoding' => $this->manifest_encoding,
'js_lib' => 'scorm_api.php',
'display_order' => $dsp,
'session_id' => $sessionId,
'use_max_score' => $userMaxScore,
'content_maker' => '',
'content_license' => '',
'debug' => 0,
'theme' => '',
'preview_image' => '',
'author' => '',
'prerequisite' => 0,
'hide_toc_frame' => 0,
'seriousgame_mode' => 0,
'autolaunch' => 0,
'category_id' => 0,
'max_attempts' => 0,
'subscribe_users' => 0,
'created_on' => $now,
'modified_on' => $now,
'publicated_on' => $now
];
$lp_id = Database::insert($new_lp, $params);
if ($lp_id) {
$sql = "UPDATE $new_lp SET id = iid WHERE iid = $lp_id";

@ -37,21 +37,25 @@ function get_zip_files_in_garbage() {
* Just display the form needed to upload a SCORM and give its settings
*/
$nameTools = get_lang("FileUpload");
$interbreadcrumb[] = array("url" => "../newscorm/lp_controller.php?action=list", "name" => get_lang("ToolLearnpath"));
$interbreadcrumb[] = array(
"url" => api_get_path(WEB_CODE_PATH)."newscorm/lp_controller.php?action=list?".api_get_cidreq(),
"name" => get_lang("ToolLearnpath"),
);
Display::display_header($nameTools, "Path");
require_once '../newscorm/content_makers.inc.php';
require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php';
echo '<div class="actions">';
echo '<a href="../newscorm/lp_controller.php?cidReq='.$_course['sysCode'].'">'.
echo '<a href="'.api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'">'.
Display::return_icon('back.png', get_lang('ReturnToLearningPaths'), '', ICON_SIZE_MEDIUM).'</a>';
echo '</div>';
$form = new FormValidator(
'',
'POST',
'upload.php',
'upload.php?'.api_get_cidreq(),
'',
array(
'id' => "upload_form",
@ -129,5 +133,4 @@ Display::display_normal_message(
);
$form->display();
// footer
Display::display_footer();

@ -15,35 +15,26 @@
* @package chamilo.upload
*/
/**
* INIT SECTION
*/
// global settings initialisation
// also provides access to main api (inc/lib/main_api.lib.php)
require_once '../inc/global.inc.php';
$htmlHeadXtra[] =
"<script type=\"text/javascript\">
<!-- //
$_course = api_get_course_info();
$htmlHeadXtra[] = "<script>
function check_unzip() {
if(document.upload.unzip.checked){
document.upload.if_exists[0].disabled=true;
document.upload.if_exists[1].checked=true;
document.upload.if_exists[2].disabled=true;
}
else {
document.upload.if_exists[0].checked=true;
document.upload.if_exists[0].disabled=false;
document.upload.if_exists[2].disabled=false;
document.upload.if_exists[0].disabled=true;
document.upload.if_exists[1].checked=true;
document.upload.if_exists[2].disabled=true;
} else {
document.upload.if_exists[0].checked=true;
document.upload.if_exists[0].disabled=false;
document.upload.if_exists[2].disabled=false;
}
}
// -->
</script>";
//$is_allowed_to_edit = api_is_allowed_to_edit();
$is_allowed_to_edit = api_is_allowed_to_edit(null,true);
if(!$is_allowed_to_edit){
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
if (!$is_allowed_to_edit) {
api_not_allowed(true);
}
@ -78,7 +69,6 @@ Event::event_access_tool(TOOL_UPLOAD);
/**
* Prepare the header
*/
$htmlHeadXtra[] = '<script language="javascript" src="../inc/lib/javascript/upload.js" type="text/javascript"></script>';
$htmlHeadXtra[] = '<script type="text/javascript">
var myUpload = new upload(0);
@ -89,13 +79,13 @@ $htmlHeadXtra[] = '<script type="text/javascript">
*/
switch ($my_tool) {
case TOOL_LEARNPATH:
require('form.scorm.php');
require 'form.scorm.php';
break;
//the following cases need to be distinguished later on
case TOOL_DROPBOX:
case TOOL_STUDENTPUBLICATION:
case TOOL_DOCUMENT:
default:
require('form.document.php');
default :
require 'form.document.php';
break;
}

@ -213,7 +213,7 @@ class BigBlueButtonBN {
'meetingID='.urlencode($this->_meetingId).
'&fullName='.urlencode($this->_username).
'&password='.urlencode($this->_password).
'&userID='.urlencode($joinParams['userId']).
'&userID='.urlencode($joinParams['userID']).
'&webVoiceConf='.urlencode($joinParams['webVoiceConf']);
// Only use createTime if we really want to use it. If it's '', then don't pass it:
if (((isset($joinParams['createTime'])) && ($joinParams['createTime'] != ''))) {

Loading…
Cancel
Save