<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -20,7 +20,7 @@ $sapi_type = substr(php_sapi_name(), 0, 3);
 // Instantiate the class library
 if ( $armory = new phpArmory5($areaName = $areaName) ) {
 
-    $ach = $armory-&gt;getAchievementData($characterName, $characterRealmName);
+    $ach = $armory-&gt;getAchievementData($characterName, $characterRealmName, 'Dungeons &amp; Raids');
     if ($sapi_type == 'cli') {
         var_dump ($ach);
     } else {</diff>
      <filename>examples/characterAchievements.php</filename>
    </modified>
    <modified>
      <diff>@@ -544,30 +544,58 @@ class phpArmory5 {
 
     }
     
-    public function getAchievementData($characterName = NULL, $realmName = NULL) {
+    /**
+     * Provides information on all of a specific character's achievements.
+     * @access      public
+     * @param       string      $characterName          The character's name.
+     * @param       string      $realmName              The character's realm name.
+     * @param       int|string  $category               An achievement category ID or name.
+     * @return      array       $result                 Returns an array containing achievement data if $characterName and $realmName are valid, otherwise FALSE.
+     */
+    public function getAchievementData($characterName = NULL, $realmName = NULL, $category = NULL) {
         if (is_string($characterName) &amp;&amp; is_string($realmName)) {
-            $characterName  = ucfirst($characterName);
-            $realmName      = ucfirst($realmName);
-
-            $armoryBaseURL = $this-&gt;armory.&quot;character-achievements.xml?r=&quot;.urlencode($realmName).&quot;&amp;n=&quot;.urlencode($characterName).&quot;&amp;c=&quot;;
+            if (is_string($category)) {
+                // Try to convert a category string into its integer ID
+                $category = strtolower($category);
+                $map = array(
+                    'general'           =&gt; 92,
+                    'quests'            =&gt; 96,
+                    'exploration'       =&gt; 97,
+                    'player vs. player' =&gt; 95,
+                    'dungeons &amp; raids'  =&gt; 168,
+                    'professions'       =&gt; 169,
+                    'reputation'        =&gt; 201,
+                    'world events'      =&gt; 155,
+                    'feats of strength' =&gt; 81
+                );
+                $category = ( isset($map[$category]) ) ? $map[$category] : NULL;
+            }
             
-            $ach = $this-&gt;getCharacterPage($characterName, $realmName, 'achievements');
+            if (is_int($category)) {
+                $characterName  = ucfirst($characterName);
+                $realmName      = ucfirst($realmName);
+                $armoryBaseURL = $this-&gt;armory.&quot;character-achievements.xml?r=&quot;.urlencode($realmName).&quot;&amp;n=&quot;.urlencode($characterName).&quot;&amp;c=&quot;;
             
-            if (isset($ach['achievements']['rootcategories'])) {
-                $retval = array();
+                $tempXML = $this-&gt;getXmlData($armoryBaseURL . $category);
+                if (is_array($tempXML) &amp;&amp; array_key_exists('XmlData', $tempXML)) {
+                    return $this-&gt;convertXmlToArray($tempXML['XmlData']);
+                }
+            } else {
+                $ach = $this-&gt;getCharacterPage($characterName, $realmName, 'achievements');
+            
+                if (isset($ach['achievements']['rootcategories'])) {
+                    $retval = array();
                 
-                foreach ($ach['achievements']['rootcategories'] as $cats) {
-                    foreach ($cats as $cat) {
-                        if (isset($cat['id'])) {
-                            $tempXML = $this-&gt;getXmlData($armoryBaseURL . $cat['id']);
-                            if (is_array($tempXML) &amp;&amp; array_key_exists('XmlData', $tempXML)) {
-                                $retval[$cat['name']] = $this-&gt;convertXmlToArray($tempXML['XmlData']);
+                    foreach ($ach['achievements']['rootcategories'] as $cats) {
+                        foreach ($cats as $cat) {
+                            if (isset($cat['id'])) {
+                                $retval[$cat['name']] = $this-&gt;getAchievementData($characterName, $realmName, $cat['id']);
                             }
                         }
                     }
-                }
                 
-                return $retval;
+                    return $retval;
+                }
             }
         }
         </diff>
      <filename>phpArmory.class.php</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>22d1256f5c61ed965ba612f3f92370bfaaaa9805</id>
    </parent>
  </parents>
  <author>
    <name>rspeicher</name>
    <email>rspeicher@gmail.com</email>
  </author>
  <url>http://github.com/marenkay/phparmory/commit/bb854dc88c6e5fc3de39a1a20a2b967afbb7ca9d</url>
  <id>bb854dc88c6e5fc3de39a1a20a2b967afbb7ca9d</id>
  <committed-date>2009-02-23T14:10:33-08:00</committed-date>
  <authored-date>2009-01-20T12:31:34-08:00</authored-date>
  <message>Allow for fetching one specific achievement category, either by name or by its ID

Signed-off-by: Daniel S. Reichenbach &lt;daniel.s.reichenbach@mac.com&gt;</message>
  <tree>5018b60833fb47542618ad3a3d9553b3636b6c2a</tree>
  <committer>
    <name>Daniel S. Reichenbach</name>
    <email>daniel.s.reichenbach@mac.com</email>
  </committer>
</commit>
