Zero108 Posted September 18, 2022 Report Share Posted September 18, 2022 (edited) Как для дефолтных виджетов статистики посчитать количество форумов в Forums и количество категорий в Files? Примеры из других виджетов: $stats['total_videos'] = \IPS\Db::i()->select( 'COUNT(*)', 'videos_cat', array( 'file_open=?', 1 ) )->first(); $stats['totalAlbums'] = \IPS\gallery\Album\Item::databaseTableCount( TRUE ); Планирую использовать тут: /applications/forums/widgets/forumStatistics.php /applications/downloads/widgets/downloadStats.php Edited September 18, 2022 by Zero108 Quote Link to comment Share on other sites More sharing options...
Exception Posted September 18, 2022 Report Share Posted September 18, 2022 2 часа назад, Zero108 сказал: Как для дефолтных виджетов статистики посчитать количество форумов в Forums и количество категорий в Files? Примеры из других виджетов: $stats['total_videos'] = \IPS\Db::i()->select( 'COUNT(*)', 'videos_cat', array( 'file_open=?', 1 ) )->first(); $stats['totalAlbums'] = \IPS\gallery\Album\Item::databaseTableCount( TRUE ); Планирую использовать тут: /applications/forums/widgets/forumStatistics.php /applications/downloads/widgets/downloadStats.php в запросе к бд изменить на таблицу с форумами и можно без where Zero108 1 Quote Link to comment Share on other sites More sharing options...
Zero108 Posted September 19, 2022 Author Report Share Posted September 19, 2022 (edited) ZIKURIK Еще подскажите, пожалуйста, как для приложения Pages подсчитать сумму всех просмотров всех записей (статей)? Как заменить cms_custom_database_3 на универсальное значение в запросе? Ведь на других сайтах это значение может быть cms_custom_database_4 и т.п. Или же баз данных может быть несколько. Есть какой-то универсальный несложный способ? Что-то вроде, но учитывая все возможные имена таблицы баз данных, которые пользователи могут создать (cms_custom_database_x) : $stats['total_views'] = \IPS\Db::i()->select( "SUM(record_views)", 'cms_custom_database_3', array( 'record_approved=1' ) )->first(); Edited September 19, 2022 by Zero108 Quote Link to comment Share on other sites More sharing options...
Exception Posted September 22, 2022 Report Share Posted September 22, 2022 (edited) В 19.09.2022 в 11:30, Zero108 сказал: ZIKURIK Еще подскажите, пожалуйста, как для приложения Pages подсчитать сумму всех просмотров всех записей (статей)? Как заменить cms_custom_database_3 на универсальное значение в запросе? Ведь на других сайтах это значение может быть cms_custom_database_4 и т.п. Или же баз данных может быть несколько. Есть какой-то универсальный несложный способ? Что-то вроде, но учитывая все возможные имена таблицы баз данных, которые пользователи могут создать (cms_custom_database_x) : $stats['total_views'] = \IPS\Db::i()->select( "SUM(record_views)", 'cms_custom_database_3', array( 'record_approved=1' ) )->first(); Не проверял но должно работать foreach ( \IPS\cms\Databases::databases() as $db ) { $dbNames .= !isset($dbNames) ? 'cms_custom_database_'.$db->id : '.cms_custom_database_'.$db->id; } $stats['total_views'] = \IPS\Db::i()->select( "SUM(record_views)", $dbNames, array( 'record_approved=1' ) )->first(); Edited September 22, 2022 by ZIKURIK Xontero and Zero108 2 Quote Link to comment Share on other sites More sharing options...
Exception Posted September 22, 2022 Report Share Posted September 22, 2022 4 часа назад, ZIKURIK сказал: Не проверял но должно работать foreach ( \IPS\cms\Databases::databases() as $db ) { $dbNames .= !isset($dbNames) ? 'cms_custom_database_'.$db->id : '.cms_custom_database_'.$db->id; } $stats['total_views'] = \IPS\Db::i()->select( "SUM(record_views)", $dbNames, array( 'record_approved=1' ) )->first(); Или так, еще меньше кода: foreach ( \IPS\cms\Databases::databases() as $db ) { $dbNames[] = 'cms_custom_database_'.$db->id; } $stats['total_views'] = \IPS\Db::i()->select( "SUM(record_views)", $dbNames, array( 'record_approved=1' ) )->first(); Zero108 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.