/**
  * Workflow:
  * 1. Get potential new PowerUsers of a type frequent
  *    (min. of edits and a poweruser property set to false)
  * 2. Check each one against statsdb/rollup_wiki_user_events
  * 3. Add the property to the new frequent PUs
  */
 public function execute()
 {
     $aPotentialPowerUsersIds = $this->getPotentialNewFrequentPowerUsers();
     foreach ($aPotentialPowerUsersIds as $iUserId) {
         if ($this->isNewFrequentPowerUser($iUserId)) {
             $oPowerUser = new PowerUser(User::newFromId($iUserId));
             $oPowerUser->addPowerUserProperty(PowerUser::TYPE_FREQUENT);
         }
     }
 }
 private function populatePowerUsersLifetime()
 {
     global $wgExternalSharedDB;
     $oDB = wfGetDB(DB_SLAVE, [], $wgExternalSharedDB);
     $aPowerUsersLifetimeIds = (new WikiaSQL())->SELECT('user_id')->FROM('user')->WHERE('user_editcount')->GREATER_THAN_OR_EQUAL(PowerUser::MIN_LIFETIME_EDITS)->runLoop($oDB, function (&$aPowerUsersLifetimeIds, $oRow) {
         $oPowerUser = new PowerUser(User::newFromId($oRow->user_id));
         if ($oPowerUser->addPowerUserProperty(PowerUser::TYPE_LIFETIME)) {
             $this->iPowerUsersLifetimeCounter++;
         }
     });
     $this->output("PowerUsers for lifetime edits populated! Count: {$this->iPowerUsersLifetimeCounter}\n");
 }