Пример #1
0
 /**
  * Notify the winner
  * @since Version 3.9.1
  * @return \Railpage\Gallery\Competition
  * @param \Railpage\Images\Competition
  * @todo Check recipient preferences for email notifications
  */
 public static function notifyWinner(Competition $compObject)
 {
     if (isset($compObject->meta['winnernotified']) && $compObject->meta['winnernotified'] === true) {
         return $this;
     }
     if ($Photo = $compObject->getWinningPhoto()) {
         /**
          * Create a news article
          */
         CompetitionUtility::createNewsArticle_Winner($compObject);
         /**
          * Create a site message
          */
         CompetitionUtility::createSiteNotificationForWinner($compObject);
         /**
          * Create an email
          */
         $Notification = new Notification();
         $Notification->AddRecipient($Photo->Author->id, $Photo->Author->username, $Photo->Author->contact_email);
         $Notification->subject = sprintf("Photo competition: %s", $compObject->title);
         /**
          * Set our email body
          */
         $body = sprintf("Hi %s,\n\nCongratulations! You won the <a href='%s'>%s</a> photo competition!\n\nAs the winner of this competition, you get to <a href='%s'>select a theme</a> for the next competition. You have seven days to do so, before we automatically select one.\n\nThanks\nThe Railpage team.", $Photo->Author->username, $compObject->url->canonical, $compObject->title, "https://www.railpage.com.au" . $compObject->url->suggestsubject);
         if (function_exists("wpautop") && function_exists("format_post")) {
             $body = wpautop(format_post($body));
         }
         /**
          * Assemble some template vars for our email
          */
         foreach ($Photo->Image->sizes as $size) {
             $hero = $size['source'];
             if ($size['width'] >= 600) {
                 break;
             }
         }
         $Smarty = AppCore::getSmarty();
         $Smarty->Assign("email", array("subject" => $Notification->subject, "hero" => array("image" => $hero, "title" => sprintf("Winning photo: Yours! <em>%s</em>", $Photo->Image->title), "link" => $compObject->url->url, "author" => $Photo->Author->username), "body" => $body));
         $Notification->body = $Smarty->Fetch($Smarty->ResolveTemplate("template.generic"));
         $Notification->commit();
         /**
          * Update the winnernotified flag
          */
         $compObject->meta['winnernotified'] = true;
         $compObject->commit();
     }
     return $compObject;
 }
Пример #2
0
 /**
  * Process the recipients of the notification email
  * @since Version 3.9.1
  * @param \Railpage\Notifications\Notification $notificationObject
  * @param \Railpage\Images\Competition $photoComp
  * @param array $notificationOptions
  * @return \Railpage\Notifications\Notification
  */
 public static function notificationDoRecipients(Notification $notificationObject, Competition $photoComp, $notificationOptions = null)
 {
     $contestants = (new Competitions())->getPreviousContestants();
     $replacements = array();
     $exclude = array();
     if ($notificationOptions['excludeCurrentContestants']) {
         foreach (self::getCompetitionContestants($photoComp) as $row) {
             $exclude[$row['user_id']] = $row;
         }
     }
     foreach ($contestants as $row) {
         if (!in_array($row['user_id'], array_keys($exclude))) {
             $notificationObject->AddRecipient($row['user_id'], $row['username'], $row['contact_email']);
             // Add to the decorator
             $replacements[$row['contact_email']] = array("[username]" => $row['username']);
         }
     }
     $notificationObject->meta['decoration'] = $replacements;
     return $notificationObject;
 }