diff --git a/classes/Profile.php b/classes/Profile.php index a03f53cc7d..00a457a5c9 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -861,7 +861,6 @@ class Profile extends Managed_DataObject { $this->_deleteNotices(); $this->_deleteSubscriptions(); - $this->_deleteMessages(); $this->_deleteTags(); $this->_deleteBlocks(); $this->_deleteAttentions(); @@ -937,17 +936,6 @@ class Profile extends Managed_DataObject $self->delete(); } - function _deleteMessages() - { - $msg = new Message(); - $msg->from_profile = $this->id; - $msg->delete(); - - $msg = new Message(); - $msg->to_profile = $this->id; - $msg->delete(); - } - function _deleteTags() { $tag = new Profile_tag(); diff --git a/db/core.php b/db/core.php index c0aed1d3db..ec3fe7f736 100644 --- a/db/core.php +++ b/db/core.php @@ -55,7 +55,6 @@ $classes = array('Schema_version', 'Foreign_link', 'Foreign_subscription', 'Invitation', - 'Message', 'Profile_prefs', 'Profile_tag', 'Profile_list', diff --git a/lib/accountprofileblock.php b/lib/accountprofileblock.php index 76e2edb7ce..fe11a0fc15 100644 --- a/lib/accountprofileblock.php +++ b/lib/accountprofileblock.php @@ -171,17 +171,6 @@ class AccountProfileBlock extends ProfileBlock $this->out->elementEnd('li'); if ($this->profile->isLocal() && $cur->mutuallySubscribed($this->profile)) { - - // message - - $this->out->elementStart('li', 'entity_send-a-message'); - $this->out->element('a', array('href' => common_local_url('newmessage', array('to' => $this->user->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')); - $this->out->elementEnd('li'); - // nudge if ($this->user->email && $this->user->emailnotifynudge) { diff --git a/lib/personalgroupnav.php b/lib/personalgroupnav.php index 8c413c6ab9..06bd2474bb 100644 --- a/lib/personalgroupnav.php +++ b/lib/personalgroupnav.php @@ -96,19 +96,6 @@ class PersonalGroupNav extends Menu sprintf(_('Replies to %s'), $name), $mine && $action =='replies', 'nav_timeline_replies'); - - if ($scoped instanceof Profile && $scoped->id == $target->id && - !common_config('singleuser', 'enabled')) { - - $this->out->menuItem(common_local_url('inbox', array('nickname' => - $nickname)), - // TRANS: Menu item in personal group navigation menu. - _m('MENU','Messages'), - // TRANS: Menu item title in personal group navigation menu. - _('Your incoming messages'), - $mine && $action =='inbox'); - } - Event::handle('EndPersonalGroupNav', array($this, $target, $scoped)); } $this->out->elementEnd('ul'); diff --git a/lib/router.php b/lib/router.php index 54683e986e..8260cb3e2e 100644 --- a/lib/router.php +++ b/lib/router.php @@ -249,12 +249,6 @@ class Router array('action' => 'conversation'), array('id' => '[0-9]+')); - $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]+')); - $m->connect('user/:id', array('action' => 'userbyid'), array('id' => '[0-9]+')); @@ -507,21 +501,6 @@ class Router 'screen_name' => Nickname::DISPLAY_FMT, 'format' => '(xml|json)')); - // 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)')); - // friendships $m->connect('api/friendships/show.:format', diff --git a/plugins/DirectMessage/DirectMessagePlugin.php b/plugins/DirectMessage/DirectMessagePlugin.php new file mode 100644 index 0000000000..1e717833ad --- /dev/null +++ b/plugins/DirectMessage/DirectMessagePlugin.php @@ -0,0 +1,116 @@ +. + */ + +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; + } +} diff --git a/actions/apidirectmessage.php b/plugins/DirectMessage/actions/apidirectmessage.php similarity index 100% rename from actions/apidirectmessage.php rename to plugins/DirectMessage/actions/apidirectmessage.php diff --git a/actions/apidirectmessagenew.php b/plugins/DirectMessage/actions/apidirectmessagenew.php similarity index 100% rename from actions/apidirectmessagenew.php rename to plugins/DirectMessage/actions/apidirectmessagenew.php diff --git a/actions/inbox.php b/plugins/DirectMessage/actions/inbox.php similarity index 100% rename from actions/inbox.php rename to plugins/DirectMessage/actions/inbox.php diff --git a/actions/newmessage.php b/plugins/DirectMessage/actions/newmessage.php similarity index 100% rename from actions/newmessage.php rename to plugins/DirectMessage/actions/newmessage.php diff --git a/actions/outbox.php b/plugins/DirectMessage/actions/outbox.php similarity index 100% rename from actions/outbox.php rename to plugins/DirectMessage/actions/outbox.php diff --git a/actions/showmessage.php b/plugins/DirectMessage/actions/showmessage.php similarity index 100% rename from actions/showmessage.php rename to plugins/DirectMessage/actions/showmessage.php diff --git a/classes/Message.php b/plugins/DirectMessage/classes/Message.php similarity index 100% rename from classes/Message.php rename to plugins/DirectMessage/classes/Message.php diff --git a/lib/mailbox.php b/plugins/DirectMessage/lib/mailbox.php similarity index 100% rename from lib/mailbox.php rename to plugins/DirectMessage/lib/mailbox.php diff --git a/lib/mailboxmenu.php b/plugins/DirectMessage/lib/mailboxmenu.php similarity index 100% rename from lib/mailboxmenu.php rename to plugins/DirectMessage/lib/mailboxmenu.php diff --git a/lib/messageform.php b/plugins/DirectMessage/lib/messageform.php similarity index 100% rename from lib/messageform.php rename to plugins/DirectMessage/lib/messageform.php diff --git a/lib/messagelist.php b/plugins/DirectMessage/lib/messagelist.php similarity index 100% rename from lib/messagelist.php rename to plugins/DirectMessage/lib/messagelist.php diff --git a/lib/messagelistitem.php b/plugins/DirectMessage/lib/messagelistitem.php similarity index 100% rename from lib/messagelistitem.php rename to plugins/DirectMessage/lib/messagelistitem.php