Exemplo n.º 1
0
            // если все ок, отправляем
            $preferences = array();
            if ($post['f_files']) {
                $fn = getinfo('uploads_dir') . $post['f_files'];
                if (file_exists($fn)) {
                    $preferences['attach'] = $fn;
                }
            }
            $list = explode("\n", $post['f_list']);
            foreach ($list as $email) {
                $res = true;
                // проверяем валидность email
                // если ок, то отправляем
                // если возврат false, всё рубим - проблема с почтой
                if (mso_valid_email($email)) {
                    $res = mso_mail($email, $post['f_subject'], $post['f_message'], $post['f_from'], $preferences);
                    if ($res) {
                        echo '<div class="update">' . t('Отправлено: ') . $email . '</div>';
                    } else {
                        echo '<div class="error">' . t('Ошибка отправки почты на сервере.') . '</div>';
                        break;
                    }
                } else {
                    echo '<div class="error">' . t('Неверный адрес: ') . $email . '</div>';
                }
            }
        }
    }
}
?>
<h1><?php 
Exemplo n.º 2
0
                $ins_data['guestbook_' . $key] = $post['f_fields_guestbook'][$key];
                $text_email .= $key . ': ' . $post['f_fields_guestbook'][$key] . "\n";
            }
        }
        // pr($ins_data);
        $res = $CI->db->insert('guestbook', $ins_data) ? '1' : '0';
        if ($res) {
            echo '<div class="mso-message-ok">' . t('Ваш отзыв добавлен!');
            if ($options['moderation']) {
                echo ' ' . t('Он будет опубликован после одобрения модератором.');
            }
            echo '</div>';
            $text_email = t("Новая запись в гостевой книге") . ": \n" . $text_email;
            $text_email .= "\n" . t("Редактировать") . ": " . getinfo('siteurl') . 'admin/guestbook/editone/' . $CI->db->insert_id() . "\n";
            if ($options['email'] and mso_valid_email($options['email'])) {
                mso_mail($options['email'], t('Новая запись в гостевой книге'), $text_email);
            }
        } else {
            echo '<div class="mso-message-error">' . t('Ошибка добавления в базу данных...') . '</div>';
        }
        mso_flush_cache();
        // тут бы редирект, но мы просто убиваем сессию
        $CI->session->sess_destroy();
    }
} else {
    // тут форма, если не было post
    echo '<div class="mso-guestbook"><form method="post">' . mso_form_session('f_session_id');
    foreach ($options['fields_arr'] as $key => $val) {
        echo '<p><label><span>' . t($val) . '</span>';
        if ($key != 'text') {
            echo '<input name="f_fields_guestbook[' . $key . ']" type="text"></label></p>';
Exemplo n.º 3
0
        ?>
</h2>
	<?php 
        echo $res;
        ?>
	<br><p class="res"><a href="<?php 
        echo getinfo('siteurl');
        ?>
"><?php 
        echo t('Переход к сайту', 'install');
        ?>
</a></p>
	<p class="res"><?php 
        echo t('Не забудьте открыть файл «application/maxsite/mso_config.php» и измените', 'install');
        ?>
 <em>$mso_install = true;</em></p>
	<?php 
        // поскольку это инсталяция, то отправитель - тот же email
        @mso_mail($useremail, t('Новый сайт на MaxSite CMS', 'install'), $text, $useremail);
    } else {
        // if (isset($res))
        echo '<h2 class="error">' . t('Ошибка установки', 'install') . '</h2>
		 <p style="text-align: center;"><a href="' . getinfo('siteurl') . '">' . t('Вернитесь в начало', 'install') . '</a></p>';
    }
    // if (isset($res))
}
// конец третьего шага
?>
</div><!-- div id="container" -->
</body>
</html>
Exemplo n.º 4
0
function forms_content_callback($matches)
{
    $text = $matches[1];
    $text = str_replace("\r", "", $text);
    $text = str_replace('&nbsp;', ' ', $text);
    $text = str_replace("\t", ' ', $text);
    $text = str_replace('<br />', "<br>", $text);
    $text = str_replace('<br>', "\n", $text);
    $text = str_replace("\n\n", "\n", $text);
    $text = str_replace('     ', ' ', $text);
    $text = str_replace('    ', ' ', $text);
    $text = str_replace('   ', ' ', $text);
    $text = str_replace('  ', ' ', $text);
    $text = str_replace("\n ", "\n", $text);
    $text = str_replace("\n\n", "\n", $text);
    $text = trim($text);
    $out = '';
    // убиваем исходный текст формы
    //$r = preg_match_all('!\[email=(.*?)\]|\[redirect=(.*?)\]\[subject=(.*?)\]|\[field\](.*?)\[\/field\]|\[ushka=(.*?)\]!is', $text, $all);
    // на какой email отправляем
    $r = preg_match_all('!\\[email=(.*?)\\]!is', $text, $all);
    if ($r) {
        $email = trim(implode(' ', $all[1]));
    } else {
        $email = mso_get_option('admin_email', 'general', '*****@*****.**');
    }
    // тема письма
    $r = preg_match_all('!\\[subject=(.*?)\\]!is', $text, $all);
    if ($r) {
        $subject = trim(implode(' ', $all[1]));
    } else {
        $subject = tf('Обратная связь');
    }
    // куда редиректить после отправки
    $r = preg_match_all('!\\[redirect=(.*?)\\]!is', $text, $all);
    if ($r) {
        $redirect = trim(implode(' ', $all[1]));
    } else {
        $redirect = '';
    }
    // eirf к форме
    $r = preg_match_all('!\\[ushka=(.*?)\\]!is', $text, $all);
    if ($r) {
        $ushka = trim(implode(' ', $all[1]));
    } else {
        $ushka = '';
    }
    // отправить копию на ваш email
    $r = preg_match_all('!\\[nocopy\\]!is', $text, $all);
    if ($r) {
        $forms_subscribe = false;
    } else {
        $forms_subscribe = true;
    }
    // кнопка Сброс формы
    $r = preg_match_all('!\\[noreset\\]!is', $text, $all);
    if ($r) {
        $reset = false;
    } else {
        $reset = true;
    }
    // pr($all);
    // поля формы
    $r = preg_match_all('!\\[field\\](.*?)\\[\\/field\\]!is', $text, $all);
    $f = array();
    // массив для полей
    if ($r) {
        $fields = $all[1];
        /* 
        pr($fields);
        pr($email);
        pr($redirect);
        pr($subject);
        pr($ushka);
        */
        if ($subject) {
            // поле тема письма делаем в виде обязательнного поля select.
            // формируем массив для формы
            $subject_f['require'] = 1;
            //$subject_f['type'] = 'select';
            $subject_f['type'] = mb_strpos($subject, '#') === false ? 'text' : 'select';
            // если это одиночное поле, но при этом текст сабжа начинается
            // с _ то ставим тип hidden
            if ($subject_f['type'] == 'text' and mb_strpos($subject, '_') === 0) {
                $subject = mb_substr($subject . ' ', 1, -1, 'UTF-8');
                $subject_f['type'] = 'hidden';
            }
            $subject_f['description'] = tf('Тема письма');
            //$subject_f['tip'] = t('Выберите тему письма');
            $subject_f['values'] = $subject;
            $subject_f['value'] = $subject;
            $subject_f['default'] = '';
            // преобразования, чтобы сделать ключ для поля
            $f1['subject'] = $subject_f;
            // у поля тема будет ключ subject
            foreach ($f as $key => $val) {
                $f1[$key] = $val;
            }
            $f = $f1;
        }
        $i = 0;
        foreach ($fields as $val) {
            $val = trim($val);
            if (!$val) {
                continue;
            }
            $val = str_replace(' = ', '=', $val);
            $val = str_replace('= ', '=', $val);
            $val = str_replace(' =', '=', $val);
            $val = explode("\n", $val);
            // разделим на строки
            $ar_val = array();
            foreach ($val as $pole) {
                $pole = preg_replace('!=!', '_VAL_', $pole, 1);
                $ar_val = explode('_VAL_', $pole);
                // строки разделены = type = select
                if (isset($ar_val[0]) and isset($ar_val[1])) {
                    $f[$i][$ar_val[0]] = $ar_val[1];
                }
            }
            $i++;
        }
        if (!$f) {
            return '';
        }
        // нет полей - выходим
        // теперь по-идее у нас есть вся необходимая информация по полям и по форме
        // смотрим есть ли POST. Если есть, то проверяем введенные поля и если они корректные,
        // то выполняем отправку почты, выводим сообщение и редиректимся
        // если POST нет, то выводим обычную форму
        // pr($f);
        if ($_POST) {
            $_POST = mso_clean_post(array('forms_antispam1' => 'integer', 'forms_antispam2' => 'integer', 'forms_antispam' => 'integer', 'forms_name' => 'base', 'forms_email' => 'email', 'forms_session' => 'base'));
        }
        if ($post = mso_check_post(array('forms_session', 'forms_antispam1', 'forms_antispam2', 'forms_antispam', 'forms_name', 'forms_email', 'forms_submit'))) {
            mso_checkreferer();
            $out .= '<div class="forms-post">';
            // верный email?
            if (!($ok = mso_valid_email($post['forms_email']))) {
                $out .= '<div class="message error small">' . tf('Неверный email!') . '</div>';
            }
            // антиспам
            if ($ok) {
                $antispam1s = (int) $post['forms_antispam1'];
                $antispam2s = (int) $post['forms_antispam2'];
                $antispam3s = (int) $post['forms_antispam'];
                if ($antispam1s / 984 + $antispam2s / 765 != $antispam3s) {
                    // неверный код
                    $ok = false;
                    $out .= '<div class="message error small">' . tf('Неверная сумма антиспама') . '</div>';
                }
            }
            if ($ok) {
                foreach ($f as $key => $val) {
                    if ($ok and isset($val['require']) and $val['require'] == 1) {
                        if (!isset($post['forms_fields'][$key]) or !$post['forms_fields'][$key]) {
                            $ok = false;
                            $out .= '<div class="message error small">' . tf('Заполните все необходимые поля!') . '</div>';
                        }
                    }
                    if (!$ok) {
                        break;
                    }
                }
            }
            // всё ок
            if ($ok) {
                //pr($post);
                // pr($f);
                // pr($redirect);
                // pr($email);
                // pr($subject);
                // формируем письмо и отправляем его
                if (!mso_valid_email($email)) {
                    $email = mso_get_option('admin_email', 'general', '*****@*****.**');
                }
                // куда приходят письма
                $message = t('Имя: ') . $post['forms_name'] . "\n";
                $message .= t('Email: ') . $post['forms_email'] . "\n";
                foreach ($post['forms_fields'] as $key => $val) {
                    //pr($key);
                    if ($key === 'subject' and $val) {
                        $subject = $val;
                        //pr($subject);
                        continue;
                    }
                    $message .= $f[$key]['description'] . ': ' . $val . "\n\n";
                }
                if ($_SERVER['REMOTE_ADDR'] and $_SERVER['HTTP_REFERER'] and $_SERVER['HTTP_USER_AGENT']) {
                    $message .= "\n" . tf('IP-адрес: ') . $_SERVER['REMOTE_ADDR'] . "\n";
                    $message .= tf('Отправлено со страницы: ') . $_SERVER['HTTP_REFERER'] . "\n";
                    $message .= tf('Браузер: ') . $_SERVER['HTTP_USER_AGENT'] . "\n";
                }
                // pr($message);
                $form_hide = mso_mail($email, $subject, $message, $post['forms_email']);
                if ($forms_subscribe and isset($post['forms_subscribe'])) {
                    mso_mail($post['forms_email'], tf('Вами отправлено сообщение:') . ' ' . $subject, $message);
                }
                $out .= '<div class="message ok small">' . tf('Ваше сообщение отправлено!') . '</div><p>' . str_replace("\n", '<br>', htmlspecialchars($subject . "\n" . $message)) . '</p>';
                if ($redirect) {
                    mso_redirect($redirect, true);
                }
            } else {
                $out .= forms_show_form($f, $ushka, $forms_subscribe, $reset, $subject);
            }
            $out .= '</div>';
            $out .= mso_load_jquery('jquery.scrollto.js');
            $out .= '<script>$(document).ready(function(){$.scrollTo("div.forms-post", 500);})</script>';
        } else {
            $out .= forms_show_form($f, $ushka, $forms_subscribe, $reset, $subject);
        }
    }
    return $out;
}
Exemplo n.º 5
0
function mso_email_message_new_comment_subscribe($data)
{
    /*
    Array
    (
        [comments_page_id] => 153 - id страницы
        [comments_content] => sdafsadfsdaf - текст комментария
        [comments_approved] =>  - если 0, то отправки нет
        [page_title] => тест - заголовок страницы
        [id] => 607 - id комментария
        -- [comments_comusers_id] => 1 - номер комюзера - пока не используется
        -- [comments_date] => 2009-12-10 20:45:39 - дата - пока не используется
        -- [comments_author_ip] => 127.0.0.1 - ip - пока не используется
    )
    */
    # Опция не рассылать подписку.
    if (!mso_get_option('allow_comments_subscribe', 'general', 1)) {
        return;
    }
    // комментарий не одобрен, не отсылаем
    if ($data['comments_approved'] == 0) {
        return;
    }
    // разослать нужно всем комюзерам у которых стоит получение уведомления о новом комментарии
    $CI =& get_instance();
    $comusers_all = mso_get_comusers_all();
    // все комюзеры
    $from = mso_get_option('admin_email_server', 'general', '');
    $subject = '[' . getinfo('name_site') . '] ' . tf('Новый комментарий к') . ' "' . $data['page_title'] . '"';
    $message = tf('Новый комментарий к') . ' "' . $data['page_title'] . '"' . NR . NR;
    $message .= tf('Текст:') . NR . mso_xss_clean($data['comments_content']);
    $message .= NR . NR . tf('Перейти к комментарию на сайте:') . NR . mso_get_permalink_page($data['comments_page_id']) . '#comment-' . $data['id'] . NR;
    foreach ($comusers_all as $comuser) {
        // отправлять на все комментарии сайта
        $subscribe_other_comments = (isset($comuser['meta']['subscribe_other_comments']) and $comuser['meta']['subscribe_other_comments']) ? true : false;
        //  только на свой
        $subscribe_my_comments = (isset($comuser['meta']['subscribe_my_comments']) and $comuser['meta']['subscribe_my_comments']) ? true : false;
        if ($subscribe_other_comments or $subscribe_my_comments and isset($comuser['comments_pages_id'][$data['comments_page_id']])) {
            // можно отправлять
            if (mso_valid_email($comuser['comusers_email'])) {
                $data = array_merge($data, array('subscription' => true));
                //А здесь для smtp_mail важно знать, чтобы запретить сохранять мыло в файл.
                $res = mso_mail($comuser['comusers_email'], $subject, $message, $from, $data);
                if (!$res) {
                    break;
                }
                // ошибка отправки почты - рубим цикл
            }
        }
    }
}
Exemplo n.º 6
0
function forms_content_post($options, $files, $fields, $format)
{
    $result['show_error'] = array();
    // каждый элемент сообщение об ошибке
    $result['show_form'] = false;
    $result['show_ok'] = false;
    $result['fields'] = array();
    // массив полей в случае ошибок
    $out = '';
    // принимаем post
    if ($post = mso_check_post(array('forms_session', 'forms_fields'))) {
        mso_checkreferer();
        $subject_key = false;
        // если у поля отмечен subject, то ставим номер поля
        $from_key = false;
        // если у поля отмечен from, то ставим номер поля
        // добавляем в массив $field полученные значения и сразу их чистим через mso_clean_str()
        foreach ($fields as $key => $field) {
            if (isset($fields[$key]['post_value'])) {
                unset($fields[$key]['post_value']);
            }
            $field = array_map('trim', $field);
            if (isset($post['forms_fields'][$key])) {
                $p_v = mso_clean_str($post['forms_fields'][$key], $field['clean']);
                $fields[$key]['post_value'] = $p_v;
                // обязательное поле и не получены данные (браузер должен был это сам отсеить)
                if ($field['require'] and !$p_v) {
                    $result['show_error'][] = tf('Неверно заполнено поле: ') . $field['description'];
                }
            }
            if ($field['subject']) {
                $subject_key = $key;
            }
            if ($field['from']) {
                $from_key = $key;
            }
        }
        // если есть ошибки то выходим
        if ($result['show_error']) {
            $result['show_form'] = true;
            $result['fields'] = $fields;
            return $result;
        }
        // если были ошибки, то уже вышли из функции
        $prefs = '';
        // дополнительные опции для mso_mail
        // если есть вложения
        if ($file_attaches = forms_files_post($files)) {
            // формируем вложения к письму
            $prefs['attach'] = $file_attaches;
        }
        // формируем само письмо
        // куда приходят письма
        $email = $options['email'];
        if (!mso_valid_email($email)) {
            $email = mso_get_option('admin_email', 'general', '*****@*****.**');
        }
        // тема письма может быть в опциях
        $subject = $options['subject'];
        if (!$subject) {
            // нет, значит ищем в полях
            $subject = $fields[$subject_key]['post_value'];
        }
        // тема письма может быть в опциях
        $from = $options['from'];
        if (!$from) {
            // нет, значит ищем в полях
            $from = $fields[$from_key]['post_value'];
        }
        // pr($fields);
        $message = '';
        foreach ($fields as $field) {
            $description = $field['description'];
            $post_value = $field['post_value'];
            $m = $format['mail_field'];
            $m = str_replace('[description]', $description, $m);
            $m = str_replace('[post_value]', $post_value, $m);
            $m = str_replace('[NR]', NR, $m);
            $message .= $m;
        }
        // добавляем служебную информацию
        $message .= tf('IP: ') . $_SERVER['REMOTE_ADDR'] . NR;
        $message .= tf('Браузер: ') . $_SERVER['HTTP_USER_AGENT'] . NR;
        mso_hook('forms_send', $post);
        // pr($email);
        // pr($subject);
        // pr($from);
        // pr($message);
        // pr($prefs);
        // тут отправка почты
        mso_mail($email, $subject, $message, $from, $prefs);
        // удаляем временные файлы вложений
        if ($files) {
            mso_flush_cache(false, 'forms_attaches/');
        }
        $result['show_ok'] = true;
    } else {
        $result['show_error'][] = tf('Ошибка сессии');
    }
    return $result;
}