. * * @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 * * @see http://status.net/ */ namespace Plugin\Media\media; /** * 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 * * @see http://status.net/ * @see Notice * @see NoticeListItem * @see ProfileNoticeList */ class AttachmentList { /** the current stream of notices being displayed. */ public $notice; // /** // * 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. */ public function show() { $attachments = $this->notice->attachments(); foreach ($attachments as $key => $att) { // Remove attachments which are not representable with neither a title nor thumbnail if ($att->getTitle() === _('Untitled attachment') && !$att->hasThumbnail()) { unset($attachments[$key]); } } if (!count($attachments)) { return 0; } if ($this->notice->getProfile()->isSilenced()) { // TRANS: Message for inline attachments list in notices when the author has been silenced. $this->element('div', ['class' => 'error'], _('Attachments are hidden because this profile has been silenced.')); return 0; } $this->showListStart(); foreach ($attachments as $att) { $item = $this->newListItem($att); $item->show(); } $this->showListEnd(); return count($attachments); } public function showListStart() { $this->out->elementStart('ol', ['class' => 'attachments']); } public 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 */ public function newListItem(File $attachment) { return new AttachmentListItem($attachment, $this->out); } }