Skip to content

Commit

Permalink
Merge pull request #51 from dle-modules/1.4.0
Browse files Browse the repository at this point in the history
1.4.0
  • Loading branch information
pafnuty authored Mar 16, 2017
2 parents 8c29b93 + 751b5d8 commit df47bb1
Show file tree
Hide file tree
Showing 18 changed files with 230 additions and 204 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
/engine/data/*.txt
/engine/data/*.php

# DLE 11.2 sources
/engine/ajax/commentssubscribe.php
/engine/ajax/twofactor.php
/engine/inc/lostpassword.php
/engine/inc/twofactor.php
/engine/classes/htmlpurifier/*

# DLE 11.1 sources
/.htaccess
/admin.php
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Список изменений

## v1.4.0 (16.03.2017)
- Обновлён [установщик](https://github.com/dle-modules/DLE-StarterKit) доя версии 1.0.2 (fix #47)
- Добавлен новый параметр `parseSendMail`, добавляющий возможность производить манипуляции над данными перед отправкой email. В параметр передаётся путь к php файлу, без расширения, отностительно папки engine/modules. Например можно добавить в шаблон email-сообщения новые теги `[footer]{footer}[/footer]`. Для этого в конфиге прописываем `parseSendMail = addFooter`, создаём файл `engine/modules/addFooter.php` со следующим содержимым:
```php
<?php
if ($arSendMail['select1'] === 'val1') {
$mailTpl->set('[footer]', '');
$mailTpl->set('[/footer]', '');
$mailTpl->set('{footer}', $arSendMail['select1']);
} else {
$mailTpl->set_block("'\\[footer\\](.*?)\\[\\/footer\\]'si", '');
}
```
- Идея с "колбэками", реализована, дальше будем добавлять по потребностям (fix #40) (fix #50).

## v1.3 (12.10.2016)
- Новый, удобный установщик модуля.
- Улучшения и оптимизация кода.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# DLE-UniForm
![version](https://img.shields.io/badge/version-1.3-red.svg?style=flat-square "Version")
![version](https://img.shields.io/badge/version-1.4.0-red.svg?style=flat-square "Version")
![DLE](https://img.shields.io/badge/DLE-10.2--11.x-green.svg?style=flat-square "DLE Version")
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/pafnuty/DLE-UniForm/blob/master/LICENSE)

Expand Down
256 changes: 124 additions & 132 deletions dle_module_install.php

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions dle_starter_installer/assets/css/dle_starter.css
Original file line number Diff line number Diff line change
Expand Up @@ -584,14 +584,14 @@ h2 a:hover {
padding: 0;
}

.steps .li-steps {
.steps > ol > li {
position: relative;
border: solid 1px rgba(241, 196, 15, .2);
padding: 0 15px;
counter-increment: stepsCounter;
}

.steps .li-steps:before {
.steps > ol > li:before {
position: absolute;
top: -1px;
left: -1px;
Expand Down Expand Up @@ -842,4 +842,4 @@ img.ta-center {
stroke-width: 0;
stroke: currentColor;
fill: currentColor;
}
}
4 changes: 2 additions & 2 deletions dle_starter_installer/install.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ public function checkBeforeInstall() {
throw new Exception('Установленная версия DLE слишком старая. Необходимо установить DLE не ниже ' . $this->cfg['minVersion']);
}

if ($this->dle_config['version_id'] > $this->cfg['maxVersion']) {
if ($this->cfg['maxVersion'] !== '' && $this->dle_config['version_id'] > $this->cfg['maxVersion']) {
throw new Exception('Установленная версия DLE слишком новая. Необходимо установить DLE не выше ' . $this->cfg['maxVersion']);
}
} else {
throw new Exception('Файл с конфигурацией установки модуля не найден, возмжно установочные файлы модуля не скопированы.');
throw new Exception('Файл с конфигурацией установки модуля не найден, возмжно установочные файлы модуля не скопированы. <br>Возможно вы не вписали параметр <b>?module=module_name</b> в конце URL. (module_name — это идентификатор модуля. Если Вы его не знаете, то можете спросить у автора модуля).');
}
}

Expand Down
5 changes: 3 additions & 2 deletions engine/modules/uniform/cfg.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
'allowAttachments' => !empty($allowAttachments) ? true : (isset($arConf['allowAttachments'])) ? true : false,
'maxFileSize' => !empty($maxFileSize) ? $maxFileSize : (isset($arConf['maxFileSize'])) ? $arConf['maxFileSize'] : false,
'allowedFileTypes' => !empty($allowedFileTypes) ? $allowedFileTypes : (isset($arConf['allowedFileTypes'])) ? $arConf['allowedFileTypes'] : false,
'version' => '1.3.0',
'releaseDate' => '12.10.2016',
'parseSendMail' => !empty($parseSendMail) ? $parseSendMail : (isset($arConf['parseSendMail'])) ? $arConf['parseSendMail'] : false,
'version' => '1.4.0',
'releaseDate' => '16.03.2017',
];
6 changes: 3 additions & 3 deletions engine/modules/uniform/install/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@
'moduleDescr' => 'Унверсальные формы для DLE',

// Версия модуля
'moduleVersion' => '1.3.0',
'moduleVersion' => '1.4.0',

// Дата выпуска модуля
'moduleDate' => '01.10.2016',
'moduleDate' => '16.03.2017',

// Версии DLE, поддержваемые модулем
'minVersion' => '10.2',

'maxVersion' => '11.1',
'maxVersion' => '',

// Устанавливать админку (true/false). Включает показ кнопки установки и удаления админки.
'installAdmin' => false,
Expand Down
6 changes: 3 additions & 3 deletions engine/modules/uniform/install/steps/01.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
'find' => '</head>',

// Код, который необходимо вставить перед найденным
'addBfore' => '<!-- DLE UniForm -->
<link rel="stylesheet" href="/engine/classes/min/index.php?charset=utf-8&amp;f={THEME}/uniform/css/uniform.css&amp;113" />
<script src="/engine/classes/min/index.php?charset=utf-8&amp;f={THEME}/uniform/js/jquery.magnificpopup.min.js,{THEME}/uniform/js/jquery.ladda.min.js,{THEME}/uniform/js/jquery.form.min.js,{THEME}/uniform/js/uniform.js&amp;113"></script>
'addBefore' => '<!-- DLE UniForm -->
<link rel="stylesheet" href="/engine/classes/min/index.php?charset=utf-8&amp;f={THEME}/uniform/css/uniform.css&amp;114" />
<script src="/engine/classes/min/index.php?charset=utf-8&amp;f={THEME}/uniform/js/jquery.magnificpopup.min.js,{THEME}/uniform/js/jquery.ladda.min.js,{THEME}/uniform/js/jquery.form.min.js,{THEME}/uniform/js/uniform.js&amp;114"></script>
<!-- /DLE UniForm -->',

];
95 changes: 50 additions & 45 deletions engine/modules/uniform/sendmail.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
* Информация из DLE, доступная в модуле
*
* @global boolean $is_logged Является ли посетитель авторизованным пользователем или гостем.
* @global array $member_id Массив с информацией о авторизованном пользователе, включая всю его информацию из профиля.
* @global array $member_id Массив с информацией о авторизованном пользователе, включая всю его информацию из
* профиля.
* @global object $db Класс DLE для работы с базой данных.
* @global array $config Информация обо всех настройках скрипта.
* @global array $user_group Информация о всех группах пользователей и их настройках.
Expand Down Expand Up @@ -43,14 +44,14 @@
}


$mailTpl = new dle_template();
$mailTpl->dir = TEMPLATE_DIR;
$mailTpl = new dle_template();
$mailTpl->dir = TEMPLATE_DIR;
$mailTpl->result['uniformMail'] = '';
/** @var array $cfg */
$mailTpl->load_template('/uniform/' . $cfg['templateFolder'] . '/email.tpl');

