/**
 * This function appears to be unused...I think it was used in ancient history.
 */
function wfGetUserStatusProfile( $user_id, $num ) {
	global $wgScriptPath;

	$s = new UserStatus();

	$update = $s->getStatusMessages( $user_id, 0, 0, 1, $num );
	$update = $update[0];

	return SportsTeams::getLogo( $update['sport_id'], $update['team_id'], 's' ) .
		"<img src=\"{$wgScriptPath}/extensions/UserStatus/quoteIcon.png\" border=\"0\" style=\"margin-left:5px;\" alt=\"\" />
		{$update['text']}
		<img src=\"{$wgScriptPath}/extensions/UserStatus/endQuoteIcon.png\" border=\"0\" alt=\"\" />
		<span class=\"user-status-date\">" . 
			wfMsg( 'userstatus-ago', UserStatus::getTimeAgo( $update['timestamp'] ) ) .
		'</span>';
}
    /**
     * Gets the recent social activity for a given user.
     *
     * @param $user_name String: name of the user whose activity we want to fetch
     */
    function getEditingActivity($user_name)
    {
        global $wgUser, $wgUserProfileDisplay, $wgExtensionAssetsPath, $wgUploadPath;
        // If not enabled in site settings, don't display
        if ($wgUserProfileDisplay['activity'] == false) {
            return '';
        }
        $output = '';
        $limit = 8;
        $rel = new UserActivity($user_name, 'user', $limit);
        $rel->setActivityToggle('show_votes', 0);
        $rel->setActivityToggle('show_edits', 1);
        $rel->setActivityToggle('show_comments', 1);
        $rel->setActivityToggle('show_relationships', 0);
        $rel->setActivityToggle('show_system_gifts', 0);
        $rel->setActivityToggle('show_system_messages', 0);
        $rel->setActivityToggle('show_messages_sent', 0);
        $rel->setActivityToggle('show_user_user_follows', 0);
        $rel->setActivityToggle('show_user_site_follows', 0);
        $rel->setActivityToggle('show_user_update_status', 0);
        $rel->setActivityToggle('show_gifts_sent', 0);
        $rel->setActivityToggle('show_gifts_rec', 0);
        $rel->setActivityToggle('show_domain_creations', 1);
        $rel->setActivityToggle('show_image_uploads', 0);
        /**
         * Get all relationship activity
         */
        $activity = $rel->getActivityList();
        if ($activity) {
            $output .= '<div class="panel panel-default"><div class="user-section-heading panel-heading">
				<div class="user-section-title">' . wfMessage('user-recent-local-activity-title')->escaped() . '</div>
				<div class="user-section-actions">
					<div class="action-right">
					</div>
					<div class="cleared"></div>
				</div>
			</div>
			<div class="cleared"></div>
			<div class="panel-body">';
            $x = 1;
            if (count($activity) < $limit) {
                $style_limit = count($activity);
            } else {
                $style_limit = $limit;
            }
            foreach ($activity as $item) {
                $item_html = '';
                $title = Title::makeTitle($item['namespace'], $item['pagetitle'], '', $item['prefix']);
                $user_title = Title::makeTitle(NS_USER, $item['username']);
                $user_title_2 = Title::makeTitle(NS_USER, $item['comment']);
                if ($user_title_2) {
                    $user_link_2 = '<a href="' . htmlspecialchars($user_title_2->getFullURL()) . '" rel="nofollow">' . $item['comment'] . '</a>';
                }
                $comment_url = '';
                if ($item['type'] == 'comment') {
                    $comment_url = "#comment-{$item['id']}";
                }
                $page_link = '<b><a href="' . htmlspecialchars($title->getFullURL()) . "{$comment_url}\">" . $title->getText() . '</a></b> ';
                $b = new UserBoard();
                // Easier than porting the time-related functions here
                $item_time = '<span class="item-small">' . wfMessage('user-time-ago', $b->getTimeAgo($item['timestamp']))->escaped() . '</span>';
                if ($x < $style_limit) {
                    $item_html .= '<div class="activity-item">' . UserActivity::getTypeIcon($item['type']);
                } else {
                    $item_html .= '<div class="activity-item-bottom">' . UserActivity::getTypeIcon($item['type']);
                }
                $viewGift = SpecialPage::getTitleFor('ViewGift');
                switch ($item['type']) {
                    case 'edit':
                        $item_html .= wfMessage('user-recent-activity-edit')->escaped() . " {$page_link} {$item_time}\n\t\t\t\t\t\t\t<div class=\"item\">";
                        if ($item['comment']) {
                            $item_html .= "\"{$item['comment']}\"";
                        }
                        $item_html .= '</div>';
                        break;
                    case 'vote':
                        $item_html .= wfMessage('user-recent-activity-vote')->escaped() . " {$page_link} {$item_time}";
                        break;
                    case 'comment':
                        $item_html .= wfMessage('user-recent-activity-comment')->escaped() . " {$page_link} {$item_time}\n\t\t\t\t\t\t\t<div class=\"item\">\n\t\t\t\t\t\t\t\t\"{$item['comment']}\"\n\t\t\t\t\t\t\t</div>";
                        break;
                    case 'gift-sent':
                        $gift_image = "<img src=\"{$wgUploadPath}/awards/" . Gifts::getGiftImage($item['namespace'], 'm') . '" border="0" alt="" />';
                        $item_html .= wfMessage('user-recent-activity-gift-sent')->escaped() . " {$user_link_2} {$item_time}\n\t\t\t\t\t\t<div class=\"item\">\n\t\t\t\t\t\t\t<a href=\"" . htmlspecialchars($viewGift->getFullURL("gift_id={$item['id']}")) . "\" rel=\"nofollow\">\n\t\t\t\t\t\t\t\t{$gift_image}\n\t\t\t\t\t\t\t\t{$item['pagetitle']}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>";
                        break;
                    case 'gift-rec':
                        $gift_image = "<img src=\"{$wgUploadPath}/awards/" . Gifts::getGiftImage($item['namespace'], 'm') . '" border="0" alt="" />';
                        $item_html .= wfMessage('user-recent-activity-gift-rec')->escaped() . " {$user_link_2} {$item_time}</span>\n\t\t\t\t\t\t\t\t<div class=\"item\">\n\t\t\t\t\t\t\t\t\t<a href=\"" . htmlspecialchars($viewGift->getFullURL("gift_id={$item['id']}")) . "\" rel=\"nofollow\">\n\t\t\t\t\t\t\t\t\t\t{$gift_image}\n\t\t\t\t\t\t\t\t\t\t{$item['pagetitle']}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>";
                        break;
                    case 'system_gift':
                        $gift_image = "<img src=\"{$wgUploadPath}/awards/" . SystemGifts::getGiftImage($item['namespace'], 'm') . '" border="0" alt="" />';
                        $viewSystemGift = SpecialPage::getTitleFor('ViewSystemGift');
                        $item_html .= wfMessage('user-recent-system-gift')->escaped() . " {$item_time}\n\t\t\t\t\t\t\t\t<div class=\"user-home-item-gift\">\n\t\t\t\t\t\t\t\t\t<a href=\"" . htmlspecialchars($viewSystemGift->getFullURL("gift_id={$item['id']}")) . "\" rel=\"nofollow\">\n\t\t\t\t\t\t\t\t\t\t{$gift_image}\n\t\t\t\t\t\t\t\t\t\t{$item['pagetitle']}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>";
                        break;
                    case 'friend':
                        $item_html .= wfMessage('user-recent-activity-friend')->escaped() . " <b>{$user_link_2}</b> {$item_time}";
                        break;
                    case 'foe':
                        $item_html .= wfMessage('user-recent-activity-foe')->escaped() . " <b>{$user_link_2}</b> {$item_time}";
                        break;
                    case 'system_message':
                        $item_html .= "{$item['comment']} {$item_time}";
                        break;
                    case 'user_message':
                        $item_html .= wfMessage('user-recent-activity-user-message')->escaped() . " <b><a href=\"" . UserBoard::getUserBoardURL($user_title_2->getText()) . "\" rel=\"nofollow\">{$item['comment']}</a></b>  {$item_time}\n\t\t\t\t\t\t\t\t<div class=\"item\">\n\t\t\t\t\t\t\t\t\"{$item['namespace']}\"\n\t\t\t\t\t\t\t\t</div>";
                        break;
                    case 'network_update':
                        $network_image = SportsTeams::getLogo($item['sport_id'], $item['team_id'], 's');
                        $item_html .= wfMessage('user-recent-activity-network-update')->escaped() . '<div class="item">
									<a href="' . SportsTeams::getNetworkURL($item['sport_id'], $item['team_id']) . "\" rel=\"nofollow\">{$network_image} \"{$item['comment']}\"</a>\n\t\t\t\t\t\t\t\t</div>";
                        break;
                    case 'domain_creation':
                        $domainLink = '<b><a href="' . htmlspecialchars($title->getFullURL()) . "\">" . $item['domainname'] . '</a></b> ';
                        $item_html .= wfMessage('user-recent-activity-domain-creation')->escaped() . "{$domainLink} {$item_time}" . '<div class="item">
									<p>' . $item['comment'] . "</p>\n\t\t\t\t\t\t\t\t</div>";
                        break;
                }
                $item_html .= '</div>';
                if ($x <= $limit) {
                    $items_html_type['all'][] = $item_html;
                }
                $items_html_type[$item['type']][] = $item_html;
                $x++;
            }
            $by_type = '';
            foreach ($items_html_type['all'] as $item) {
                $by_type .= $item;
            }
            $output .= "<div id=\"recent-all\">{$by_type}</div></div></div>";
        }
        return $output;
    }
	/**
	 * Show the special page
	 *
	 * @param $par Mixed: parameter passed to the special page or null
	 */
	public function execute( $par ) {
		global $wgRequest, $wgOut, $wgUser, $wgScriptPath;

		$messages_show = 25;
		$output = '';
		$us_id = $wgRequest->getInt( 'id', $par );
		$page = $wgRequest->getInt( 'page', 1 );

		// No ID? Show an error message then.
		if( !$us_id || !is_numeric( $us_id ) ) {
			$wgOut->addHTML( wfMsg( 'userstatus-invalid-link' ) );
			return false;
		}

		/**
		 * Config for the page
		 */
		$per_page = $messages_show;

		$s = new UserStatus();
		$message = $s->getStatusMessage( $us_id );
		$user_name = $message['user_name'];
		$user = Title::makeTitle( NS_USER, $user_name );

		// Different page title, depending on whose status updates we're
		// viewing
		if ( !( $wgUser->getName() == $user_name ) ) {
			$wgOut->setPageTitle( wfMsg( 'userstatus-user-thoughts', $user_name ) );
		} else {
			$wgOut->setPageTitle( wfMsg( 'userstatus-your-thoughts' ) );
		}

		// Add CSS
		if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
			$wgOut->addModuleStyles( 'ext.userStatus.viewThought' );
		} else {
			$wgOut->addExtensionStyle( $wgScriptPath . '/extensions/UserStatus/ViewThought.css' );
		}

		$output .= "<div class=\"view-thought-links\">
			<a href=\"{$user->getFullURL()}\">" .
				wfMsg( 'userstatus-user-profile', $user_name ) .
			'</a>
		</div>';
		$output .= '<div class="user-status-container">';
		$output .= '<div class="user-status-row">

				<div class="user-status-logo">

					<a href="' . SportsTeams::getNetworkURL( $message['sport_id'], $message['team_id'] ) . '">' .
						SportsTeams::getLogo( $message['sport_id'], $message['team_id'], 'm' ) .
					"</a>

				</div>

				<div class=\"user-status-message\">

					{$message['text']}

					<div class=\"user-status-date\">" .
						wfMsg( 'userstatus-ago', UserStatus::getTimeAgo( $message['timestamp'] ) ) .
					'</div>

				</div>

				<div class="cleared"></div>

		</div>
		</div>';

		$output .= '<div class="who-agrees">';
		$output .= '<h1>' . wfMsg( 'userstatus-who-agrees' ) . '</h1>';
		$voters = $s->getStatusVoters( $us_id );
		// Get the people who agree with this status update, if any
		if( $voters ) {
			foreach ( $voters as $voter ) {
				$user = Title::makeTitle( NS_USER, $voter['user_name'] );
				$avatar = new wAvatar( $voter['user_id'], 'm' );

				$output .= "<div class=\"who-agrees-row\">
					<a href=\"{$user->getFullURL()}\">{$avatar->getAvatarURL()}</a>
					<a href=\"{$user->getFullURL()}\">{$voter['user_name']}</a>
				</div>";
			}
		} else {
			$output .= '<p>' . wfMsg( 'userstatus-nobody-agrees' ) . '</p>';
		}

		$output .= '</div>';

		$wgOut->addHTML( $output );
	}
    /**
     * Get recent status updates (but only if the SportsTeams extension is
     * installed) and set them in the appropriate class member variables.
     */
    private function setNetworkUpdates()
    {
        global $wgLang;
        if (!class_exists('SportsTeams')) {
            return;
        }
        $dbr = wfGetDB(DB_SLAVE);
        $where = $this->where('us_user_id');
        $option = $this->option('us_id');
        $res = $dbr->select('user_status', array('us_id', 'us_user_id', 'us_user_name', 'us_text', 'UNIX_TIMESTAMP(us_date) AS item_date', 'us_sport_id', 'us_team_id'), $where, __METHOD__, $option);
        foreach ($res as $row) {
            if ($row->us_team_id) {
                $team = SportsTeams::getTeam($row->us_team_id);
                $network_name = $team['name'];
            } else {
                $sport = SportsTeams::getSport($row->us_sport_id);
                $network_name = $sport['name'];
            }
            $this->items[] = array('id' => $row->us_id, 'type' => 'network_update', 'timestamp' => $row->item_date, 'pagetitle' => '', 'namespace' => '', 'username' => $row->us_user_name, 'userid' => $row->us_user_id, 'comment' => $row->us_text, 'sport_id' => $row->us_sport_id, 'team_id' => $row->us_team_id, 'network' => $network_name);
            $user_title = Title::makeTitle(NS_USER, $row->us_user_name);
            $user_name_short = $wgLang->truncate($row->us_user_name, 15);
            $page_link = '<a href="' . SportsTeams::getNetworkURL($row->us_sport_id, $row->us_team_id) . "\" rel=\"nofollow\">{$network_name}</a>";
            $network_image = SportsTeams::getLogo($row->us_sport_id, $row->us_team_id, 's');
            $html = wfMessage('useractivity-network-thought', $row->us_user_name, $user_name_short, $page_link, htmlspecialchars($user_title->getFullURL()))->text() . '<div class="item">
						<a href="' . SportsTeams::getNetworkURL($row->us_sport_id, $row->us_team_id) . "\" rel=\"nofollow\">\n\t\t\t\t\t\t\t{$network_image}\n\t\t\t\t\t\t\t\"{$row->us_text}\"\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>";
            $this->activityLines[] = array('type' => 'network_update', 'timestamp' => $row->item_date, 'data' => $html);
        }
    }
	/**
	 * Show the special page
	 *
	 * @param $par Mixed: parameter passed to the special page or null
	 */
	public function execute( $par ) {
		global $wgRequest, $wgOut, $wgUser, $wgScriptPath;

		$messages_show = 25;
		$output = '';
		$user_name = $wgRequest->getVal( 'user', $par );
		$page = $wgRequest->getInt( 'page', 1 );

		/**
		 * Redirect Non-logged in users to Login Page
		 * It will automatically return them to their Status page
		 */
		if( $wgUser->getID() == 0 && $user_name == '' ) {
			$wgOut->setPageTitle( wfMsg( 'userstatus-woops' ) );
			$login = SpecialPage::getTitleFor( 'Userlogin' );
			$wgOut->redirect( $login->getFullURL( 'returnto=Special:UserStatus' ) );
			return false;
		}

		/**
		 * If no user is set in the URL, we assume its the current user
		 */
		if( !$user_name ) {
			$user_name = $wgUser->getName();
		}
		$user_id = User::idFromName( $user_name );
		$user = Title::makeTitle( NS_USER, $user_name );

		/**
		 * Error message for username that does not exist (from URL)
		 */
		if( $user_id == 0 ) {
			$wgOut->setPageTitle( wfMsg( 'userstatus-woops' ) );
			$wgOut->addHTML( wfMsg( 'userstatus-no-user' ) );
			return false;
		}

		/**
		 * Config for the page
		 */
		$per_page = $messages_show;

		$stats = new UserStats( $user_id, $user_name );
		$stats_data = $stats->getUserStats();
		$total = $stats_data['user_status_count'];

		$s = new UserStatus();
		$messages = $s->getStatusMessages( $user_id, 0, 0, $messages_show, $page );

		if ( !( $wgUser->getName() == $user_name ) ) {
			$wgOut->setPageTitle( wfMsg( 'userstatus-user-thoughts', $user_name ) );
		} else {
			$wgOut->setPageTitle( wfMsg( 'userstatus-your-thoughts' ) );
		}

		$output .= '<div class="gift-links">';
		if ( !( $wgUser->getName() == $user_name ) ) {
			$output .= "<a href=\"{$user->getFullURL()}\">" .
				wfMsg( 'userstatus-back-user-profile', $user_name ) . '</a>';
		} else {
			$output .= '<a href="' . $wgUser->getUserPage()->getFullURL() . '">' .
				wfMsg( 'userstatus-back-your-profile' ) . '</a>';
		}
		$output .= '</div>';

		if( $page == 1 ) {
			$start = 1;
		} else {
			$start = ( $page - 1 ) * $per_page + 1;
		}

		$end = $start + ( count( $messages ) ) - 1;
		wfDebug( "total = {$total}" );

		if( $total ) {
			$output .= '<div class="user-page-message-top">
				<span class="user-page-message-count" style="font-size: 11px; color: #666666;">' .
					wfMsgExt( 'userstatus-showing-thoughts', 'parsemag', $start, $end, $total ) .
				'</span>
			</div>';
		}

		/**
		 * Build next/prev navigation
		 */
		$numofpages = $total / $per_page;

		if( $numofpages > 1 ) {
			$output .= '<div class="page-nav">';
			if( $page > 1 ) {
				$output .= '<a href="' . $this->getTitle()->getFullURL( array(
					'user' => $user_name, 'page' => ( $page - 1 ) ) ) . '">' .
					wfMsg( 'userstatus-prev' ) . '</a> ';
			}

			if( ( $total % $per_page ) != 0 ) {
				$numofpages++;
			}
			if( $numofpages >= 9 && $page < $total ) {
				$numofpages = 9 + $page;
				if( $numofpages >= ( $total / $per_page ) ) {
					$numofpages = ( $total / $per_page ) + 1;
				}
			}

			for( $i = 1; $i <= $numofpages; $i++ ) {
				if( $i == $page ) {
					$output .= ( $i . ' ' );
				} else {
					$output .= '<a href="' . $this->getTitle()->getFullURL(
						array( 'user' => $user_name, 'page' => $i ) ) .
						"\">$i</a> ";
				}
			}

			if( ( $total - ( $per_page * $page ) ) > 0 ) {
				$output .= ' <a href="' . $this->getTitle()->getFullURL( array(
					'user' => $user_name, 'page' => ( $page + 1 ) ) ) . '">' .
					wfMsg( 'userstatus-next' ) . '</a>';
			}
			$output .= '</div><p>';
		}

		// Add CSS & JS
		if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
			$wgOut->addModuleStyles( 'ext.userStatus' );
			$wgOut->addModuleScripts( 'ext.userStatus' );
		} else {
			$wgOut->addExtensionStyle( $wgScriptPath . '/extensions/UserStatus/UserStatus.css' );
			$wgOut->addScriptFile( $wgScriptPath . '/extensions/UserStatus/UserStatus.js' );
		}

		$output .= '<div class="user-status-container">';
		$thought_link = SpecialPage::getTitleFor( 'ViewThought' );
		if( $messages ) {
			foreach ( $messages as $message ) {
				$user = Title::makeTitle( NS_USER, $message['user_name'] );
				$avatar = new wAvatar( $message['user_id'], 'm' );

				$network_link = '<a href="' . SportsTeams::getNetworkURL( $message['sport_id'], $message['team_id'] ) . '">' .
					wfMsg( 'userstatus-all-team-updates', SportsTeams::getNetworkName( $message['sport_id'], $message['team_id'] ) ) .
				'</a>';

				$delete_link = '';
				if( $wgUser->getName() == $message['user_name'] ) {
					$delete_link = "<span class=\"user-board-red\">
						<a href=\"javascript:void(0);\" onclick=\"javascript:delete_message({$message['id']})\">" .
						wfMsg( 'userstatus-delete-thought-text' ) ."</a>
					</span>";
				}

				$message_text = preg_replace_callback(
					'/(<a[^>]*>)(.*?)(<\/a>)/i',
					array( 'UserStatus', 'cutLinkText' ),
					$message['text']
				);
				$vote_count = wfMsgExt( 'userstatus-num-agree', 'parsemag', $message['plus_count'] );

				$vote_link = '';
				if( $wgUser->isLoggedIn() && $wgUser->getName() != $message['user_name'] ) {
					if( !$message['voted'] ) {
						$vote_link = "<a href=\"javascript:void(0);\" onclick=\"vote_status({$message['id']},1)\">[" .
							wfMsg( 'userstatus-_agree' ) . "]</a>";
					} else {
						$vote_link = $vote_count;
					}
				}

				$view_thought_link = '<a href="' . $thought_link->getFullURL( "id={$message['id']}" ) . '">[' .
					wfMsg( 'userstatus-see-who-agrees' ) . ']</a>';

				$output .= '<div class="user-status-row">

					<div class="user-status-logo">

						<a href="' . SportsTeams::getNetworkURL( $message['sport_id'], $message['team_id'] ) . '">' .
							SportsTeams::getLogo( $message['sport_id'], $message['team_id'], 'm' ) .
						"</a>

					</div>

					<div class=\"user-status-message\">

						{$message_text}

						<div class=\"user-status-date\">" . 
							wfMsg( 'userstatus-ago', UserStatus::getTimeAgo( $message['timestamp'] ) ) .
							"<span class=\"user-status-vote\" id=\"user-status-vote-{$message['id']}\">
								{$vote_link}
							</span>
							{$view_thought_link}
							<span class=\"user-status-links\">
								{$delete_link}
							</span>
						</div>

					</div>

					<div class=\"cleared\"></div>

				</div>";
			}
		} else {
			$output .= '<p>' . wfMsg( 'userstatus-no-updates' ) . '</p>';
		}

		$output .= '</div>';

		$wgOut->addHTML( $output );
	}
	/**
	 * Show the special page
	 *
	 * @param $par Mixed: parameter passed to the special page or null
	 */
	public function execute( $par ) {
		global $wgUser, $wgOut, $wgRequest, $wgScriptPath, $wgSportsTeamsGoogleAPIKey;

		if ( $wgUser->isLoggedIn() ) {
			$this->friends = $this->getRelationships( 1 );
			$this->foes = $this->getRelationships( 2 );
			$this->relationships = array_merge( $this->friends, $this->foes );
		} else {
			// Prevent fatals (+1 notice) for anonymous users
			$this->friends = $this->foes = $this->relationships =
				$fan_info = '';
		}

		$sport_id = $wgRequest->getInt( 'sport_id' );
		$team_id = $wgRequest->getInt( 'team_id' );

		// If there's neither a sports ID nor a team ID, show an error message.
		// @todo FIXME: I don't like this; we should be showing a listing of
		// all networks or something instead of basically telling the user to
		// go away.
		if( !$sport_id && !$team_id ) {
			$wgOut->setPageTitle( wfMsg( 'sportsteams-network-woops-title' ) );
			$out = '<div class="relationship-request-message">' .
				wfMsg( 'sportsteams-network-woops-text' ) . '</div>';
			$out .= '<div class="relationship-request-buttons">';
			$out .= '<input type="button" class="site-button" value="' .
				wfMsg( 'sportsteams-network-main-page' ) .
				"\" onclick=\"window.location='" .
				Title::newMainPage()->escapeFullURL() . "'\"/>";
			if ( $wgUser->isLoggedIn() ) {
				$out .= ' <input type="button" class="site-button" value="' .
					wfMsg( 'sportsteams-network-your-profile' ) .
					"\" onclick=\"window.location='" .
					Title::makeTitle( NS_USER, $wgUser->getName() )->escapeFullURL() . "'\"/>";
			}
			$out .= '</div>';
			$wgOut->addHTML( $out );
			return true;
		}

		$this->network_count = SportsTeams::getUserCount( $sport_id, $team_id );
		$this->friends_network_count = SportsTeams::getFriendsCountInFavorite(
			$wgUser->getId(),
			$sport_id,
			$team_id
		);

		if( $team_id ) {
			$team = SportsTeams::getTeam( $team_id );
			$this->network = $team['name'];
		} else {
			$sport = SportsTeams::getSport( $sport_id );
			$this->network = $sport['name'];
		}

		$team_image = SportsTeams::getLogo( $sport_id, $team_id, 'l' );

		$homepage_title = Title::makeTitle( NS_MAIN, $this->network );
		$view_fans_title = SpecialPage::getTitleFor( 'ViewFans' );
		$join_fans_title = SpecialPage::getTitleFor( 'AddFan' );
		$leave_fans_title = SpecialPage::getTitleFor( 'RemoveFan' );

		// Set the page title
		$wgOut->setPageTitle( wfMsg( 'sportsteams-network-fan-network', $this->network ) );

		// Add CSS & JS
		if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
			$wgOut->addModuleStyles( 'ext.sportsTeams' );
			$wgOut->addModuleScripts( 'ext.sportsTeams.fanHome' );
		} else {
			$wgOut->addExtensionStyle( $wgScriptPath . '/extensions/SportsTeams/SportsTeams.css' );
			$wgOut->addScriptFile( $wgScriptPath . '/extensions/SportsTeams/fanhome.js' );
		}

		// Ashish Datta
		// Add the script for the maps and set the onload() handler
		// DONT FORGET TO CHANGE KEY WHEN YOU CHANGE DOMAINS
		// @note As of 12 August 2011, http://code.google.com/apis/maps/documentation/javascript/v2/
		// states that the version 2 of Google Maps API has been deprecated
		$wgOut->addScript( "<script src=\"http://maps.google.com/maps?file=api&amp;v=2.x&amp;key={$wgSportsTeamsGoogleAPIKey}\" type=\"text/javascript\"></script>" );
		$wgOut->addScript( $this->getMap() );
		// this originally used setOnloadHandler; addOnloadHook() won't work
		$wgOut->addScript( '<script>jQuery( document ).ready( function() { loadMap(); } );</script>' );

		if( SportsTeams::isFan( $wgUser->getID(), $sport_id, $team_id ) ) {
			$fan_info = '<p><span class="profile-on">' .
				wfMsg( 'sportsteams-network-you-are-fan' ) . '</span></p>';
			$fan_info .= '<p><span><a href="' . $leave_fans_title->getFullURL(
				"sport_id={$sport_id}&team_id={$team_id}"
			) . '" style="text-decoration:none;">' .
				wfMsg( 'sportsteams-network-leave-network' ) .
			'</a></span></p>';
		} elseif ( $wgUser->isLoggedIn() ) {
			$fan_info = '<p><span class="profile-on"><a href="' .
				$join_fans_title->getFullURL(
					"sport_id={$sport_id}&team_id={$team_id}"
				) . '" style="text-decoration: none;">' .
				wfMsg( 'sportsteams-network-join-network' ) . '</a></span></p>';
		}

		$output = '';

		$output .= '<div class="fan-top">';

		$output .= '<div class="fan-top-left">';
		$output .= '<h1>' . wfMsg( 'sportsteams-network-info' ) . '</h1>';
		$output .= '<div class="network-info-left">';
		$output .= $team_image;
		$output .= '<p>' . wfMsg( 'sportsteams-network-logo' ) . '</p>';
		$output .= '</div>';
		$output .= '<div class="network-info-right">';
		$output .= '<p>' . wfMsg( 'sportsteams-network-fans-col' ) . ' <a href="' .
			$view_fans_title->getFullURL(
				array(
					'sport_id' => $sport_id,
					'team_id' => $team_id
				)
			) . "\">{$this->network_count}</a></p>";
		if( $wgUser->isLoggedIn() ) {
			$output .= '<p>' . wfMsg( 'sportsteams-network-friends-col' ) ." {$this->friends_network_count}</p>";
		}
		$output .= $fan_info;
		$output .= '</div>';
		$output .= '<div class="cleared"></div>';
		$output .= '</div>';
		$this_count = count( SportsTeams::getUsersByFavorite( $sport_id, $team_id, 7, 0 ) );
		$output .= '<div class="fan-top-right">';
		$output .= '<h1>' . wfMsg( 'sportsteams-network-fans', $this->network ) . '</h1>';
		$output .= '<p style="margin:-8px 0px 0px 0px; color:#797979;">' .
			wfMsgExt(
				'sportsteams-network-fan-display',
				'parsemag',
				$this_count,
				$view_fans_title->getFullURL( array(
					'sport_id' => $sport_id, 'team_id' => $team_id
				) ),
				$this->network_count
			) . '</p>';
		$output .= $this->getFans();
		$output .= '</div>';

		$output .= '<div class="cleared"></div>';
		$output .= '</div>';

		$output .= '<div class="fan-left">';

		// Latest Network User Updates
		$updates_show = 25;
		$s = new UserStatus();
		$output .= '<div class="network-updates">';
		$output .= '<h1 class="network-page-title">' .
			wfMsg( 'sportsteams-network-latest-thoughts' ) . '</h1>';
		$output .= '<div style="margin-bottom:10px;">
			<a href="' . SportsTeams::getFanUpdatesURL( $sport_id, $team_id ) . '">' .
				wfMsg( 'sportsteams-network-all-thoughts' ) . '</a>
		</div>';
		// Registered users (whether they're members of the network or not) can
		// post new status updates on the network's page from the network's
		// page
		if( $wgUser->isLoggedIn() ) {
			$output .= "\n<script type=\"text/javascript\">
				var __sport_id__ = {$sport_id};
				var __team_id__ = {$team_id};
				var __updates_show__ = {$updates_show};
				var __user_status_link__ = '" . SpecialPage::getTitleFor( 'UserStatus' )->getFullURL() . "';</script>\n";
			$output .= "<div class=\"user-status-form\">
				<span class=\"user-name-top\">{$wgUser->getName()}</span> <input type=\"text\" name=\"user_status_text\" id=\"user_status_text\" size=\"40\" onkeypress=\"detEnter(event)\" maxlength=\"150\" />
				<input type=\"button\" value=\"" . wfMsg( 'sportsteams-add-button' ) . '" class="site-button" onclick="add_status()" />
			</div>';
		}
		$output .= '<div id="network-updates">';
		$output .= $s->displayStatusMessages(
			0, $sport_id, $team_id, $updates_show, 1/*$page*/
		);
		$output .= '</div>';

		$output .= '</div></div>';

		$output .= '<div class="fan-right">';

		// Network location map
		$output .= '<div class="fan-map">';
		$output .= '<h1 class="network-page-title">' .
			wfMsg( 'sportsteams-network-fan-locations' ) . '</h1>';
		$output .= '<div class="gMap" id="gMap"></div>
			<div class="gMapInfo" id="gMapInfo"></div>';
		$output .= '</div>';

		// Top network fans
		$output .= '<div class="top-fans">';
		$output .= '<h1 class="network-page-title">' .
			wfMsg( 'sportsteams-network-top-fans' ) . '</h1>';
		$tfr = SpecialPage::getTitleFor( 'TopUsersRecent' );
		$output .= "<p class=\"fan-network-sub-text\">
				<a href=\"" . $tfr->escapeFullURL( 'period=weekly' ) . '">' .
					wfMsg( 'sportsteams-network-top-fans-week' ) .
				"</a> -
				<a href=\"{$view_fans_title->getFullURL( array( 'sport_id' => $sport_id, 'team_id' => $team_id ))}\">" .
					wfMsg( 'sportsteams-network-complete-list' ) . '</a>
			</p>';
		$output .= $this->getTopFans();
		$output .= '</div>';

		$output .= '<div class="network-articles">';
		$output .= '<h1 class="network-page-title">' .
			wfMsg( 'sportsteams-network-articles', $this->network ) . '</h1>';
		$output .= '<p class="fan-network-sub-text">';
		if ( class_exists( 'BlogPage' ) ) { // @todo CHECKME: is there any point in this check?
			$createBlogPage = SpecialPage::getTitleFor( 'CreateBlogPage' );
			$output .= '<a href="' . $createBlogPage->escapeFullURL() . '">' .
				wfMsg( 'sportsteams-network-write-article' ) . '</a> - ';
		}
		$output .= "<a href=\"{$homepage_title->getFullURL()}\">" . wfMsg( 'sportsteams-network-main-page' ) . '</a>
			</p>';
		$output .= $this->getArticles();
		$output .= '</div>';

		$output .= '</div>';
		$output .= '<div class="cleared"></div>';

		$wgOut->addHTML( $output );
	}
