. * * @category UI * @package StatusNet * @author Evan Prodromou * @author Sarven Capadisli * @copyright 2008 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('GNUSOCIAL')) { exit(1); } /** * widget for displaying a list of notice attachments * * There are a number of actions that display a list of notices, in * reverse chronological order. This widget abstracts out most of the * code for UI for notice lists. It's overridden to hide some * data for e.g. the profile page. * * @category UI * @package StatusNet * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ * @see Notice * @see NoticeListItem * @see ProfileNoticeList */ class AttachmentList extends Widget { /** the current stream of notices being displayed. */ var $notice = null; /** * constructor * * @param Notice $notice stream of notices from DB_DataObject */ function __construct(Notice $notice, $out=null) { parent::__construct($out); $this->notice = $notice; } /** * show the list of attachments * * "Uses up" the stream by looping through it. So, probably can't * be called twice on the same list. * * @return int count of items listed. */ function show() { $attachments = $this->notice->attachments(); foreach ($attachments as $key=>$att) { // Only show attachments representable with a title if ($att->getTitle() === null) { unset($attachments[$key]); } } if (!count($attachments)) { return 0; } $this->showListStart(); foreach ($attachments as $att) { $item = $this->newListItem($att); $item->show(); } $this->showListEnd(); return count($attachments); } function showListStart() { $this->out->elementStart('ol', array('class' => 'attachments')); } function showListEnd() { $this->out->elementEnd('ol'); } /** * returns a new list item for the current attachment * * @param File $attachment the current attachment * * @return AttachmentListItem a list item for displaying the attachment */ function newListItem(File $attachment) { return new AttachmentListItem($attachment, $this->out); } }