}
 $views = 0;
 $articles = 0;
 //CHECK DATE (dont' want testing date left in there)
 $res = $dbr->select(array('revision', 'pageview'), array('pv_30day'), array('rev_page=pv_page', 'rev_user' => $user->getID(), "rev_timestamp > {$minDate}"), __METHOD__, array('GROUP BY' => 'rev_page'));
 foreach ($res as $object) {
     $views += intval($object->pv_30day);
     $articles++;
 }
 if ($views < 50) {
     //echo "No email sent to " . $user->getName() . ". Not enough views ({$views})\n";
     continue;
 }
 $from_name = "Krystle <*****@*****.**>";
 $subject = wfMsg("viewership_subject");
 $cta = AuthorEmailNotification::getCTA('monthly_views', 'email');
 if ($articles == 1) {
     $article = "article";
 } else {
     $article = "articles";
 }
 $contribsPage = SpecialPage::getTitleFor('Contributions', $user->getName());
 $contribsLink = $contribsPage->getFullURL();
 $body = wfMsg("viewership_body", $user->getName(), number_format($articles), number_format($views), $cta, $article, $contribsLink);
 wfDebug($email . " " . $subject . " " . $body . "\n");
 $emailCount++;
 AuthorEmailNotification::notify($user, $from_name, $subject, $body, "", true);
 $userNames .= $user->getName() . " ";
 if ($emailCount > 500) {
     break;
 }
 function sendMilestoneEmails($datestamp)
 {
     wfLoadExtensionMessages('Milestones');
     $dbw = wfGetDB(DB_MASTER);
     $dbr = wfGetDB(DB_SLAVE);
     $users = $this->getMilestonesComplete($datestamp);
     $emailCount = 0;
     foreach ($users as $userInfo) {
         $user = User::newFromId($userInfo->{$this->userField});
         $email = $user->getEmail();
         if ($email == "") {
             continue;
         }
         $registration = $user->getRegistration();
         //need to check for false for the users who have no registration date
         //like Krystle and JackHerrick
         if ($registration == NULL || $registration <= $this->minRegistration) {
             echo "No email sent to " . $user->getName() . ". Not a new registration\n";
             wfDebug("No email sent to " . $user->getName() . ". Not a new registration\n");
             continue;
         }
         if ($user->getOption('disablemarketingemail') == '1') {
             wfDebug("No email sent to " . $user->getName() . ". Marketing email disabled.\n");
             continue;
         }
         $todayUnix = wfTimestamp(TS_UNIX, $datestamp + "000000");
         $minUnix = strtotime("-30 days", $todayUnix);
         $minDate = wfTimestamp(TS_MW, $minUnix);
         $views = 0;
         $articles = 0;
         $res = $dbr->select(array('revision', 'pageview'), array('pv_30day'), array('rev_page=pv_page', 'rev_user' => $user->getID(), "rev_timestamp > {$minDate}"), __METHOD__, array('GROUP BY' => 'rev_page'));
         foreach ($res as $object) {
             $views += intval($object->pv_30day);
             $articles++;
         }
         $from_name = wfMsg('milestone_from');
         $subject = wfMsg('milestone_subject');
         $message = wfMsg('milestone_message_' . $userInfo->ms_editcount);
         if ($views > 20) {
             $viewership = wfMsg('milestone_viewership', number_format($articles), number_format($views));
         } else {
             $viewership = "";
         }
         $cta = AuthorEmailNotification::getCTA('email_roll', 'email');
         $body = wfMsg('milestone_body', $user->getName(), $message, $viewership, $cta);
         wfDebug($user->getEmail() . " " . $subject . " " . $body . "\n");
         $emailCount++;
         AuthorEmailNotification::notify($user, $from_name, $subject, $body, "", true);
         $dbw->update($this->tableName, array($this->emailField => $datestamp), array($this->userField => $userInfo->{$this->userField}));
     }
     echo $emailCount . " milestone emails were sent\n";
 }