function wfUserProfileLatestThought( $user_profile ) {
	global $wgUser, $wgOut;

	$user_id = $user_profile->user_id;
	$s = new UserStatus();
	$user_update = $s->getStatusMessages( $user_id, 0, 0, 1, 1 );
	$user_update = ( !empty( $user_update[0] ) ? $user_update[0] : array() );

	// Safe URLs
	$more_thoughts_link = SpecialPage::getTitleFor( 'UserStatus' );
	$thought_link = SpecialPage::getTitleFor( 'ViewThought' );

	$output = '';
	if ( $user_update ) {
		$output .= '<div class="user-section-heading">
			<div class="user-section-title">' .
				wfMsg( 'sportsteams-profile-latest-thought' ) .
			'</div>
			<div class="user-section-actions">
				<div class="action-right">
					<a href="' . $more_thoughts_link->escapeFullURL( 'user='******'" rel="nofollow">' . wfMsg( 'sportsteams-profile-view-all' ) . '</a>
				</div>
				<div class="cleared"></div>
			</div>
		</div>';

		$vote_count = $vote_link = '';
		// If someone agrees with the most recent status update, show the count
		// next to the timestamp to the owner of the status update
		// After all, there's no point in showing "0 people agree with this"...
		if(
			$wgUser->getName() == $user_update['user_name'] &&
			$user_update['plus_count'] > 0
		)
		{
			$vote_count = wfMsgExt(
				'sportsteams-profile-num-agree',
				'parsemag',
				$user_update['plus_count']
			);
		}

		$view_thought_link = '<a href="' . $thought_link->escapeFullURL( "id={$user_update['id']}" ) .
			"\" rel=\"nofollow\">{$vote_count}</a>";

		// Allow registered users who are not owners of this status update to
		// vote for it unless they've already voted; if they have voted, show
		// the amount of people who agree with the status update
		if( $wgUser->isLoggedIn() && $wgUser->getName() != $user_update['user_name'] ) {
			if( !$user_update['voted'] ) {
				$vote_link = "<a href=\"javascript:void(0);\" onclick=\"SportsTeamsUserProfile.voteStatus({$user_update['id']},1)\" rel=\"nofollow\">" .
					wfMsg( 'sportsteams-profile-do-you-agree' ) . '</a>';
			} else {
				$vote_count = wfMsgExt(
					'sportsteams-profile-num-agree',
					'parsemag',
					$user_update['plus_count']
				);
			}
		}

		$output .= '<div class="status-container" id="status-update">
			<div id="status-update" class="status-message">' .
				SportsTeams::getLogo( $user_update['sport_id'], $user_update['team_id'], 's' ) .
				"{$user_update['text']}
			</div>
			<div class=\"user-status-profile-vote\">
				<span class=\"user-status-date\">" .
					wfMsg( 'sportsteams-profile-ago', SportsTeams::getTimeAgo( $user_update['timestamp'] ) ) .
				"</span>
				{$vote_link} {$view_thought_link}
			</div>
		</div>";
	} else {
		$output .= "<script type=\"text/javascript\">var __thoughts_text__ = \"" .
			wfMsg( 'sportsteams-profile-latest-thought' ) . '";
		var __view_all__ = "' . wfMsg( 'sportsteams-profile-view-all' ) . '";
		var __more_thoughts_url__ = "' . $more_thoughts_link->escapeFullURL( 'user='******'";</script>';
	}

	$wgOut->addHTML( $output );
	return true;
}