/** * send a message type 6 to the server and read the answer * @param int $uid unique identifier for the zone * @param string $lms the label of the zone * @param string $title the room title * @param datetime $start_date room start datetime (Y-m-d H:i:s) * @param datetime $end_date room end datetime (Y-m-d H:i:s) * @param string $descr the room description * @param string $logo the absolute url of the logo * @param int $bookable if set to 1 the room can be booked; just a flag for module frontend * @param int $capacity highest number of users in chat if bookable. * * @return array return an array * array( errorcode => int, errormessage => string, roomid => int ) */ function updateRoom($roomid, $uid, $title, $start_date, $end_date, $descr = false, $logo = false, $capacity = 1, $bookable = 0) { $bw_code = Get::user_acceptlang(); $gmt = date('P'); $gmt_split = explode(':', $gmt); $gmt_offset = (int) $gmt_split[0]; $teleskill_room_id = $this->getRoomId($roomid); $request = '' . '<?xml version="1.0" encoding="utf-8"?' . '> <ews type="6" lang="' . $bw_code . '"> <clientcode>' . Get::sett('code_teleskill') . '</clientcode> <roomid>' . $teleskill_room_id . '</roomid> <startdate>' . date('Y-m-d H:i:s', $start_date - $gmt_offset * 3600) . '</startdate> <enddate>' . date('Y-m-d H:i:s', $end_date - $gmt_offset * 3600) . '</enddate> <title>' . $title . '</title> <callbackurl>' . getSiteBaseUrl() . '/appLms/modules/conference/log.server.php' . '</callbackurl>'; if ($descr != false) { $request .= ' <descr>' . $descr . '</descr>'; } if ($logo != false) { $request .= ' <logo>' . $logo . '</logo>'; } $request .= ' <users>' . $capacity . '</users>'; $request .= '</ews>'; $xml_answer = trim($this->_sendXmlRequest($request)); if ($xml_answer === false || $xml_answer === '') { return array('errorcode' => -1, 'errormessage' => '', 'roomid' => ''); } $dom_answer = new DoceboDOMDocument(); $dom_answer->loadXML($xml_answer); $dlist_code = $dom_answer->getElementsByTagName('errorcode'); $dlist_msg = $dom_answer->getElementsByTagName('errormessage'); $dnode_code = $dlist_code->item(0); $dnode_msg = $dlist_msg->item(0); $e_code = $dnode_code->textContent; $e_msg = $dnode_msg->textContent; $meetinghours = ($end_date - $start_date) / 3600; if ($e_code == 0) { //save in database the roomid for user login $update_room = "\r\n\t\t\tUPDATE " . $GLOBALS['prefix_scs'] . "_room\r\n\t\t\tSET name = '" . $title . "',\r\n\t\t\t\tstarttime = '" . $start_date . "',\r\n\t\t\t\tendtime = '" . $end_date . "',\r\n\t\t\t\tbookable = '" . $bookable . "',\r\n\t\t\t\tmaxparticipants = '" . $capacity . "',\r\n\t\t\t\tmeetinghours = '" . $meetinghours . "'\r\n\t\t\tWHERE idSt = '" . $uid . "'\r\n\t\t\t\tAND id = '" . $roomid . "'"; $re = $this->_query($update_room); if (!$re) { //the room record isn't saved ... } } return array('errorcode' => $e_code, 'errormessage' => $e_msg); }
/** * Replaces any site base url (see the getSiteBaseUrl function) * with the {site_base_url} tag. * example: www.mysite.com/test/appCore -> {site_base_url}/appCore */ function putSiteBaseUrlTag($text) { $base_url = getSiteBaseUrl(); $text = str_replace($base_url, "{site_base_url}", $text); return $text; }
function send_newsletter($send_id) { checkPerm('view'); require_once _base_ . '/lib/lib.json.php'; $json = new Services_JSON(); $path = '/appCore/newsletter/'; //access control $nl_sendpercycle = $GLOBALS["framework"]["nl_sendpercycle"]; //-TP// funAdminAccess('OP'); //@set_time_limit(60*15); // 15 minutes! $out =& $GLOBALS['page']; $out->setWorkingZone("content"); $lang =& DoceboLanguage::createInstance('admin_newsletter', 'framework'); $out->add(getTitleArea($lang->def("_NEWSLETTER"), "newsletter")); $out->add("<div class=\"std_block\">\n"); $info = get_send_info($send_id); $sel_groups = $info["sel_groups"]; $sel_lang = $info["sel_lang"]; $tot = $info["tot"]; $sub = $info["sub"]; $msg = $info["msg"]; $msg = str_replace("{site_base_url}", getSiteBaseUrl(), $msg); $fromemail = $info["fromemail"]; $file_array = $json->decode($info['file']); $attach = array(); foreach ($file_array as $file) { $attach[] = '../files' . $path . $file; } $cycle = (int) $_GET["cycle"]; // Items per cycle $ipc = $nl_sendpercycle; if (($cycle + 1) * $ipc < $tot) { $sendcomplete = 0; } else { $sendcomplete = 1; } $limit = $cycle * $ipc . ", " . $ipc; $arr_st = getSendToIdst($send_id, $limit); $acl_manager = Docebo::user()->getAclManager(); if (!empty($sel_lang) && $sel_lang != _ANY_LANG_CODE) { $user_info = $acl_manager->getUsersByLanguage($sel_lang, $arr_st); } else { // Send to all languages $user_info = $acl_manager->getUsers($arr_st); } $send_type = $info["send_type"]; switch ($send_type) { case "email": $tempemail = array(); foreach ($user_info as $info) { // collect recipients email addresses: ------------------------------ $email = $info[ACL_INFO_EMAIL]; if ($email != "") { $tempemail[] = $email; } // ---------------------------------------------- } //send all mails require_once _base_ . '/lib/lib.mailer.php'; $mailer = DoceboMailer::getInstance(); if (count($attach)) { $mailer->SendMail($fromemail, $tempemail, $sub, $msg, $attach, array(MAIL_REPLYTO => $fromemail, MAIL_SENDER_ACLNAME => false)); } else { $mailer->SendMail($fromemail, $tempemail, $sub, $msg, false, array(MAIL_REPLYTO => $fromemail, MAIL_SENDER_ACLNAME => false)); } break; case "sms": // Collect users sms numbers require_once $GLOBALS["where_framework"] . "/lib/lib.field.php"; $acl_man =& Docebo::user()->getACLManager(); $field_man = new FieldList(); $arr_sms_recipients = array(); $send_to_field = Get::sett('sms_cell_num_field'); $users_sms = $field_man->showFieldForUserArr($arr_st, array($send_to_field)); $users_info = $acl_man->getUsers($arr_st); while (list(, $user_dett) = each($users_info)) { // recover media setting $idst_user = $user_dett[ACL_INFO_IDST]; if ($users_sms[$idst_user][$send_to_field] != '') { $arr_sms_recipients[$idst_user] = $users_sms[$idst_user][$send_to_field]; } } require_once $GLOBALS["where_framework"] . "/lib/lib.sms.php"; $sms_manager = new SmsManager(); $sms_manager->sendSms($msg, $arr_sms_recipients); break; } if ($sendcomplete) { require_once _base_ . '/lib/lib.upload.php'; if (count($attach)) { foreach ($attach as $file) { sl_open_fileoperations(); sl_unlink(str_replace('../files', '', $file)); sl_close_fileoperations(); } } $url = "index.php?modname=public_newsletter_admin&op=complete"; Util::jump_to($url); } else { $url = "index.php?modname=public_newsletter_admin&op=pause&ipc=" . $ipc . "&cycle=" . ($cycle + 1) . "&id_send=" . $send_id; Util::jump_to($url); } $out->add("</div><br />\n"); $out->add("<form action=\"index.php?modname=public_newsletter_admin&op=newsletter\" method=\"post\">\n"); $out->add("<div class=\"std_block\">\n" . '<input type="hidden" id="authentic_request_pubr" name="authentic_request" value="' . Util::getSignature() . '" />'); $out->add("<input class=\"button\" type=\"submit\" value=\"" . $lang->def("_BACK") . "\" />\n"); $out->add("</div>\n"); $out->add("</form>\n"); }
function wikiPdfExport($wiki_id, $all) { $cwp =& cwpSetup($wiki_id); $query = "SELECT title" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki" . " WHERE wiki_id = '" . $wiki_id . "'"; list($wiki_title) = sql_fetch_row(sql_query($query)); $pages_selected = $_POST['page']; $page_code_array = array(); $query = "SELECT page_code" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki_page"; if ($all) { $query .= " WHERE wiki_id = '" . $wiki_id . "'"; } else { $query .= " WHERE page_id IN (" . implode(',', $pages_selected) . ")"; } $result = sql_query($query); while (list($page_code) = sql_fetch_row($result)) { $page_code_array[] = $page_code; } $query = "SELECT p.page_id, p.page_code, i.title, r.content" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki_page as p" . " JOIN " . $GLOBALS['prefix_fw'] . "_wiki_page_info as i ON p.page_id = i.page_id" . " JOIN " . $GLOBALS['prefix_fw'] . "_wiki_revision as r ON p.page_id = r.page_id"; if ($all) { $query .= " WHERE p.wiki_id = '" . $wiki_id . "'"; } else { $query .= " WHERE p.page_id IN (" . implode(',', $pages_selected) . ")"; } $query .= " AND i.version = r.version" . " AND i.language = '" . $cwp->getWikiLanguage($wiki_id) . "'" . " AND r.language = '" . $cwp->getWikiLanguage($wiki_id) . "'" . " ORDER BY p.page_path"; $html = ''; $result = sql_query($query); while (list($page_id, $page_code, $title, $content) = sql_fetch_row($result)) { $content = str_replace('{site_base_url}', getSiteBaseUrl(), $content); $html .= '<div style="page-break-after:always">' . '<a name="' . $page_code . '"><h2>' . htmlentities($title, ENT_COMPAT, 'UTF-8') . '</h2></a>' . $cwp->parseWikiLinks($content, true, $page_code_array) . '</div>'; } $html = '<html><head>' . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . '<style>' . 'body {font-family: helvetica;' . 'margin: 30px 30px 30px 30px;}' . '</style>' . '</hedad><body>' . $html . '</body></html>'; require_once _base_ . '/lib/lib.download.php'; sendStrAsFile($html, getCleanTitle($wiki_title, 60) . '.html', 'utf-8'); }