Skip to content

Commit

Permalink
[445] Implemented Characters RSS Feed feature. You need to update you…
Browse files Browse the repository at this point in the history
…r .htaccess file
  • Loading branch information
Shadez committed Jan 3, 2011
1 parent a134d74 commit 4e95dc4
Show file tree
Hide file tree
Showing 7 changed files with 189 additions and 6 deletions.
2 changes: 1 addition & 1 deletion _layout/character/feed.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@
<table id="achievement_subfilter">
<tr class="sub_filter_option">
<!-- Dummy loc parameter guarantees language-specific client-side caching -->
<td><xsl:for-each select="document(concat('/data/achievementStrings.xml?loc=',$lang))/page/rootCategories/category">
<td><xsl:for-each select="document(concat('../../data/achievementStrings.xml?loc=',$lang))/page/rootCategories/category">
<div class="sub"><xsl:if test="position() mod 2"><xsl:attribute name="style">clear:left;</xsl:attribute></xsl:if>
<a class="check_box checked" href="javascript:;" id="{@id}"></a>
<span class="filter_desc"><xsl:value-of select="@name"/></span>
Expand Down
136 changes: 136 additions & 0 deletions character-feed-atom.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
<?php

/**
* @package World of Warcraft Armory
* @version Release Candidate 1
* @revision 445
* @copyright (c) 2009-2011 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**/

/*
Add
RewriteRule character-feed.atom character-feed-atom.php?%{QUERY_STRING}
To your .htaccess file (in root folder)
*/
define('__ARMORY__', true);
define('load_characters_class', true);
define('load_achievements_class', true);
define('load_items_class', true); // For TYPE_ITEM_FEED cases
define('RSS_FEED', true);
if(!@include('includes/armory_loader.php')) {
die('<b>Fatal error:</b> unable to load system files.');
}
if(isset($_GET['n'])) {
$name = $_GET['n'];
}
elseif(isset($_GET['cn'])) {
$name = $_GET['cn'];
}
else {
$name = false;
}
if(!isset($_GET['r'])) {
$_GET['r'] = false;
}
$realmId = $utils->GetRealmIdByName($_GET['r']);
$characters->BuildCharacter($name, $realmId, true, true);
$isCharacter = $characters->CheckPlayer();
if($_GET['r'] === false || !Armory::$currentRealmInfo) {
$isCharacter = false;
}
header('Content-type: text/xml');
$character_feed = $characters->GetCharacterFeed(true);
if(!$character_feed) {
$xml->StartXML();
$xml->LoadXSLT('error/error.xsl');
$xml->XMLWriter()->startElement('page');
$xml->XMLWriter()->writeAttribute('globalSearch', 1);
$xml->XMLWriter()->writeAttribute('lang', Armory::GetLocale());
$xml->XMLWriter()->startElement('errorhtml');
$xml->XMLWriter()->endElement(); //errorhtml
$xml->XMLWriter()->endElement(); //page
echo $xml->StopXML();
exit;
}
$cache_name = 'character-feed-atom';
// Get page cache
if($isCharacter && Armory::$armoryconfig['useCache'] == true && !isset($_GET['skipCache'])) {
$cache_id = $utils->GenerateCacheId($cache_name, $characters->GetName(), $characters->GetRealmName());
if($cache_data = $utils->GetCache($cache_id)) {
echo $cache_data;
echo sprintf('<!-- Restored from cache; id: %s -->', $cache_id);
exit;
}
}
$xml->XMLWriter()->startElement('feed');
$xml->XMLWriter()->writeAttribute('xmlns', 'http://www.w3.org/2005/Atom');
$xml->XMLWriter()->writeAttribute('xml:lang', Armory::GetLocale());
$xml->XMLWriter()->startElement('author');
$xml->XMLWriter()->startElement('name');
$xml->XMLWriter()->text('Blizzard Entertainment');
$xml->XMLWriter()->endElement(); //name
$xml->XMLWriter()->endElement(); //author
$xml->XMLWriter()->startElement('link');
$xml->XMLWriter()->writeAttribute('href', sprintf('character-feed.atom?r=%s&cn=%s&locale=%s', urldecode($characters->GetRealmName()), urldecode($characters->GetName()), Armory::GetLocale()));
$xml->XMLWriter()->endElement(); //link
$xml->XMLWriter()->startElement('updated');
$xml->XMLWriter()->text(date('Y-M-d\TH:i:s\+00:00'));
$xml->XMLWriter()->endElement(); //updated
$xml->XMLWriter()->startElement('title');
$xml->XMLWriter()->writeAttribute('type', 'text');
$xml->XMLWriter()->text(sprintf('WoW News for %s@%s', $characters->GetName(), $characters->GetRealmName()));
$xml->XMLWriter()->endElement(); //title
$xml->XMLWriter()->startElement('id');
$xml->XMLWriter()->text('http://eu.wowarmory.com/');
$xml->XMLWriter()->endElement(); //id
foreach($character_feed as $feed) {
$fdate = date('Y-m-d\TH:i:s\+00:00', $feed['hard_date']);
$xml->XMLWriter()->startElement('entry');
$xml->XMLWriter()->startElement('title');
$xml->XMLWriter()->writeAttribute('type', 'text');
$xml->XMLWriter()->text($feed['title']);
$xml->XMLWriter()->endElement(); //title
$xml->XMLWriter()->startElement('updated');
$xml->XMLWriter()->text($fdate);
$xml->XMLWriter()->endElement(); //updated
$xml->XMLWriter()->startElement('published');
$xml->XMLWriter()->text($fdate);
$xml->XMLWriter()->endElement(); //published
$xml->XMLWriter()->startElement('id');
$xml->XMLWriter()->text(sprintf('%s@%s_%s_%s', strtolower(urlencode($characters->GetName())), strtolower(urlencode($characters->GetRealmName())), $feed['hard_data'], date('dmYHis', $feed['hard_date'])));
$xml->XMLWriter()->endElement(); //id
$xml->XMLWriter()->startElement('link');
$xml->XMLWriter()->writeAttribute('href', sprintf('character-feed.xml?r=%s&cn=%s&locale=%s', urldecode($characters->GetRealmName()), urldecode($characters->GetName()), Armory::GetLocale()));
$xml->XMLWriter()->endElement(); //link
$xml->XMLWriter()->startElement('content');
$xml->XMLWriter()->writeAttribute('type', 'html');
$xml->XMLWriter()->writeCData($feed['desc']);
$xml->XMLWriter()->endElement(); //content
$xml->XMLWriter()->endElement(); //entry
}

