示例#1
0
function reservationSendMail()
{
    checkPerm('view');
    $lang =& DoceboLanguage::createInstance('reservation');
    $mod_perm = checkPerm('mod', true);
    $id_course = $_SESSION['idCourse'];
    $id_event = importVar('id_event', true, 0);
    $out = $GLOBALS['page'];
    $out->setWorkingZone('content');
    $man_res = new Man_Reservation();
    $acl_man =& Docebo::user()->getAclManager();
    if (isset($_POST['send_mail'])) {
        $recipients = $man_res->getEventUserMail($id_event);
        $subject = importVar('mail_object', false, '[Nessun Oggetto]');
        $body = importVar('mail_body', false, '');
        $info_user = $acl_man->getUser(getLogUserId());
        $sender = $info_user[ACL_INFO_EMAIL];
        //sendMail($recipients, $subject, $body, $sender);
        require_once _base_ . '/lib/lib.mailer.php';
        $mailer = DoceboMailer::getInstance();
        $mailer->SendMail($sender, $recipients, Lang::t('_MAIL_OBJECT', 'register'), $body, array(MAIL_REPLYTO => $sender, MAIL_SENDER_ACLNAME => false));
        Util::jump_to('index.php?modname=reservation&op=reservation&active_tab=events');
    } else {
        require_once _base_ . '/lib/lib.form.php';
        $out->add(getTitleArea($lang->def('_RESERVATION_MAIL_SEND') . '<div class="std_block">', 'content'));
        $out->add(Form::openForm('form_event', 'index.php?modname=reservation&amp;op=send_mail') . Form::openElementSpace() . Form::getTextfield($lang->def('_SUBJECT'), 'mail_object', 'mail_object', 255) . Form::getTextarea($lang->def('_MAIL_BODY'), 'mail_body', 'mail_body') . Form::getHidden('id_event', 'id_event', $id_event) . Form::closeElementSpace() . Form::openButtonSpace() . Form::getButton('send_mail', 'send_mail', $lang->def('_SEND_MAIL')) . Form::getButton('undo_mail', 'undo_mail', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>');
    }
}
 function show_report_LO($report_data = NULL, $other = '')
 {
     $jump_url = '';
     //show_report
     checkPerm('view');
     $lang =& DoceboLanguage::createInstance('report', 'framework');
     if (isset($_POST['send_mail_confirm'])) {
         $op = 'send_mail_confirm';
     } elseif (isset($_POST['send_mail'])) {
         $op = 'send_mail';
     } else {
         $op = 'show_result';
     }
     switch ($op) {
         case 'send_mail_confirm':
             $subject = importVar('mail_object', false, '[' . $lang->def('_SUBJECT') . ']');
             //'[No subject]');
             $body = importVar('mail_body', false, '');
             $acl_man = new DoceboACLManager();
             $user_info = $acl_man->getUser(getLogUserId(), false);
             if ($user_info) {
                 $sender = $user_info[ACL_INFO_EMAIL];
             }
             $mail_recipients = unserialize(urldecode(Get::req('mail_recipients', DOTY_STRING, '')));
             // prepare intestation for email
             $from = "From: " . $sender . $GLOBALS['mail_br'];
             $header = "MIME-Version: 1.0" . $GLOBALS['mail_br'] . "Content-type: text/html; charset=" . getUnicode() . $GLOBALS['mail_br'];
             $header .= "Return-Path: " . Get::sett('sender_event') . $GLOBALS['mail_br'];
             $header .= "Reply-To: " . Get::sett('sender_event') . $GLOBALS['mail_br'];
             $header .= "X-Sender: " . Get::sett('sender_event') . $GLOBALS['mail_br'];
             $header .= "X-Mailer: PHP/" . phpversion() . $GLOBALS['mail_br'];
             // send mail
             $arr_recipients = array();
             foreach ($mail_recipients as $recipient) {
                 $rec_data = $acl_man->getUser($recipient, false);
                 //mail($rec_data[ACL_INFO_EMAIL] , stripslashes($subject), stripslashes(nl2br($body)), $from.$header."\r\n");
                 $arr_recipients[] = $rec_data[ACL_INFO_EMAIL];
             }
             $mailer = DoceboMailer::getInstance();
             $mailer->SendMail($sender, $arr_recipients, stripslashes($subject), stripslashes(nl2br($body)));
             $result = getResultUi($lang->def('_OPERATION_SUCCESSFUL'));
             cout($this->_get_LO_query('html', NULL, $result));
             break;
         case 'send_mail':
             require_once _base_ . '/lib/lib.form.php';
             $mail_recipients = Get::req('mail_recipients', DOTY_MIXED, array());
             cout('' . Form::openElementSpace() . Form::getTextfield($lang->def('_SUBJECT'), 'mail_object', 'mail_object', 255) . Form::getTextarea($lang->def('_MAIL_BODY'), 'mail_body', 'mail_body') . Form::getHidden('mail_recipients', 'mail_recipients', urlencode(serialize($mail_recipients))) . Form::closeElementSpace() . Form::openButtonSpace() . Form::getButton('send_mail_confirm', 'send_mail_confirm', $lang->def('_SEND_MAIL')) . Form::getButton('undo_mail', 'undo_mail', $lang->def('_UNDO')) . Form::closeButtonSpace() . '</div>', 'content');
             break;
         default:
             cout($this->_get_LO_query('html', $report_data, $other));
     }
 }
        $tel = Get::req("help_req_tel", DOTY_STRING, "");
        $msg .= Lang::t('_PHONE', 'classroom') . ": " . $tel . $br_char;
        $msg .= $br_char . "----------------------------------" . $br_char;
        //$msg .= chelpCheckField(Get::req("help_req_txt", DOTY_STRING, ""));
        $msg .= Get::req("help_req_text", DOTY_STRING, "");
        $msg .= $br_char . "----------------------------------" . $br_char;
        /** Getting client info */
        $result = parse_user_agent();
        $msg .= $br_char . "---------- CLIENT INFO -----------" . $br_char;
        $msg .= "IP: " . $_SERVER['REMOTE_ADDR'] . $br_char;
        $msg .= "USER AGENT: " . $_SERVER['HTTP_USER_AGENT'] . $br_char;
        $msg .= "OS: " . $result['platform'] . $br_char;
        $msg .= "BROWSER: " . $result['browser'] . " " . $result['version'] . $br_char;
        $msg .= "RESOLUTION: " . Get::req("help_req_resolution", DOTY_STRING, "") . $br_char;
        $msg .= "FLASH: " . Get::req("help_req_flash_installed", DOTY_STRING, "") . $br_char;
        $mailer = new DoceboMailer();
        $mailer->IsHTML(true);
        $res = $mailer->SendMail($user_email, $help_email, $subject, $msg);
        $output = array('success' => $res);
        if (!$res) {
            $output['message'] = UIFeedback::perror(Lang::t('_OPERATION_FAILURE', 'menu'));
        }
        $json = new Services_JSON();
        aout($json->encode($output));
        break;
    default:
        break;
}
/**
 * Parses a user agent string into its important parts
 *
示例#4
0
            }
        }
    }
    //die(print_r($output, true));
    //prepare output
    return array_unique($output);
}
function adaptFileName($fname)
{
    return ereg_replace("[^A-Za-z0-9 ]", "_", $fname) . '_' . date('Y-m-d_H-i-s');
}
//******************************************************************************
require_once _base_ . '/lib/lib.upload.php';
docebo_cout('STARTING REPORT CRON ...<br /><br />');
require_once _base_ . '/lib/lib.mailer.php';
$mailer = DoceboMailer::getInstance();
require_once _base_ . '/lib/lib.json.php';
$json = new Services_JSON();
$path = _base_ . '/files/tmp/';
$qry = "SELECT * FROM %lms_report_filter";
$res = sql_query($qry);
sl_open_fileoperations();
while ($row = sql_fetch_assoc($res)) {
    $recipients = getReportRecipients($row['id_filter']);
    if (count($recipients) > 0) {
        $data = unserialize($row['filter_data']);
        $query_report = "SELECT class_name, file_name, report_name " . " FROM %lms_report " . " WHERE id_report = '" . $data['id_report'] . "'";
        $re_report = sql_query($query_report);
        if ($re_report && sql_num_rows($re_report)) {
            list($class_name, $file_name, $report_name) = sql_fetch_row($re_report);
            require_once _lms_ . '/admin/modules/report/' . $file_name;
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");
}
示例#6
0
 function _opt_in($options, $platform, $opt_link)
 {
     $social = new Social();
     $lang =& DoceboLanguage::createInstance('register', $platform);
     // Check for error
     $out = '';
     $error = $this->_checkField($_POST, $options, $platform, true);
     if ($error['error']) {
         $this->error = true;
         return '<div class="reg_err_data">' . $error['msg'] . '</div>';
     }
     // Insert temporary
     $random_code = md5($_POST['register']['userid'] . mt_rand() . mt_rand() . mt_rand());
     // register as temporary user and send mail
     $acl_man =& Docebo::user()->getAclManager();
     $iduser = $acl_man->registerTempUser($_POST['register']['userid'], $_POST['register']['firstname'], $_POST['register']['lastname'], $_POST['register']['pwd'], $_POST['register']['email'], $random_code);
     if ($iduser === false) {
         $out .= '<div class="reg_err_data">' . $lang->def('_OPERATION_FAILURE') . '</div>';
         $this->error = true;
         return $out;
     }
     // facebook register:
     if ($social->isActive('facebook')) {
         if (isset($_SESSION['fb_info']) && is_array($_SESSION['fb_info'])) {
             $social = new Social();
             $social->connectAccount('facebook', $_SESSION['fb_info']['id'], $iduser, true);
             unset($_SESSION['fb_info']);
         }
     }
     // ----
     // add base inscription policy
     $enrollrules = new EnrollrulesAlms();
     $enrollrules->newRules('_NEW_USER', array($iduser), Lang::get());
     // subscribe to groups -----------------------------------------
     if (isset($_POST['group_sel_implode'])) {
         $groups = explode(',', $_POST['group_sel_implode']);
         while (list(, $idst) = each($groups)) {
             $acl_man->addToGroup($idst, $iduser);
             // FORMA: added the inscription policy
             $enrollrules = new EnrollrulesAlms();
             $enrollrules->applyRulesMultiLang('_LOG_USERS_TO_GROUP', array((string) $iduser), false, (int) $idst, true);
             // END FORMA
         }
     }
     //if the user had enter a code we must check if there are folder related to it and add the folder's field
     $registration_code_type = Get::sett('registration_code_type', '0');
     $code_is_mandatory = Get::sett('mandatory_code', 'off') == 'on';
     $reg_code = Get::req('reg_code', DOTY_MIXED, '');
     if ($registration_code_type === 'custom') {
         $reg_code = 'change_by_custom_operation';
     }
     $array_folder = false;
     $uma = new UsermanagementAdm();
     $reg_code_res = $this->processRegistrationCode($acl_man, $uma, $iduser, $reg_code, $registration_code_type);
     if ($reg_code_res['success'] == false) {
         $acl_man->deleteTempUser($iduser);
         $this->error = true;
         return '<div class="reg_err_data">' . $reg_code_res['msg'] . '</div>';
     }
     // save language selected
     require_once _base_ . '/lib/lib.preference.php';
     $preference = new UserPreferences($iduser);
     $preference->setPreference('ui.language', Lang::get());
     // Save fields
     $extra_field = new FieldList();
     $extra_field->setFieldEntryTable($GLOBALS['prefix_fw'] . '_field_userentry');
     $extra_field->storeFieldsForUser($iduser);
     // Send mail
     $admin_mail = $options['mail_sender'];
     // FIX BUG 399
     //$link = str_replace('&amp;', '&', $opt_link.( strpos($opt_link, '?') === false ? '?' : '&' ).'random_code='.$random_code);
     $link = Get::sett('url', '') . 'index.php?modname=login&op=register_opt&random_code=' . $random_code;
     // END FIX BUG 399
     $text = $lang->def('_REG_MAIL_TEXT');
     $text = str_replace('[userid]', $_POST['register']['userid'], $text);
     $text = str_replace('[firstname]', $_POST['register']['firstname'], $text);
     $text = str_replace('[lastname]', $_POST['register']['lastname'], $text);
     $text = str_replace('[password]', $_POST['register']['pwd'], $text);
     $text = str_replace('[link]', '' . $link . '', $text);
     $text = str_replace('[hour]', $options['hour_request_limit'], $text);
     $text = stripslashes($text);
     //check register_type != self (include all previous cases except the new one "self without opt-in")
     if (strcmp($options['register_type'], 'self') != 0) {
         require_once _base_ . '/lib/lib.mailer.php';
         $mailer = DoceboMailer::getInstance();
         if (!$mailer->SendMail($admin_mail, $_POST['register']['email'], Lang::t('_MAIL_OBJECT', 'register'), $text, false, array(MAIL_REPLYTO => $admin_mail, MAIL_SENDER_ACLNAME => false))) {
             if ($registration_code_type == 'code_module') {
                 // ok, the registration has failed, let's remove the user association form the code
                 $code_manager = new CodeManager();
                 $code_manager->resetUserAssociation($code, $iduser);
             }
             $acl_man->deleteTempUser($iduser);
             $this->error = true;
             $out .= '<div class="reg_err_data">' . $lang->def('_OPERATION_FAILURE') . '</div>';
         } else {
             $out .= '<div class="reg_success">' . $lang->def('_REG_SUCCESS') . '</div>';
         }
     }
     //end
     $_GET['random_code'] = $random_code;
     $_GET['idst'] = $iduser;
     //check register_type = self
     if (strcmp($options['register_type'], 'self') == 0) {
         $text_self = $lang->def('_REG_MAIL_TEXT_SELF');
         $text_self = str_replace('[userid]', $_POST['register']['userid'], $text_self);
         $text_self = str_replace('[firstname]', $_POST['register']['firstname'], $text_self);
         $text_self = str_replace('[lastname]', $_POST['register']['lastname'], $text_self);
         $text_self = str_replace('[password]', $_POST['register']['pwd'], $text_self);
         require_once _base_ . '/lib/lib.mailer.php';
         $mailer = DoceboMailer::getInstance();
         if (!$mailer->SendMail($admin_mail, $_POST['register']['email'], Lang::t('_MAIL_OBJECT_SELF', 'register'), $text_self, false, false)) {
             $out .= '<div class="reg_err_data">' . $lang->def('_OPERATION_FAILURE') . '</div>';
         } else {
             $this->confirmRegister($this->_platform, $options);
             $out .= '<div class="reg_success">' . $lang->def('_REG_SUCCESS_SELF') . '</div>';
         }
     }
     //end
     return $out;
 }
示例#7
0
 function _sendMail($subject, $body, &$mail_recipients, &$users_info = false)
 {
     require_once _base_ . '/lib/lib.mailer.php';
     $mailer = DoceboMailer::getInstance();
     $acl_man = Docebo::user()->getAclManager();
     foreach ($mail_recipients as $id => $mail) {
         $base_body = $body;
         if (isset($users_info[$id])) {
             $base_body = str_replace(array('[firstname]', '[lastname]', '[username]'), array($users_info[$id][ACL_INFO_FIRSTNAME], $users_info[$id][ACL_INFO_LASTNAME], $acl_man->relativeId($users_info[$id][ACL_INFO_USERID])), $base_body);
         }
         $mailer->SendMail(Get::sett('sender_event'), $mail, $subject, $base_body, false, array(MAIL_REPLYTO => Get::sett('sender_event'), MAIL_SENDER_ACLNAME => false));
     }
 }