• Автор:

    Flesha
  • Добавлено:

    ноя 20, 2012
  • Комментариев:

    0
  • Просмотров:

    1 816

Хак Допустимые символы буквенного каталога публикаций

Хак Допустимые символы буквенного каталога публикаций

Установка:

1. В файле engine/ajax/rebuild.php найти:
    echo $buffer;

} else {


заменить на:
    echo $buffer;

} elseif ($_POST['area'] == "cat_rebuild" ) {

$result = $db->query("SELECT id, title, symbol FROM " . PREFIX . "_post LIMIT ".$startfrom.", ".$count_per_step);

while($row = $db->get_row($result))
{
$catalog_url = $row['symbol'];

if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $row['title'] ) ) ) ) ) ), 0, 1, $config['charset'] ) );

$db->query( "UPDATE " . PREFIX . "_post SET symbol='{$catalog_url}' WHERE id='{$row['id']}'" );

$step++;
}

clear_cache();
$rebuildcount = $startfrom + $step;
$buffer = "{\"status\": \"ok\",\"rebuildcount\": {$rebuildcount}}";
echo $buffer;

} elseif ($_POST['area'] == "rewrite_catalog" ) {

$result = $db->query("SELECT id, title FROM " . PREFIX . "_post LIMIT ".$startfrom.", ".$count_per_step);

while($row = $db->get_row($result))
{
if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $row['title'] ) ) ) ) ) ), 0, 1, $config['charset'] ) );

$db->query( "UPDATE " . PREFIX . "_post SET symbol='{$catalog_url}' WHERE id='{$row['id']}'" );

$step++;
}

clear_cache();
$rebuildcount = $startfrom + $step;
$buffer = "{\"status\": \"ok\",\"rebuildcount\": {$rebuildcount}}";
echo $buffer;

} else {



2. В файле engine/inc/addnews.php найти:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) );



заменить на:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) );



3. В файле engine/inc/editnews.php найти:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) );



заменить на:
    if ($config['create_catalog'] AND !$catalog_url) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) );



