X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fdfrn_notify.php;h=ecab9ea72a9515a46863feb21f9e0f2869982e7b;hb=557ebe4700c477aeba043594f7b929b1129be191;hp=0f5f5eb6c3400a5e679322396b6cdb73313d7365;hpb=2a17c20fb8e910aeb814ab999cf9131478dd2b03;p=friendica.git diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 0f5f5eb6c3..ecab9ea72a 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -1,125 +1,9 @@ get_author(); - $res['remote-name'] = $author->get_name(); - $res['remote-link'] = $author->get_link(); - $res['remote-avatar'] = $author->get_avatar(); - $res['remote-id'] = $item->get_id(); - $res['title'] = $item->get_title(); - $res['body'] = $item->get_content(); - - if(strlen($res['body']) > 100000) - $res['body'] = substr($res['body'],0,10000) . "\r\n[Extremely large post truncated.]\r\n" ; - - $allow = $item->get_item_tags('http://purl.org/macgirvin/dfrn/1.0','comment-allow'); - if($allow && $allow[0]['data'] == 1) - $res['last-child'] = 1; - else - $res['last-child'] = 0; - - $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published'); - if($rawcreated) - $res['created'] = $rawcreated[0]['data']; - - $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated'); - if($rawedited) - $res['edited'] = $rawcreated[0]['data']; - - $rawowner = $item->get_item_tags('http://purl.org/macgirvin/dfrn/1.0', 'owner'); - if($rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['name'][0]['data']) - $res['owner-name'] = $rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['name'][0]['data']; - if($rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['uri'][0]['data']) - $res['owner-link'] = $rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['uri'][0]['data']; - if($rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data']) - $res['owner-avatar'] = $rawowner[0]['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data']; - - - return $res; - -} - -function post_remote($a,$arr) { - - $arr['hash'] = random_string(); - $arr['type'] = 'remote'; - $arr['remote-name'] = notags(trim($arr['remote-name'])); - $arr['remote-link'] = notags(trim($arr['remote-link'])); - $arr['remote-avatar'] = notags(trim($arr['remote-avatar'])); - $arr['owner-name'] = notags(trim($arr['owner-name'])); - $arr['owner-link'] = notags(trim($arr['owner-link'])); - $arr['owner-avatar'] = notags(trim($arr['owner-avatar'])); - if(! strlen($arr['remote-avatar'])) - $arr['remote-avatar'] = $a->get_baseurl() . '/images/default-profile-sm.jpg'; - if(! strlen($arr['owner-avatar'])) - $arr['owner-avatar'] = $a->get_baseurl() . '/images/default-profile-sm.jpg'; - $arr['created'] = datetime_convert('UTC','UTC',$arr['created'],'Y-m-d H:i:s'); - $arr['edited'] = datetime_convert('UTC','UTC',$arr['edited'],'Y-m-d H:i:s'); - $arr['title'] = notags(trim($arr['title'])); - $arr['body'] = escape_tags(trim($arr['body'])); - $arr['last-child'] = intval($arr['last-child']); - $arr['visible'] = 1; - $arr['deleted'] = 0; - - $local_parent = false; - - if(isset($arr['parent_hash'])) { - $local_parent = true; - $parent = $arr['parent_hash']; - unset($arr['parent_hash']); - } - else { - $parent = $arr['parent_urn']; - unset($arr['parent_urn']); - } - - $parent_id = 0; - - dbesc_array($arr); - - $r = q("INSERT INTO `item` (`" - . implode("`, `", array_keys($arr)) - . "`) VALUES ('" - . implode("', '", array_values($arr)) - . "')" ); - - if($local_parent) { - $r = q("SELECT `id` FROM `item` WHERE `hash` = '%s' AND `uid` = %d LIMIT 1", - dbesc($parent), - intval($arr['uid']) - ); - } - else { - $r = q("SELECT `id` FROM `item` WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", - dbesc($parent), - intval($arr['uid']) - ); - } - if(count($r)) - $parent_id = $r[0]['id']; - - - $r = q("SELECT `id` FROM `item` WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", - $arr['remote-id'], - intval($arr['uid']) - ); - if(count($r)) - $current_post = $r[0]['id']; - - $r = q("UPDATE `item` SET `parent` = %d WHERE `id` = %d LIMIT 1", - intval($parent_id), - intval($current_post) - ); - - return $current_post; -} - function dfrn_notify_post(&$a) { $dfrn_id = notags(trim($_POST['dfrn_id'])); @@ -155,13 +39,41 @@ function dfrn_notify_post(&$a) { foreach($feed->get_items() as $item) { + $deleted = false; + $rawdelete = $item->get_item_tags("http://purl.org/atompub/tombstones/1.0", 'deleted-entry'); - print_r($rawdelete); + if(isset($rawdelete[0]['attribs']['']['ref'])) { + $uri = $rawthread[0]['attribs']['']['ref']; + $deleted = true; + if(isset($rawdelete[0]['attribs']['']['when'])) { + $when = $rawthread[0]['attribs']['']['when']; + $when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s'); + } + else + $when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s'); + } if($deleted) { - // pick out ref and when from attribs - // check hasn't happened already, verify ownership and then process it - - + $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + dbesc($uri), + intval($importer['uid']) + ); + if(count($r)) { + if($r[0]['uri'] == $r[0]['parent-uri']) { + $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s' + WHERE `parent-uri` = '%s'" + dbesc($when), + dbesc($r[0]['uri']) + ); + } + else { + $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s' + WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + dbesc($when), + dbesc($uri), + intval($importer['uid']) + ); + } + } continue; } @@ -170,7 +82,7 @@ function dfrn_notify_post(&$a) { $rawthread = $item->get_item_tags("http://purl.org/syndication/thread/1.0",'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { $is_reply = true; - $parent_urn = $rawthread[0]['attribs']['']['ref']; + $parent_uri = $rawthread[0]['attribs']['']['ref']; } @@ -179,15 +91,32 @@ function dfrn_notify_post(&$a) { // remote reply to our post. Import and then notify everybody else. $datarray = get_atom_elements($item); $urn = explode(':',$parent_urn); - $datarray['parent_hash'] = $urn[4]; + $datarray['type'] = 'remote-comment'; + $datarray['parent-uri'] = $parent_uri; $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $importer['id']; - $r = post_remote($a,$datarray); + $posted_id = post_remote($a,$datarray); - $url = bin2hex($a->get_baseurl()); + $r = q("SELECT `parent` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($posted_id), + intval($importer['uid']) + ); + if(count($r)) { + $r1 = q("UPDATE `item` SET `last-child` = 0 WHERE `uid` = %d AND `parent` = %d", + intval($importer['uid']), + intval($r[0]['parent']) + ); + } + $r2 = q("UPDATE `item` SET `last-child` = 1 WHERE `uid` = %d AND `id` = %d LIMIT 1", + intval($importer['uid']), + intval($posted_id) + ); - proc_close(proc_open("php include/notifier.php $url $notify_type $r > notify.log &", array(),$foo)); + $url = $a->get_baseurl(); + proc_close(proc_open("php include/notifier.php $url comment-import $posted_id > remote-notify.log &", array(),$foo)); + + xml_status(0); return; } @@ -196,22 +125,24 @@ function dfrn_notify_post(&$a) { $item_id = $item->get_id(); - $r = q("SELECT `uid`, `last-child` FROM `item` WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", + $r = q("SELECT `uid`, `last-child`, `edited` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($item_id), intval($importer['uid']) ); + // FIXME update content if 'updated' changes if(count($r)) { $allow = $item->get_item_tags('http://purl.org/macgirvin/dfrn/1.0','comment-allow'); if($allow && $allow[0]['data'] != $r[0]['last-child']) { - $r = q("UPDATE `item` SET `last-child` = %d WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `last-child` = %d WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", intval($allow[0]['data']), - dbesc($item_id) + dbesc($item_id), + intval($importer['uid']) ); } continue; } $datarray = get_atom_elements($item); - $datarray['parent_urn'] = $parent_urn; + $datarray['parent-uri'] = $parent_uri; $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $importer['id']; $r = post_remote($a,$datarray); @@ -222,16 +153,17 @@ function dfrn_notify_post(&$a) { // Head post of a conversation. Have we seen it? If not, import it. $item_id = $item->get_id(); - $r = q("SELECT `uid` FROM `item` WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", + $r = q("SELECT `uid`, `last-child`, `edited` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($item_id), intval($importer['uid']) ); if(count($r)) { $allow = $item->get_item_tags('http://purl.org/macgirvin/dfrn/1.0','comment-allow'); if($allow && $allow[0]['data'] != $r[0]['last-child']) { - $r = q("UPDATE `item` SET `last-child` = %d WHERE `remote-id` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `last-child` = %d WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", intval($allow[0]['data']), - dbesc($item_id) + dbesc($item_id), + intval($importer['uid']) ); } continue; @@ -239,7 +171,7 @@ function dfrn_notify_post(&$a) { $datarray = get_atom_elements($item); - $datarray['parent_urn'] = $item_id; + $datarray['parent-uri'] = $item_id; $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $importer['id']; $r = post_remote($a,$datarray); @@ -249,20 +181,12 @@ function dfrn_notify_post(&$a) { } - + xml_status(0); killme(); } - - - - - - - - function dfrn_notify_content(&$a) { if(x($_GET,'dfrn_id')) { @@ -280,7 +204,7 @@ function dfrn_notify_content(&$a) { intval(time() + 60 ) ); - $r = q("SELECT * FROM `contact` WHERE `issued-id` = '%s' AND `blocked` = 0 LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `issued-id` = '%s' AND `blocked` = 0 AND `pending` = 0 LIMIT 1", dbesc($_GET['dfrn_id'])); if((! count($r)) || (! strlen($r[0]['prvkey']))) $status = 1;