aboutsummaryrefslogtreecommitdiff
path: root/mod/invitefriends
diff options
context:
space:
mode:
Diffstat (limited to 'mod/invitefriends')
-rw-r--r--mod/invitefriends/actions/invite.php51
-rw-r--r--mod/invitefriends/index.php23
-rw-r--r--mod/invitefriends/languages/en.php13
-rw-r--r--mod/invitefriends/manifest.xml24
-rw-r--r--mod/invitefriends/start.php55
-rw-r--r--mod/invitefriends/views/default/forms/invitefriends/invite.php35
-rw-r--r--mod/invitefriends/views/default/invitefriends/form.php11
-rw-r--r--mod/invitefriends/views/default/invitefriends/formitems.php27
8 files changed, 135 insertions, 104 deletions
diff --git a/mod/invitefriends/actions/invite.php b/mod/invitefriends/actions/invite.php
index abc212bea..eed156d69 100644
--- a/mod/invitefriends/actions/invite.php
+++ b/mod/invitefriends/actions/invite.php
@@ -4,12 +4,10 @@
* Elgg invite friends action
*
* @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
*/
+$site = elgg_get_site_entity();
+
$emails = get_input('emails');
$emailmessage = get_input('emailmessage');
@@ -19,15 +17,17 @@ if (strlen($emails) > 0) {
}
if (!is_array($emails) || count($emails) == 0) {
- register_error(elgg_echo('invitefriends:failure'));
- forward($_SERVER['HTTP_REFERER']);
+ register_error(elgg_echo('invitefriends:noemails'));
+ forward(REFERER);
}
-$current_user = get_loggedin_user();
+$current_user = elgg_get_logged_in_user_entity();
$error = FALSE;
$bad_emails = array();
-foreach($emails as $email) {
+$already_members = array();
+$sent_total = 0;
+foreach ($emails as $email) {
$email = trim($email);
if (empty($email)) {
@@ -41,31 +41,48 @@ foreach($emails as $email) {
continue;
}
- $link = $CONFIG->wwwroot . 'pg/register?friend_guid=' . $current_user->guid . '&invitecode=' . generate_invite_code($current_user->username);
- $message = sprintf(elgg_echo('invitefriends:email'),
- $CONFIG->site->name,
+ if (get_user_by_email($email)) {
+ $error = TRUE;
+ $already_members[] = $email;
+ continue;
+ }
+
+ $link = elgg_get_site_url() . 'register?friend_guid=' . $current_user->guid . '&invitecode=' . generate_invite_code($current_user->username);
+ $message = elgg_echo('invitefriends:email', array(
+ $site->name,
$current_user->name,
$emailmessage,
$link
+ )
);
- $subject = sprintf(elgg_echo('invitefriends:subject'), $CONFIG->site->name);
+ $subject = elgg_echo('invitefriends:subject', array($site->name));
// create the from address
- $site = get_entity($CONFIG->site_guid);
- if (($site) && (isset($site->email))) {
+ $site = get_entity($site->guid);
+ if ($site && $site->email) {
$from = $site->email;
} else {
- $from = 'noreply@' . get_site_domain($CONFIG->site_guid);
+ $from = 'noreply@' . get_site_domain($site->guid);
}
elgg_send_email($from, $email, $subject, $message);
+ $sent_total++;
}
if ($error) {
- register_error(sprintf(elgg_echo('invitefriends:email_error'), implode(', ', $bad_emails)));
+ register_error(elgg_echo('invitefriends:invitations_sent', array($sent_total)));
+
+ if (count($bad_emails) > 0) {
+ register_error(elgg_echo('invitefriends:email_error', array(implode(', ', $bad_emails))));
+ }
+
+ if (count($already_members) > 0) {
+ register_error(elgg_echo('invitefriends:already_members', array(implode(', ', $already_members))));
+ }
+
} else {
system_message(elgg_echo('invitefriends:success'));
}
-forward($_SERVER['HTTP_REFERER']);
+forward(REFERER);
diff --git a/mod/invitefriends/index.php b/mod/invitefriends/index.php
deleted file mode 100644
index 1f27f07aa..000000000
--- a/mod/invitefriends/index.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * Elgg invite page
- *
- * @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
- */
-
-require_once(dirname(dirname(dirname(__FILE__))) . '/engine/start.php');
-
-gatekeeper();
-
-set_context('friends');
-set_page_owner(get_loggedin_userid());
-
-$body = elgg_view('invitefriends/form');
-$body = elgg_view_layout('one_column_with_sidebar', $body);
-
-page_draw(elgg_echo('friends:invite'), $body);
diff --git a/mod/invitefriends/languages/en.php b/mod/invitefriends/languages/en.php
index fa6cb3fd9..f31d79bd8 100644
--- a/mod/invitefriends/languages/en.php
+++ b/mod/invitefriends/languages/en.php
@@ -4,22 +4,23 @@
* Elgg invite language file
*
* @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
*/
$english = array(
'friends:invite' => 'Invite friends',
+
+ 'invitefriends:registration_disabled' => 'New user registration has been disabled on this site; you are unable to invite new users.',
+
'invitefriends:introduction' => 'To invite friends to join you on this network, enter their email addresses below (one per line):',
'invitefriends:message' => 'Enter a message they will receive with your invitation:',
'invitefriends:subject' => 'Invitation to join %s',
'invitefriends:success' => 'Your friends were invited.',
- 'invitefriends:email_error' => 'Invitations were sent, but the following addresses are not valid: %s',
- 'invitefriends:failure' => 'Your friends could not be invited.',
+ 'invitefriends:invitations_sent' => 'Invites sent: %s. There were the following problems:',
+ 'invitefriends:email_error' => 'The following addresses are not valid: %s',
+ 'invitefriends:already_members' => 'The following are already members: %s',
+ 'invitefriends:noemails' => 'No email addresses were entered.',
'invitefriends:message:default' => '
Hi,
diff --git a/mod/invitefriends/manifest.xml b/mod/invitefriends/manifest.xml
index cf039ee13..b36238a05 100644
--- a/mod/invitefriends/manifest.xml
+++ b/mod/invitefriends/manifest.xml
@@ -1,11 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
-<plugin_manifest>
- <field key="author" value="Curverider" />
- <field key="version" value="1.7" />
- <field key="description" value="Invite friends to Elgg network via email invites." />
- <field key="website" value="http://www.elgg.org/" />
- <field key="copyright" value="(C) Curverider 2008-2010" />
- <field key="licence" value="GNU Public License version 2" />
- <field key="elgg_version" value="2010030101" />
- <field key="admin_interface" value="advanced" />
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Invite Friends</name>
+ <author>Core developers</author>
+ <version>1.8</version>
+ <category>bundled</category>
+ <category>social</category>
+ <description>Invite friends via email invites.</description>
+ <website>http://www.elgg.org/</website>
+ <copyright>See COPYRIGHT.txt</copyright>
+ <license>GNU General Public License version 2</license>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
+ <activate_on_install>true</activate_on_install>
</plugin_manifest>
diff --git a/mod/invitefriends/start.php b/mod/invitefriends/start.php
index 6bdedcffa..368f6348a 100644
--- a/mod/invitefriends/start.php
+++ b/mod/invitefriends/start.php
@@ -3,23 +3,48 @@
* Elgg invite friends
*
* @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
*/
-/**
- * Add menu item for invite friends
- */
-function invitefriends_pagesetup() {
- global $CONFIG;
- if (get_context() == "friends" ||
- get_context() == "friendsof" ||
- get_context() == "collections") {
- add_submenu_item(elgg_echo('friends:invite'),$CONFIG->wwwroot."mod/invitefriends/",'invite');
+elgg_register_event_handler('init', 'system', 'invitefriends_init');
+
+function invitefriends_init() {
+ elgg_register_page_handler('invite', 'invitefriends_page_handler');
+
+ elgg_register_action('invitefriends/invite', elgg_get_plugins_path() . 'invitefriends/actions/invite.php');
+
+ if (elgg_is_logged_in()) {
+ $params = array(
+ 'name' => 'invite',
+ 'text' => elgg_echo('friends:invite'),
+ 'href' => "invite",
+ 'contexts' => array('friends'),
+ );
+ elgg_register_menu_item('page', $params);
}
}
-register_action('invitefriends/invite', false, $CONFIG->pluginspath . 'invitefriends/actions/invite.php');
-register_elgg_event_handler('pagesetup', 'system', 'invitefriends_pagesetup');
+/**
+ * Page handler function
+ *
+ * @param array $page Page URL segments
+ * @return bool
+ */
+function invitefriends_page_handler($page) {
+ gatekeeper();
+
+ elgg_set_context('friends');
+ elgg_set_page_owner_guid(elgg_get_logged_in_user_guid());
+
+ $title = elgg_echo('friends:invite');
+
+ $body = elgg_view('invitefriends/form');
+
+ $params = array(
+ 'content' => $body,
+ 'title' => $title,
+ );
+ $body = elgg_view_layout('one_sidebar', $params);
+
+ echo elgg_view_page($title, $body);
+ return true;
+}
diff --git a/mod/invitefriends/views/default/forms/invitefriends/invite.php b/mod/invitefriends/views/default/forms/invitefriends/invite.php
new file mode 100644
index 000000000..0d7f5d9f2
--- /dev/null
+++ b/mod/invitefriends/views/default/forms/invitefriends/invite.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Elgg invite form contents
+ *
+ * @package ElggInviteFriends
+ */
+
+if (elgg_get_config('allow_registration')) {
+ $site = elgg_get_site_entity();
+ $introduction = elgg_echo('invitefriends:introduction');
+ $message = elgg_echo('invitefriends:message');
+ $default = elgg_echo('invitefriends:message:default', array($site->name));
+
+ echo <<< HTML
+<div>
+ <label>
+ $introduction
+ <textarea class="elgg-input-textarea" name="emails" ></textarea>
+ </label>
+</div>
+<div>
+ <label>
+ $message
+ <textarea class="elgg-input-textarea" name="emailmessage" >$default</textarea>
+ </label>
+</div>
+HTML;
+
+ echo '<div class="elgg-foot">';
+ echo elgg_view('input/submit', array('value' => elgg_echo('send')));
+ echo '</div>';
+} else {
+ echo elgg_echo('invitefriends:registration_disabled');
+}
diff --git a/mod/invitefriends/views/default/invitefriends/form.php b/mod/invitefriends/views/default/invitefriends/form.php
index ed8fa2d15..badcf8759 100644
--- a/mod/invitefriends/views/default/invitefriends/form.php
+++ b/mod/invitefriends/views/default/invitefriends/form.php
@@ -3,15 +3,6 @@
* Elgg invite form wrapper
*
* @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
*/
-echo elgg_view('input/form', array(
- 'action' => $vars['url'] . 'action/invitefriends/invite',
- 'body' => elgg_view('invitefriends/formitems'),
- 'method' => 'post'
- )
-);
+echo elgg_view_form('invitefriends/invite');
diff --git a/mod/invitefriends/views/default/invitefriends/formitems.php b/mod/invitefriends/views/default/invitefriends/formitems.php
index ce9a84073..afdff4164 100644
--- a/mod/invitefriends/views/default/invitefriends/formitems.php
+++ b/mod/invitefriends/views/default/invitefriends/formitems.php
@@ -1,25 +1,4 @@
-<?php
+<?php
-/**
- * Elgg invite form contents
- *
- * @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
- */
-
-
-echo "<h2>".elgg_echo('friends:invite')."</h2>";
-?>
-<p class="margin_top">
-<label>
- <?php echo elgg_echo('invitefriends:introduction'); ?>
-<textarea class="input_textarea" name="emails" ></textarea></label></p>
-<p><label>
- <?php echo elgg_echo('invitefriends:message'); ?>
-<textarea class="input_textarea" name="emailmessage" ><?php
- echo sprintf(elgg_echo('invitefriends:message:default'),$CONFIG->site->name);
-?></textarea></label></p>
-<?php echo elgg_view('input/submit', array('value' => elgg_echo('send'))); ?>
+elgg_deprecated_notice("invitefriends/formitems was moved to forms/invitefriends/invite", 1.8);
+echo elgg_view('forms/invitefriends/invite'); \ No newline at end of file