Esempio n. 1
0
 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));
             }
         }
     }
 }
Esempio n. 2
0
 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();
             }
         }
     }
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 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') . "');";
 }
Esempio n. 5
0
 /**
  * 
  * 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");
     }
 }
Esempio n. 6
0
 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;
         }
     }
 }
Esempio n. 7
0
/**
 * 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);
        }
    }
}
Esempio n. 8
0
 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();
 }