function OnLoadPageData() { # Add subscription $o_subs = new SubscriptionManager($this->GetSettings(), $this->GetDataConnection()); $o_subs->SaveSubscription($this->o_review_item->GetId(), $this->o_review_item->GetType(), AuthenticationManager::GetUser()->GetId()); unset($o_subs); }
/** * @access public * @return void * @param int[] $a_ids * @desc Read from the db the comments for the supplied review item */ public function ReadCommentsForReviewItem(ReviewItem $review_item) { $s_person = $this->GetSettings()->GetTable('User'); $s_message = $this->GetSettings()->GetTable('ForumMessage'); # prepare command $s_sql = 'SELECT ' . $s_person . '.user_id, ' . $s_person . '.known_as, ' . 'location, ' . $s_person . ".date_added AS sign_up_date, " . $s_person . '.total_messages, ' . $s_message . '.id, ' . $s_message . '.message, ' . $s_message . ".date_added AS message_date " . 'FROM ' . $s_message . ' INNER JOIN ' . $s_person . ' ON ' . $s_message . '.user_id = ' . $s_person . '.user_id ' . 'WHERE ' . $s_message . '.item_id = ' . Sql::ProtectNumeric($review_item->GetId(), false, false) . ' AND item_type = ' . Sql::ProtectNumeric($review_item->GetType(), false, false); if ($this->GetReverseOrder()) { $s_sql .= ' ORDER BY sort_override DESC, ' . $s_message . '.date_added DESC'; } else { $s_sql .= ' ORDER BY sort_override, ' . $s_message . '.date_added ASC'; } # get data $result = $this->GetDataConnection()->query($s_sql); $this->Clear(); $o_topic = new ForumTopic($this->GetSettings()); while ($o_row = $result->fetch()) { $o_person = new User(); $o_person->SetId($o_row->user_id); $o_person->SetName($o_row->known_as); $o_person->SetSignUpdate($o_row->sign_up_date); $o_person->SetLocation($o_row->location); $o_person->SetTotalMessages($o_row->total_messages); $o_message = new ForumMessage($this->GetSettings(), AuthenticationManager::GetUser()); $o_message->SetId($o_row->id); $o_message->SetDate($o_row->message_date); $o_message->SetBody($o_row->message); $o_message->SetUser($o_person); $o_message->SetReviewItem($review_item); $o_topic->Add($o_message); } $this->Add($o_topic); $result->closeCursor(); }
function SendCommentsSubscriptions(ReviewItem $review_item, ForumMessage $message) { # get all subscriptions for this item if (AuthenticationManager::GetUser()->IsSignedIn() and $review_item->GetId()) { $s_person = $this->GetSettings()->GetTable('User'); $s_sub = $this->GetSettings()->GetTable('EmailSubscription'); # join to item's table to get the title, regardless of message title $s_sql = ''; switch ($review_item->GetType()) { case ContentType::STOOLBALL_MATCH: $matches = $this->GetSettings()->GetTable('Match'); $s_sql = "SELECT {$matches}.match_title AS title, {$s_person}.email\n\t\t\t\t\tFROM ({$s_person} INNER JOIN {$s_sub} ON {$s_person}.user_id = {$s_sub}.user_id AND {$s_sub}.item_type = " . ContentType::STOOLBALL_MATCH . ")\n\t\t\t\t\tINNER JOIN {$matches} ON {$s_sub}.item_id = {$matches}.match_id AND {$s_sub}.item_type = " . ContentType::STOOLBALL_MATCH . "\n\t\t\t\t\tWHERE {$s_sub}.item_id = " . Sql::ProtectNumeric($review_item->GetId()) . " AND {$s_person}.user_id <> " . Sql::ProtectNumeric(AuthenticationManager::GetUser()->GetId()); break; } if ($s_sql) { # if there's at least one person, build email require_once 'Zend/Mail.php'; $email = new Zend_Mail('UTF-8'); if ($this->GetEmailAddresses($s_sql, $email)) { $o_filter = new BadLanguageFilter(); $s_title = $o_filter->Filter($this->s_review_item_title); unset($o_filter); $s_title = StringFormatter::PlainText($s_title); # send the email $email->addTo($this->GetSettings()->GetSubscriptionEmailTo()); $email->setFrom($this->GetSettings()->GetSubscriptionEmailFrom(), $this->GetSettings()->GetSubscriptionEmailFrom()); $email->setSubject("Email alert: '" . $s_title . "'"); $email->setBodyText($this->GetHeader() . trim(AuthenticationManager::GetUser()->GetName()) . ' has just commented on a page at ' . $this->GetSettings()->GetSiteName() . ' for which you subscribed to an email alert.' . "\n\n" . "The page is called '" . $s_title . "' - here's an excerpt of the new comments:\n\n" . $message->GetExcerpt() . "\n\n" . 'View the new comments at' . "\n" . $review_item->GetNavigateUrl() . '#message' . $message->GetId() . $this->GetFooter()); try { $email->send(); } catch (Zend_Mail_Transport_Exception $e) { # Do nothing - email not that important so, if it fails, fail silently rather than raising a fatal error } } } } }