// Собираем все теги шаблона в массив
$arTplTags = [];
$arTplTags = [];
$allMailFields = '';

// Проверяем условия для селектов
Expand All @@ -65,26 +66,26 @@

/** @var array $member_id */
if ($member_id['user_group'] == 5) {
$arSendMail['user_email'] = '';
$arSendMail['user_name'] = '';
$arSendMail['user_news_num'] = '';
$arSendMail['user_comm_num'] = '';
$arSendMail['user_group'] = 5;
$arSendMail['user_lastdate'] = '';
$arSendMail['user_reg_date'] = '';
$arSendMail['user_banned'] = '';
$arSendMail['user_email'] = '';
$arSendMail['user_name'] = '';
$arSendMail['user_news_num'] = '';
$arSendMail['user_comm_num'] = '';
$arSendMail['user_group'] = 5;
$arSendMail['user_lastdate'] = '';
$arSendMail['user_reg_date'] = '';
$arSendMail['user_banned'] = '';
$arSendMail['user_allow_mail'] = '';
$arSendMail['user_info'] = '';
$arSendMail['user_signature'] = '';
$arSendMail['user_foto'] = '';
$arSendMail['user_fullname'] = '';
$arSendMail['user_land'] = '';
$arSendMail['user_favorites'] = '';
$arSendMail['user_pm_all'] = '';
$arSendMail['user_pm_unread'] = '';
$arSendMail['user_info'] = '';
$arSendMail['user_signature'] = '';
$arSendMail['user_foto'] = '';
$arSendMail['user_fullname'] = '';
$arSendMail['user_land'] = '';
$arSendMail['user_favorites'] = '';
$arSendMail['user_pm_all'] = '';
$arSendMail['user_pm_unread'] = '';
$arSendMail['user_time_limit'] = '';
$arSendMail['user_logged_ip'] = '';
$arSendMail['user_timezone'] = '';
$arSendMail['user_logged_ip'] = '';
$arSendMail['user_timezone'] = '';
} else {
$userRow = $db->super_query("SELECT * FROM " . USERPREFIX . "_users WHERE name = '{$member_id['name']}'");

Expand All @@ -110,32 +111,32 @@
}
}

