88use Illuminate \Support \Arr ;
99use Illuminate \Support \Facades \Http ;
1010use Illuminate \Support \Facades \Log ;
11+ use PDO ;
1112
1213class WikiMetrics
1314{
@@ -32,7 +33,7 @@ public function saveMetrics(Wiki $wiki): void
3233 $ weeklyActions = $ this ->getNumberOfActions (self ::INTERVAL_WEEKLY );
3334 $ monthlyActions = $ this ->getNumberOfActions (self ::INTERVAL_MONTHLY );
3435 $ quarterlyActions = $ this ->getNumberOfActions (self ::INTERVAL_QUARTERLY );
35-
36+ $ numberOfEntities = $ this -> getNumberOfEntities ();
3637 $ monthlyNumberOfUsersPerActivityType = $ this ->getNumberOfUsersPerActivityType ();
3738
3839 $ dailyMetrics = new WikiDailyMetrics ([
@@ -46,6 +47,10 @@ public function saveMetrics(Wiki $wiki): void
4647 'weekly_actions ' => $ weeklyActions ,
4748 'monthly_actions ' => $ monthlyActions ,
4849 'quarterly_actions ' => $ quarterlyActions ,
50+ 'item_count ' => $ numberOfEntities ['120 ' ],
51+ 'property_count ' => $ numberOfEntities ['122 ' ],
52+ 'lexeme_count ' => $ numberOfEntities ['146 ' ],
53+ 'entity_schema_count ' => $ numberOfEntities ['640 ' ],
4954 'monthly_casual_users ' => $ monthlyNumberOfUsersPerActivityType [0 ],
5055 'monthly_active_users ' => $ monthlyNumberOfUsersPerActivityType [1 ],
5156 ]);
@@ -171,4 +176,30 @@ private function getNumberOfUsersPerActivityType() : array
171176 Arr::get ($ result , 'monthly_active_users ' ,null )
172177 ];
173178 }
179+
180+ private function getNumberOfEntities () : array
181+ {
182+ $ resultArray = [ 120 => 0 , 122 => 0 , 146 => 0 , 640 => 0 ];
183+ $ wikiDb = $ this ->wiki ->wikiDb ;
184+ $ tablePage = $ wikiDb ->name . '. ' . $ wikiDb ->prefix . '_page ' ;
185+ $ query = "SELECT
186+ page_namespace AS namespace,
187+ COUNT(*) AS count
188+ FROM $ tablePage
189+ WHERE page_namespace in (120, 146, 122, 640)
190+ AND page_is_redirect=0 -- non-redirects only
191+ GROUP BY page_namespace " ;
192+
193+ $ manager = app ()->db ;
194+ $ manager ->purge ('mw ' );
195+ $ conn = $ manager ->connection ('mw ' );
196+ $ pdo = $ conn ->getPdo ();
197+ $ result = $ pdo ->query ($ query )->fetchAll (PDO ::FETCH_ASSOC );
198+ if (count ($ result ) === 0 ){
199+ return $ resultArray ;
200+ }
201+ $ resultArray = array_column ($ result , 'count ' , 'namespace ' );
202+
203+ return $ resultArray ;
204+ }
174205}
0 commit comments