CMS DataLife Engine - Система управления сайтами

proba

Интересная логика кода

Recommended Posts

10 часов назад, celsoft сказал:

Какая опечатка? Я не вижу никаких опечаток.

Коль одни переменные проверяются на существование, а другие - на своё значение, пусть так тогда и будет.

Тогда у меня другой вопрос. В файле /inc/files.php проверяется:

if ( $userdir == "files/" ) msg( "error", $lang['addnews_denied'], $lang['index_denied'] );

т.е. в папку FILES подразумевается, что нельзя, но при этом нет проверки на случай, когда $userdir = "", а $sub_dir = "files".

Share this post


Link to post
Share on other sites

Не баг!

 

Если удаляется "категория1" и имеется такой вариант:

категория1 (за ней имеются публикации)
  подкатегория1 (за ней имеются публикации)
  подкатегория2 (за ней имеются публикации)

 

При выборе "убрать эту категорию у публикаций", удаляются "категория1", "подкатегория1" и "подкатегория2", а у публикаций удаляется только категория с id соответствующей "категория1". Не правильнее было бы в таком случае, удалять у публикаций из категорий и id соответствующие "подкатегория1" и "подкатегория2"?

 

При выборе "Удалить также и публикации", удаляются "категория1", "подкатегория1" и "подкатегория2" и удаляются публикации только с id соответствующими "категория1". Не правильнее было бы в таком случае, удалять и публикаций с id соответствующими "подкатегория1" и "подкатегория2", либо добавлять им 0?

 

При выборе "Переместить в другую категорию", удаляются "категория1", "подкатегория1" и "подкатегория2" и только публикации с id соответствующими "категория1" перемещаются в указанную категорию. Не правильнее было бы в таком случае, если публикациям с id соответствующим "подкатегория1" и "подкатегория2", добавлять id указанной новой категории или 0?

 

В случае, если удаляется "категория1" и имеется такой вариант:

категория1 (публикаций нет)
  подкатегория1 (имеются публикации)
  подкатегория2 (имеются публикации)

то так же удаляются "категория1", "подкатегория1" и "подкатегория2" и публикации с id соответствующими "подкатегория1" и "подкатегория2" не затрагиваются.
Не правильнее было бы в таком случае, публикациям с id "подкатегория1" и "подкатегория2" добавлять 0 (если имелось по одной id)? Получается, что категории с подкатегориями удаляются, а публикации имеют номера своих бывших категорий, о которых ничего не известно, а если не известно, то зачем они остаются?!

 

Подводя всё это, как вариант, не лучше при удалении, например "категория1", помимо трёх предлагаемых действий (на данный момент), добавить действие, при котором всем имеющимся подкатегориям ("подкатегория1" и "подкатегория2") в parentid устанавливать parentid самой "категория1", т.е. все подкатегории не удалять, а поднимать на уровень выше, либо, если удалять (как сейчас реализовано) и подкатегории тоже, то тогда и с учётом их id для публикаций, как это делается для удаляемой "категория1"?

Share this post


Link to post
Share on other sites
В 18.06.2018 в 10:17, proba сказал:

Подводя всё это, как вариант, не лучше при удалении, например "категория1", помимо трёх предлагаемых действий (на данный момент), добавить действие, при котором всем имеющимся подкатегориям ("подкатегория1" и "подкатегория2") в parentid устанавливать parentid самой "категория1", т.е. все подкатегории не удалять, а поднимать на уровень выше, либо, если удалять (как сейчас реализовано) и подкатегории тоже, то тогда и с учётом их id для публикаций, как это делается для удаляемой "категория1"?

Первый вариант не нужен, т.к. перед удалением категории, можно итак поднять все подкатегории на уровень выше, чтобы они больше не являлись подкатегориями удаляемой категории. А вот второй вариант чтобы все действия применялись и к удаляемым подкатегориям имеет смысл. Будет сделано.

Share this post


Link to post
Share on other sites
В 26.06.2018 в 09:24, celsoft сказал:

перед удалением категории, можно итак поднять все подкатегории на уровень выше

Согласен, но для каждой подкатегории придётся совершать однотипные действия по поднятию, а так было бы меньше телодвижений и проще.

Share this post


Link to post
Share on other sites

Есть функция в файле /engine/inc/options.php которая принимает 4 параметра, но 4 параметр нигде не используется в функции.

function showRow($title = "", $description = "", $field = "", $class = "") {
	
	
	echo "<tr>
	<td class=\"col-xs-6 col-sm-6 col-md-7\"><h6 class=\"media-heading text-semibold\">{$title}</h6><span class=\"text-muted text-size-small hidden-xs\">{$description}</span></td>
	<td class=\"col-xs-6 col-sm-6 col-md-5\">{$field}</td>
	</tr>";
}
showRow( $lang['opt_sys_ht'], $lang['opt_sys_htd'], "<input type=\"text\" class=\"form-control\" name=\"save_con[home_title]\" value=\"{$config['home_title']}\">", "white-line" );

 

Share this post


Link to post
Share on other sites