$arSendMail['user_email'] = $userRow['email'];
$arSendMail['user_name'] = $userRow['name'];
$arSendMail['user_news_num'] = $userRow['news_num'];
$arSendMail['user_comm_num'] = $userRow['comm_num'];
$arSendMail['user_group'] = $userRow['group'];
$arSendMail['user_lastdate'] = $userRow['lastdate'];
$arSendMail['user_reg_date'] = $userRow['reg_date'];
$arSendMail['user_banned'] = $userRow['banned'];
$arSendMail['user_email'] = $userRow['email'];
$arSendMail['user_name'] = $userRow['name'];
$arSendMail['user_news_num'] = $userRow['news_num'];
$arSendMail['user_comm_num'] = $userRow['comm_num'];
$arSendMail['user_group'] = $userRow['group'];
$arSendMail['user_lastdate'] = $userRow['lastdate'];
$arSendMail['user_reg_date'] = $userRow['reg_date'];
$arSendMail['user_banned'] = $userRow['banned'];
$arSendMail['user_allow_mail'] = $userRow['allow_mail'];
$arSendMail['user_info'] = stripslashes($userRow['info']);
$arSendMail['user_signature'] = stripslashes($userRow['signature']);
$arSendMail['user_foto'] = $userPhoto;
$arSendMail['user_fullname'] = stripslashes($userRow['fullname']);
$arSendMail['user_land'] = stripslashes($userRow['land']);
$arSendMail['user_favorites'] = $userRow['favorites'];
$arSendMail['user_pm_all'] = $userRow['pm_all'];
$arSendMail['user_pm_unread'] = $userRow['pm_unread'];
$arSendMail['user_info'] = stripslashes($userRow['info']);
$arSendMail['user_signature'] = stripslashes($userRow['signature']);
$arSendMail['user_foto'] = $userPhoto;
$arSendMail['user_fullname'] = stripslashes($userRow['fullname']);
$arSendMail['user_land'] = stripslashes($userRow['land']);
$arSendMail['user_favorites'] = $userRow['favorites'];
$arSendMail['user_pm_all'] = $userRow['pm_all'];
$arSendMail['user_pm_unread'] = $userRow['pm_unread'];
$arSendMail['user_time_limit'] = $userRow['time_limit'];
$arSendMail['user_logged_ip'] = $userRow['logged_ip'];
$arSendMail['user_timezone'] = $userRow['timezone'];
$arSendMail['user_logged_ip'] = $userRow['logged_ip'];
$arSendMail['user_timezone'] = $userRow['timezone'];


