diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Service/Flickr/ResultSet.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Service/Flickr/ResultSet.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,188 @@ +_flickr = $flickr; + + $xpath = new DOMXPath($dom); + + $photos = $xpath->query('//photos')->item(0); + + $page = $photos->getAttribute('page'); + $pages = $photos->getAttribute('pages'); + $perPage = $photos->getAttribute('perpage'); + $total = $photos->getAttribute('total'); + + $this->totalResultsReturned = ($page == $pages || $pages == 0) ? ($total - ($page - 1) * $perPage) : (int) $perPage; + $this->firstResultPosition = ($page - 1) * $perPage + 1; + $this->totalResultsAvailable = (int) $total; + + if ($total > 0) { + $this->_results = $xpath->query('//photo'); + } + } + + /** + * Total Number of results returned + * + * @return int Total number of results returned + */ + public function totalResults() + { + return $this->totalResultsReturned; + } + + /** + * Implements SeekableIterator::current() + * + * @return Zend_Service_Flickr_Result + */ + public function current() + { + return new Zend_Service_Flickr_Result($this->_results->item($this->_currentIndex), $this->_flickr); + } + + /** + * Implements SeekableIterator::key() + * + * @return int + */ + public function key() + { + return $this->_currentIndex; + } + + /** + * Implements SeekableIterator::next() + * + * @return void + */ + public function next() + { + $this->_currentIndex += 1; + } + + /** + * Implements SeekableIterator::rewind() + * + * @return void + */ + public function rewind() + { + $this->_currentIndex = 0; + } + + /** + * Implements SeekableIterator::seek() + * + * @param int $index + * @throws OutOfBoundsException + * @return void + */ + public function seek($index) + { + $indexInt = (int) $index; + if ($indexInt >= 0 && (null === $this->_results || $indexInt < $this->_results->length)) { + $this->_currentIndex = $indexInt; + } else { + throw new OutOfBoundsException("Illegal index '$index'"); + } + } + + /** + * Implements SeekableIterator::valid() + * + * @return boolean + */ + public function valid() + { + return null !== $this->_results && $this->_currentIndex < $this->_results->length; + } +} +