This commit is contained in:
Mike Macgirvin 2010-09-09 16:48:33 -07:00
parent e8c39ff49f
commit 62fdf346ff
5 changed files with 100 additions and 97 deletions

View File

@ -5,6 +5,7 @@ set_time_limit(0);
define ( 'BUILD_ID' , 1001 ); define ( 'BUILD_ID' , 1001 );
define ( 'EOL', "<br />\r\n"); define ( 'EOL', "<br />\r\n");
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'REGISTER_CLOSED', 0); define ( 'REGISTER_CLOSED', 0);
define ( 'REGISTER_APPROVE', 1); define ( 'REGISTER_APPROVE', 1);
@ -15,6 +16,10 @@ define ( 'DIRECTION_IN', 1); // VIP e.g. has FAN
define ( 'DIRECTION_OUT', 2); // FAN to a VIP define ( 'DIRECTION_OUT', 2); // FAN to a VIP
define ( 'DIRECTION_BOTH', 3); // Mutual Friends define ( 'DIRECTION_BOTH', 3); // Mutual Friends
define ( 'REL_VIP', 1);
define ( 'REL_FAN', 2);
define ( 'REL_BUD', 3);
define ( 'NOTIFY_INTRO', 0x0001 ); define ( 'NOTIFY_INTRO', 0x0001 );
define ( 'NOTIFY_CONFIRM', 0x0002 ); define ( 'NOTIFY_CONFIRM', 0x0002 );
define ( 'NOTIFY_WALL', 0x0004 ); define ( 'NOTIFY_WALL', 0x0004 );
@ -22,6 +27,8 @@ define ( 'NOTIFY_COMMENT', 0x0008 );
define ( 'NOTIFY_MAIL', 0x0010 ); define ( 'NOTIFY_MAIL', 0x0010 );
define ( 'NAMESPACE_DFRN' , 'http://purl.org/macgirvin/dfrn/1.0' ); define ( 'NAMESPACE_DFRN' , 'http://purl.org/macgirvin/dfrn/1.0' );
define ( 'NAMESPACE_THREAD' , 'http://purl.org/syndication/thread/1.0' );
define ( 'NAMESPACE_TOMB' , 'http://purl.org/atompub/tombstones/1.0' );
define ( 'NAMESPACE_ACTIVITY', 'http://activitystrea.ms/spec/1.0/' ); define ( 'NAMESPACE_ACTIVITY', 'http://activitystrea.ms/spec/1.0/' );
define ( 'NAMESPACE_ACTIVITY_SCHEMA', 'http://activitystrea.ms/schema/1.0/'); define ( 'NAMESPACE_ACTIVITY_SCHEMA', 'http://activitystrea.ms/schema/1.0/');
define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' ); define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' );
@ -37,8 +44,7 @@ define ( 'ACTIVITY_OBJ_P_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'profile-photo' );
define ( 'ACTIVITY_OBJ_ALBUM', NAMESPACE_ACTIVITY_SCHEMA . 'photo-album' ); define ( 'ACTIVITY_OBJ_ALBUM', NAMESPACE_ACTIVITY_SCHEMA . 'photo-album' );
define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_DFRN . '/heart' ); define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_DFRN . '/heart' );
if(! class_exists('App')) { if(! class_exists('App')) {

View File

@ -97,17 +97,16 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update) {
$atom .= replace_macros($feed_template, array( $atom .= replace_macros($feed_template, array(
'$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner_nick), '$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner_nick),
'$feed_title' => xmlify($owner['name']), '$feed_title' => xmlify($owner['name']),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , ATOM_TIME)) ,
'$name' => xmlify($owner['name']), '$name' => xmlify($owner['name']),
'$profile_page' => xmlify($owner['url']), '$profile_page' => xmlify($owner['url']),
'$photo' => xmlify($owner['photo']), '$photo' => xmlify($owner['photo']),
'$thumb' => xmlify($owner['thumb']), '$thumb' => xmlify($owner['thumb']),
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
'$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) ,
'$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME))
)); ));
@ -126,7 +125,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update) {
if($item['deleted']) { if($item['deleted']) {
$atom .= replace_macros($tomb_template, array( $atom .= replace_macros($tomb_template, array(
'$id' => xmlify($item['uri']), '$id' => xmlify($item['uri']),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME))
)); ));
} }
else { else {
@ -143,14 +142,14 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update) {
'$owner_thumb' => xmlify($item['owner-avatar']), '$owner_thumb' => xmlify($item['owner-avatar']),
'$item_id' => xmlify($item['uri']), '$item_id' => xmlify($item['uri']),
'$title' => xmlify($item['title']), '$title' => xmlify($item['title']),
'$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME)),
'$location' => xmlify($item['location']), '$location' => xmlify($item['location']),
'$type' => $type, '$type' => $type,
'$content' => xmlify($item['body']), '$content' => xmlify($item['body']),
'$verb' => xmlify($verb), '$verb' => xmlify($verb),
'$actobj' => $actobj, // do not xmlify '$actobj' => $actobj, // do not xmlify
'$comment_allow' => (($item['last-child'] && strlen($contact['dfrn-id'])) ? 1 : 0) '$comment_allow' => ((($item['last-child']) && ($contact['rel']) && ($contact['rel'] != REL_FAN)) ? 1 : 0)
)); ));
} }
else { else {
@ -160,8 +159,8 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update) {
'$thumb' => xmlify($item['thumb']), '$thumb' => xmlify($item['thumb']),
'$item_id' => xmlify($item['uri']), '$item_id' => xmlify($item['uri']),
'$title' => xmlify($item['title']), '$title' => xmlify($item['title']),
'$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME)),
'$type' => $type, '$type' => $type,
'$content' =>xmlify($item['body']), '$content' =>xmlify($item['body']),
'$verb' => xmlify($verb), '$verb' => xmlify($verb),

View File

@ -69,7 +69,9 @@
killme(); killme();
} }
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", $r = q("SELECT `contact`.*, `user`.`nickname`
FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($uid) intval($uid)
); );
@ -133,31 +135,28 @@
$atom .= replace_macros($feed_template, array( $atom .= replace_macros($feed_template, array(
'$feed_id' => xmlify($a->get_baseurl()), '$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ),
'$feed_title' => xmlify($owner['name']), '$feed_title' => xmlify($owner['name']),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , ATOM_TIME)) ,
$updated . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$name' => xmlify($owner['name']),
'$name' => xmlify($owner['name']),
'$profile_page' => xmlify($owner['url']), '$profile_page' => xmlify($owner['url']),
'$photo' => xmlify($owner['photo']), '$photo' => xmlify($owner['photo']),
'$thumb' => xmlify($owner['thumb']), '$thumb' => xmlify($owner['thumb']),
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
'$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) ,
'$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , 'Y-m-d\TH:i:s\Z')) '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME))
)); ));
if($cmd == 'mail') { if($cmd == 'mail') {
$atom .= replace_macros($mail_template, array( $atom .= replace_macros($mail_template, array(
'$name' => xmlify($owner['name']), '$name' => xmlify($owner['name']),
'$profile_page' => xmlify($owner['url']), '$profile_page' => xmlify($owner['url']),
'$thumb' => xmlify($owner['thumb']), '$thumb' => xmlify($owner['thumb']),
'$item_id' => xmlify($item['uri']), '$item_id' => xmlify($item['uri']),
'$subject' => xmlify($item['title']), '$subject' => xmlify($item['title']),
'$created' => xmlify(datetime_convert('UTC', 'UTC', '$created' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
$item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$content' => xmlify($item['body']),
'$content' =>xmlify($item['body']), '$parent_id' => xmlify($item['parent-uri'])
'$parent_id' => xmlify($item['parent-uri'])
)); ));
} }
else { else {
@ -172,22 +171,23 @@
foreach($items as $item) { foreach($items as $item) {
if($item['id'] == $item_id) { if($item['id'] == $item_id) {
$atom .= replace_macros($cmnt_template, array( $atom .= replace_macros($cmnt_template, array(
'$name' => xmlify($owner['name']), '$name' => xmlify($owner['name']),
'$profile_page' => xmlify($owner['url']), '$profile_page' => xmlify($owner['url']),
'$thumb' => xmlify($owner['thumb']), '$thumb' => xmlify($owner['thumb']),
'$item_id' => xmlify($item['uri']), '$owner_name' => xmlify($item['owner-name']),
'$title' => xmlify($item['title']), '$owner_profile_page' => xmlify($item['owner-link']),
'$published' => xmlify(datetime_convert('UTC', 'UTC', '$owner_thumb' => xmlify($item['owner-avatar']),
$item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$item_id' => xmlify($item['uri']),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', '$title' => xmlify($item['title']),
$item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
'$location' => xmlify($item['location']), '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME)),
'$type' => 'text', '$location' => xmlify($item['location']),
'$verb' => xmlify($verb), '$type' => 'text',
'$actobj' => $actobj, '$verb' => xmlify($verb),
'$content' => xmlify($item['body']), '$actobj' => $actobj,
'$parent_id' => xmlify($item['parent-uri']), '$content' => xmlify($item['body']),
'$comment_allow' => 0 '$parent_id' => xmlify($item['parent-uri']),
'$comment_allow' => 0
)); ));
} }
} }
@ -197,8 +197,7 @@
if($item['deleted']) { if($item['deleted']) {
$atom .= replace_macros($tomb_template, array( $atom .= replace_macros($tomb_template, array(
'$id' => xmlify($item['uri']), '$id' => xmlify($item['uri']),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME))
$item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z'))
)); ));
} }
else { else {
@ -206,43 +205,39 @@
if($item['contact-id'] == $contact['id']) { if($item['contact-id'] == $contact['id']) {
if($item['parent'] == $item['id']) { if($item['parent'] == $item['id']) {
$atom .= replace_macros($item_template, array( $atom .= replace_macros($item_template, array(
'$name' => xmlify($contact['name']), '$name' => xmlify($contact['name']),
'$profile_page' => xmlify($contact['url']), '$profile_page' => xmlify($contact['url']),
'$thumb' => xmlify($contact['thumb']), '$thumb' => xmlify($contact['thumb']),
'$owner_name' => xmlify($item['owner-name']), '$owner_name' => xmlify($item['owner-name']),
'$owner_profile_page' => xmlify($item['owner-link']), '$owner_profile_page' => xmlify($item['owner-link']),
'$owner_thumb' => xmlify($item['owner-avatar']), '$owner_thumb' => xmlify($item['owner-avatar']),
'$item_id' => xmlify($item['uri']), '$item_id' => xmlify($item['uri']),
'$title' => xmlify($item['title']), '$title' => xmlify($item['title']),
'$published' => xmlify(datetime_convert('UTC', 'UTC', '$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
$item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME)),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', '$location' => xmlify($item['location']),
$item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$type' => 'text',
'$location' => xmlify($item['location']), '$verb' => xmlify($verb),
'$type' => 'text', '$actobj' => $actobj,
'$verb' => xmlify($verb), '$content' => xmlify($item['body']),
'$actobj' => $actobj, '$comment_allow' => (($item['last-child'] && ($contact['rel']) && ($contact['rel'] != REL_FAN)) ? 1 : 0)
'$content' =>xmlify($item['body']),
'$comment_allow' => (($item['last-child'] && strlen($contact['dfrn-id'])) ? 1 : 0)
)); ));
} }
else { else {
$atom .= replace_macros($cmnt_template, array( $atom .= replace_macros($cmnt_template, array(
'$name' => xmlify($contact['name']), '$name' => xmlify($contact['name']),
'$profile_page' => xmlify($contact['url']), '$profile_page' => xmlify($contact['url']),
'$thumb' => xmlify($contact['thumb']), '$thumb' => xmlify($contact['thumb']),
'$item_id' => xmlify($item['uri']), '$item_id' => xmlify($item['uri']),
'$title' => xmlify($item['title']), '$title' => xmlify($item['title']),
'$published' => xmlify(datetime_convert('UTC', 'UTC', '$published' => xmlify(datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME)),
$item['created'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$updated' => xmlify(datetime_convert('UTC', 'UTC', $item['edited'] . '+00:00' , ATOM_TIME)),
'$updated' => xmlify(datetime_convert('UTC', 'UTC', '$content' => xmlify($item['body']),
$item['edited'] . '+00:00' , 'Y-m-d\TH:i:s\Z')), '$location' => xmlify($item['location']),
'$content' =>xmlify($item['body']), '$type' => 'text',
'$location' =>xmlify($item['location']), '$verb' => xmlify($verb),
'$type' => 'text', '$actobj' => $actobj,
'$verb' => xmlify($verb), '$parent_id' => xmlify($item['parent-uri']),
'$actobj' => $actobj,
'$parent_id' => xmlify($item['parent-uri']),
'$comment_allow' => (($item['last-child']) ? 1 : 0) '$comment_allow' => (($item['last-child']) ? 1 : 0)
)); ));
} }
@ -300,9 +295,11 @@
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id))) if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
continue; continue;
$postvars = array(); $postvars = array();
$sent_dfrn_id = hex2bin($res->dfrn_id); $sent_dfrn_id = hex2bin($res->dfrn_id);
$challenge = hex2bin($res->challenge); $challenge = hex2bin($res->challenge);
$final_dfrn_id = ''; $final_dfrn_id = '';
if($rr['duplex'] && strlen($rr['prvkey'])) { if($rr['duplex'] && strlen($rr['prvkey'])) {
@ -322,7 +319,7 @@
$postvars['dfrn_id'] = $idtosend; $postvars['dfrn_id'] = $idtosend;
if((($rr['rel'] == DIRECTION_OUT) || ($rr['rel'] == DIRECTION_BOTH)) && (! $rr['blocked']) && (! $rr['readonly'])) { if(($rr['rel']) && ($rr['rel'] != REL_FAN) && (! $rr['blocked']) && (! $rr['readonly'])) {
$postvars['data'] = $atom; $postvars['data'] = $atom;
} }
else { else {

View File

@ -92,8 +92,8 @@ function dfrn_notify_post(&$a) {
'$body' => strip_tags(bbcode($msg['body'])) '$body' => strip_tags(bbcode($msg['body']))
)); ));
$res = mail($importer['email'], t("New mail received at ") . $a->config['sitename'], $res = mail($importer['email'], t('New mail received at ') . $a->config['sitename'],
$email_tpl,t("From: Administrator@") . $a->get_hostname() ); $email_tpl, 'From: ' . t('Administrator') . '@' . $a->get_hostname() );
} }
xml_status(0); xml_status(0);
return; // NOTREACHED return; // NOTREACHED
@ -109,7 +109,7 @@ function dfrn_notify_post(&$a) {
$deleted = false; $deleted = false;
$rawdelete = $item->get_item_tags("http://purl.org/atompub/tombstones/1.0", 'deleted-entry'); $rawdelete = $item->get_item_tags( NAMESPACE_TOMB , 'deleted-entry');
if(isset($rawdelete[0]['attribs']['']['ref'])) { if(isset($rawdelete[0]['attribs']['']['ref'])) {
$uri = $rawthread[0]['attribs']['']['ref']; $uri = $rawthread[0]['attribs']['']['ref'];
$deleted = true; $deleted = true;
@ -170,7 +170,7 @@ function dfrn_notify_post(&$a) {
$is_reply = false; $is_reply = false;
$item_id = $item->get_id(); $item_id = $item->get_id();
$rawthread = $item->get_item_tags("http://purl.org/syndication/thread/1.0",'in-reply-to'); $rawthread = $item->get_item_tags( NAMESPACE_THREAD, 'in-reply-to');
if(isset($rawthread[0]['attribs']['']['ref'])) { if(isset($rawthread[0]['attribs']['']['ref'])) {
$is_reply = true; $is_reply = true;
$parent_uri = $rawthread[0]['attribs']['']['ref']; $parent_uri = $rawthread[0]['attribs']['']['ref'];

View File

@ -10,7 +10,9 @@ function redir_init(&$a) {
if(! count($r)) if(! count($r))
goaway($a->get_baseurl()); goaway($a->get_baseurl());
$dfrn_id = (($r[0]['duplex']) ? $r[0]['dfrn-id'] : $r[0]['issued-id']); $dfrn_id = $r[0]['issued-id'];
if((! $dfrn_id) && ($r[0]['duplex']))
$dfrn_id = $r[0]['dfrn-id'];
q("INSERT INTO `profile_check` ( `uid`, `dfrn_id`, `expire`) q("INSERT INTO `profile_check` ( `uid`, `dfrn_id`, `expire`)
VALUES( %d, '%s', %d )", VALUES( %d, '%s', %d )",
@ -20,5 +22,4 @@ function redir_init(&$a) {
goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id . '&type=profile'); goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id . '&type=profile');
} }