diff --git a/_layout/character/feed.xsl b/_layout/character/feed.xsl index 479c16540..77a4993a0 100644 --- a/_layout/character/feed.xsl +++ b/_layout/character/feed.xsl @@ -165,7 +165,7 @@ -
+
clear:left; diff --git a/character-feed-atom.php b/character-feed-atom.php new file mode 100644 index 000000000..cfef33e0c --- /dev/null +++ b/character-feed-atom.php @@ -0,0 +1,136 @@ +Fatal error: 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('', $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; +?> \ No newline at end of file diff --git a/custom-rss.php b/custom-rss.php new file mode 100644 index 000000000..95044a95c --- /dev/null +++ b/custom-rss.php @@ -0,0 +1,41 @@ +Fatal error: 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; +?> \ No newline at end of file diff --git a/htaccess.zip b/htaccess.zip index fda4203e3..3cd280e2e 100644 Binary files a/htaccess.zip and b/htaccess.zip differ diff --git a/includes/armory_loader.php b/includes/armory_loader.php index bcb58e281..c0103b202 100644 --- a/includes/armory_loader.php +++ b/includes/armory_loader.php @@ -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('Error: 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'); diff --git a/includes/classes/class.characters.php b/includes/classes/class.characters.php index d15be0cf3..1ef1958f6 100644 --- a/includes/classes/class.characters.php +++ b/includes/classes/class.characters.php @@ -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 [%s].', $_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; diff --git a/includes/revision_nr.php b/includes/revision_nr.php index 7cbf7072b..706d4d15d 100644 --- a/includes/revision_nr.php +++ b/includes/revision_nr.php @@ -1,5 +1,5 @@ \ No newline at end of file