Перегружен метод manage в классе \IPS\forums\modules\front\forums\topic. Естественно без вызова родителя с полным копированием кода от какой-то неизвестной уже версии.
По логике код просто лютый писец. Оставим на совесть автора выбор реализации через manage (оно и понятно почему, человек из другой сферы), и то что он для каждой темы создает отдельную настройку theme_%id в таблице настроек, когда можно было просто указать все ид тем на премодерации в одну настройку.
Но логика запросов это лютый треш - запрашиваем, если нету вставляем, потом опять запрашиваем. Он даже умудрился составить запрос на то, что уже есть в \IPS\Member::loggedIn().
Если отбросить кликбейтное название, то код действительно "интересный" в кавычках естественно.
$title = 'theme_'.$topic->tid; if (\IPS\Db::i()->select('*', 'core_sys_conf_settings', 'conf_key="'.$title.'"')->count()) { } else{ \IPS\Db::i()->insert('core_sys_conf_settings', array('conf_key' => $title, 'conf_value' => 0, 'conf_default' => 0, 'conf_app' => 'core')); } if ( !\IPS\Member::loggedIn()->member_id ) { $modPosts = 0; } else { $modPosts = \IPS\Db::i()->select('mod_posts', 'core_members', 'member_id="' . \IPS\Member::loggedIn()->member_id.'"')->first(); } if(\IPS\Db::i()->select('conf_value', 'core_sys_conf_settings', 'conf_key="theme_' . $topic->tid.'"')->first() == 1) { $topicMod = 1; } else { $topicMod = 0; } /* Show topic */ \IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'topics' )->topic( $topic, $comments, $question, $votes, $nextUnread, $pagination, $topicVotes, $topicMod, $modPosts );Краткое описание.
Плагин - Премодерация тем.
Перегружен метод manage в классе \IPS\forums\modules\front\forums\topic. Естественно без вызова родителя с полным копированием кода от какой-то неизвестной уже версии.
По логике код просто лютый писец. Оставим на совесть автора выбор реализации через manage (оно и понятно почему, человек из другой сферы), и то что он для каждой темы создает отдельную настройку theme_%id в таблице настроек, когда можно было просто указать все ид тем на премодерации в одну настройку.
Но логика запросов это лютый треш - запрашиваем, если нету вставляем, потом опять запрашиваем. Он даже умудрился составить запрос на то, что уже есть в \IPS\Member::loggedIn().
Погодите. Далее не менее интересно.
Настройка
$themes = \IPS\Db::i()->select( array('tid', 'title', 'state'), 'forums_topics'); foreach($themes as $theme) { if($theme['state'] == 'open') { $title = 'theme_'.$theme["tid"]; $form->add( new \IPS\Helpers\Form\YesNo( $title, \IPS\Settings::i()->$title, false, array(), NULL, $theme['title']) ); if (\IPS\Db::i()->select('*', 'core_sys_conf_settings', 'conf_key="'.$title.'"')->count()) { continue; } else{ \IPS\Db::i()->insert('core_sys_conf_settings', array('conf_key' => $title, 'conf_value' => 0, 'conf_default' => 0, 'conf_app' => 'core')); } } }Как видно, здесь выводится весь список тем форума (естественно без пагинации) и, конечно же - селект в цикле.