mDescription = "Process email digest"; $this->addOption( "ignoreConfiguredSchedule", "Send all pending notifications immediately even if configured to be weekly or daily.", false, false, "i" ); $this->requireExtension( 'Echo' ); } public function execute() { global $wgEchoCluster; if ( !class_exists( 'EchoHooks' ) ) { $this->error( "Echo isn't enabled on this wiki\n", 1 ); } $ignoreConfiguredSchedule = $this->getOption( "ignoreConfiguredSchedule", 0 ); $this->output( "Started processing... \n" ); $startUserId = 0; $count = $this->batchSize; while ( $count === $this->batchSize ) { $count = 0; $res = MWEchoEmailBatch::getUsersToNotify( $startUserId, $this->batchSize ); $updated = false; foreach ( $res as $row ) { $userId = intval( $row->eeb_user_id ); if ( $userId && $userId > $startUserId ) { $emailBatch = MWEchoEmailBatch::newFromUserId( $userId, !$ignoreConfiguredSchedule ); if ( $emailBatch ) { $this->output( "processing user_Id " . $userId . " \n" ); $emailBatch->process(); } $startUserId = $userId; $updated = true; } $count++; } wfWaitForSlaves( false, false, $wgEchoCluster ); // This is required since we are updating user properties in main wikidb wfWaitForSlaves(); // double check to make sure that the id is updated if ( !$updated ) { break; } } $this->output( "Completed \n" ); } } $maintClass = "ProcessEchoEmailBatch"; require_once ( DO_MAINTENANCE );