}
- private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "") {
+ private function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false) {
$data = array("XML" => array("post" => array($type => $message)));
$slap = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch);
- $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid);
+ if ($spool) {
+ add_to_queue($contact['id'], NETWORK_DIASPORA, $slap, $public_batch);
+ return true;
+ } else
+ $return_code = self::transmit($owner, $contact, $slap, $public_batch, false, $guid);
logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG);
return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]);
}
+
+ public static function send_profile($uid) {
+
+ if (!$uid)
+ return;
+
+ $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
+ AND `uid` = %d AND `rel` != %d",
+ dbesc(NETWORK_DIASPORA),
+ intval($uid),
+ intval(CONTACT_IS_SHARING)
+ );
+ if (!$recips)
+ return;
+
+ $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.*, `user`.`prvkey` AS `uprvkey`, `contact`.`addr`
+ FROM `profile`
+ INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
+ INNER JOIN `contact` ON `profile`.`uid` = `contact`.`uid`
+ WHERE `user`.`uid` = %d AND `profile`.`is-default` AND `contact`.`self` LIMIT 1",
+ intval($uid)
+ );
+
+ if (!$r)
+ return;
+
+ $profile = $r[0];
+
+ $handle = $profile["addr"];
+ $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 = App::get_baseurl().'/photo/custom/300/'.$profile['uid'].'.jpg';
+ $medium = App::get_baseurl().'/photo/custom/100/'.$profile['uid'].'.jpg';
+ $small = App::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');
+
+ $about = $profile['about'];
+ $about = strip_tags(bbcode($about));
+
+ $location = formatted_location($profile);
+ $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);
+ }
+
+ $message = array("diaspora_handle" => $handle,
+ "first_name" => $first,
+ "last_name" => $last,
+ "image_url" => $large,
+ "image_url_medium" => $medium,
+ "image_url_small" => $small,
+ "birthday" => $dob,
+ "gender" => $profile['gender'],
+ "bio" => $about,
+ "location" => $location,
+ "searchable" => $searchable,
+ "tag_string" => $tags);
+
+ foreach($recips as $recip)
+ self::build_and_transmit($profile, $recip, "profile", $message, false, "", true);
+ }
}
?>
<?php
-
-require_once('include/datetime.php');
require_once('include/diaspora.php');
-require_once('include/queue_fn.php');
-require_once('include/Contact.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')))
-// proc_run('php',"include/directory.php","$url");
-
- $recips = q("SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
- AND `uid` = %d AND `rel` != %d ",
- 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`
- INNER 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 = xmlify($a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3));
- $first = xmlify(((strpos($profile['name'],' '))
- ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']));
- $last = xmlify((($first === $profile['name']) ? '' : trim(substr($profile['name'],strlen($first)))));
- $large = xmlify($a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg');
- $medium = xmlify($a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg');
- $small = xmlify($a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg');
- $searchable = xmlify((($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ));
-// $searchable = 'true';
-
- 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 = xmlify($profile['gender']);
- $about = xmlify($profile['about']);
- require_once('include/bbcode.php');
- $about = xmlify(strip_tags(bbcode($about)));
- $location = formatted_location($profile);
- $location = xmlify($location);
- $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 = xmlify(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);
-
- foreach($recips as $recip) {
- $msgtosend = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$a->user,$recip,$a->user['prvkey'],$recip['pubkey'],false)));
- add_to_queue($recip['id'],NETWORK_DIASPORA,$msgtosend,false);
- }
+ diaspora::send_profile(local_user());
}