// Выводим данные из допполей пользователя
if (strpos($mailTpl->copy_template, 'user_xfield_') !== false || strpos($mailTpl->copy_template, 'all_mail_fields') !== false) {

$xfields = xfieldsload(true);
$xfields = xfieldsload(true);
$xfieldsdata = xfieldsdataload($userRow['xfields']);

foreach ($xfields as $value) {
Expand Down Expand Up @@ -188,15 +189,19 @@
// Определяем заголовок письма
preg_match("'\\[header\\](.*?)\\[\\/header\\]'si", $mailTpl->copy_template, $mailHeader);
// Если передано поле header — подставим его в header :)
$emailHeader = (isset($arSendMail['header']) && $arSendMail['header'] != '') ? trim($arSendMail['header'])
: trim($mailHeader[1]);
$emailHeader = (isset($arSendMail['header']) && $arSendMail['header'] != '') ? trim($arSendMail['header']) : trim($mailHeader[1]);
$emailHeader = stripslashes($emailHeader);

// Обрабатываем теги шаблона
$mailTpl->set('', $arTplTags);
// Тег всех полей, пришедщших из формы
$mailTpl->set('{all_mail_fields}', $allMailFields);

// Подключаем дополнительный модуль, если это указано в конфиге
if ($cfg['parseSendMail']) {
include ENGINE_DIR . '/modules/' . $cfg['parseSendMail'] . '.php';
}

// Компилим шаблон
$mailTpl->compile('uniformMail');
$message = $mailTpl->result['uniformMail'];
Expand All @@ -218,7 +223,7 @@
// Подключаем класс для отправки почты.
include_once ENGINE_DIR . '/classes/mail.class.php';
$asHtml = ($cfg['sendAsPlain']) ? false : true;
$mail = new dle_mail($config, $asHtml);
$mail = new dle_mail($config, $asHtml);

// Определяем параметры отправки письма
if ($config['use_admin_mail'] && $config['version_id'] < 10.5) {
Expand Down Expand Up @@ -248,7 +253,7 @@
// Обрабатываем ситуацию, когда разрешена отправка отправителю
if ($cfg['sendToSender']) {
$parsedMessage = $message;
$parsedHeader = $emailHeader;
$parsedHeader = $emailHeader;

if ($email == $arSendMail['email']) {
$parsedMessage = preg_replace("'\\[not_to_sender\\](.*?)\\[/not_to_sender\\]'is", '', $parsedMessage);
Expand Down
25 changes: 12 additions & 13 deletions engine/modules/uniform/uniform.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
* Информация из DLE, доступная в модуле
*
* @global boolean $is_logged Является ли посетитель авторизованным пользователем или гостем.
* @global array $member_id Массив с информацией о авторизованном пользователе, включая всю его информацию из профиля.
* @global array $member_id Массив с информацией о авторизованном пользователе, включая всю его информацию из
* профиля.
* @global object $db Класс DLE для работы с базой данных.
* @global array $config Информация обо всех настройках скрипта.
* @global array $user_group Информация о всех группах пользователей и их настройках.
Expand All @@ -34,15 +35,14 @@
// ID сессии
$sessionId = session_id();

$uniform = false;
$uniform = false;
$hiddenInputs = '';
// Если данные передаются постом — "запомним" это.
$isPost = ($_SERVER['REQUEST_METHOD'] === 'POST') ? true : false;

// Определяемся с шаблоном сайта
// Проверим куку пользователя и налочие параметра skin в реквесте.
$currentSiteSkin = (isset($_COOKIE['dle_skin'])) ? trim(totranslit($_COOKIE['dle_skin'], false, false))
: ((isset($_REQUEST['skin'])) ? trim(totranslit($_REQUEST['skin'], false, false)) : $config['skin']);
$currentSiteSkin = (isset($_COOKIE['dle_skin'])) ? trim(totranslit($_COOKIE['dle_skin'], false, false)) : ((isset($_REQUEST['skin'])) ? trim(totranslit($_REQUEST['skin'], false, false)) : $config['skin']);

$config['skin'] = ($currentSiteSkin == '') ? $config['skin'] : $currentSiteSkin;

Expand All @@ -53,7 +53,7 @@
if (!$uniform) {
if (!defined('TEMPLATE_DIR')) {
require_once ENGINE_DIR . '/classes/templates.class.php';
$tpl = new dle_template();
$tpl = new dle_template();
$tpl->dir = $template_dir;
define('TEMPLATE_DIR', $tpl->dir);
}
Expand All @@ -67,7 +67,7 @@
$arHidden = getArray($cfg['hidden']);

// Дебаг
$debug = ($cfg['debug']) ? true : false;
$debug = ($cfg['debug']) ? true : false;
$debugTag = '';
if ($debug) {
$tpl->set('[debug]', '');
Expand Down Expand Up @@ -129,9 +129,9 @@
}

// Добавляем данные из конфига DLE для возможности использовать в email сообщении
$_POST['site_home_title'] = $config['home_title'];
$_POST['site_home_title'] = $config['home_title'];
$_POST['site_http_home_url'] = $config['http_home_url'];
$_POST['site_short_title'] = $config['short_title'];
$_POST['site_short_title'] = $config['short_title'];

// Получаем массив обязательных полей
$arRequired = getArray($cfg['required']);
Expand Down Expand Up @@ -162,8 +162,8 @@
}
// Остальные поля надо бы обработать
if (!is_array($val)) {
$val = convert_unicode($val, $config['charset']);
$val = $parse->process(trim($val));
$val = convert_unicode($val, $config['charset']);
$val = $parse->process(trim($val));
$arSendMail[$k] = $val;
}

Expand Down Expand Up @@ -370,16 +370,15 @@

// Добавляем инпут с указанием максимально возможного веса файла
$cfg['maxFileSize'] = (int)$cfg['maxFileSize'];
$maxFileSize = ($cfg['maxFileSize'] > 0) ? $cfg['maxFileSize'] : 0;
$maxFileSize = ($cfg['maxFileSize'] > 0) ? $cfg['maxFileSize'] : 0;


$form = '
<form action="/engine/ajax/uniform/uniform.php" data-uf-form method="POST" ' . $multipart . '>
<input type="hidden" name="csrfToken" value="' . getToken($cacheName . $config['skin'] . $sessionId) . '">
<input type="hidden" name="formConfig" value="' . $cfg['formConfig'] . '">
';
$form .= ($cfg['allowAttachments'] && $maxFileSize > 0)
? '<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxFileSize * 1024 . '" />' : '';
$form .= ($cfg['allowAttachments'] && $maxFileSize > 0) ? '<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxFileSize * 1024 . '" />' : '';
$form .= $hiddenInputs;
$form .= $uniform;
$form .= '</form>';
Expand Down
1 change: 1 addition & 0 deletions templates/Default/uniform/attachments/config.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
// allowAttachments — Разрешить прикрепление файлов (false)
// maxFileSize — Максимальный размер загружаемого файла (в килобайтах)
// allowedFileTypes — Разрешенные типы файлов, перечисляем расширения через запятую, без точек и пробелов
// parseSendMail — Путь к php файлу, который будет подключен для обработки данных перед отправкой email
// -------------------------------------------


Expand Down
1 change: 1 addition & 0 deletions templates/Default/uniform/callback/config.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
// allowAttachments — Разрешить прикрепление файлов (false)
// maxFileSize — Максимальный размер загружаемого файла (в килобайтах)
// allowedFileTypes — Разрешенные типы файлов, перечисляем расширения через запятую, без точек и пробелов
// parseSendMail — Путь к php файлу, который будет подключен для обработки данных перед отправкой email
// -------------------------------------------


Expand Down
1 change: 1 addition & 0 deletions templates/Default/uniform/customheader/config.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
// allowAttachments — Разрешить прикрепление файлов (false)
// maxFileSize — Максимальный размер загружаемого файла (в килобайтах)
// allowedFileTypes — Разрешенные типы файлов, перечисляем расширения через запятую, без точек и пробелов
// parseSendMail — Путь к php файлу, который будет подключен для обработки данных перед отправкой email
// -------------------------------------------


Expand Down
Loading

0 comments on commit df47bb1

Please sign in to comment.