function execute($options) { global $parametersMod; global $dbSite; global $log; global $site; if ($options->firstTimeThisMonth) { if ($parametersMod->getValue('community', 'user', 'options', 'delete_expired_users')) { $soonOutdated = Db::getUsersToWarn($parametersMod->getValue('community', 'user', 'options', 'expires_in'), $parametersMod->getValue('community', 'user', 'options', 'warn_before'), $parametersMod->getValue('community', 'user', 'options', 'warn_every')); $queue = new \Modules\administrator\email_queue\Module(); $deleted = Db::deleteOutdatedUsers($parametersMod->getValue('community', 'user', 'options', 'expires_in')); foreach ($deleted as $key => $user) { $site->dispatchEvent('community', 'user', 'deleted_outdated_user', array('data' => $user)); $emailTemplate = $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email_template', $user['language_id']); $email = str_replace('[[content]]', $parametersMod->getValue('community', 'user', 'email_messages', 'text_user_deleted'), $emailTemplate); $email = str_replace('[[date]]', substr($user['last_login'], 0, 10), $email); $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), $user['email'], '', $parametersMod->getValue('community', 'user', 'email_messages', 'subject_user_deleted'), $email, false, true); $log->log('community/user', 'deleted account', 'Account information: ' . implode(', ', $user)); } $setWarned = array(); foreach ($soonOutdated as $key => $user) { $site->dispatchEvent('community', 'user', 'warn_inactive_user', array('data' => $user)); $emailTemplate = $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email_template', $user['language_id']); $email = str_replace('[[content]]', $parametersMod->getValue('community', 'user', 'email_messages', 'text_account_will_expire'), $emailTemplate); $email = str_replace('[[date]]', substr($user['valid_until'], 0, 10), $email); $link = $site->generateUrl($user['language_id'], null, null, array("module_group" => "community", "module_name" => "user", "action" => "renew_registration", "id" => $user['id'])); $email = str_replace('[[link]]', '<a href="' . $link . '">' . $link . '</a>', $email); $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), $user['email'], '', $parametersMod->getValue('community', 'user', 'email_messages', 'subject_account_will_expire'), $email, false, true); $setWarned[] = $user['id']; $log->log('community/user', 'account warned', 'Account information: ' . implode(', ', $user)); } Db::setWarned($setWarned); if (sizeof($deleted) > 0 || $soonOutdated > 0) { $queue->send(); } } } }
function execute($options) { global $parametersMod; global $dbSite; global $log; global $site; if ($options->firstTimeThisWeek) { $module = new Module(); $systemInfo = $module->getSystemInfo(); if ($systemInfo != '') { //send an email $md5 = \DbSystem::getSystemVariable('last_system_message_sent'); if (!$md5 || $md5 != md5($systemInfo)) { //we have a new message $message = ''; $messages = json_decode($systemInfo); if (is_array($messages)) { foreach ($messages as $messageKey => $messageVal) { $message .= '<p>' . $messageVal->message . '</p>'; } $onlyStatusMessages = true; foreach ($messages as $messageKey => $messageVal) { if ($messageVal->type != 'status') { $onlyStatusMessages = false; } } if ($onlyStatusMessages) { return; } } else { return; } if (defined('ERRORS_SEND') && ERRORS_SEND != '') { require_once BASE_DIR . MODULE_DIR . 'administrator/email_queue/module.php'; $queue = new \Modules\administrator\email_queue\Module(); $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), ERRORS_SEND, '', $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), $message, false, true); $queue->send(); } \DbSystem::setSystemVariable('last_system_message_sent', md5($systemInfo)); } } } }
function makeActions() { global $parametersMod; global $site; $site->requireTemplate('standard/content_management/widgets/misc/contact_form/template.php'); $sql = "select * from `" . DB_PREF . "mc_misc_contact_form_field` where `contact_form` = '" . mysql_real_escape_string($_REQUEST['spec_id']) . "' order by id"; $rs = mysql_query($sql); $fields = array(); if (!$rs) { trigger_error("Can't get form fields " . $sql); } else { while ($lock = mysql_fetch_assoc($rs)) { switch ($lock['type']) { case 'text': $field = new \Library\Php\Form\FieldText(); break; case 'text_multiline': $field = new \Library\Php\Form\FieldTextarea(); break; case 'file': $field = new \Library\Php\Form\FieldFile(); break; case 'email': $field = new \Library\Php\Form\FieldEmail(); break; case 'select': $field = new \Library\Php\Form\FieldSelect(); $field->values = $this->prepare_for_select($this->db_values_to_array($lock['values'])); break; case 'checkbox': $field = new \Library\Php\Form\FieldCheckbox(); break; case 'radio': $field = new \Library\Php\Form\FieldRadio(); $field->values = $this->prepare_for_select($this->db_values_to_array($lock['values'])); break; } $field->caption = $lock['name']; $field->name = 'field_' . (sizeof($fields) + 1); $field->required = $lock['required']; $fields[] = $field; } } $htmlForm = new \Library\Php\Form\Standard($fields); $errors = $htmlForm->getErrors(); $answer = ''; if (sizeof($errors) > 0 || $htmlForm->detectSpam()) { $answer = $htmlForm->generateErrorAnswer($errors); } else { $sql = "select * from `" . DB_PREF . "mc_misc_contact_form` where `id` = '" . mysql_real_escape_string($_REQUEST['spec_id']) . "' limit 1"; $rs = mysql_query($sql); if (!$rs) { trigger_error("Can't get contact form " . $sql); } elseif ($lock = mysql_fetch_assoc($rs)) { $email = Template::generateEmail($fields); $files = array(); $from = $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'); foreach ($fields as $field) { if (get_class($field) == 'Library\\Php\\Form\\FieldFile') { if (!empty($_FILES[$field->name]) && $_FILES[$field->name]['error'] == 0) { $file = array(); $file['real_name'] = $_FILES[$field->name]['tmp_name']; $file['required_name'] = $_FILES[$field->name]['name']; $files[] = $file; } } if (get_class($field) == 'Library\\Php\\Form\\FieldEmail' && $field->postedValue() != '') { $from = $field->postedValue(); } } $email_queue = new \Modules\administrator\email_queue\Module(); $email_queue->addEmail($from, '', $lock['email_to'], '', $lock['email_subject'], $email, false, true, $files); } else { trigger_error("Unknown contact form id " . $sql); } $email_queue->send(); $answer = ' <html><head><meta http-equiv="Content-Type" content="text/html; charset=' . CHARSET . '" /></head><body> <script type="text/javascript"> var form = parent.window.document.getElementById(\'' . $_REQUEST['spec_rand_name'] . '\'); form.style.display = \'none\'; //var txtNode = document.createTextNode("' . htmlspecialchars($lock['thank_you']) . '"); var note = parent.window.document.createElement(\'p\'); //note.appendChild(txtNode); //ie7 bug sometimes dont allow to add a textnode. note.innerHTML = "' . htmlspecialchars($lock['thank_you']) . '"; form.parentNode.appendChild(note); </script> </body></html> '; } echo $answer; }
function testSend($recordId, $testEmail) { global $parametersMod; global $site; $queue = new \Modules\administrator\email_queue\Module(); $record = Db::getRecord($recordId); $email = $this->prepareMessage($record, $testEmail, $site->generateUrl($record['language_id'])); $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email', $record['language_id']), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name', $record['language_id']), $testEmail, '', $record['subject'], $email, true, true); $queue->send(); echo "alert('" . $parametersMod->getValue('community', 'newsletter', 'admin_translations', 'test_email_send') . "');"; }
/** * * Report error, set header. * */ private function error404() { require_once BASE_DIR . MODULE_DIR . 'administrator/email_queue/module.php'; global $parametersMod; $this->error404 = true; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=' . CHARSET . "\r\n"; $headers .= 'From: sender@sender.com' . "\r\n"; $message = ''; //error reporting if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] == '') { if (defined('ERRORS_SEND') && ERRORS_SEND && $parametersMod->getValue('standard', 'configuration', 'error_404', 'report_mistyped_urls', $this->currentLanguage['id'])) { $message = $this->error404Message() . ' Link: ' . $this->getCurrentUrl() . ' Http referer: ' . $_SERVER['HTTP_REFERER']; } } else { if (strpos($_SERVER['HTTP_REFERER'], BASE_URL) < 5 && strpos($_SERVER['HTTP_REFERER'], BASE_URL) !== false) { if (defined('ERRORS_SEND') && ERRORS_SEND && $parametersMod->getValue('standard', 'configuration', 'error_404', 'report_broken_inside_link', $this->currentLanguage['id'])) { $message = $this->error404Message() . ' Link: ' . $this->getCurrentUrl() . ' Http referer: ' . $_SERVER['HTTP_REFERER']; } } if (strpos($_SERVER['HTTP_REFERER'], BASE_URL) === false) { if (defined('ERRORS_SEND') && ERRORS_SEND && $parametersMod->getValue('standard', 'configuration', 'error_404', 'report_broken_outside_link', $this->currentLanguage['id'])) { $message = $this->error404Message() . ' Link: ' . $this->getCurrentUrl() . ' Http referer: ' . $_SERVER['HTTP_REFERER']; } } } if ($message != '') { $queue = new \Modules\administrator\email_queue\Module(); $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email', $this->currentLanguage['id']), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name', $this->currentLanguage['id']), ERRORS_SEND, '', BASE_URL . " ERROR", $message, false, true); //we need to set currentLanguage id if this function is trown at $site object construction time. $queue->send(); } //end error reporting if ($parametersMod->getValue('standard', 'configuration', 'error_404', 'send_to_main_page') && ($this->languageUrl != '' || sizeof($this->urlVars) > 0 || sizeof($this->getVars) > 0 || $this->zoneUrl != '')) { header("Location: " . BASE_URL); exit; } else { header("HTTP/1.0 404 Not Found"); } }
public static function makeActions($zoneName) { global $site; global $parametersMod; global $log; $newsletterZone = $site->getZoneByModule('community', 'newsletter'); if (!$newsletterZone) { return; } if (isset($_REQUEST['action'])) { switch ($_REQUEST['action']) { case 'subscribe': if (isset($_REQUEST['email']) && Db::subscribed($_REQUEST['email'], $site->currentLanguage['id'])) { $status = 'subscribed'; $url = $site->generateUrl(null, $zoneName, array("subscribed")); } elseif (!preg_match('#^[a-z0-9.!\\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\\s]+\\.+[a-z]{2,6}))$#si', $_REQUEST['email'])) { $status = 'incorrect_email'; $url = $site->generateUrl(null, $zoneName, array("incorrect_email")); } else { $site->requireTemplate('community/newsletter/template.php'); if ($_REQUEST['email'] && !Db::registeredAndNotActivated($_REQUEST['email'], $site->currentLanguage['id'])) { Db::subscribe($_REQUEST['email'], $site->currentLanguage['id']); } $subscriber = Db::getSubscriberByEmail($_REQUEST['email'], $site->currentLanguage['id']); $emailQueue = new \Modules\administrator\email_queue\Module(); $link = $site->generateUrl(null, $newsletterZone->getName(), array(), array("action" => "conf", "id" => $subscriber['id'], "code" => $subscriber['verification_code'])); $emailHtml = Template::subscribeConfirmation($link); $emailQueue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), $_REQUEST['email'], '', $parametersMod->getValue('community', 'newsletter', 'subscription_translations', 'subject_confirmation'), $emailHtml, true, true, null); $emailQueue->send(); $status = 'email_confirmation'; $url = $site->generateUrl(null, $zoneName, array("email_confirmation")); } echo ' { "status":"' . $status . '", "url":"' . $url . '" }'; $log->log('community/newsletter', 'Start subscribtion', $_REQUEST['email']); \Db::disconnect(); exit; break; case 'unsubscribe': //unsubscribe through website if ($parametersMod->getValue('community', 'newsletter', 'options', 'show_unsubscribe_button')) { //if unsubscribe through webpage is allowed Db::unsubscribe($_REQUEST['email'], $site->currentLanguage['id']); echo ' { "status":"email_confirmation", "url":"' . $site->generateUrl(null, $zoneName, array("unsubscribed")) . '" }'; $log->log('community/newsletter', 'Unsubscribe (website form)', $_REQUEST['email']); \Db::disconnect(); exit; } break; case 'cancel': //unsubscribe through e-mail link if (isset($_REQUEST['id']) && isset($_REQUEST['code'])) { $record = DB::getSubscriber($_REQUEST['id']); $log->log('community/newsletter', 'Unsubscribe (e-mail link)', $record['email']); Db::unsubscribe($_REQUEST['email'], $site->currentLanguage['id'], $_REQUEST['id'], $_REQUEST['code']); header('location: ' . $site->generateUrl(null, $newsletterZone->getName(), array("unsubscribed"), array())); \Db::disconnect(); exit; } break; case 'conf': if (isset($_GET['id']) && isset($_GET['code'])) { if (Db::confirm($_GET['id'], $_GET['code'], $site->currentLanguage['id'])) { header('location: ' . $site->generateUrl(null, $newsletterZone->getName(), array("subscribed"), array())); $record = DB::getSubscriber($_GET['id']); $log->log('community/newsletter', 'Confirm subscribtion', $record['email']); } else { header('location: ' . $site->generateUrl(null, $newsletterZone->getName(), array("error_confirmation"), array())); $log->log('community/newsletter', 'Incorrect confirmation link', $_GET['id'] . ' ' . $_GET['code']); } } break; case 'get_link': if (isset($_REQUEST['page'])) { switch ($_REQUEST['page']) { case 'error_confirmation': echo $site->generateUrl(null, $zoneName, array("error_confirmation")); break; case 'email_confirmation': echo $site->generateUrl(null, $zoneName, array("email_confirmation")); break; case 'subscribed': echo $site->generateUrl(null, $zoneName, array("subscribed")); break; case 'incorrect_email': echo $site->generateUrl(null, $zoneName, array("incorrect_email")); break; case 'unsubscribed': echo $site->generateUrl(null, $zoneName, array("unsubscribed")); break; } } \Db::disconnect(); exit; break; } } }
/** * Error handler for all errors and warnings. Depending on configuration he * prints error to output, sends by the email and logs to database. * Maximum emails count is 10 per hour. */ function myErrorHandler($errno, $errstr, $errfile, $errline) { global $log; global $parametersMod; $message = ''; switch ($errno) { case E_USER_WARNING: $message .= 'WARNING '; break; case E_USER_NOTICE: $message .= 'NOTICE '; break; case E_WARNING: $message .= 'WARNING '; break; case E_NOTICE: $message .= 'NOTICE '; break; case E_CORE_WARNING: $message .= 'WARNING '; break; case E_COMPILE_WARNING: $message .= 'WARNING '; break; case E_USER_ERROR: $message .= 'ERROR '; break; case E_ERROR: $message .= 'ERROR '; break; case E_PARSE: $message .= 'PARSE '; break; case E_CORE_ERROR: $message .= 'ERROR '; break; case E_COMPILE_ERROR: $message .= 'ERROR '; break; } $message = '<b>' . $message . '</b> ' . htmlspecialchars($errstr) . '<br /> in ' . $errfile . ' on line ' . $errline . ''; if ($log) { //if log module not initialized yet, it will only throw new one error. So, use it only if it is initialized $log->log('system', 'error', $message); } if (ERRORS_SHOW) { echo '<p class="error">' . $message . "</p>"; } if ($log && defined('ERRORS_SEND') && ERRORS_SEND != '') { require_once BASE_DIR . MODULE_DIR . 'administrator/email_queue/module.php'; $logsCount = $log->lastLogsCount(60, 'system/error'); if ($logsCount <= 9) { if ($logsCount == 9) { $message .= ' Error emails count has reached the limit. See logs for more errors.'; } $queue = new \Modules\administrator\email_queue\Module(); if ($parametersMod) { //if parameters module not initialized yet, it will only throw new one error. So, use it only if it is initialized $queue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), ERRORS_SEND, '', BASE_URL . " ERROR", $message, false, true); } else { $queue->addEmail(ERRORS_SEND, '', ERRORS_SEND, '', BASE_URL . " ERROR", $message, false, true); } $queue->send(); $log->log('system/error', 'Sent e-mail to ' . ERRORS_SEND, $message); } } }
function sendUpdateVerificationLink($email, $code, $userId) { require_once BASE_DIR . LIBRARY_DIR . 'php/text/system_variables.php'; global $parametersMod; global $site; $emailQueue = new \Modules\administrator\email_queue\Module(); $emailHtml = str_replace('[[content]]', $parametersMod->getValue('community', 'user', 'email_messages', 'text_verify_new_email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email_template')); $link = $site->generateUrl(null, null, array(), array("module_group" => "community", "module_name" => "user", "action" => "new_email_verification", "id" => $userId, "code" => $code)); $emailHtml = str_replace('[[link]]', '<a href="' . $link . '">' . $link . '</a>', $emailHtml); $emailHtml = \Library\Php\Text\SystemVariables::insert($emailHtml); $emailHtml = \Library\Php\Text\SystemVariables::clear($emailHtml); $emailQueue->addEmail($parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'), $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'name'), $email, '', $parametersMod->getValue('community', 'user', 'email_messages', 'subject_verify_new_email'), $emailHtml, true, true, null); $emailQueue->send(); }