. * * @category Widget * @package GNU Social * @author Ian Denhardt * @author Sean Corbett * @author Max Shinn * @copyright 2010 Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 */ if (!defined('STATUSNET')) { exit(1); } require_once INSTALLDIR.'/lib/personalgroupnav.php'; class PhotosAction extends Action { var $user = null; function prepare($args) { parent::prepare($args); $args = $this->returnToArgs(); $username = $args[1]['nickname']; $this->albumid = $args[1]['albumid']; if (common_valid_profile_tag($username) == 0) { $this->user = null; } else { $this->user = Profile::staticGet('nickname', $username); } return true; } function handle($args) { parent::handle($args); $this->showPage(); } function title() { if (empty($this->user)) { return _m('No such user.'); } else { return sprintf(_m("%s's Photos."), $this->user->nickname); } } function showLocalNav() { $nav = new PersonalGroupNav($this); $nav->show(); } function showAlbums() { $album = new GNUsocialPhotoAlbum(); $album->user_id = $this->user->id; $albums = array(); if (!$album->find()) { GNUsocialPhotoAlbum::newAlbum($cur->id, 'Default'); } while ($album->fetch()) { $this->elementStart('div', array('class' => 'photocontainer')); $this->elementStart('a', array('href' => $album->getPageLink())); $this->element('img', array('src' => $album->getThumbUri())); $this->elementEnd('a'); $this->element('h3', array(), $album->album_name); $this->elementEnd('div'); } } function showAlbum($album_id) { $album = GNUSocialPhotoAlbum::staticGet('album_id', $album_id); if (!$album) { return; } $page = $_GET['pageid']; if (!filter_var($page, FILTER_VALIDATE_INT)){ $page = 1; } $photos = GNUsocialPhoto::getGalleryPage($page, $album->album_id, 9); if ($page > 1) { $this->element('a', array('href' => $album->getPageLink() . '?pageid=' . ($page-1)), 'Previous page'); } if (GNUsocialPhoto::getGalleryPage($page+1, $album->album_id, 9)) { $this->element('a', array('href' => $album->getPageLink() . '?pageid=' . ($page+1) ), 'Next page'); } foreach ($photos as $photo) { $this->elementStart('a', array('href' => $photo->getPageLink())); $this->elementStart('div', array('class' => 'photocontainer')); $this->element('img', array('src' => $photo->thumb_uri)); $this->element('div', array('class' => 'phototitle'), $photo->title); $this->elementEnd('div'); $this->elementEnd('a'); } } function showContent() { if (!empty($this->albumid)) $this->showAlbum($this->albumid); else $this->showAlbums(); } }