X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnoticelist.php;fp=lib%2Fnoticelist.php;h=5c0e67adb0b8e051ce9a1043873c76c43eb1f185;hb=5a76390d4629e6df2d90dad7448b36d523afddc9;hp=346974f1d29b92fdf62b439b8648aabaa0d37d7e;hpb=5981b5c8d9df24ff9ff4d2db287906470e914115;p=quix0rs-gnu-social.git diff --git a/lib/noticelist.php b/lib/noticelist.php index 346974f1d2..5c0e67adb0 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -53,15 +53,35 @@ class NoticeList extends Widget var $notice = null; + protected $addressees = true; + protected $attachments = true; + protected $maxchars = 0; + protected $options = true; + protected $show_n = NOTICES_PER_PAGE; + /** * constructor * * @param Notice $notice stream of notices from DB_DataObject */ - function __construct(Notice $notice, $out=null) + function __construct(Notice $notice, $out=null, array $prefs=array()) { parent::__construct($out); $this->notice = $notice; + + // integer preferences + foreach(array('show_n', 'maxchars') as $key) { + if (array_key_exists($key, $prefs)) { + $this->$key = (int)$prefs[$key]; + } + } + // boolean preferences + foreach(array('addressees', 'attachments', 'options') as $key) { + if (array_key_exists($key, $prefs)) { + $this->$key = (bool)$prefs[$key]; + } + } + } /** @@ -70,7 +90,9 @@ class NoticeList extends Widget * "Uses up" the stream by looping through it. So, probably can't * be called twice on the same list. * - * @return int count of notices listed. + * @param integer $n The amount of notices to show. + * + * @return int Total amount of notices actually available. */ function show() { @@ -79,7 +101,7 @@ class NoticeList extends Widget $notices = $this->notice->fetchAll(); $total = count($notices); - $notices = array_slice($notices, 0, NOTICES_PER_PAGE); + $notices = array_slice($notices, 0, $this->show_n); self::prefill($notices); @@ -113,7 +135,11 @@ class NoticeList extends Widget */ function newListItem(Notice $notice) { - return new NoticeListItem($notice, $this->out); + $prefs = array('addressees' => $this->addressees, + 'attachments' => $this->attachments, + 'maxchars' => $this->maxchars, + 'options' => $this->options); + return new NoticeListItem($notice, $this->out, $prefs); } static function prefill(array &$notices)