Хак [Хак]Перенос новостей из категории А в категорию Б

Тема в разделе "DLE", создана пользователем Kentbrn, 6 окт 2008.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Kentbrn

    Kentbrn Постоялец

    Регистр.:
    11 мар 2007
    Сообщения:
    134
    Симпатии:
    14
    Хак переносит новости из категории А в категорию Б при наступлении определенной даты, указанной в админ-панели.
    1. выполнить sql-запрос к БД (если название префика у таблици отличается от стандартного, подправить:(
    Код:
    ALTER TABLE `dles_post` ADD `expires_move` DATE DEFAULT '0000-00-00 ' NOT NULL AFTER `expires` ,
    ADD `expires_categories` VARCHAR( 200 ) DEFAULT '0' NOT NULL AFTER `expires_move1`;

    2. engine/inc/addnews.php
    ищем
    Код:
    <tr>
            <td height="29" style="padding-left:5px;">{$lang['date_expires']}</td>
            <td><input type="text" name="expires" id="e_date_c" size="20"  class=edit>
    <img src="engine/skins/images/img.gif"  align="absmiddle" id="e_trigger_c" style="cursor: pointer; border: 0" /><a href="#" class="hintanchor" onMouseover="showhint('{$lang['hint_expires']}', this, event, '320px')">[?]</a>
    <script type="text/javascript">
        Calendar.setup({
            inputField     :    "e_date_c",     // id of the input field
            ifFormat       :    "%Y-%m-%d",     // format of the input field
            button         :    "e_trigger_c",  // trigger for the calendar (button ID)
            align          :    "Br",           // alignment
            singleClick    :    true
        });
    </script></td>
        </tr>
        <tr>
            <td colspan="2"><div class="hr_line"></div></td>
        </tr>

    ниже добавляем

    Код:
        <tr>
            <td height="29" style="padding-left:5px;">Переместить в категорию</td>
            <td><select name="categories">
            {$categories_list}
            </select> после <input type="text" name="expires_move" id="e_date_c_2" size="20" class="edit">
    <img src="engine/skins/images/img.gif"  align="absmiddle" id="e_trigger_c_2" style="cursor: pointer; border: 0" /><a href="#" class="hintanchor" onMouseover="showhint('Ваша новость будет автоматически перемещена в указанную категорию, при наступлении установленного времени.', this, event, '320px')">[?]</a>
    <script type="text/javascript">
        Calendar.setup({
            inputField     :    "e_date_c_2",     // id of the input field
            ifFormat       :    "%Y-%m-%d",      // format of the input field
            button         :    "e_trigger_c_2",  // trigger for the calendar (button ID)
            align          :    "Br",           // alignment
            singleClick    :    true
        });
    </script></td>
        </tr>    
        
        <tr>
            <td colspan="2"><div class="hr_line"></div></td>
        </tr>
    
    ищем
    Код:
    if (trim($_POST['expires']) != "") {
    if ((($expires = strtotime($_POST['expires'])) === -1)) {
    msg("error",$lang['addnews_error'],$lang['addnews_erdate'], "javascript:history.go(-1)"); }
    else {
    $expires = date ("Y-m-d", $expires);
    }
        } else $expires = '0000-00-00';
    
    ниже добавляем

    Код:
        //CTAR&K added 
    if (trim($_POST['expires_move']) != "") {
        if ((($expires_move = strtotime($_POST['expires_move'])) === -1)) {
            msg("error",$lang['addnews_error'],$lang['addnews_erdate'], "javascript:history.go(-1)"); }
        else {
            $expires_move = date ("Y-m-d", $expires_move);
        }
    } else $expires_move = '0000-00-00';


    ищем
    Код:
         $filecontents = implode("||", $filecontents);
    
        } else $filecontents = '';
    ниже:
    заменяем
    Код:
    $db->query("INSERT INTO "..... 
    на это:

    Код:
    $db->query("INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br, votes, access, expires, expires_move, expires_categories, symbol, flag) values ('$thistime', '$member_db[2]', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_rating', '$allow_br', '$add_vote', '$group_regel', '$expires', '$expires_move', '$categories', '$catalog_url', '1')");

    ==============================================================================
    3. engine/inc/editnews.php
    ищем
    Код:
    $allow_br = isset($_POST['allow_br']) ? intval($_POST['allow_br']) : 0;
    ниже добавляем
    Код:
    //CTAR&K added
    $categories = isset($_POST['categories']) ? intval($_POST['categories']) : 0;

    ищем
    Код:
    <tr>
            <td height="29" style="padding-left:5px;">{$lang['date_expires']}</td>
            <td><input type="text" name="expires" id="e_date_c" size="20"  class="edit" value="{$row['expires']}">
    <img src="engine/skins/images/img.gif"  align="absmiddle" id="e_trigger_c" style="cursor: pointer; border: 0" /><a href="#" class="hintanchor" onMouseover="showhint('{$lang['hint_expires']}', this, event, '320px')">[?]</a>
    <script type="text/javascript">
        Calendar.setup({
            inputField     :    "e_date_c",     // id of the input field
            ifFormat       :    "%Y-%m-%d",      // format of the input field
            button         :    "e_trigger_c",  // trigger for the calendar (button ID)
            align          :    "Br",           // alignment 
            singleClick    :    true
        });
    </script></td>
        </tr>
        <tr>
            <td colspan="2"><div class="hr_line"></div></td>
        </tr>


    ниже добавляем
    Код:
    <tr>
            <td height="29" style="padding-left:5px;">Переместить в категорию</td>
            <td><select name="categories">
            {$categories_list}
            </select> после <input type="text" name="expires_move" id="e_date_c_2" size="20" class="edit">
    <img src="engine/skins/images/img.gif"  align="absmiddle" id="e_trigger_c_2" style="cursor: pointer; border: 0" /><a href="#" class="hintanchor" onMouseover="showhint('Ваша новость будет автоматически перемещена в указанную категорию, при наступлении установленного времени.', this, event, '320px')">[?]</a>
    <script type="text/javascript">
        Calendar.setup({
            inputField     :    "e_date_c_2",     // id of the input field
            ifFormat       :    "%Y-%m-%d",      // format of the input field
            button         :    "e_trigger_c_2",  // trigger for the calendar (button ID)
            align          :    "Br",           // alignment
            singleClick    :    true
        });
    </script></td>
        </tr>
        <tr>
            <td colspan="2"><div class="hr_line"></div></td>
        </tr>



    ищем
    Код:
    if (trim($_POST['expires']) != "") {
    if ((($expires = strtotime($_POST['expires'])) === -1)) {
    msg("error",$lang['addnews_error'],$lang['addnews_erdate'], "javascript:history.go(-1)"); }
    else {
    $expires = date ("Y-m-d", $expires);
    }
        } else $expires = '0000-00-00';
    
    ниже добавляем
    Код:
     //CTAR&K added 
    if (trim($_POST['expires_move']) != "") {
        if ((($expires_move = strtotime($_POST['expires_move'])) === -1)) {
            msg("error",$lang['addnews_error'],$lang['addnews_erdate'], "javascript:history.go(-1)"); }
        else {
            $expires_move = date ("Y-m-d", $expires_move);
        }
    } else $expires_move = '0000-00-00';
    

    ищем

    Код:
    $result = $db->query("UPDATE " . PREFIX . "_post set title='$title', date='$thistime', ......
    заменяем целиком стоку. т.е. в итоге должно получиться так:
    Код:
    $result = $db->query("UPDATE " . PREFIX . "_post set title='$title', date='$thistime', short_story='$short_story', full_story='$full_story', descr='{$metatags['description']}', keywords='{$metatags['keywords']}', category='$category_list', alt_name='$alt_name', allow_comm='$allow_comm', approve='$approve', allow_main='$allow_main', allow_rate='$allow_rating', fixed='$news_fixed', allow_br='$allow_br', votes='$add_vote', access='$group_regel', expires='$expires', expires_move='$expires_move', expires_categories='$categories', symbol='$catalog_url', flag='1' WHERE id='$item_db[0]'");
    
    и ниже после } else {

    Код:
    $result = $db->query("UPDATE " . PREFIX . "_post set title='$title', short_story='$short_story' ...
    заменяем на 
    $result = $db->query("UPDATE " . PREFIX . "_post set title='$title', short_story='$short_story', full_story='$full_story', descr='{$metatags['description']}', keywords='{$metatags['keywords']}', category='$category_list', alt_name='$alt_name', allow_comm='$allow_comm', approve='$approve', allow_main='$allow_main', allow_rate='$allow_rating', fixed='$news_fixed', allow_br='$allow_br', votes='$add_vote', access='$group_regel', expires='$expires', expires_move='$expires_move', expires_categories='$categories', symbol='$catalog_url' WHERE id='$item_db[0]'");
    
    ============================================================
    4. engine/modules/cron.php
    ищем
    Код:
    if ($cron == 2) {
    ниже добавляем
    Код:
        //CTAR&K added
        $cron_move = $db->query("SELECT id, expires_move, expires_categories FROM " . PREFIX . "_post WHERE expires_move != '0000-00-00' AND expires_move < '".date("Y-m-d", $_TIME)."'");
    
        while($rows = $db->get_row($cron_move)){
            $db->query("UPDATE " . PREFIX . "_post SET category='{$rows['expires_categories']}', expires_move='0000-00-00', expires_categories='0' WHERE id='{$rows['id']}'");
        }
            $db->free($cron_move);
     

    Вложения:

  2. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    vrode osybka v pervom SQL

    AFTER `expires_move1`;
    dolzno byt `expires_move`;
     
  3. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    PoMaH, да, это получилось непроизвольная "защита от дурака" ))
    Спасибо Kentbrn за публикацию, избавил меня от ручного труда. Кто-нибудь ставил уже? пригодился? может какие доработки сделать?

    Хак писался по просьбе знакомого, его удобно использовать для варезных сайтов.
     
  4. yudzhin

    yudzhin Постоялец

    Регистр.:
    11 ноя 2007
    Сообщения:
    66
    Симпатии:
    9
    Думаю не очень важный хак да и установка геммор полный
     
  5. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    Установка геморная? для этого есть измененные файлы(в атаче!) Кому модуль нужен тот использует и радуется, и тема здесь не для рассусолевания "Надо/Не надо", а для того чтобы поделиться с народом тем, что есть.
     
Статус темы:
Закрыта.