$xml->XMLWriter()->endElement(); //feed
$xml_cache_data = $xml->StopXML();
echo $xml_cache_data;
if(Armory::$armoryconfig['useCache'] == true && !isset($_GET['skipCache'])) {
// Write cache to file
$cache_data = $utils->GenerateCacheData($characters->GetName(), $characters->GetGUID(), $cache_name);
$cache_handler = $utils->WriteCache($cache_id, $cache_data, $xml_cache_data);
}
exit;
?>
41 changes: 41 additions & 0 deletions custom-rss.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

/**
* @package World of Warcraft Armory
* @version Release Candidate 1
* @revision 445
* @copyright (c) 2009-2011 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**/

define('__ARMORY__', true);
if(!@include('includes/armory_loader.php')) {
die('<b>Fatal error:</b> unable to load system files.');
}
header('Content-type: text/xml');
// Load XSLT template
$xml->LoadXSLT('character/feed.xsl');
$xml->XMLWriter()->startElement('page');
$xml->XMLWriter()->writeAttribute('globalSearch', 1);
$xml->XMLWriter()->writeAttribute('lang', Armory::GetLocale());
$xml->XMLWriter()->writeAttribute('title', 'customrss');
$xml->XMLWriter()->startElement('customrss');
$xml->XMLWriter()->endElement(); //customrss
$xml->XMLWriter()->endElement(); //page
echo $xml->StopXML();
exit;
?>
Binary file modified htaccess.zip
Binary file not shown.
6 changes: 4 additions & 2 deletions includes/armory_loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/**
* @package World of Warcraft Armory
* @version Release Candidate 1
* @revision 440
* @revision 445
* @copyright (c) 2009-2011 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
Expand Down Expand Up @@ -260,7 +260,9 @@
die('<b>Error:</b> unable to load XML handler class!');
}
$xml = new XMLHandler(Armory::GetLocale());
$xml->StartXML();
if(!defined('RSS_FEED')) {
$xml->StartXML();
}
// Do not remove this
if(isset($_GET['_DISPLAYVERSION_'])) {
$xml->XMLWriter()->startElement('ARMORY_REVISION');
Expand Down
8 changes: 6 additions & 2 deletions includes/classes/class.characters.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/**
* @package World of Warcraft Armory
* @version Release Candidate 1
* @revision 443
* @revision 445
* @copyright (c) 2009-2011 Shadez
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
Expand Down Expand Up @@ -2552,6 +2552,8 @@ public function GetCharacterFeed($full = false) {
$event_type = $event['type'];
$event_data = $event['data'];
$date_string = date('d.m.Y', $event_date);
$feed_data[$i]['hard_date'] = $event_date;
$feed_data[$i]['hard_data'] = $event_data;
if(date('d.m.Y') == $date_string) {
$sort = 'today';
$diff = time() - $event_date;
Expand Down Expand Up @@ -2634,13 +2636,14 @@ public function GetCharacterFeed($full = false) {
'icon' => $item_icon,
'id' => $event_data,
'slot' => $item_slot,
'sort' => $sort
'sort' => $sort,
);
if(Armory::GetLocale() != 'en_gb' && Armory::GetLocale() != 'en_us') {
$item['name'] = Items::GetItemName($event_data);
}
$feed_data[$i]['title'] = sprintf('%s [%s].', $_strings[15], $item['name']);
$feed_data[$i]['desc'] = sprintf('%s <a class="staticTip itemToolTip" id="i=%d" href="item-info.xml?i=%d"><span class="stats_rarity%d">[%s]</span></a>.', $_strings[15], $event_data, $event_data, $item['Quality'], $item['name']);
$feed_data[$i]['tooltip'] = $feed_data[$i]['desc'];
break;
case TYPE_BOSS_FEED:
// Get criterias
Expand Down Expand Up @@ -2675,6 +2678,7 @@ public function GetCharacterFeed($full = false) {
);
$feed_data[$i]['title'] = sprintf('%s [%s] %d %s', $_strings[16], $achievement['name'], $event['counter'], $_strings[17]);
$feed_data[$i]['desc'] = sprintf('%d %s.', $event['counter'], $achievement['name']);
$feed_data[$i]['tooltip'] = $feed_data[$i]['desc'];
break;
default:
continue;
Expand Down
2 changes: 1 addition & 1 deletion includes/revision_nr.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
define('ARMORY_REVISION', 444);
define('ARMORY_REVISION', 445);
define('DB_VERSION', 'armory_r434');
define('CONFIG_VERSION', '2812201001');
?>

0 comments on commit 4e95dc4

Please sign in to comment.