4. В файле engine/inc/options.php найти:
    showRow( $lang['opt_sys_acat'], $lang['opt_sys_acatd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[create_catalog]", "{$config['create_catalog']}" ) );



заменить на:
    showRow( $lang['opt_sys_acat'], $lang['opt_sys_acatd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[create_catalog]", "{$config['create_catalog']}" ) );
showRow( "Допустимые символы буквенного каталога публикаций", "Скрипт добавит только разрешённую букву из заголовка вашей новости, например, в данном случае: <font color=\"darkgreen\"><b>a-zа-я0-9</b></font> - будет добавлен первый символ латиницы, кириллицы или цифра. <font color=\"red\">«</font>Кавычки<font color=\"red\">»</font>, <font color=\"red\">(</font>скобки<font color=\"red\">)</font> и <font color=\"red\">[</font>другие неразрешённые символы<font color=\"red\">]</font> будут отфильтрованы!", "<input class=\"edit bk\" type=text style=\"text-align: center;\" name=\"save_con[valid_catalog_symbols]\" value=\"{$config['valid_catalog_symbols']}\" size=40>" );



5. В файле engine/inc/rebuild.php найти:
HTML;

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_static WHERE allow_br !='2'" );


заменить на:
HTML;


if ($config['create_catalog']) {
$submit = ("<input type=\"submit\" id=\"cat_button\" class=\"btn btn-primary\" value=\"{$lang['rebuild_start']}\" style=\"width:190px;\" /><input type=\"hidden\" id=\"cat_rebuild_ok\" name=\"cat_rebuild_ok\" value=\"0\" />");
} else {
$submit = ("<a class=\"btn btn-primary\" style=\"color:#FFFFFF;font-size:11px;line-height:15px;\" title=\"Настройки параметров скрипта\" target=\"_blank\" href=\"$PHP_SELF?mod=options&action=syscon\">Настройки параметров скрипта</a> Включите <b>автоматическое формирование буквенного каталога публикаций</b> на вкладке вывода новостей");
}
echo <<<HTML
<form action="" method="post">
<div style="padding-top:5px;padding-bottom:2px;">
<table width="100%">
<tr>
<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0" /></td>
<td style="background-image: url(/engine/skins/images/tl_oo.gif)"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0" /></td>
<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0" /></td>
</tr>
<tr>
<td style="background-image: url(/engine/skins/images/tl_lb.gif)"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0" /></td>
<td style="padding:5px;" bgcolor="#FFFFFF">
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">Автоматическое создание буквенного каталога</div></td>
</tr>
</table>
<div class="unterline"></div>
<table width="100%">
<tr>
<td style="padding:2px;" colspan="2">Данная утилита выполнит автоматическое создание <b>символьного кода</b> для всех новостей на сайте, у которых его нет. Возможно принудительное создание, оно перезапишет существующие значения. Создание буквенного каталога предназначено для объединения группы новостей в каталоги, к примеру, если задать группе новостей один символьный код <b>A</b>, то эта группа новостей будет доступна по адресу: <a title="{$config['https_home_url']}catalog/A/" target="_blank" href="{$config['https_home_url']}catalog/A/" class="copyright"><b>{$config['https_home_url']}catalog/A/</b></a>. То есть, после перестроения мы получим <b>«Алфавитный указатель»</b>, предназначенный для автоматического поиска новостей, заголовок которых начинается на определённую букву (символ) или цифру. Такой способ навигации очень удобен как для посетителей сайта, так и для администрации. <br />Допустимые символы буквенного каталога публикаций вводятся <a title="Настройка допустимых символов буквенного каталога" target="_blank" href="$PHP_SELF?mod=options&action=syscon" class="copyright">в настройках параметров скрипта</a>, во вкладке настройки вывода новостей, текущее значение: <font color="darkgreen"><b>{$config['valid_catalog_symbols']}</b></font>. <br />Перезаписать существующие значения <b>символьного кода</b> <select id="rewrite_catalog" name="rewrite_catalog"><option value="no">Нет</option><option value="yes">Да</option></select> <br /><br /><font color="red"><b>Внимание:</b> Перед началом не забудьте создать резервную копию базы данных, т.к. данное действие в случае некорректной или не совсем ожидаемой работы, невозможно будет отменить.</font></td>
</tr>
<tr>
<td colspan="2"><div class="hr_line"></div></td>
</tr>
<tr>
<td style="padding:2px;height:50px;"><div id="cat_progressbar"></div>{$lang['stat_allnews']}&nbsp;{$row['count']},&nbsp;{$lang['rebuild_count']}&nbsp;<font color="red"><span id="cat_newscount">0</span></font>&nbsp;<span id="cat_progress"></span></td>
</tr>
<tr><td style="background-image: url(/engine/skins/images/mline.gif)" height=1 colspan=2></td></tr>
<tr>
<td style="padding:2px;" colspan="2">&nbsp;</td>
</tr>
<tr>
<td style="padding:2px;">{$submit}</td>
</tr>
</table>
</td>
<td style="background-image: url(/engine/skins/images/tl_rb.gif)"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0" /></td>
</tr>
<tr>
<td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0" /></td>
<td style="background-image: url(/engine/skins/images/tl_ub.gif)"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0" /></td>
<td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0" /></td>
</tr>
</table>
</div></form>
<script language="javascript" type="text/javascript">
var total = {$row['count']};
$(function() {
$( "#cat_progressbar" ).progressbar({
value: 0
});
$('#cat_button').click(function() {
$("#cat_progress").ajaxError(function(event, request, settings){
$(this).html('{$lang['nl1_error']}');
$('#cat_button').attr("disabled", false);
});
$('#cat_progress').html('{$lang['rebuild_status']}');
$('#cat_button').attr("disabled", "disabled");
$('#cat_button').val("{$lang['rebuild_forw']}");
cat_senden( $('#cat_rebuild_ok').val() );
return false;
});
});

function cat_senden( startfrom ){
var cat=top.document.getElementById('rewrite_catalog').value;
if (cat=='no') {
$.post("engine/ajax/rebuild.php?user_hash={$dle_login_hash}", { startfrom: startfrom, area: 'cat_rebuild' },
function(data){
if (data) {
if (data.status == "ok") {
$('#cat_newscount').html(data.rebuildcount);
$('#cat_rebuild_ok').val(data.rebuildcount);
var proc = Math.round( (100 * data.rebuildcount) / total );
if ( proc > 100 ) proc = 100;
$('#cat_progressbar').progressbar( "option", "value", proc );
if (data.rebuildcount >= total)
{
$('#cat_progress').html('{$lang['rebuild_status_ok']}');
}
else
{
setTimeout("cat_senden(" + data.rebuildcount + ")", 5000 );
}
}
}
}, "json");
return false;
}

if (cat=='yes') {
$.post("engine/ajax/rebuild.php?user_hash={$dle_login_hash}", { startfrom: startfrom, area: 'rewrite_catalog' },
function(data){
if (data) {
if (data.status == "ok") {
$('#cat_newscount').html(data.rebuildcount);
$('#cat_rebuild_ok').val(data.rebuildcount);
var proc = Math.round( (100 * data.rebuildcount) / total );
if ( proc > 100 ) proc = 100;
$('#cat_progressbar').progressbar( "option", "value", proc );
if (data.rebuildcount >= total)
{
$('#cat_progress').html('{$lang['rebuild_status_ok']}');
}
else
{
setTimeout("cat_senden(" + data.rebuildcount + ")", 5000 );
}
}
}
}, "json");
return false;
}
}
</script>
HTML;


$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_static WHERE allow_br !='2'" );



6. В файле engine/modules/addnews.php найти:
        if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) ); else $catalog_url = "";


заменить на:
        if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( preg_replace( "/[^{$config['valid_catalog_symbols']}]+/mi", "", ( $title ) ) ) ) ) ), 0, 1, $config['charset'] ) ); else $catalog_url = "";



Так же при помощи этого "исправления" можно добавить символьный код к уже давно добавленным новостям. При перестроении добавленный вами ранее код останется не тронутым, однако, имеется возможность принудительно его перезаписать.
Хак Допустимые символы буквенного каталога публикаций


Вам нужно будет указать допустимые символы в настройках вывода новостей админпанели. Рекомендуемый формат регулярного выражения: a-zа-я0-9
будет брать первый символ кириллицы, латиницы или цифру из заголовка, возможно, вы также сможете указать и национальные символы. (не проверялось).

Автор: MSW
Сайт поддержки: 0-web.ru
Версия DLE: 9.* dle
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.