/**
  * @param String $url
  * @param int $id
  * @return Photo[]
  */
 public static function getPhotos($url)
 {
     $xh = new XMLHandler($url);
     $photoItems = $xh->getNodes("photo");
     $photoList = array();
     foreach ($photoItems as $photoNode) {
         $p = new Photo();
         $p->setId($photoNode->getElementsByTagName("id")->item(0)->textContent);
         $p->setAlt($photoNode->getElementsByTagName("htmlAlt")->item(0)->textContent);
         $p->setOrientation($photoNode->getElementsByTagName("orientation")->item(0)->textContent);
         //set thumbnail pic and large pic
         $photoInstancesNode = $photoNode->getElementsByTagName("instance");
         foreach ($photoInstancesNode as $pi) {
             $type = $pi->getElementsByTagName("type")->item(0)->textContent;
             /* @var $pi DomElement */
             if ($type == "Thumbnail") {
                 $p->getThumb()->parsePhotoInstance($pi);
             } elseif ($type == "Large") {
                 $p->getLarge()->parsePhotoInstance($pi);
             } elseif ($type == "HighRes") {
                 $p->getHiRes()->parsePhotoInstance($pi);
             } elseif ($type == "Custom") {
                 $p->getCustom()->parsePhotoInstance($pi);
             }
         }
         $photoList[] = $p;
     }
     return $photoList;
 }
 /**
  * @param String $url
  * @return array[int]Category
  */
 public static function getCategories($url)
 {
     $xh = new XMLHandler($url);
     $nl = $xh->getNodes("category");
     $catList = array();
     foreach ($nl as $n) {
         $c = new NewsCategory();
         $c->id = $n->getElementsByTagName("id")->item(0)->textContent;
         $c->name = $n->getElementsByTagName("name")->item(0)->textContent;
         $catList[] = $c;
     }
     return $catList;
 }
 /**
  * @param String $url
  * @return array[int]Category
  */
 public static function getCategories($url)
 {
     $xh = new XMLHandler($url);
     $nl = $xh->getNodes("category");
     $catList = array();
     foreach ($nl as $n) {
         $c = new NewsCategory();
         $c->id = $n->getElementsByTagName("id")->item(0)->textContent;
         $c->name = $n->getElementsByTagName("name")->item(0)->textContent;
         //JLog::add('category name:'. $c->name, JLog::INFO, 'com_braftonarticles');
         $catList[] = $c;
     }
     return $catList;
 }
 /**
  * @param string $url
  * @param int $id
  * @return Comment[]
  */
 public static function getComments($url)
 {
     $xh = new XMLHandler($url);
     $nl = $xh->getNodes("commentListItem");
     $commentList = array();
     foreach ($nl as $n) {
         $c = new NewsComment();
         $c->setID($n->getElementsByTagName("id")->item(0)->textContent);
         $c->setLocation($n->getElementsByTagName("location")->item(0)->textContent);
         $c->setUser($n->getElementsByTagName("name")->item(0)->textContent);
         $c->setCommentTxt($n->getElementsByTagName("text")->item(0)->textContent);
         $c->setPostDate($n->getElementsByTagName("postDate")->item(0)->textContent);
         $commentList[] = $c;
     }
     return $commentList;
 }
 /**
  * @param String $url
  * @return NewsItem[]
  */
 public static function getNewsList($url, $format)
 {
     //Exception thrown in XMLHandler constructor if url is incorrect
     $xh = new XMLHandler($url);
     $newsList = array();
     if (isset($xh)) {
         $news = $xh->getNodes(NEWS_LIST_ITEM);
         $exceptionList = array();
         foreach ($news as $n) {
             /* @var $n DomElement */
             $ni = new NewsItem();
             try {
                 //Check if all required nodes exist, throw exception if not!
                 if ($n->getElementsByTagName(ID)->length == 0) {
                     throw new XMLNodeException("Element " . ID . " for " . NEWS_LIST_ITEM);
                 }
                 //set value of ID here to use in debugging!
                 $ni->id = $n->getElementsByTagName(ID)->item(0)->textContent;
                 if ($n->getElementsByTagName(PUBLISH_DATE)->length == 0) {
                     throw new XMLNodeException("Element " . PUBLISH_DATE . " for " . NEWS_LIST_ITEM . " with id: " . $ni->id);
                 }
                 if (!$n->getAttribute(HREF)) {
                     throw new XMLNodeException("Attribute " . HREF . " for " . NEWS_LIST_ITEM . " with id: " . $ni->id);
                 }
                 if ($n->getElementsByTagName(HEADLINE)->length == 0) {
                     throw new XMLNodeException("Element " . HEADLINE . " for " . NEWS_LIST_ITEM . " with id: " . $ni->id);
                 }
                 //Check if date is valid if not throw exception
                 $ni->publishDate = $n->getElementsByTagName(PUBLISH_DATE)->item(0)->textContent;
                 $dateIsValid = date_parse($ni->publishDate);
                 if (!$dateIsValid) {
                     throw new DateParseException("Invalid Date for " . PUBLISH_DATE . "  on " . NEWS_LIST_ITEM . " with id: " . $ni->id . "<br />\n");
                 }
                 //Set the value of all other required elements
                 $ni->href = $n->getAttribute(HREF);
                 $ni->headline = $n->getElementsByTagName(HEADLINE)->item(0)->textContent;
                 $ni->format = $format;
                 //Add to newslist array
                 $newsList[] = $ni;
             } catch (XMLException $e) {
                 $exceptionList[] = $e;
                 //Add exception to a list
             } catch (DateParseException $e) {
                 $exceptionList[] = $e;
             }
         }
         //If exception list contains any exceptions throw a new exception which relays all exceptions to the user
         if (!empty($exceptionList)) {
             echo implode("<br />", $exceptionList) . "<br /><br />";
         }
     }
     return $newsList;
 }