--- /dev/null
+<?php
+/**
+ * GNU Social - a federating social network
+ * Copyright (C) 2014, Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Placeholder for showing faves...
+ */
+abstract class NoticeListActorsItem extends NoticeListItem
+{
+ /**
+ * @return array of profile IDs
+ */
+ abstract function getProfiles();
+
+ abstract function getListMessage($count, $you);
+
+ function show()
+ {
+ $links = array();
+ $you = false;
+ $cur = common_current_user();
+ foreach ($this->getProfiles() as $id) {
+ if ($cur && $cur->id == $id) {
+ $you = true;
+ // TRANS: Reference to the logged in user in favourite list.
+ array_unshift($links, _m('FAVELIST', 'You'));
+ } else {
+ $profile = Profile::getKV('id', $id);
+ if ($profile instanceof Profile) {
+ $links[] = sprintf('<a class="h-card" href="%s">%s</a>',
+ htmlspecialchars($profile->getUrl()),
+ htmlspecialchars($profile->getBestName()));
+ }
+ }
+ }
+
+ if ($links) {
+ $count = count($links);
+ $msg = $this->getListMessage($count, $you);
+ $out = sprintf($msg, $this->magicList($links));
+
+ $this->showStart();
+ $this->out->raw($out);
+ $this->showEnd();
+ return $count;
+ } else {
+ return 0;
+ }
+ }
+
+ function magicList($items)
+ {
+ if (count($items) == 0) {
+ return '';
+ } else if (count($items) == 1) {
+ return $items[0];
+ } else {
+ $first = array_slice($items, 0, -1);
+ $last = array_slice($items, -1, 1);
+ // TRANS: Separator in list of user names like "Jim, Bob, Mary".
+ $separator = _(', ');
+ // TRANS: For building a list such as "Jim, Bob, Mary and 5 others like this".
+ // TRANS: %1$s is a list of users, separated by a separator (default: ", "), %2$s is the last user in the list.
+ return sprintf(_m('FAVELIST', '%1$s and %2$s'), implode($separator, $first), implode($separator, $last));
+ }
+ }
+}