@celsoft функция echofooter выводит если юзер не вошел в админ панель $skin_not_logged_footer но в global она не подтягивается.

function echofooter() {
	global $is_loged_in, $skin_footer;

	if( $is_loged_in ) echo $skin_footer;
	else echo $skin_not_logged_footer;

}

Так же echoheader выводит переменную $skin_not_logged_header которая не берется в global

Share this post


Link to post
Share on other sites

@celsoft 

Файл /engine/clasees/templates.class.php функция load_template. Имя файла обрабатывается функцией totranslit, в которой выполняется следующий код

$var = str_ireplace( ".php", "", $var );
$var = str_ireplace( ".php", ".ppp", $var );

Позже в функции load_template есть код

if( stripos ( $tpl_name, ".php" ) !== false ) {

Вопросы. Зачем после удаления .php делать замену .php на .ppp когда его никогда уже не будет? И зачем делать проверку на существование подстроки .php в названии файла, если эта подстрока уже стерта?

 

Файл /engine/inc/options.php зачем передавать данные в функцию оборачивая в скобки? Пример:

"{$config['allow_comments_wysiwyg']}"
"{$config['comments_rating_type']}"

 

Share this post


Link to post
Share on other sites
10 часов назад, Gameer сказал:

Вопросы. Зачем после удаления .php делать замену .php на .ppp когда его никогда уже не будет?

что будет в результате работы строки $var = str_ireplace( ".php", "", $var ); если строка будет ".p.phphp", это ответ на ваш вопрос зачем это делать, и о ложном утверждении что его уже никогда не будет. От такой невнимательности к деталям и взламывают коды и в результате сайты.

 

10 часов назад, Gameer сказал:

зачем передавать данные в функцию оборачивая в скобки?

Затем чтобы передать их как именно строки.

Share this post


Link to post
Share on other sites
1 час назад, celsoft сказал:

Затем чтобы передать их как именно строки.

Зачем?

Share this post


Link to post
Share on other sites

@celsoft зачем использовать class который называется unifrom но использовать для него js скрипт selectpicker а не uniform?

$('select.uniform').selectpicker();

Это сбивает с толку, использовал метод апдейта uniform и какое было удивление что ничего не происходит и данные не обновляются. Пришлось заглядывать в главный скрипт что бы понять что там совсем не uniform

Edited by Gameer

Share this post


Link to post
Share on other sites
21 минуту назад, Gameer сказал:

зачем использовать class который называется unifrom но использовать для него js скрипт selectpicker а не uniform?

Затем что не всем элементам с этим классом назначается именно selectpicker

Share this post


Link to post
Share on other sites
5 минут назад, celsoft сказал:

Затем что не всем элементам с этим классом назначается именно selectpicker

Я знаю, но почему для selectpicker не использовать отдельный класс?

Share this post


Link to post
Share on other sites
1 минуту назад, Gameer сказал:

Я знаю, но почему для selectpicker не использовать отдельный класс?

Зачем? Нам удобно так.

Share this post


Link to post
Share on other sites

В движке используется $not_allow_symbol, но например, в файлах feedback.php (ajax и module) по сравнению с другими, отсутствуют символы пробела и &. А в файле editusers.php только &.

Share this post


Link to post
Share on other sites

В файле register.php:

strlen( $email ) > 40,

В файле profile.php:

strlen( $email ) > 50

В social.php:

strlen( $email ) > 50

Да же в api до 50.

Share this post


Link to post
Share on other sites

@celsoft обратите внимание (версия DLE 13.1)

1. /cron.php устаревшая функция each с 7.2.0

while ( list ( $key, $val ) = each( $arr ) ) {

2. /engine/ajax/upload.php нет global для $lang в функции xfparamload

echo $lang['xfield_error'], "$lang[xfield_err_3] \"engine/data/xfields.txt\". $lang[xfield_err_4]";

3. /engine/classes/antivirus.class.php нет переменной $file

$this->checked_folders[] = $dir . $this->dir_split . $file;

4. /engine/classes/parse.class.php нет переменной $url возможно имелось в виду $data->url

$html = ( !empty($data->title) ) ? '<a href="' . $this->safeUrl($url) . '">' . $this->escapeHTML($data->title) . '</a>' : false;

5. /engine/classes/social.class.php нет переменной $count

if(dle_strlen( $user['nickname'], $config['charset'] ) > 37) $user['nickname'] = dle_substr( $user['nickname'], 37, $count, $config['charset'] );

6. /engine/inc/categories.php в функции DisplayCategories нет переменной $cat

$category_name = $cat[$id];

7. /engine/inc/dumper.php объявлена переменная до ее проверки $is_dle

if( !$is_dle AND !empty($str) ) {

8. /engine/modules/social.php нет переменной $_IP в функции check_registration

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE logged_ip = '{$_IP}'" );

 

Edited by Gameer
  • Like 1
  • Upvote 1

Share this post


Link to post
Share on other sites
В 15.02.2019 в 21:22, Gameer сказал:

@celsoft обратите внимание (версия DLE 13.1)

Спасибо за информацию.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now