Перейти к содержанию

Что за скрипт выводит сообщения в панеле модератора


Рекомендуемые сообщения

Что за скрипт отвечает за раздел "Очередь одобрения" в панеле модератора, именно который выводит сообщения ожидающих одобрения модератором?

Ссылка на комментарий
Поделиться на другие сайты

\IPS\core\extensions\core\ModCp\Unapproved

Ссылка на комментарий
Поделиться на другие сайты

Все скрипты прошерстил. Не могу найти запрос в котором было бы указано выборка 

queued = 1

То есть задача в том, чтобы данный модуль так же выводил контент на проверку но добавить в условие выборки еще одно поле значение которого будет равно скажем 0.

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

Где, в какой функции это возможно поправить?

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Zuldek сказал:

Все скрипты прошерстил. Не могу найти запрос в котором было бы указано выборка

Потомучта в концепции ActiveRecord это поле называется hidden

А в описании функции create есть строчка

* @param    int|NULL                $hiddenStatus        NULL to set automatically or override: 0 = unhidden; 1 = hidden, pending moderator approval; -1 = hidden (as if hidden by a moderator)
 

Ссылка на комментарий
Поделиться на другие сайты

А когда одобряем, запрос отправляется в функцию

public function onUnhide( $approving, $member )

Что та не вижу в ней, чтобы выполнялся запрос или что то подобное. Чтобы изменилось значение поля queued, где оно меняется на значение 0 когда модератор одобряет сообщение?

Ссылка на комментарий
Поделиться на другие сайты

57 минут назад, Zuldek сказал:

где оно меняется на значение 0 когда модератор одобряет сообщение?

Нигде. Это поле существует только в базе, в движке оно называется 'hidden'. 

Поле меняется так (примерно): 

$column = $item::$databaseColumnMap['hidden'];
$item->$column = 0;
$item->save();

Много вы там поменять сможете? 

53 минуты назад, Zuldek сказал:

А когда одобряем, запрос отправляется в функцию

Функции onXxxxx вызываются после каких-либо событий, в них делают что-то дополнительное (очистка, статистика). А сохранение происходит в базовых  классах.

Ссылка на комментарий
Поделиться на другие сайты

/applications/core/extensions/core/ModCp/Unapproved.php

Примерная сотая строчка, прописываю

if ( isset( $class::$databaseColumnMap['points'] ) )
{                    
     $where[] = array( $class::$databaseTable . '.' . $class::$databasePrefix . $class::$databaseColumnMap['points'] . '=1 ');
}elseif

В таблице forums_posts  есть поле points в котором прописана 1. То есть данные сообщения тоже выводим в очереди даже если queued равен 0

Трудность в следующем, если это сообщение было добавлено с созданием топика (new_topic = 1), после которого queued равен 0, а поле points равно 1. Данное сообщение отображается в очереди на проверку, но кнопки они не активны.

Как в данном случаи сделать так, чтобы они были активны?

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

$column = $item::$databaseColumnMap['hidden'];
$item->$column = 0;
$item->save();

Где возможно было бы дописать код, для того чтобы значение поля points поменять на 0

dsz.png

Изменено пользователем Zuldek
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Zuldek сказал:
$class::$databaseColumnMap['points']

А вы уверены, что в массиве есть такой ключ? 

1 час назад, Zuldek сказал:

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

10 секунд ковырялся в коде, нашел все файлы со строкой $item::$databaseColumnMap['hidden'];

image.png.25c66b4afc2bff9623edb9e6a5409223.png

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Desti сказал:

нашел все файлы со строкой

Что за прога на скриншоте?

Ссылка на комментарий
Поделиться на другие сайты

Visual Studio Code - бесплатный IDE/редактор кода - на сегодняшний день лучший вариант редактора для некоммерческой-любительской разработки.  

Изменено пользователем Desti
Ссылка на комментарий
Поделиться на другие сайты

Не выходит найти. Я уже все коды поудалял, очистил функцию, затем одобрил пост, посмотрел в таблицу, ок, содержимое ячейки queued изменилось

И так с  самого утра, пытаюсь найти код, который меняет статус сообщение при клике "Одобрить". Где это самый код находится? 

Каждый файл на скрине перебрал...

Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, Zuldek сказал:

И так с  самого утра, пытаюсь найти код, который меняет статус сообщение при клике "Одобрить".

Который всё это время живет в system/Content/Content.php, основная функция modAction(), которая вызывается при любых модераторских действиях, она и вызывает функцию unhide() в этом же файле. 

Ссылка на комментарий
Поделиться на другие сайты

public static function create

content/comment.php

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

Ссылка на комментарий
Поделиться на другие сайты

39 минут назад, Zuldek сказал:

каким образом возможно определить

Попробовать прочитать описание над функцией.

Ссылка на комментарий
Поделиться на другие сайты

В таблицу topic и post добавил поле points в файлах topic и пост добавил данное поле в массив со своими именами

В очереди выбарку сделал следующим образом

