Loading...

Cron для обработки новостей в DLE

Наверняка многие сталкивались с вопросом: "Почему не работает функция в dle при добавлении и редактировании новости - срок действия до ?" Кто не понял, то я об этом:

 

Задал вопрос на оф. форуме dle - они молчат уже сутки, а мне нужно было исправить быстренько это дело. Даже в последней версии не работает эта функция. Я решил написать свой скрипт, который работает по крону.

error_reporting(0);

$allow_cron = 1;

if ($allow_cron) {

    define('DATALIFEENGINE', true);
    define('AUTOMODE', true);
    define('LOGGED_IN', true);

    define('ROOT_DIR', dirname (__FILE__));
    define('ENGINE_DIR', ROOT_DIR.'/engine');
    require_once ENGINE_DIR.'/classes/mysql.php';
    require_once ENGINE_DIR.'/data/dbconfig.php';
    require_once ENGINE_DIR.'/data/config.php';
    require_once ENGINE_DIR.'/inc/include/functions.inc.php';

    date_default_timezone_set ( $config['date_adjust'] );

    $time = time();

    $db->query( "SELECT * FROM " . PREFIX . "_post_log WHERE expires <= {$time} ORDER BY id DESC" );

    while ( $row = $db->get_row() ) {

        $id = $row["id"];
        $news_id = $row["news_id"];
        $action = $row["action"];

        switch ($action){

            case "1": // удалить
                $db->query( "DELETE FROM " . PREFIX . "_post WHERE id = '{$news_id}'" );
                echo "Новость № {$news_id} удалена<br>";
                break;

            case "2": // отправить на модерацию
                $db->query( "UPDATE " . PREFIX . "_post set approve=0 WHERE id ='{$news_id}'" );
                echo "Новость № {$news_id} отправлена на модерацию<br>";
                break;

            case "3": // снять публикацию на главной
                $db->query( "UPDATE " . PREFIX . "_post set allow_main=0 WHERE id ='{$news_id}'" );
                echo "Новость № {$news_id} снята с главной<br>";
                break;

            case "4": // снять фиксацию
                $db->query( "UPDATE " . PREFIX . "_post set fixed=0 WHERE id ='{$news_id}'" );
                echo "Новость № {$news_id} фиксация снята<br>";
                break;
        }

        $db->query( "DELETE FROM " . PREFIX . "_post_log WHERE id = '{$id}'" );

    }

    $db->free();

}

Прошу заметить, что в данном коде, а именно в проверке значений switch case подставлены значения под версию движка 11.3

В общем если у Вас версия ниже, то проверьте выпадающий список. Если у Вас есть 5 пунктов в списке, то все будет работать итак. Если же у Вас первого пункта нет (Выберите действие), то нужно изменить код, а именно значение в кейсах, то есть начало будет не с 1, а с 0.

Вот так:
case "0":
и т.д.


Автор: Kylaksizov
Поделиться:

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

В корзине: 0 шт. 0 руб.
Отключите расширение AdBlock на нашем сайте!

Собеседники

Переписка

Нименование Количество Цена / 1 шт.
Всего: 0 руб.