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&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 *
} } } //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&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 _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('&', '&', $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; }
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)); } }