From da416e0181663b33304eadc0b1db228e6f1f5b7d Mon Sep 17 00:00:00 2001
From: Friendika <info@friendika.com>
Date: Thu, 20 Oct 2011 05:43:33 -0700
Subject: [PATCH] bug in diaspora_reshare

---
 include/diaspora.php       |   2 -
 include/profile_update.php | 113 +++++++++++++++++++++++++++++++++++++
 mod/profile_photo.php      |   3 +
 mod/profiles.php           |   3 +
 mod/settings.php           |   6 +-
 5 files changed, 122 insertions(+), 5 deletions(-)
 create mode 100644 include/profile_update.php

diff --git a/include/diaspora.php b/include/diaspora.php
index 0528c5575b..89707967f3 100644
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -673,8 +673,6 @@ function diaspora_reshare($importer,$xml) {
 	$created = unxmlify($xml->created_at);
 	$private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
 
-	$body = diaspora2bb($xml->raw_message);
-
 	$datarray = array();
 
 	$str_tags = '';
diff --git a/include/profile_update.php b/include/profile_update.php
new file mode 100644
index 0000000000..1a2d9d3b57
--- /dev/null
+++ b/include/profile_update.php
@@ -0,0 +1,113 @@
+<?php
+
+require_once('include/datetime.php');
+require_once('include/diaspora.php');
+
+function profile_change() {
+
+	$a = get_app();
+	
+	if(! local_user())
+		return;
+
+//   $url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
+ //   if($url && strlen(get_config('system','directory_submit_url')))
+  //      proc_run('php',"include/directory.php","$url");
+
+	$recips = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s'
+		AND `uid` = %d AND `rel` != %d ORDER BY rand() ",
+		dbesc(NETWORK_DIASPORA),
+		intval(local_user()),
+		intval(CONTACT_IS_SHARING)
+	);
+	if(! count($recips))
+		return;
+
+	$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile`
+		LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+		WHERE `user`.`uid` = %d AND `profile`.`is-default` = 1 LIMIT 1",
+		intval(local_user())
+	);
+	
+	if(! count($r))
+		return;
+	$profile = $r[0];
+
+	$handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+	$first = ((strpos($profile['name'],' '))
+		? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']);
+	$last = (($first === $profile['name']) ? '' : trim(substr($profile['name'],strlen($first))));
+	$large = $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg';
+	$medium = $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg';
+	$small = $a->get_baseurl() . '/photo/custom/50/'  . $profile['uid'] . '.jpg';
+	$searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' );
+
+	if($searchable === 'true') {
+		$dob = '1000-00-00';
+
+		if(($profile['dob']) && ($profile['dob'] != '0000-00-00'))
+			$dob = ((intval($profile['dob'])) ? intval($profile['dob']) : '1000') . '-' . datetime_convert('UTC','UTC',$profile['dob'],'m-d');
+		$gender = $profile['gender'];
+		$about = $profile['about'];
+		require_once('include/bbcode.php');
+		$about = strip_tags(bbcode($about));
+		$location = '';
+		if($profile['locality'])
+			$location .= $profile['locality'];
+		if($profile['region']) {
+			if($location)
+				$location .= ', ';
+			$location .= $profile['region'];
+		}
+		if($profile['country-name']) {
+			if($location)
+				$location .= ', ';
+			$location .= $profile['country-name'];
+		}
+		$tags = '';
+		if($profile['pub_keywords']) {
+			$kw = str_replace(',',' ',$profile['pub_keywords']);
+			$kw = str_replace('  ',' ',$kw);
+			$arr = explode(' ',$profile['pub_keywords']);
+			if(count($arr)) {
+				for($x = 0; $x < 5; $x ++) {
+					if(trim($arr[$x]))
+						$tags .= '#' . trim($arr[$x]) . ' ';
+				}
+			}
+		}
+		$tags = trim($tags);
+	}
+
+	$tpl = get_markup_template('diaspora_profile.tpl');
+
+
+	$msg = replace_macros($tpl,array(
+		'$handle' => $handle,
+		'$first' => $first,
+		'$last' => $last,
+		'$large' => $large,
+		'$medium' => $medium,
+		'$small' => $small,
+		'$dob' => $dob,
+		'$gender' => $gender,
+		'$about' => $about,
+		'$location' => $location,
+		'$searchable' => $searchable,
+		'$tags' => $tags
+	));
+	logger('profile_change: ' . $msg, LOGGER_ALL);
+
+	$msgtosend = diaspora_msg_build($msg,$a->user,null,$a->user['prvkey'],null,true);
+	foreach($recips as $recip) {
+		q("insert into queue (`cid`,`network`,`created`,`last`,`content`,`batch`)
+			values(%d,'%s','%s','%s','%s',%d)",
+			intval($recip['id']),
+			dbesc(NETWORK_DIASPORA),
+			dbesc(datetime_convert()),
+			dbesc(datetime_convert()),
+			dbesc($msgtosend),
+			intval(1)
+		);
+	}
+}
\ No newline at end of file
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index 4de3aaa3e0..47f0f8d8e5 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -90,6 +90,9 @@ function profile_photo_post(&$a) {
 				$url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
 				if($url && strlen(get_config('system','directory_submit_url')))
 					proc_run('php',"include/directory.php","$url");
+
+				require_once('include/profile_update.php');
+				profile_change();
 			}
 			else
 				notice( t('Unable to process image') . EOL);
diff --git a/mod/profiles.php b/mod/profiles.php
index f5f335c7e4..a5096a9846 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -210,6 +210,9 @@ function profiles_post(&$a) {
 			$url = $_SESSION['my_url'];
 			if($url && strlen(get_config('system','directory_submit_url')))
 				proc_run('php',"include/directory.php","$url");
+
+			require_once('include/profile_update.php');
+			profile_change();
 		}
 	}
 }
diff --git a/mod/settings.php b/mod/settings.php
index 84f66d263d..8ed03dba50 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -296,9 +296,9 @@ function settings_post(&$a) {
 
 	}
 
-// not yet ready for prime time
-//		require_once('include/profile_update.php');
-//		profile_change();
+
+	require_once('include/profile_update.php');
+	profile_change();
 
 	$_SESSION['theme'] = $theme;
 	if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
-- 
2.39.5