diff options
author | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-25 14:17:27 +0000 |
---|---|---|
committer | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-25 14:17:27 +0000 |
commit | 27009477e3f523721eacc784598a616bf438d772 (patch) | |
tree | d857ec16fed2d8f4eaff3915e4b5fa7e3812731f | |
parent | 98b32177eb900e779fd2c7976b1e77fb9dd77d63 (diff) | |
download | elgg-27009477e3f523721eacc784598a616bf438d772.tar.gz elgg-27009477e3f523721eacc784598a616bf438d772.tar.bz2 |
Refs #78: Email notifications on friending, comments
http://trac.elgg.org/elgg/ticket/78
git-svn-id: https://code.elgg.org/elgg/trunk@1124 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | engine/lib/notification.php | 8 | ||||
-rw-r--r-- | engine/lib/relationships.php | 47 | ||||
-rw-r--r-- | languages/en.php | 9 |
3 files changed, 60 insertions, 4 deletions
diff --git a/engine/lib/notification.php b/engine/lib/notification.php index 6be6ae524..145f9a4a0 100644 --- a/engine/lib/notification.php +++ b/engine/lib/notification.php @@ -67,7 +67,7 @@ */ function notify_user($to, $from, $subject, $message, array $params = NULL, $methods_override = "") { - global $NOTIFICATION_HANDLERS; + global $NOTIFICATION_HANDLERS, $CONFIG; // Sanitise if (!is_array($to)) @@ -108,15 +108,19 @@ if ((!$NOTIFICATION_HANDLERS[$method]) || (!$handler)) throw new NotificationException(sprintf(elgg_echo('NotificationException:NoHandlerFound'), $method)); + + if ($CONFIG->debug) + error_log("Sending message to $guid using $method"); // Trigger handler and retrieve result. $result[$guid][$method] = $handler( $from ? get_entity($from) : NULL, // From entity get_entity($guid), // To entity $subject, // The subject - sanitise_string($message), // Message + $message, // Message $params // Params ); + } } diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php index b71f075e5..642b2f5c6 100644 --- a/engine/lib/relationships.php +++ b/engine/lib/relationships.php @@ -302,7 +302,9 @@ $id = (int)$id; - return row_to_elggrelationship(get_data_row("delete from {$CONFIG->dbprefix}entity_relationships where id=$id")); + $result = delete_data("delete from {$CONFIG->dbprefix}entity_relationships where id=$id"); + + return $result; } /** @@ -323,7 +325,18 @@ $relationship = sanitise_string($relationship); $guid_two = (int)$guid_two; - return insert_data("INSERT into {$CONFIG->dbprefix}entity_relationships (guid_one, relationship, guid_two) values ($guid_one, '$relationship', $guid_two)"); + $result = insert_data("INSERT into {$CONFIG->dbprefix}entity_relationships (guid_one, relationship, guid_two) values ($guid_one, '$relationship', $guid_two)"); + + if ($result!==false) { + $obj = get_relationship($result); + if (trigger_elgg_event('create', $relationship, $obj)) { + return true; + } else { + delete_relationship($result); + } + } + + return false; } /** @@ -620,10 +633,40 @@ return $returnvalue; } + + /** + * An event listener which will notify users based on certain events. + * + * @param unknown_type $event + * @param unknown_type $object_type + * @param unknown_type $object + */ + function relationship_notification_hook($event, $object_type, $object) + { + global $CONFIG; + + if ( + ($object instanceof ElggRelationship) && + ($event == 'create') && + ($object_type == 'friend') + ) + { + $user_one = get_entity($object->guid_one); + $user_two = get_entity($object->guid_two); + + // Notify target user + return notify_user($object->guid_two, $object->guid_one, sprintf(elgg_echo('friend:newfriend:subject'), $user_two->name), + sprintf(elgg_echo("friend:newfriend:body"), $user_one->name, $CONFIG->site->url . "pg/profile/" . $user_one->username) + ); + } + } /** Register the import hook */ register_plugin_hook("import", "all", "import_relationship_plugin_hook", 3); /** Register the hook, ensuring entities are serialised first */ register_plugin_hook("export", "all", "export_relationship_plugin_hook", 3); + + /** Register event to listen to some events **/ + register_elgg_event_handler('create','friend','relationship_notification_hook'); ?>
\ No newline at end of file diff --git a/languages/en.php b/languages/en.php index 4d99a2ce1..13b661209 100644 --- a/languages/en.php +++ b/languages/en.php @@ -439,6 +439,15 @@ Alternatively, you can enter your database settings below and we will try and do 'welcome' => "Welcome %s",
'welcome_message' => "Welcome to this Elgg installation.", + /** + * Emails + */ + 'friend:newfriend:subject' => "%s has made you a friend!", + 'friend:newfriend:body' => "%s has made you a friend! + +Check them out: %s + +You cannot reply to this email.", /** * XML-RPC |