Zuldek Опубликовано 10 октября, 2021 Поделиться Опубликовано 10 октября, 2021 Что за скрипт отвечает за раздел "Очередь одобрения" в панеле модератора, именно который выводит сообщения ожидающих одобрения модератором? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
kgb Опубликовано 10 октября, 2021 Поделиться Опубликовано 10 октября, 2021 \IPS\core\extensions\core\ModCp\Unapproved Zuldek 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 10 октября, 2021 Автор Поделиться Опубликовано 10 октября, 2021 Все скрипты прошерстил. Не могу найти запрос в котором было бы указано выборка queued = 1 То есть задача в том, чтобы данный модуль так же выводил контент на проверку но добавить в условие выборки еще одно поле значение которого будет равно скажем 0. То есть к существующим сообщениям добавить еще сообщение по значению другого поля. Где, в какой функции это возможно поправить? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 10 октября, 2021 Поделиться Опубликовано 10 октября, 2021 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) Zuldek 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 10 октября, 2021 Автор Поделиться Опубликовано 10 октября, 2021 А когда одобряем, запрос отправляется в функцию public function onUnhide( $approving, $member ) Что та не вижу в ней, чтобы выполнялся запрос или что то подобное. Чтобы изменилось значение поля queued, где оно меняется на значение 0 когда модератор одобряет сообщение? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 10 октября, 2021 Поделиться Опубликовано 10 октября, 2021 57 минут назад, Zuldek сказал: где оно меняется на значение 0 когда модератор одобряет сообщение? Нигде. Это поле существует только в базе, в движке оно называется 'hidden'. Поле меняется так (примерно): $column = $item::$databaseColumnMap['hidden']; $item->$column = 0; $item->save(); Много вы там поменять сможете? 53 минуты назад, Zuldek сказал: А когда одобряем, запрос отправляется в функцию Функции onXxxxx вызываются после каких-либо событий, в них делают что-то дополнительное (очистка, статистика). А сохранение происходит в базовых классах. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 11 октября, 2021 Автор Поделиться Опубликовано 11 октября, 2021 (изменено) /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 Изменено 11 октября, 2021 пользователем Zuldek Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 1 час назад, Zuldek сказал: $class::$databaseColumnMap['points'] А вы уверены, что в массиве есть такой ключ? 1 час назад, Zuldek сказал: Пол ночи покувырялся в коде, так ничего похожего не нашел 10 секунд ковырялся в коде, нашел все файлы со строкой $item::$databaseColumnMap['hidden']; Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 3 часа назад, Desti сказал: нашел все файлы со строкой Что за прога на скриншоте? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 (изменено) Visual Studio Code - бесплатный IDE/редактор кода - на сегодняшний день лучший вариант редактора для некоммерческой-любительской разработки. Изменено 11 октября, 2021 пользователем Desti Zero108 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 11 октября, 2021 Автор Поделиться Опубликовано 11 октября, 2021 Не выходит найти. Я уже все коды поудалял, очистил функцию, затем одобрил пост, посмотрел в таблицу, ок, содержимое ячейки queued изменилось И так с самого утра, пытаюсь найти код, который меняет статус сообщение при клике "Одобрить". Где это самый код находится? Каждый файл на скрине перебрал... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 18 минут назад, Zuldek сказал: И так с самого утра, пытаюсь найти код, который меняет статус сообщение при клике "Одобрить". Который всё это время живет в system/Content/Content.php, основная функция modAction(), которая вызывается при любых модераторских действиях, она и вызывает функцию unhide() в этом же файле. Zuldek 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 11 октября, 2021 Автор Поделиться Опубликовано 11 октября, 2021 public static function create content/comment.php В данной функции каким образом возможно определить, когда это первый пост в теме. То есть когда создается новая тема или уже добавляется сообщение к существующей. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 39 минут назад, Zuldek сказал: каким образом возможно определить Попробовать прочитать описание над функцией. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 11 октября, 2021 Автор Поделиться Опубликовано 11 октября, 2021 В таблицу 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 11 октября, 2021 Автор Поделиться Опубликовано 11 октября, 2021 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, не должно быть так. Как так сделать? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Exception Опубликовано 11 октября, 2021 Поделиться Опубликовано 11 октября, 2021 (изменено) Так что ли case 'points_post': $val = $first ? 0 : 1; break; case 'points_topic': $val = 1; break; Изменено 11 октября, 2021 пользователем ZIKURIK Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 12 октября, 2021 Автор Поделиться Опубликовано 12 октября, 2021 По ходу совсем не то, блин я запутался 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', ); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zuldek Опубликовано 12 октября, 2021 Автор Поделиться Опубликовано 12 октября, 2021 Разобрался, в другом файле с топиком работают... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.