. */ if (!defined('GNUSOCIAL')) { exit(1); } /** * @maintainer Mikael Nordfeldth */ class DirectMessagePlugin extends Plugin { public function onCheckSchema() { $schema = Schema::get(); $schema->ensureTable('message', Message::schemaDef()); return true; } public function onRouterInitialized(URLMapper $m) { // web front-end actions $m->connect('message/new', array('action' => 'newmessage')); $m->connect('message/new?to=:to', array('action' => 'newmessage'), array('to' => Nickname::DISPLAY_FMT)); $m->connect('message/:message', array('action' => 'showmessage'), array('message' => '[0-9]+')); // direct messages $m->connect('api/direct_messages.:format', array('action' => 'ApiDirectMessage', 'format' => '(xml|json|rss|atom)')); $m->connect('api/direct_messages/sent.:format', array('action' => 'ApiDirectMessage', 'format' => '(xml|json|rss|atom)', 'sent' => true)); $m->connect('api/direct_messages/new.:format', array('action' => 'ApiDirectMessageNew', 'format' => '(xml|json)')); return true; } public function onEndPersonalGroupNav(Menu $menu, Profile $target, Profile $scoped=null) { if ($scoped instanceof Profile && $scoped->id == $target->id && !common_config('singleuser', 'enabled')) { $menu->out->menuItem(common_local_url('inbox', array('nickname' => $target->getNickname())), // TRANS: Menu item in personal group navigation menu. _m('MENU','Messages'), // TRANS: Menu item title in personal group navigation menu. _('Your incoming messages'), $scoped->id === $target->id && $menu->actionName =='inbox'); } } public function onEndProfilePageActionsElements(HTMLOutputter $out, Profile $profile) { $scoped = Profile::current(); if (!$scoped instanceof Profile) { return true; } if ($profile->isLocal() && $scoped->mutuallySubscribed($profile)) { $out->elementStart('li', 'entity_send-a-message'); $out->element('a', array('href' => common_local_url('newmessage', array('to' => $profile->id)), // TRANS: Link title for link on user profile. 'title' => _('Send a direct message to this user.')), // TRANS: Link text for link on user profile. _m('BUTTON','Message')); $out->elementEnd('li'); } return true; } public function onProfileDeleteRelated(Profile $profile, &$related) { $msg = new Message(); $msg->from_profile = $profile->id; $msg->delete(); $msg = new Message(); $msg->to_profile = $profile->id; $msg->delete(); return true; } public function onPluginVersion(array &$versions) { $versions[] = array('name' => 'Direct Message', 'version' => GNUSOCIAL_VERSION, 'author' => 'Mikael Nordfeldth', 'homepage' => 'http://gnu.io/', 'rawdescription' => // TRANS: Plugin description. _m('Direct Message to other local users (broken out of core).')); return true; } }