aboutsummaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/notifications/start.php86
-rw-r--r--mod/pages/actions/pages/edit.php4
-rw-r--r--mod/pages/start.php7
-rw-r--r--mod/pages/views/default/forms/pages/edit.php8
-rw-r--r--mod/profile/actions/cropicon.php18
-rw-r--r--mod/profile/actions/iconupload.php4
-rw-r--r--mod/profile/icon.php7
-rw-r--r--mod/profile/icondirect.php20
-rw-r--r--mod/profile/start.php4
9 files changed, 110 insertions, 48 deletions
diff --git a/mod/notifications/start.php b/mod/notifications/start.php
index fa36d5d69..3349d0194 100644
--- a/mod/notifications/start.php
+++ b/mod/notifications/start.php
@@ -27,6 +27,10 @@ function notifications_plugin_init() {
// update notifications based on relationships changing
register_elgg_event_handler('delete', 'member', 'notifications_relationship_remove');
register_elgg_event_handler('delete', 'friend', 'notifications_relationship_remove');
+
+ // update notifications when new friend or access collection membership
+ register_elgg_event_handler('create', 'friend', 'notifications_update_friend_notify');
+ register_plugin_hook('access:collections:add_user', 'collection', 'notifications_update_collection_notify');
}
/**
@@ -88,7 +92,89 @@ function notifications_relationship_remove($event, $object_type, $relationship)
}
}
+/**
+ * Turn on notifications for new friends if all friend notifications is on
+ *
+ * @param string $event
+ * @param string $object_type
+ * @param object $relationship
+ */
+function notifications_update_friend_notify($event, $object_type, $relationship) {
+ global $NOTIFICATION_HANDLERS;
+
+ $user_guid = $relationship->guid_one;
+ $friend_guid = $relationship->guid_two;
+
+ $user = get_entity($user_guid);
+
+ // loop through all notification types
+ foreach ($NOTIFICATION_HANDLERS as $method => $foo) {
+ $metaname = 'collections_notifications_preferences_' . $method;
+ $collections_preferences = $user->$metaname;
+ if ($collections_preferences) {
+ if (!empty($collections_preferences) && !is_array($collections_preferences)) {
+ $collections_preferences = array($collections_preferences);
+ }
+ if (is_array($collections_preferences)) {
+ // -1 means all friends is on - should be a define
+ if (in_array(-1, $collections_preferences)) {
+ add_entity_relationship($user_guid, 'notify' . $method, $friend_guid);
+ }
+ }
+ }
+ }
+}
+
+/**
+ * Update notifications for changes in access collection membership.
+ *
+ * This function assumes that only friends can belong to access collections.
+ *
+ * @param string $event
+ * @param string $object_type
+ * @param bool $returnvalue
+ * @param array $params
+ */
+function notifications_update_collection_notify($event, $object_type, $returnvalue, $params) {
+ global $NOTIFICATION_HANDLERS;
+
+ // only update notifications for user owned collections
+ $collection_id = $params['collection_id'];
+ $collection = get_access_collection($collection_id);
+ $user = get_entity($collection->owner_guid);
+ if (!($user instanceof ElggUser)) {
+ return $returnvalue;
+ }
+ $member_guid = $params['user_guid'];
+
+ // loop through all notification types
+ foreach ($NOTIFICATION_HANDLERS as $method => $foo) {
+ $metaname = 'collections_notifications_preferences_' . $method;
+ $collections_preferences = $user->$metaname;
+ if (!$collections_preferences) {
+ continue;
+ }
+ if (!is_array($collections_preferences)) {
+ $collections_preferences = array($collections_preferences);
+ }
+ if (in_array(-1, $collections_preferences)) {
+ // if "all friends" notify is on, we don't change any notifications
+ // since must be a friend to be in an access collection
+ continue;
+ }
+ if (in_array($collection_id, $collections_preferences)) {
+ // notifications are on for this collection so we add/remove
+ if ($event == 'access:collections:add_user') {
+ add_entity_relationship($user->guid, "notify$method", $member_guid);
+ } elseif ($event == 'access:collections:remove_user') {
+ // removing someone from an access collection is not a guarantee
+ // that they should be removed from notifications
+ //remove_entity_relationship($user->guid, "notify$method", $member_guid);
+ }
+ }
+ }
+}
register_elgg_event_handler('init', 'system', 'notifications_plugin_init', 1000);
diff --git a/mod/pages/actions/pages/edit.php b/mod/pages/actions/pages/edit.php
index 004b81a25..b583563f9 100644
--- a/mod/pages/actions/pages/edit.php
+++ b/mod/pages/actions/pages/edit.php
@@ -64,9 +64,7 @@ if ($page instanceof ElggObject) {
// Save fields - note we always save latest description as both description and annotation
if (sizeof($input) > 0) {
foreach($input as $shortname => $value) {
- if ((!$pages_guid) || (($pages_guid) && ($shortname != 'title'))) {
- $page->$shortname = $value;
- }
+ $page->$shortname = $value;
}
}
diff --git a/mod/pages/start.php b/mod/pages/start.php
index 8f4e3b5e2..6fd0ef26d 100644
--- a/mod/pages/start.php
+++ b/mod/pages/start.php
@@ -70,9 +70,8 @@ function pages_init() {
function pages_url($entity) {
global $CONFIG;
-
- return $CONFIG->url . "pg/pages/view/{$entity->guid}/";
-
+ $title = elgg_get_friendly_title($entity->title);
+ return $CONFIG->url . "pg/pages/view/{$entity->guid}/$title";
}
/**
@@ -207,7 +206,7 @@ function page_notify_message($hook, $entity_type, $returnvalue, $params) {
$owner = $entity->getOwnerEntity();
return $owner->name . ' ' . elgg_echo("pages:via") . ': ' . $title . "\n\n" . $descr . "\n\n" . $entity->getURL();
}
- if ($method == 'web') {
+ if ($method == 'site') {
$owner = $entity->getOwnerEntity();
return $owner->name . ' ' . elgg_echo("pages:via") . ': ' . $title . "\n\n" . $descr . "\n\n" . $entity->getURL();
}
diff --git a/mod/pages/views/default/forms/pages/edit.php b/mod/pages/views/default/forms/pages/edit.php
index 2095e4fd8..bdd721b82 100644
--- a/mod/pages/views/default/forms/pages/edit.php
+++ b/mod/pages/views/default/forms/pages/edit.php
@@ -45,11 +45,6 @@ if (!$vars['entity']) {
echo elgg_view('input/securitytoken');
if (is_array($vars['config']->pages) && sizeof($vars['config']->pages) > 0) {
foreach($vars['config']->pages as $shortname => $valtype) {
- $disabled = "";
-
- if (!$new_page && ($shortname == 'title')) {
- $disabled = true;
- }
?>
<p>
@@ -57,8 +52,7 @@ if (is_array($vars['config']->pages) && sizeof($vars['config']->pages) > 0) {
<?php echo elgg_echo("pages:{$shortname}") ?><br />
<?php echo elgg_view("input/{$valtype}",array(
'internalname' => $shortname,
- 'value' => $vars['entity']->$shortname,
- 'disabled' => $disabled
+ 'value' => $vars['entity']->$shortname
)); ?>
</label>
</p>
diff --git a/mod/profile/actions/cropicon.php b/mod/profile/actions/cropicon.php
index 5bba84a8c..b0dc0fa61 100644
--- a/mod/profile/actions/cropicon.php
+++ b/mod/profile/actions/cropicon.php
@@ -1,7 +1,7 @@
<?php
/**
* Elgg profile plugin upload new user icon action
- *
+ *
* @package ElggProfile
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Curverider Ltd <info@elgg.com>
@@ -28,28 +28,28 @@ $filehandler = new ElggFile();
$filehandler->owner_guid = $profile_owner->getGUID();
$filehandler->setFilename("profile/" . $profile_owner->username . "master" . ".jpg");
$filename = $filehandler->getFilenameOnFilestore();
-
+
$topbar = get_resized_image_from_existing_file($filename, 16, 16, true, $x1, $y1, $x2, $y2, TRUE);
$tiny = get_resized_image_from_existing_file($filename, 25, 25, true, $x1, $y1, $x2, $y2, TRUE);
$small = get_resized_image_from_existing_file($filename, 40, 40, true, $x1, $y1, $x2, $y2, TRUE);
$medium = get_resized_image_from_existing_file($filename, 100, 100, true, $x1, $y1, $x2, $y2, TRUE);
-
+
if ($small !== FALSE && $medium !== FALSE && $tiny !== FALSE) {
$filehandler = new ElggFile();
$filehandler->owner_guid = $profile_owner->getGUID();
- $filehandler->setFilename("profile/" . $profile_owner->username . "medium.jpg");
+ $filehandler->setFilename("profile/" . $profile_owner->guid . "medium.jpg");
$filehandler->open("write");
$filehandler->write($medium);
$filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "small.jpg");
+ $filehandler->setFilename("profile/" . $profile_owner->guid . "small.jpg");
$filehandler->open("write");
$filehandler->write($small);
$filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "tiny.jpg");
+ $filehandler->setFilename("profile/" . $profile_owner->guid . "tiny.jpg");
$filehandler->open("write");
$filehandler->write($tiny);
$filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "topbar.jpg");
+ $filehandler->setFilename("profile/" . $profile_owner->guid . "topbar.jpg");
$filehandler->open("write");
$filehandler->write($topbar);
$filehandler->close();
@@ -58,14 +58,14 @@ if ($small !== FALSE && $medium !== FALSE && $tiny !== FALSE) {
$profile_owner->x2 = $x2;
$profile_owner->y1 = $y1;
$profile_owner->y2 = $y2;
-
+
$profile_owner->icontime = time();
system_message(elgg_echo("profile:icon:uploaded"));
} else {
register_error(elgg_echo("profile:icon:notfound"));
}
-
+
//forward the user back to the upload page to crop
$url = "{$vars['url']}pg/profile/{$profile_owner->username}/edit/icon";
diff --git a/mod/profile/actions/iconupload.php b/mod/profile/actions/iconupload.php
index a0cb24c3d..23d1967a6 100644
--- a/mod/profile/actions/iconupload.php
+++ b/mod/profile/actions/iconupload.php
@@ -1,7 +1,7 @@
<?php
/**
* Elgg profile plugin upload new user icon action
- *
+ *
* @package ElggProfile
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Curverider Ltd <info@elgg.com>
@@ -41,7 +41,7 @@ foreach ($icon_sizes as $name => $size_info) {
//@todo Make these actual entities. See exts #348.
$file = new ElggFile();
$file->owner_guid = $profile_owner_guid;
- $file->setFilename("profile/{$profile_username}{$name}.jpg");
+ $file->setFilename("profile/{$profile_owner_guid}{$name}.jpg");
$file->open('write');
$file->write($resized);
$file->close();
diff --git a/mod/profile/icon.php b/mod/profile/icon.php
index da7667c8b..d7d7247c5 100644
--- a/mod/profile/icon.php
+++ b/mod/profile/icon.php
@@ -1,7 +1,7 @@
<?php
/**
* Elgg profile icon
-*
+*
* @package ElggProfile
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Curverider Ltd <info@elgg.com>
@@ -13,7 +13,6 @@ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
// Get the owning user
$user = page_owner_entity();
-$username = $user->username;
// Get the size
$size = strtolower(get_input('size'));
@@ -30,13 +29,13 @@ if (!$user) {
// Try and get the icon
$filehandler = new ElggFile();
$filehandler->owner_guid = $user->getGUID();
-$filehandler->setFilename("profile/" . $username . $size . ".jpg");
+$filehandler->setFilename("profile/" . $user->getGUID() . $size . ".jpg");
$success = false;
if ($filehandler->open("read")) {
if ($contents = $filehandler->read($filehandler->size())) {
$success = true;
- }
+ }
}
if (!$success) {
diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php
index 8a46786ab..c84955fa5 100644
--- a/mod/profile/icondirect.php
+++ b/mod/profile/icondirect.php
@@ -16,8 +16,6 @@ require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php');
global $CONFIG;
-
-$username = $_GET['username'];
$joindate = (int)$_GET['joindate'];
$guid = (int)$_GET['guid'];
@@ -26,20 +24,6 @@ if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) {
$size = "medium";
}
-// security check on username string
-if ( (strpos($username, '/')!==false) ||
- (strpos($username, '\\')!==false) ||
- (strpos($username, '"')!==false) ||
- (strpos($username, '\'')!==false) ||
- (strpos($username, '*')!==false) ||
- (strpos($username, '&')!==false) ||
- (strpos($username, ' ')!==false) ) {
- // these characters are not allowed in usernames
- exit;
-}
-
-
-
$mysql_dblink = @mysql_connect($CONFIG->dbhost,$CONFIG->dbuser,$CONFIG->dbpass, true);
if ($mysql_dblink) {
if (@mysql_select_db($CONFIG->dbname,$mysql_dblink)) {
@@ -65,7 +49,7 @@ if ($mysql_dblink) {
// first try to read icon directly
$user_path = date('Y/m/d/', $joindate) . $guid;
- $filename = $dataroot . $user_path . "/profile/" . $username . $size . ".jpg";
+ $filename = "$dataroot$user_path/profile/{$guid}{$size}.jpg";
$contents = @file_get_contents($filename);
if (!empty($contents)) {
header("Content-type: image/jpeg");
@@ -86,4 +70,6 @@ if ($mysql_dblink) {
// simplecache is not turned on or something went wrong so load engine and try that way
require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+$user = get_entity($guid);
+set_input('username', $user->username);
require_once(dirname(__FILE__).'/icon.php');
diff --git a/mod/profile/start.php b/mod/profile/start.php
index 17a55e1f9..adac92aef 100644
--- a/mod/profile/start.php
+++ b/mod/profile/start.php
@@ -253,11 +253,11 @@ function profile_usericon_hook($hook, $entity_type, $returnvalue, $params){
$filehandler = new ElggFile();
$filehandler->owner_guid = $entity->getGUID();
- $filehandler->setFilename("profile/" . $username . $size . ".jpg");
+ $filehandler->setFilename("profile/" . $entity->guid . $size . ".jpg");
if ($filehandler->exists()) {
//$url = $CONFIG->url . "pg/icon/$username/$size/$icontime.jpg";
- return $CONFIG->wwwroot . 'mod/profile/icondirect.php?lastcache='.$icontime.'&username='.$entity->username.'&joindate=' . $entity->time_created . '&guid=' . $entity->guid . '&size='.$size;
+ return $CONFIG->wwwroot . 'mod/profile/icondirect.php?lastcache='.$icontime.'&joindate=' . $entity->time_created . '&guid=' . $entity->guid . '&size='.$size;
}
}
}