Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[445] Implemented Characters RSS Feed feature. You need to update you…

…r .htaccess file
  • Loading branch information...
commit 4e95dc440c656e91c6a140d9c0f806908c18dc52 1 parent a134d74
Shadez authored
2  _layout/character/feed.xsl
View
@@ -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>
136 character-feed-atom.php
View
@@ -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 custom-rss.php
View
@@ -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;
+?>
BIN  htaccess.zip
View
Binary file not shown
6 includes/armory_loader.php
View
@@ -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
*
@@ -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');
8 includes/classes/class.characters.php
View
@@ -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
*
@@ -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;
@@ -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
@@ -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;
2  includes/revision_nr.php
View
@@ -1,5 +1,5 @@
<?php
-define('ARMORY_REVISION', 444);
+define('ARMORY_REVISION', 445);
define('DB_VERSION', 'armory_r434');
define('CONFIG_VERSION', '2812201001');
?>
Please sign in to comment.
Something went wrong with that request. Please try again.