diff --git a/upload/blockpro_install.php b/upload/blockpro_install.php index 92f3662..312bd9c 100644 --- a/upload/blockpro_install.php +++ b/upload/blockpro_install.php @@ -17,10 +17,10 @@ 'moduleDescr' => 'Модуль вывода новостей для DLE', // Версия модуля, для установщика - 'moduleVersion' => '4.2.4', + 'moduleVersion' => '4.2.5', // Дата выпуска модуля, для установщика - 'moduleDate' => '21.09.2014', + 'moduleDate' => '26.09.2014', // Версии DLE, поддержваемые модулем, для установщика 'dleVersion' => '10.x', diff --git a/upload/engine/inc/blockpro.php b/upload/engine/inc/blockpro.php index 85117fe..a4eb585 100644 --- a/upload/engine/inc/blockpro.php +++ b/upload/engine/inc/blockpro.php @@ -21,7 +21,7 @@ define('MODULE_DIR', ENGINE_DIR . '/modules/base/admin/blockpro/'); $moduleName = 'blockpro'; -$moduleVersion = '4.2.4'; +$moduleVersion = '4.2.5'; $moderate = $_REQUEST['moderate']; $moderate_checked = ($moderate) ? 'checked' : '' ; diff --git a/upload/engine/modules/base/admin/blockpro/generator.php b/upload/engine/modules/base/admin/blockpro/generator.php index 0fa6a0a..b0163fe 100644 --- a/upload/engine/modules/base/admin/blockpro/generator.php +++ b/upload/engine/modules/base/admin/blockpro/generator.php @@ -8,14 +8,15 @@ } function getTemplatesList($dir) { - global $cfg; + global $cfg, $template; $tplFiles = array(); $tplFiles[] = ''; $f = scandir($dir); foreach ($f as $file){ $filename = str_replace('.tpl', '', $file); - // $act = ('blockpro/' . $filename == $cfg['template']) ? 'selected' : '' ; + $act = (('blockpro/' . $filename) == $template) ? 'selected' : '' ; + if(preg_match('/\.(tpl)/', $file)){ $tplFiles[] = ''; } diff --git a/upload/engine/modules/base/blockpro.php b/upload/engine/modules/base/blockpro.php index 410bf88..35fc647 100644 --- a/upload/engine/modules/base/blockpro.php +++ b/upload/engine/modules/base/blockpro.php @@ -287,17 +287,22 @@ classic: << Первая < 1 [2] 3 > Последняя >> $wheres[] = $ignorePosts . 'id regexp "[[:<:]](' . str_replace(',', '|', $postsArr) . ')[[:>:]]"'; } + $_currentAuthor = false; // Фильтрация новостей по АВТОРАМ if ($base->cfg['author'] == 'this') { $base->cfg['author'] = $base->db->parse('?s', $_REQUEST["user"]); + $_currentAuthor = true; } if ($base->cfg['notAuthor'] == 'this') { $base->cfg['notAuthor'] = $base->db->parse('?s', $_REQUEST["user"]); + $_currentAuthor = true; } if ($base->cfg['author'] || $base->cfg['notAuthor']) { $ignoreAuthors = ($base->cfg['notAuthor']) ? 'NOT ' : ''; $authorsArr = ($base->cfg['notAuthor']) ? $base->cfg['notAuthor'] : $base->cfg['author']; - $wheres[] = $ignoreAuthors . 'autor regexp "[[:<:]](' . str_replace(',', '|', $authorsArr) . ')[[:>:]]"'; + $wheres[] = ($_currentAuthor) + ? $ignoreAuthors . 'autor = '. $authorsArr + : $ignoreAuthors . 'autor regexp "[[:<:]](' . str_replace(',', '|', $authorsArr) . ')[[:>:]]"'; } // Фильтрация новостей по ДОПОЛНИТЕЛЬНЫМ ПОЛЯМ (проверяется только на заполненность) @@ -333,18 +338,24 @@ classic: << Первая < 1 [2] 3 > Последняя >> $wheres[] = implode($_xfSearchLogic, $xfWheres); } + $_currentTag = false; // Фильтрация новостей по ТЕГАМ if ($base->cfg['tags'] == 'this') { $base->cfg['tags'] = $base->db->parse('?s', $_REQUEST["tag"]); + $_currentTag = true; } if ($base->cfg['notTags'] == 'this') { $base->cfg['notTags'] = $base->db->parse('?s', $_REQUEST["tag"]); + $_currentTag = true; } if ($base->cfg['tags'] || $base->cfg['notTags']) { $ignoreTags = ($base->cfg['notTags']) ? 'NOT ' : ''; $tagsArr = ($base->cfg['notTags']) ? $base->cfg['notTags'] : $base->cfg['tags']; - $wheres[] = $ignoreTags . 'tags regexp "[[:<:]](' . str_replace(',', '|', $tagsArr) . ')[[:>:]]"'; + $wheres[] = ($_currentTag) + ? $ignoreTags . 'autor = '. $tagsArr + : $ignoreTags . 'autor regexp "[[:<:]](' . str_replace(',', '|', $tagsArr) . ')[[:>:]]"'; + } // Если включен режим вывода похожих новостей: @@ -409,13 +420,17 @@ classic: << Первая < 1 [2] 3 > Последняя >> // Получаем новости $list = $base->db->getAll($query, $selectRows, PREFIX . '_post', PREFIX . '_post_extras', $ext_query . $where, $_startFrom, $base->cfg['limit']); + // Обрабатываем данные функцией stripslashes рекурсивно. + $list = stripSlashesInArray(&$list); // Путь к папке с текущим шаблоном $tplArr['theme'] = '/templates/' . $base->dle_config['skin']; // Обрабатываем данные в массиве. foreach ($list as $key => $value) { - $list[$key]['xfields'] = xfieldsdataload($value['xfields']); + // Плучаем обработанные допполя. + $list[$key]['xfields'] = stripSlashesInArray(xfieldsdataload($value['xfields'])); + // Массив данных для формирования ЧПУ $urlArr = array( 'category' => $value['category'], diff --git a/upload/engine/modules/base/core/base.php b/upload/engine/modules/base/core/base.php index c60cbf0..1ca26eb 100644 --- a/upload/engine/modules/base/core/base.php +++ b/upload/engine/modules/base/core/base.php @@ -117,8 +117,6 @@ public function addModifiers() { ); } - - /** * @param $data - массив с информацией о статье * @@ -405,5 +403,14 @@ function baseShowRating($id, $rating, $vote_num, $allow = true) { return $rated; } +function stripSlashesInArray($data) { + if(is_array($data)) { + $data = array_map('stripSlashesInArray', &$data); + } else { + $data = stripslashes($data); + } + + return $data; +} ?> \ No newline at end of file