/** * Displays the main form for removing a gift * @return HTML output */ function displayForm() { global $wgUser, $wgOut, $wgUploadPath; $rel = new UserGifts($wgUser->getName()); $gift = $rel->getUserGift($this->gift_id); $user = Title::makeTitle(NS_USER, $gift['user_name_from']); $gift_image = '<img src="' . $wgUploadPath . '/awards/' . Gifts::getGiftImage($gift['gift_id'], 'l') . '" border="0" alt="gift" />'; $output = $wgOut->setPageTitle(wfMsg('g-remove-title', $gift['name'])); $output .= '<div class="back-links"> <a href="' . $wgUser->getUserPage()->escapeFullURL() . '">' . wfMsg('g-back-link', $gift['user_name_to']) . '</a> </div> <form action="" method="post" enctype="multipart/form-data" name="form1"> <div class="g-remove-message">' . wfMsg('g-remove-message', $gift['name']) . '</div> <div class="g-container">' . $gift_image . '<div class="g-name">' . $gift['name'] . '</div> <div class="g-from">' . wfMsg('g-from', $user->escapeFullURL(), $gift['user_name_from']) . '</div>'; if ($gift['message']) { $output .= '<div class="g-user-message">' . $gift['message'] . '</div>'; } $output .= '</div> <div class="cleared"></div> <div class="g-buttons"> <input type="hidden" name="user" value="' . addslashes($gift['user_name_from']) . '"> <input type="button" class="site-button" value="' . wfMsg('g-remove') . '" size="20" onclick="document.form1.submit()" /> <input type="button" class="site-button" value="' . wfMsg('g-cancel') . '" size="20" onclick="history.go(-1)" /> </div> </form>'; return $output; }
/** * Show the special page * * @param $par Mixed: parameter passed to the page or null */ public function execute( $par ) { global $wgUser, $wgOut, $wgRequest, $wgUploadPath, $wgUserGiftsScripts; $wgOut->addExtensionStyle( $wgUserGiftsScripts . '/UserGifts.css' ); $giftId = $wgRequest->getInt( 'gift_id' ); if ( !$giftId || !is_numeric( $giftId ) ) { $wgOut->setPageTitle( wfMsg( 'g-error-title' ) ); $wgOut->addHTML( wfMsg( 'g-error-message-invalid-link' ) ); return false; } $gift = UserGifts::getUserGift( $giftId ); if ( $gift ) { if ( $gift['status'] == 1 ) { if ( $gift['user_name_to'] == $wgUser->getName() ) { $g = new UserGifts( $gift['user_name_to'] ); $g->clearUserGiftStatus( $gift['id'] ); $g->decNewGiftCount( $wgUser->getID() ); } } // DB stuff $dbr = wfGetDB( DB_SLAVE ); $res = $dbr->select( 'user_gift', array( 'DISTINCT ug_user_name_to', 'ug_user_id_to', 'ug_date' ), array( 'ug_gift_id' => $gift['gift_id'], "ug_user_name_to <> '" . addslashes( $gift['user_name_to'] ) . "'" ), __METHOD__, array( 'GROUP BY' => 'ug_user_name_to', 'ORDER BY' => 'ug_date DESC', 'LIMIT' => 6 ) ); $wgOut->setPageTitle( wfMsgExt( 'g-description-title', 'parsemag', $gift['user_name_to'], $gift['name'] ) ); $output = '<div class="back-links"> <a href="' . Title::makeTitle( NS_USER, $gift['user_name_to'] )->escapeFullURL() . '">' . wfMsg( 'g-back-link', $gift['user_name_to'] ) . '</a> </div>'; $user = Title::makeTitle( NS_USER, $gift['user_name_from'] ); $removeGiftLink = SpecialPage::getTitleFor( 'RemoveGift' ); $giveGiftLink = SpecialPage::getTitleFor( 'GiveGift' ); $giftImage = '<img src="' . $wgUploadPath . '/awards/' . Gifts::getGiftImage( $gift['gift_id'], 'l' ) . '" border="0" alt="" />'; $message = $wgOut->parse( trim( $gift['message'] ), false ); $output .= '<div class="g-description-container">'; $output .= '<div class="g-description">' . $giftImage . '<div class="g-name">' . $gift['name'] . '</div> <div class="g-timestamp">(' . $gift['timestamp'] . ')</div> <div class="g-from">' . wfMsg( 'g-from', $user->escapeFullURL(), $gift['user_name_from'] ) . '</div>'; if ( $message ) { $output .= '<div class="g-user-message">' . $message . '</div>'; } $output .= '<div class="cleared"></div> <div class="g-describe">' . $gift['description'] . '</div> <div class="g-actions"> <a href="' . $giveGiftLink->escapeFullURL( 'gift_id=' . $gift['gift_id'] ) . '">' . wfMsg( 'g-to-another' ) . '</a>'; if ( $gift['user_name_to'] == $wgUser->getName() ) { $output .= wfMsgExt( 'pipe-separator', 'escapenoentities' ); $output .= '<a href="' . $removeGiftLink->escapeFullURL( 'gift_id=' . $gift['id'] ) . '">' . wfMsg( 'g-remove-gift' ) . '</a>'; } $output .= '</div> </div>'; $output .= '<div class="g-recent"> <div class="g-recent-title">' . wfMsg( 'g-recent-recipients' ) . '</div> <div class="g-gift-count">' . wfMsgExt( 'g-given', 'parsemag', $gift['gift_count'] ) . '</div>'; foreach ( $res as $row ) { $userToId = $row->ug_user_id_to; $avatar = new wAvatar( $userToId, 'ml' ); $userNameLink = Title::makeTitle( NS_USER, $row->ug_user_name_to ); $output .= '<a href="' . $userNameLink->escapeFullURL() . "\"> {$avatar->getAvatarURL()} </a>"; } $output .= '<div class="cleared"></div> </div> </div>'; $wgOut->addHTML( $output ); } else { $wgOut->setPageTitle( wfMsg( 'g-error-title' ) ); $wgOut->addHTML( wfMsg( 'g-error-message-invalid-link' ) ); } }
/** * Show the special page * * @param $par Mixed: parameter passed to the page or null */ public function execute($par) { global $wgUploadPath; $out = $this->getOutput(); $user = $this->getUser(); // Set the page title, robot policies, etc. $this->setHeaders(); // Add CSS $out->addModuleStyles('ext.socialprofile.usergifts.css'); $giftId = $this->getRequest()->getInt('gift_id'); if (!$giftId || !is_numeric($giftId)) { $out->setPageTitle($this->msg('g-error-title')->plain()); $out->addHTML($this->msg('g-error-message-invalid-link')->plain()); return false; } $gift = UserGifts::getUserGift($giftId); if ($gift) { if ($gift['status'] == 1) { if ($gift['user_name_to'] == $user->getName()) { $g = new UserGifts($gift['user_name_to']); $g->clearUserGiftStatus($gift['id']); $g->decNewGiftCount($user->getID()); } } // DB stuff $dbr = wfGetDB(DB_SLAVE); $res = $dbr->select('user_gift', array('DISTINCT ug_user_name_to', 'ug_user_id_to', 'ug_date'), array('ug_gift_id' => $gift['gift_id'], 'ug_user_name_to <> ' . $dbr->addQuotes($gift['user_name_to'])), __METHOD__, array('GROUP BY' => 'ug_user_name_to', 'ORDER BY' => 'ug_date DESC', 'LIMIT' => 6)); $out->setPageTitle($this->msg('g-description-title', $gift['user_name_to'], $gift['name'])->parse()); $output = '<div class="back-links"> <a href="' . htmlspecialchars(Title::makeTitle(NS_USER, $gift['user_name_to'])->getFullURL()) . '">' . $this->msg('g-back-link', $gift['user_name_to'])->parse() . '</a> </div>'; $sender = Title::makeTitle(NS_USER, $gift['user_name_from']); $removeGiftLink = SpecialPage::getTitleFor('RemoveGift'); $giveGiftLink = SpecialPage::getTitleFor('GiveGift'); $giftImage = '<img src="' . $wgUploadPath . '/awards/' . Gifts::getGiftImage($gift['gift_id'], 'l') . '" border="0" alt="" />'; $message = $out->parse(trim($gift['message']), false); $output .= '<div class="g-description-container">'; $output .= '<div class="g-description">' . $giftImage . '<div class="g-name">' . $gift['name'] . '</div> <div class="g-timestamp">(' . $gift['timestamp'] . ')</div> <div class="g-from">' . $this->msg('g-from', htmlspecialchars($sender->getFullURL()), $gift['user_name_from'])->text() . '</div>'; if ($message) { $output .= '<div class="g-user-message">' . $message . '</div>'; } $output .= '<div class="cleared"></div> <div class="g-describe">' . $gift['description'] . '</div> <div class="g-actions"> <a href="' . htmlspecialchars($giveGiftLink->getFullURL('gift_id=' . $gift['gift_id'])) . '">' . $this->msg('g-to-another')->plain() . '</a>'; if ($gift['user_name_to'] == $user->getName()) { $output .= $this->msg('pipe-separator')->escaped(); $output .= '<a href="' . htmlspecialchars($removeGiftLink->getFullURL('gift_id=' . $gift['id'])) . '">' . $this->msg('g-remove-gift')->plain() . '</a>'; } $output .= '</div> </div>'; $output .= '<div class="g-recent"> <div class="g-recent-title">' . $this->msg('g-recent-recipients')->plain() . '</div> <div class="g-gift-count">' . $this->msg('g-given', $gift['gift_count'])->parse() . '</div>'; foreach ($res as $row) { $userToId = $row->ug_user_id_to; $avatar = new wAvatar($userToId, 'ml'); $userNameLink = Title::makeTitle(NS_USER, $row->ug_user_name_to); $output .= '<a href="' . htmlspecialchars($userNameLink->getFullURL()) . "\">\n\t\t\t\t\t{$avatar->getAvatarURL()}\n\t\t\t\t</a>"; } $output .= '<div class="cleared"></div> </div> </div>'; $out->addHTML($output); } else { $out->setPageTitle($this->msg('g-error-title')->plain()); $out->addHTML($this->msg('g-error-message-invalid-link')->plain()); } }
/** * Show the special page * * @param $par Mixed: parameter passed to the page or null */ public function execute($par) { global $wgUser, $wgOut, $wgRequest, $wgMemc, $wgUploadPath, $wgUserGiftsScripts; $output = ''; // Prevent E_NOTICE $wgOut->addScriptFile($wgUserGiftsScripts . '/UserGifts.js'); $wgOut->addExtensionStyle($wgUserGiftsScripts . '/UserGifts.css'); $userTitle = Title::newFromDBkey($wgRequest->getVal('user')); if (!$userTitle) { $wgOut->addHTML($this->displayFormNoUser()); return false; } $user_title = Title::makeTitle(NS_USER, $wgRequest->getVal('user')); $this->user_name_to = $userTitle->getText(); $this->user_id_to = User::idFromName($this->user_name_to); $giftId = $wgRequest->getInt('gift_id'); $out = ''; if ($wgUser->getID() === $this->user_id_to) { $wgOut->setPageTitle(wfMsg('g-error-title')); $out .= wfMsg('g-error-message-to-yourself'); $wgOut->addHTML($out); } elseif ($wgUser->isBlocked()) { $wgOut->setPageTitle(wfMsg('g-error-title')); $out .= wfMsg('g-error-message-blocked'); $wgOut->addHTML($out); } elseif ($this->user_id_to == 0) { $wgOut->setPageTitle(wfMsg('g-error-title')); $wgOut->addHTML(wfMsg('g-error-message-no-user')); } elseif ($wgUser->getID() == 0) { $wgOut->setPageTitle(wfMsg('g-error-title')); $out .= wfMsg('g-error-message-login'); $wgOut->addHTML($out); } else { $gift = new UserGifts($wgUser->getName()); if ($wgRequest->wasPosted() && $_SESSION['alreadysubmitted'] == false) { $_SESSION['alreadysubmitted'] = true; $ug_gift_id = $gift->sendGift($this->user_name_to, $wgRequest->getInt('gift_id'), 0, $wgRequest->getVal('message')); // clear the cache for the user profile gifts for this user $wgMemc->delete(wfMemcKey('user', 'profile', 'gifts', $this->user_id_to)); $key = wfMemcKey('gifts', 'unique', 4); $data = $wgMemc->get($key); // check to see if this type of gift is in the unique list $lastUniqueGifts = $data; $found = 1; if (is_array($lastUniqueGifts)) { foreach ($lastUniqueGifts as $lastUniqueGift) { if ($wgRequest->getInt('gift_id') == $lastUniqueGift['gift_id']) { $found = 0; } } } if ($found) { // add new unique to array $lastUniqueGifts[] = array('id' => $ug_gift_id, 'gift_id' => $wgRequest->getInt('gift_id')); // remove oldest value if (count($lastUniqueGifts) > 4) { array_shift($lastUniqueGifts); } // reset the cache $wgMemc->set($key, $lastUniqueGifts); } $sent_gift = UserGifts::getUserGift($ug_gift_id); $gift_image = '<img src="' . $wgUploadPath . '/awards/' . Gifts::getGiftImage($sent_gift['gift_id'], 'l') . '" border="0" alt="" />'; $output .= $wgOut->setPageTitle(wfMsg('g-sent-title', $this->user_name_to)); $output .= '<div class="back-links"> <a href="' . $user_title->escapeFullURL() . '">' . wfMsg('g-back-link', $this->user_name_to) . '</a> </div> <div class="g-message">' . wfMsg('g-sent-message', $this->user_name_to) . '</div> <div class="g-container">' . $gift_image . '<div class="g-title">' . $sent_gift['name'] . '</div>'; if ($sent_gift['message']) { $output .= '<div class="g-user-message">' . $sent_gift['message'] . '</div>'; } $output .= '</div> <div class="cleared"></div> <div class="g-buttons"> <input type="button" class="site-button" value="' . wfMsg('g-main-page') . '" size="20" onclick="window.location=\'index.php?title=' . wfMsgForContent('mainpage') . '\'" /> <input type="button" class="site-button" value="' . wfMsg('g-your-profile') . '" size="20" onclick="window.location=\'' . $wgUser->getUserPage()->escapeFullURL() . '\'" /> </div>'; $wgOut->addHTML($output); } else { $_SESSION['alreadysubmitted'] = false; if ($giftId) { $wgOut->addHTML($this->displayFormSingle()); } else { $wgOut->addHTML($this->displayFormAll()); } } } }