if($class::$databaseColumnMap['points_topic']) //Выборка топиков
                    
    $where[] = array( $class::$databaseTable.'.'.$class::$databasePrefix.$class::$databaseColumnMap['approved']. '=0 or '.$class::$databaseTable.'.'.$class::$databasePrefix.$class::$databaseColumnMap['points_topic'].' = 1' );
                
elseif($class::$databaseColumnMap['points_post']) //Выборка постов
                    
    $where[] = array( $class::$databaseTable.'.'.$class::$databasePrefix.$class::$databaseColumnMap['hidden']. '=1 or '.$class::$databaseTable.'.'.$class::$databasePrefix.$class::$databaseColumnMap['points_post'].' = 1' );


Суть в следующем, все работает как прежде. Просто если поле points содержит значение, данные записи тоже выбираем...

К примеру если запись топика approved = 1, по умолчанию данный топик не модерируем, но если поле points скажем равно 1

В данном случаи выводим запись на модерацию. Проблема в том, что кнопка одобрить заблокирована

Поскольку

$item->canUnhide()

Ничего не отдает, по умолчанию отдает единицу, но поскольку проверить топик изначально не нужно, отдает пустоту.

В файле source/topic/topic.php

    public function canUnhide( $member=NULL )
    {

        if ( $this->isArchived() )
        {
            return FALSE;
        }
        
        return parent::canUnhide( $member );
    }

Данная функция должна отдавать значение чтобы кнопка не была деактивной. Не могу понять куда именно лезть, чтобы добавить исключение когда у топика поле points = 1

 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Desti сказал:

Попробовать прочитать описание над функцией.

Пробовал при помощи $first

В таблице topic и post, есть поле points

В таблице topic, поле points долно содержать единицу тогда, когда всего 1 пост. То есть, что получается.

При создании топика в первой и во второй таблице, ячейка содержит единицу, а необходимо чтобы в таблице с топикам она содержала 1, а с постами 0. 

 При постинге в теме все работает, points=1, а вот при создании темы и в таблице c топиками points=1 и в таблице с постами.

То есть что то одно должно быть

    public static function create( $item, $comment, $first=FALSE, $guestName=NULL, $incrementPostCount=NULL, $member=NULL, \IPS\DateTime $time=NULL, $ipAddress=NULL, $hiddenStatus=NULL, $anonymous=NULL )
    {
        if ( $member === NULL )
            $member = \IPS\Member::loggedIn();


        /* Create the object */
        $obj = new static;
        foreach ( array( 'item', 'date', 'author', 'author_name', 'content', 'ip_address', 'first', 'approved', 'hidden', 'points_post', 'points_topic' ) as $k )
        {

            if ( isset( static::$databaseColumnMap[ $k ] ) )
            {
                
                $val = NULL;
                switch ( $k )
                {

                    case 'points_post':
                    case 'points_topic':
                        $val = 1;
                    break;

 

Как только не пытался наладить, при создании темы. Запись в таблице с постами, поле points=1, не должно быть так. 

Как так сделать?

Ссылка на комментарий
Поделиться на другие сайты

Так что ли

case 'points_post':
	$val = $first ? 0 : 1;
	break;
case 'points_topic':
	$val = 1;
	break;

 

Изменено пользователем ZIKURIK
Ссылка на комментарий
Поделиться на другие сайты

По ходу совсем не то, блин я запутался

public static function create

Вызывается тогда когда добавляем запись в таблицу forum_post

Если же тупо прописать

$item->points =  1;

Вне switch, перед или после цикла foreach. 

Тогда тупо и в таблице постов и в таблице топиков, в обеих таблицах ячейка points будет содержать 1.

 

Мужики, хелпс...

 

$val = $first ? 0 : 1;

Работает только для постов

case 'points_topic':

Почему то не вызывается

Хотя в топиках, прописано данное поле

 

    public static $databaseColumnMap = array(
        'author'                => 'starter_id',
        'author_name'            => 'starter_name',
        'container'                => 'forum_id',
        'date'                    => 'start_date',
        'title'                    => 'title',
        'num_comments'            => 'posts',
        'unapproved_comments'    => 'topic_queuedposts',
        'hidden_comments'        => 'topic_hiddenposts',
        'first_comment_id'        => 'topic_firstpost',
        'last_comment'            => array( 'last_post', 'last_real_post' ),
        'last_comment_by'        => 'last_poster_id',
        'last_comment_name'        => 'last_poster_name',
        'views'                    => 'views',
        'approved'                => 'approved',
        'points_topic'            => 'points',
        'pinned'                => 'pinned',
        'poll'                    => 'poll_state',
        'status'                => 'state',
        'moved_to'                => 'moved_to',
        'moved_on'                => 'moved_on',
        'featured'                => 'featured',
        'state'                    => 'state',
        'updated'                => 'last_post',
        'meta_data'                => 'topic_meta_data',
        'solved_comment_id'        => 'topic_answered_pid',
        'is_anon'                => 'is_anon',
        'last_comment_anon'        => 'last_poster_anon',
        
    );

 

Ссылка на комментарий
Поделиться на другие сайты

Разобрался, в другом файле с топиком работают...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...