/**
     * 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);
    }
Example #2
0
/**
 * 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&amp;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");
}
Example #4
0
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');
}