aboutsummaryrefslogtreecommitdiff
path: root/mod/messages/start.php
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-03-04 02:21:28 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-03-04 02:21:28 +0000
commite209ef52571b1e0f6a3937d3e88c9150c384994c (patch)
tree099090098a2b955af06a9ba02762d0fe79e08ae4 /mod/messages/start.php
parent59da34fb0c7a590db505777742ca21e1dd5b5cba (diff)
downloadelgg-e209ef52571b1e0f6a3937d3e88c9150c384994c.tar.gz
elgg-e209ef52571b1e0f6a3937d3e88c9150c384994c.tar.bz2
Merged messages interface changes.
git-svn-id: http://code.elgg.org/elgg/trunk@5270 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/messages/start.php')
-rw-r--r--mod/messages/start.php621
1 files changed, 309 insertions, 312 deletions
diff --git a/mod/messages/start.php b/mod/messages/start.php
index 992d60901..b74402ac3 100644
--- a/mod/messages/start.php
+++ b/mod/messages/start.php
@@ -1,338 +1,335 @@
<?php
- /**
- * Elgg internal messages plugin
- * This plugin lets user send each other messages.
- *
- * @package ElggMessages
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
+/**
+* Elgg internal messages plugin
+* This plugin lets user send each other messages.
+*
+* @package ElggMessages
+* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+* @author Curverider Ltd <info@elgg.com>
+* @copyright Curverider Ltd 2008-2010
+* @link http://elgg.com/
+*/
- /**
- * Messages initialisation
- *
- * These parameters are required for the event API, but we won't use them:
- *
- * @param unknown_type $event
- * @param unknown_type $object_type
- * @param unknown_type $object
- */
-
- function messages_init() {
-
- // Load system configuration
- global $CONFIG;
-
- //add submenu options
- if (get_context() == "messages") {
- add_submenu_item(elgg_echo('messages:compose'), $CONFIG->wwwroot . "mod/messages/send.php");
- add_submenu_item(elgg_echo('messages:inbox'), $CONFIG->wwwroot . "pg/messages/" . $_SESSION['user']->username);
- add_submenu_item(elgg_echo('messages:sentmessages'), $CONFIG->wwwroot . "mod/messages/sent.php");
- }
-
- // Extend system CSS with our own styles, which are defined in the shouts/css view
- elgg_extend_view('css','messages/css');
-
- // Extend the elgg topbar
- elgg_extend_view('elgg_topbar/extend','messages/topbar');
-
- // Register a page handler, so we can have nice URLs
- register_page_handler('messages','messages_page_handler');
-
- // Register a URL handler for shouts posts
- register_entity_url_handler('messages_url','object','messages');
-
- // Extend hover-over and profile menu
- elgg_extend_view('profile/menu/links','messages/menu');
-
- // Register a notification handler for site messages
- register_notification_handler("site", "messages_site_notify_handler");
- register_plugin_hook('notify:entity:message','object','messages_notification_msg');
- if (is_callable('register_notification_object'))
- register_notification_object('object','messages',elgg_echo('messages:new'));
-
- // Shares widget
- // add_widget_type('messages',elgg_echo("messages:recent"),elgg_echo("messages:widget:description"));
-
- // Override metadata permissions
- register_plugin_hook('permissions_check:metadata','object','messages_can_edit_metadata');
+/**
+* Messages initialisation
+*
+* These parameters are required for the event API, but we won't use them:
+*
+* @param unknown_type $event
+* @param unknown_type $object_type
+* @param unknown_type $object
+*/
+
+function messages_init() {
+
+ // Load system configuration
+ global $CONFIG;
+
+ //add submenu options
+ if (get_context() == "messages") {
+ add_submenu_item(elgg_echo('messages:inbox'), $CONFIG->wwwroot . "pg/messages/" . $_SESSION['user']->username);
+ add_submenu_item(elgg_echo('messages:sentmessages'), $CONFIG->wwwroot . "mod/messages/sent.php");
}
- /**
- * Override the canEditMetadata function to return true for messages
- *
- */
- function messages_can_edit_metadata($hook_name, $entity_type, $return_value, $parameters) {
+ // Extend system CSS with our own styles, which are defined in the shouts/css view
+ elgg_extend_view('css','messages/css');
+
+ // Extend the elgg topbar
+ elgg_extend_view('elgg_topbar/extend','messages/topbar');
+
+ // Register a page handler, so we can have nice URLs
+ register_page_handler('messages','messages_page_handler');
+
+ // Register a URL handler for shouts posts
+ register_entity_url_handler('messages_url','object','messages');
+
+ // Extend hover-over and profile menu
+ elgg_extend_view('profile/menu/links','messages/menu');
+
+ // Register a notification handler for site messages
+ register_notification_handler("site", "messages_site_notify_handler");
+ register_plugin_hook('notify:entity:message','object','messages_notification_msg');
+ if (is_callable('register_notification_object'))
+ register_notification_object('object','messages',elgg_echo('messages:new'));
+
+ // Shares widget
+ // add_widget_type('messages',elgg_echo("messages:recent"),elgg_echo("messages:widget:description"));
+
+ // Override metadata permissions
+ register_plugin_hook('permissions_check:metadata','object','messages_can_edit_metadata');
+}
- global $messagesendflag;
-
- if ($messagesendflag == 1) {
- $entity = $parameters['entity'];
- if ($entity->getSubtype() == "messages") {
- return true;
- }
- }
-
- return $return_value;
-
+/**
+ * Override the canEditMetadata function to return true for messages
+ *
+ */
+function messages_can_edit_metadata($hook_name, $entity_type, $return_value, $parameters) {
+
+ global $messagesendflag;
+
+ if ($messagesendflag == 1) {
+ $entity = $parameters['entity'];
+ if ($entity->getSubtype() == "messages") {
+ return true;
}
-
- /**
- * Override the canEdit function to return true for messages within a particular context.
- *
- */
- function messages_can_edit($hook_name, $entity_type, $return_value, $parameters) {
-
- global $messagesendflag;
-
- if ($messagesendflag == 1) {
- $entity = $parameters['entity'];
- if ($entity->getSubtype() == "messages") {
- return true;
- }
- }
-
- return $return_value;
-
+ }
+
+ return $return_value;
+
+}
+
+/**
+ * Override the canEdit function to return true for messages within a particular context.
+ *
+ */
+function messages_can_edit($hook_name, $entity_type, $return_value, $parameters) {
+
+ global $messagesendflag;
+
+ if ($messagesendflag == 1) {
+ $entity = $parameters['entity'];
+ if ($entity->getSubtype() == "messages") {
+ return true;
}
-
- /**
- * We really don't want to send a notification message when a message is sent, if the method is messages ...
- *
- */
- function messages_notification_msg($hook_name, $entity_type, $return_value, $parameters) {
+ }
+
+ return $return_value;
+
+}
- global $CONFIG, $messages_pm;
-
- if ($parameters['entity'] instanceof ElggEntity) {
-
- if ($parameters['entity']->getSubtype() == 'messages') {
-
- return false;
- /*if (!$messages_pm) return false;
- if ($parameters['method'] == 'email') {
- return sprintf(
- elgg_echo('messages:email:body'),
- get_loggedin_user()->name,
- strip_tags($parameters['entity']->description),
- $CONFIG->wwwroot . "pg/messages/" . $user->username,
- get_loggedin_user()->name,
- $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid
- );
- } else if ($parameters['method'] == 'site') return false;*/
- }
- }
- return null;
+/**
+ * We really don't want to send a notification message when a message is sent, if the method is messages ...
+ *
+ */
+function messages_notification_msg($hook_name, $entity_type, $return_value, $parameters) {
+
+ global $CONFIG, $messages_pm;
+
+ if ($parameters['entity'] instanceof ElggEntity) {
+
+ if ($parameters['entity']->getSubtype() == 'messages') {
+ return false;
+ /*if (!$messages_pm) return false;
+ if ($parameters['method'] == 'email') {
+ return sprintf(
+ elgg_echo('messages:email:body'),
+ get_loggedin_user()->name,
+ strip_tags($parameters['entity']->description),
+ $CONFIG->wwwroot . "pg/messages/" . $user->username,
+ get_loggedin_user()->name,
+ $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid
+ );
+ } else if ($parameters['method'] == 'site') return false;*/
}
+ }
+ return null;
+
+}
+
+/**
+ * Override the canEdit function to return true for messages within a particular context.
+ *
+ */
+function messages_can_edit_container($hook_name, $entity_type, $return_value, $parameters) {
+
+ global $messagesendflag;
+
+ if ($messagesendflag == 1) {
+ return true;
+ }
+
+ return $return_value;
+
+}
+
+/**
+ * Send an internal message
+ *
+ * @param string $subject The subject line of the message
+ * @param string $body The body of the mesage
+ * @param int $send_to The GUID of the user to send to
+ * @param int $from Optionally, the GUID of the user to send from
+ * @param int $reply The GUID of the message to reply from (default: none)
+ * @param true|false $notify Send a notification (default: true)
+ * @param true|false $add_to_sent If true (default), will add a message to the sender's 'sent' tray
+ * @return true|false Depending on success
+ */
+function messages_send($subject, $body, $send_to, $from = 0, $reply = 0, $notify = true, $add_to_sent = true) {
+
+ global $messagesendflag;
+ $messagesendflag = 1;
- /**
- * Override the canEdit function to return true for messages within a particular context.
- *
- */
- function messages_can_edit_container($hook_name, $entity_type, $return_value, $parameters) {
-
- global $messagesendflag;
-
- if ($messagesendflag == 1) {
- return true;
- }
-
- return $return_value;
-
+ global $messages_pm;
+ if ($notify) {
+ $messages_pm = 1;
+ } else {
+ $messages_pm = 0;
}
- /**
- * Send an internal message
- *
- * @param string $subject The subject line of the message
- * @param string $body The body of the mesage
- * @param int $send_to The GUID of the user to send to
- * @param int $from Optionally, the GUID of the user to send from
- * @param int $reply The GUID of the message to reply from (default: none)
- * @param true|false $notify Send a notification (default: true)
- * @param true|false $add_to_sent If true (default), will add a message to the sender's 'sent' tray
- * @return true|false Depending on success
- */
- function messages_send($subject, $body, $send_to, $from = 0, $reply = 0, $notify = true, $add_to_sent = true) {
-
- global $messagesendflag;
- $messagesendflag = 1;
-
- global $messages_pm;
- if ($notify) {
- $messages_pm = 1;
- } else {
- $messages_pm = 0;
- }
+ // If $from == 0, set to current user
+ if ($from == 0)
+ $from = (int) get_loggedin_user()->guid;
- // If $from == 0, set to current user
- if ($from == 0)
- $from = (int) get_loggedin_user()->guid;
-
- // Initialise a new ElggObject
- $message_to = new ElggObject();
- $message_sent = new ElggObject();
- // Tell the system it's a message
- $message_to->subtype = "messages";
- $message_sent->subtype = "messages";
- // Set its owner to the current user
- // $message_to->owner_guid = $_SESSION['user']->getGUID();
- $message_to->owner_guid = $send_to;
- $message_to->container_guid = $send_to;
- $message_sent->owner_guid = $from;
- $message_sent->container_guid = $from;
- // For now, set its access to public (we'll add an access dropdown shortly)
- $message_to->access_id = ACCESS_PUBLIC;
- $message_sent->access_id = ACCESS_PUBLIC;
- // Set its description appropriately
- $message_to->title = $subject;
- $message_to->description = $body;
- $message_sent->title = $subject;
- $message_sent->description = $body;
- // set the metadata
- $message_to->toId = $send_to; // the user receiving the message
- $message_to->fromId = $from; // the user receiving the message
- $message_to->readYet = 0; // this is a toggle between 0 / 1 (1 = read)
- $message_to->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag
- $message_to->hiddenTo = 0; // this is used when a user deletes a message in their inbox
- $message_sent->toId = $send_to; // the user receiving the message
- $message_sent->fromId = $from; // the user receiving the message
- $message_sent->readYet = 0; // this is a toggle between 0 / 1 (1 = read)
- $message_sent->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag
- $message_sent->hiddenTo = 0; // this is used when a user deletes a message in their inbox
-
- $message_to->msg = 1;
- $message_sent->msg = 1;
-
- // Save the copy of the message that goes to the recipient
- $success = $message_to->save();
-
- // Save the copy of the message that goes to the sender
- if ($add_to_sent) $success2 = $message_sent->save();
-
- $message_to->access_id = ACCESS_PRIVATE;
- $message_to->save();
-
- if ($add_to_sent) {
- $message_sent->access_id = ACCESS_PRIVATE;
- $message_sent->save();
- }
-
- // if the new message is a reply then create a relationship link between the new message
- // and the message it is in reply to
- if($reply && $success){
- $create_relationship = add_entity_relationship($message_sent->guid, "reply", $reply);
- }
-
-
- global $CONFIG;
- $message_contents = strip_tags($body);
- if ($send_to != get_loggedin_user() && $notify)
- notify_user($send_to, get_loggedin_user()->guid, elgg_echo('messages:email:subject'),
- sprintf(
- elgg_echo('messages:email:body'),
- get_loggedin_user()->name,
- $message_contents,
- $CONFIG->wwwroot . "pg/messages/" . $user->username,
- get_loggedin_user()->name,
- $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid
- )
- );
-
- $messagesendflag = 0;
- return $success;
+ // Initialise a new ElggObject
+ $message_to = new ElggObject();
+ $message_sent = new ElggObject();
+ // Tell the system it's a message
+ $message_to->subtype = "messages";
+ $message_sent->subtype = "messages";
+ // Set its owner to the current user
+ // $message_to->owner_guid = $_SESSION['user']->getGUID();
+ $message_to->owner_guid = $send_to;
+ $message_to->container_guid = $send_to;
+ $message_sent->owner_guid = $from;
+ $message_sent->container_guid = $from;
+ // For now, set its access to public (we'll add an access dropdown shortly)
+ $message_to->access_id = ACCESS_PUBLIC;
+ $message_sent->access_id = ACCESS_PUBLIC;
+ // Set its description appropriately
+ $message_to->title = $subject;
+ $message_to->description = $body;
+ $message_sent->title = $subject;
+ $message_sent->description = $body;
+ // set the metadata
+ $message_to->toId = $send_to; // the user receiving the message
+ $message_to->fromId = $from; // the user receiving the message
+ $message_to->readYet = 0; // this is a toggle between 0 / 1 (1 = read)
+ $message_to->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag
+ $message_to->hiddenTo = 0; // this is used when a user deletes a message in their inbox
+ $message_sent->toId = $send_to; // the user receiving the message
+ $message_sent->fromId = $from; // the user receiving the message
+ $message_sent->readYet = 0; // this is a toggle between 0 / 1 (1 = read)
+ $message_sent->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag
+ $message_sent->hiddenTo = 0; // this is used when a user deletes a message in their inbox
+
+ $message_to->msg = 1;
+ $message_sent->msg = 1;
+
+ // Save the copy of the message that goes to the recipient
+ $success = $message_to->save();
- }
-
- /**
- * messages page handler; allows the use of fancy URLs
- *
- * @param array $page From the page_handler function
- * @return true|false Depending on success
- */
- function messages_page_handler($page) {
+ // Save the copy of the message that goes to the sender
+ if ($add_to_sent) $success2 = $message_sent->save();
- // The first component of a messages URL is the username
- if (isset($page[0])) {
- set_input('username',$page[0]);
- }
+ $message_to->access_id = ACCESS_PRIVATE;
+ $message_to->save();
- // The second part dictates what we're doing
- if (isset($page[1])) {
- switch($page[1]) {
- case "read": set_input('message',$page[2]);
- include(dirname(__FILE__) . "/read.php");
- return true;
- break;
- }
- // If the URL is just 'messages/username', or just 'messages/', load the standard messages index
- } else {
- include(dirname(__FILE__) . "/index.php");
- return true;
+ if ($add_to_sent) {
+ $message_sent->access_id = ACCESS_PRIVATE;
+ $message_sent->save();
}
- return false;
+ // if the new message is a reply then create a relationship link between the new message
+ // and the message it is in reply to
+ if($reply && $success){
+ $create_relationship = add_entity_relationship($message_sent->guid, "reply", $reply);
+ }
+
+
+ global $CONFIG;
+ $message_contents = strip_tags($body);
+ if ($send_to != get_loggedin_user() && $notify)
+ notify_user($send_to, get_loggedin_user()->guid, elgg_echo('messages:email:subject'),
+ sprintf(
+ elgg_echo('messages:email:body'),
+ get_loggedin_user()->name,
+ $message_contents,
+ $CONFIG->wwwroot . "pg/messages/" . $user->username,
+ get_loggedin_user()->name,
+ $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid
+ )
+ );
- }
+ $messagesendflag = 0;
+ return $success;
+
+}
- function messages_url($message) {
-
- global $CONFIG;
- return $CONFIG->url . "pg/messages/" . $message->getOwnerEntity()->username . "/read/" . $message->getGUID();
-
- }
-
- // A simple function to count the number of messages that are unread in a user's inbox
- function count_unread_messages() {
-
- //get the users inbox messages
- //$num_messages = get_entities_from_metadata("toId", $_SESSION['user']->getGUID(), "object", "messages", 0, 10, 0, "", 0, false);
- $num_messages = elgg_get_entities_from_metadata(array('metadata_name_value_pairs' => array(
- 'toId' => $_SESSION['user']->guid,
- 'readYet' => 0,
- 'msg' => 1
- ), 'types' => 'object', 'subtypes' => 'messages', 'owner_guid' => $_SESSION['user']->guid, 'limit' => 9999));
-
- if (is_array($num_messages))
- $counter = sizeof($num_messages);
- else
- $counter = 0;
-
- return $counter;
-
- }
-
- function messages_site_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message, array $params = NULL)
- {
- global $CONFIG;
-
- if (!$from)
- throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'from'));
-
- if (!$to)
- throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'to'));
-
- global $messages_pm;
- if (!$messages_pm)
- return messages_send($subject,$message,$to->guid,$from->guid,0,false,false);
- else return true;
-
+/**
+ * messages page handler; allows the use of fancy URLs
+ *
+ * @param array $page From the page_handler function
+ * @return true|false Depending on success
+ */
+function messages_page_handler($page) {
+
+ // The first component of a messages URL is the username
+ if (isset($page[0])) {
+ set_input('username',$page[0]);
+ }
+
+ // The second part dictates what we're doing
+ if (isset($page[1])) {
+ switch($page[1]) {
+ case "read": set_input('message',$page[2]);
+ include(dirname(__FILE__) . "/read.php");
+ return true;
+ break;
}
+ // If the URL is just 'messages/username', or just 'messages/', load the standard messages index
+ } else {
+ include(dirname(__FILE__) . "/index.php");
+ return true;
+ }
+ return false;
+
+}
+
+function messages_url($message) {
+
+ global $CONFIG;
+ return $CONFIG->url . "pg/messages/" . $message->getOwnerEntity()->username . "/read/" . $message->getGUID();
+
+}
+
+// A simple function to count the number of messages that are unread in a user's inbox
+function count_unread_messages() {
+
+ //get the users inbox messages
+ //$num_messages = get_entities_from_metadata("toId", $_SESSION['user']->getGUID(), "object", "messages", 0, 10, 0, "", 0, false);
+ $num_messages = elgg_get_entities_from_metadata(array('metadata_name_value_pairs' => array(
+ 'toId' => $_SESSION['user']->guid,
+ 'readYet' => 0,
+ 'msg' => 1
+ )));
+
+ if (is_array($num_messages))
+ $counter = sizeof($num_messages);
+ else
+ $counter = 0;
- // Make sure the messages initialisation function is called on initialisation
- register_elgg_event_handler('init','system','messages_init');
-
- register_plugin_hook('permissions_check','object','messages_can_edit');
- register_plugin_hook('container_permissions_check','object','messages_can_edit_container');
+ return $counter;
+
+}
+
+function messages_site_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message, array $params = NULL)
+{
+ global $CONFIG;
+
+ if (!$from)
+ throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'from'));
+
+ if (!$to)
+ throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'to'));
- // Register actions
- global $CONFIG;
- register_action("messages/send",false,$CONFIG->pluginspath . "messages/actions/send.php");
- register_action("messages/delete",false,$CONFIG->pluginspath . "messages/actions/delete.php");
-
-?> \ No newline at end of file
+ global $messages_pm;
+ if (!$messages_pm)
+ return messages_send($subject,$message,$to->guid,$from->guid,0,false,false);
+ else return true;
+
+}
+
+
+// Make sure the messages initialisation function is called on initialisation
+register_elgg_event_handler('init','system','messages_init');
+
+register_plugin_hook('permissions_check','object','messages_can_edit');
+register_plugin_hook('container_permissions_check','object','messages_can_edit_container');
+
+// Register actions
+global $CONFIG;
+register_action("messages/send",false,$CONFIG->pluginspath . "messages/actions/send.php");
+register_action("messages/delete",false,$CONFIG->pluginspath . "messages/actions/delete.php"); \ No newline at end of file