aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/activities.php81
-rw-r--r--include/auth.php20
-rwxr-xr-xinclude/items.php1
-rw-r--r--include/security.php21
4 files changed, 103 insertions, 20 deletions
diff --git a/include/activities.php b/include/activities.php
new file mode 100644
index 000000000..20b198976
--- /dev/null
+++ b/include/activities.php
@@ -0,0 +1,81 @@
+<?php
+
+function profile_activity($changed, $value) {
+ $a = get_app();
+
+ if(! local_user() || ! is_array($changed) || ! count($changed))
+ return;
+
+ if(! get_pconfig(local_user(),'system','post_profilechange'))
+ return;
+
+ require_once('include/items.php');
+
+ $self = $a->get_channel();
+
+ if(! count($self))
+ return;
+
+ $arr = array();
+ $arr['uri'] = $arr['parent_uri'] = item_message_id();
+ $arr['uid'] = local_user();
+ $arr['aid'] = $self['channel_account_id'];
+ $arr['owner_xchan'] = $arr['author_xchan'] = $self['xchan_hash'];
+ $arr['item_flags'] = ITEM_WALL|ITEM_ORIGIN|ITEM_THREAD_TOP;
+ $arr['verb'] = ACTIVITY_UPDATE;
+ $arr['obj_type'] = ACTIVITY_OBJ_PROFILE;
+
+ $A = '[url=' . $self[0]['xchan_profile'] . ']' . $self[0]['xchan_name'] . '[/url]';
+
+
+ $changes = '';
+ $t = count($changed);
+ $z = 0;
+ foreach($changed as $ch) {
+ if(strlen($changes)) {
+ if ($z == ($t - 1))
+ $changes .= t(' and ');
+ else
+ $changes .= ', ';
+ }
+ $z ++;
+ $changes .= $ch;
+ }
+
+ $prof = '[url=' . $self[0]['xchan_profile'] . '?tab=profile' . ']' . t('public profile') . '[/url]';
+
+ if($t == 1 && strlen($value)) {
+ $message = sprintf( t('%1$s changed %2$s to &ldquo;%3$s&rdquo;'), $A, $changes, $value);
+ $message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof);
+ }
+ else
+ $message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
+
+
+ $arr['body'] = $message;
+
+ $links = array();
+ $links[] = array('rel' => 'alternate', 'type' => 'text/html', 'href' => $self[0]['profile'] . '?tab=profile');
+ $links[] = array('rel' => 'photo', 'type' => /*FIXME*/ 'image/jpeg', 'href' => $self[0]['xchan_photo']);
+
+ $arr['object'] = json_encode(array(
+ 'type' => ACTIVITY_OBJ_PROFILE,
+ 'title' => $self[0]['channel_name'],
+ 'id' => $self[0]['xchan_profile'] . '/' . $self[0]['xchan_hash'],
+ 'link' => $links
+ ));
+
+
+ $arr['allow_cid'] = $self[0]['channel_allow_cid'];
+ $arr['allow_gid'] = $self[0]['channel_allow_gid'];
+ $arr['deny_cid'] = $self[0]['channel_deny_cid'];
+ $arr['deny_gid'] = $self[0]['channel_deny_gid'];
+
+ $i = item_store($arr);
+
+ if($i) {
+ // FIXME - limit delivery in notifier.php to those specificed in the perms argument
+ proc_run('php',"include/notifier.php","activity","$i", 'PERMS_R_PROFILE');
+ }
+
+}
diff --git a/include/auth.php b/include/auth.php
index d184b5ff7..3f877cd1d 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -185,23 +185,3 @@ else {
}
}
-// Returns an array of group id's this contact is a member of.
-// This array will only contain group id's related to the uid of this
-// DFRN contact. They are *not* neccessarily unique across the entire site.
-
-
-if(! function_exists('init_groups_visitor')) {
-function init_groups_visitor($contact_id) {
- $groups = array();
- $r = q("SELECT `gid` FROM `group_member`
- WHERE `contact-id` = %d ",
- intval($contact_id)
- );
- if(count($r)) {
- foreach($r as $rr)
- $groups[] = $rr['gid'];
- }
- return $groups;
-}}
-
-
diff --git a/include/items.php b/include/items.php
index 8319a358c..02bfed7cc 100755
--- a/include/items.php
+++ b/include/items.php
@@ -110,6 +110,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
killme();
$contact = $r[0];
+ require_once('include/security.php');
$groups = init_groups_visitor($contact['id']);
if(count($groups)) {
diff --git a/include/security.php b/include/security.php
index d1b3deca7..50c2337bf 100644
--- a/include/security.php
+++ b/include/security.php
@@ -440,3 +440,24 @@ function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'f
killme();
}
}
+
+// Returns an array of group id's this contact is a member of.
+// This array will only contain group id's related to the uid of this
+// DFRN contact. They are *not* neccessarily unique across the entire site.
+
+
+if(! function_exists('init_groups_visitor')) {
+function init_groups_visitor($contact_id) {
+ $groups = array();
+ $r = q("SELECT `gid` FROM `group_member`
+ WHERE `contact-id` = %d ",
+ intval($contact_id)
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ $groups[] = $rr['gid'];
+ }
+ return $groups;
+}}
+
+