. */ 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('%s', 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)); } } }