From f29f228463d35f574d6d285be0cf337b7d39c541 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 19:22:27 -0700 Subject: bring Diaspora message signing back to the source author - whether they like it or not. --- mod/item.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index ef0b232d5..dd42014eb 100644 --- a/mod/item.php +++ b/mod/item.php @@ -15,6 +15,8 @@ * */ +require_once('include/crypto.php'); + function item_post(&$a) { if((! local_user()) && (! remote_user())) @@ -674,6 +676,27 @@ function item_post(&$a) { pop_lang(); } + + // We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key + + if($self) { + require_once('include/bb2diaspora.php'); + $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); + $myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); + if($datarray['verb'] === ACTIVITY_LIKE) + $signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr; + else + $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr; + + $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha')); + + q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($post_id), + dbesc($signed_text), + dbesc(base64_encode($authorsig)), + dbesc($myaddr) + ); + } } else { $parent = $post_id; @@ -799,6 +822,12 @@ function item_post(&$a) { } } + + + + + + logger('post_complete'); // figure out how to return, depending on from whence we came -- cgit v1.2.3 From f0c3a75ff38dcd208710fa24596c34290faf110e Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 23:09:39 -0700 Subject: youtube redirect fixes --- mod/item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index dd42014eb..b6ea8ff08 100644 --- a/mod/item.php +++ b/mod/item.php @@ -353,7 +353,7 @@ function item_post(&$a) { * and we are replying, and there isn't one already */ - if(($parent_contact) && ($parent_contact['network'] === 'stat') + if(($parent_contact) && ($parent_contact['network'] === NETWORK_OSTATUS) && ($parent_contact['nick']) && (! in_array('@' . $parent_contact['nick'],$tags))) { $body = '@' . $parent_contact['nick'] . ' ' . $body; $tags[] = '@' . $parent_contact['nick']; -- cgit v1.2.3 From a33edb00424882258a90b138c634a466c92faf61 Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 1 Sep 2011 18:02:08 -0700 Subject: infrastructure for personalised @ tags (no UI/settings form yet), allow own comments through statusnet connector --- mod/item.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index b6ea8ff08..6ecca8f4a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -404,7 +404,8 @@ function item_post(&$a) { ); } else { - $r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", + dbesc($name), dbesc($name), intval($profile_uid) ); -- cgit v1.2.3 From 82f7f33cf58774ac6b07acd64fe0b49cd5b0aa30 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 19:58:03 -0700 Subject: bookmarks + bug #140 --- mod/item.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index 6ecca8f4a..b4ec7666f 100644 --- a/mod/item.php +++ b/mod/item.php @@ -332,6 +332,15 @@ function item_post(&$a) { } } + // embedded bookmark in post? convert to regular url and set bookmark flag + + $bookmark = 0; + if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",$body,$match)) { + $bookmark = 1; + $body = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",'[url=$1]$2[/url]',$body); + } + + /** * Fold multi-line [code] sequences */ @@ -509,6 +518,7 @@ function item_post(&$a) { $datarray['private'] = $private; $datarray['pubmail'] = $pubmail_enable; $datarray['attach'] = $attachments; + $datarray['bookmark'] = intval($bookmark); $datarray['thr-parent'] = $thr_parent; /** @@ -551,8 +561,8 @@ function item_post(&$a) { $r = q("INSERT INTO `item` (`guid`, `uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`, `author-name`, `author-link`, `author-avatar`, `created`, `edited`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, - `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach` ) - VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s' )", + `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark` ) + VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d )", dbesc($datarray['guid']), intval($datarray['uid']), dbesc($datarray['type']), @@ -585,7 +595,8 @@ function item_post(&$a) { dbesc($datarray['deny_gid']), intval($datarray['private']), intval($datarray['pubmail']), - dbesc($datarray['attach']) + dbesc($datarray['attach']), + intval($datarray['bookmark']) ); $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1", -- cgit v1.2.3 From 17b081f9f79c30fb792912a884fd65984eb7c391 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 11 Sep 2011 21:52:50 -0700 Subject: allow html post to api --- mod/item.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index b4ec7666f..e6ce1ea6f 100644 --- a/mod/item.php +++ b/mod/item.php @@ -38,6 +38,7 @@ function item_post(&$a) { call_hooks('post_local_start', $_POST); $api_source = ((x($_POST,'api_source') && $_POST['api_source']) ? true : false); + $return_path = ((x($_POST,'return')) ? $_POST['return'] : ''); /** * Is this a reply to something? @@ -834,12 +835,6 @@ function item_post(&$a) { } } - - - - - - logger('post_complete'); // figure out how to return, depending on from whence we came @@ -847,10 +842,10 @@ function item_post(&$a) { if($api_source) return; - if((x($_POST,'return')) && strlen($_POST['return'])) { - logger('return: ' . $_POST['return']); - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + if($return_path) { + goaway($a->get_baseurl() . "/" . $return_path); } + $json = array('success' => 1); if(x($_POST,'jsreload') && strlen($_POST['jsreload'])) $json['reload'] = $a->get_baseurl() . '/' . $_POST['jsreload']; -- cgit v1.2.3 From 4f24494b0baca1d991cbc74bf3929631c657b676 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 12 Sep 2011 19:42:10 -0700 Subject: Dreamhost's unreliable process model is really getting irritating --- mod/item.php | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index e6ce1ea6f..025a12a32 100644 --- a/mod/item.php +++ b/mod/item.php @@ -83,7 +83,7 @@ function item_post(&$a) { if(($r === false) || (! count($r))) { notice( t('Unable to locate original post.') . EOL); if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } $parent_item = $r[0]; @@ -112,7 +112,7 @@ function item_post(&$a) { if(! can_write_wall($a,$profile_uid)) { notice( t('Permission denied.') . EOL) ; if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } @@ -198,7 +198,7 @@ function item_post(&$a) { if(! strlen($body)) { info( t('Empty post discarded.') . EOL ); if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } } @@ -550,9 +550,9 @@ function item_post(&$a) { ); proc_run('php', "include/notifier.php", 'edit_post', "$post_id"); - if((x($_POST,'return')) && strlen($_POST['return'])) { - logger('return: ' . $_POST['return']); - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + if((x($_POST,'return')) && strlen($return_path)) { + logger('return: ' . $return_path); + goaway($a->get_baseurl() . "/" . $return_path ); } killme(); } @@ -799,11 +799,10 @@ function item_post(&$a) { else { logger('mod_item: unable to retrieve post that was just stored.'); notify( t('System error. Post not saved.')); - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); // NOTREACHED } - proc_run('php', "include/notifier.php", $notify_type, "$post_id"); $datarray['id'] = $post_id; $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id; @@ -835,6 +834,17 @@ function item_post(&$a) { } } + // This is a real juggling act on shared hosting services which kill your processes + // e.g. dreamhost. We used to start delivery to our native delivery agents in the background + // and then run our plugin delivery from the foreground. We're now doing plugin delivery first, + // because as soon as you start loading up a bunch of remote delivey processes, *this* page is + // likely to get killed off. If you end up looking at an /item URL and a blank page, + // it's very likely the delivery got killed before all your friends could be notified. + // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting, + // or cut back on plugins which do remote deliveries. + + proc_run('php', "include/notifier.php", $notify_type, "$post_id"); + logger('post_complete'); // figure out how to return, depending on from whence we came -- cgit v1.2.3 From 9c3503a706d445bcbf7a14c2adcd8d344df3e46b Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 16 Sep 2011 06:49:24 -0700 Subject: update timestamp on activity change (comment/like) --- mod/item.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index 025a12a32..38f4c2040 100644 --- a/mod/item.php +++ b/mod/item.php @@ -803,6 +803,12 @@ function item_post(&$a) { // NOTREACHED } + // update the timestamp on the parent + + q("UPDATE `item` set `changed` = '%s' WHERE `id` = %d LIMIT 1", + dbesc(datetime_convert()), + intval($parent) + ); $datarray['id'] = $post_id; $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id; -- cgit v1.2.3 From 8bf6a29d4e05af5d461da3f01999785dc12ee7da Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 18 Sep 2011 19:04:11 -0700 Subject: optimise the commented date view --- mod/item.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index 38f4c2040..cad72122b 100644 --- a/mod/item.php +++ b/mod/item.php @@ -501,6 +501,7 @@ function item_post(&$a) { $datarray['author-avatar'] = $author['thumb']; $datarray['created'] = datetime_convert(); $datarray['edited'] = datetime_convert(); + $datarray['commented'] = datetime_convert(); $datarray['received'] = datetime_convert(); $datarray['changed'] = datetime_convert(); $datarray['uri'] = $uri; @@ -561,9 +562,9 @@ function item_post(&$a) { $r = q("INSERT INTO `item` (`guid`, `uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`, - `author-name`, `author-link`, `author-avatar`, `created`, `edited`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, + `author-name`, `author-link`, `author-avatar`, `created`, `edited`, `commented`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark` ) - VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d )", + VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d )", dbesc($datarray['guid']), intval($datarray['uid']), dbesc($datarray['type']), @@ -578,6 +579,7 @@ function item_post(&$a) { dbesc($datarray['author-avatar']), dbesc($datarray['created']), dbesc($datarray['edited']), + dbesc($datarray['commented']), dbesc($datarray['received']), dbesc($datarray['changed']), dbesc($datarray['uri']), @@ -803,9 +805,10 @@ function item_post(&$a) { // NOTREACHED } - // update the timestamp on the parent + // update the commented timestamp on the parent - q("UPDATE `item` set `changed` = '%s' WHERE `id` = %d LIMIT 1", + q("UPDATE `item` set `commented` = '%s', `changed` = '%s' WHERE `id` = %d LIMIT 1", + dbesc(datetime_convert()), dbesc(datetime_convert()), intval($parent) ); -- cgit v1.2.3 From 119cd9c0cee5e416199da900016609259598cb0b Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 20 Sep 2011 04:07:24 -0700 Subject: more multiline regex fixes --- mod/item.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index cad72122b..e5d4eea82 100644 --- a/mod/item.php +++ b/mod/item.php @@ -336,9 +336,9 @@ function item_post(&$a) { // embedded bookmark in post? convert to regular url and set bookmark flag $bookmark = 0; - if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",$body,$match)) { + if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$body,$match)) { $bookmark = 1; - $body = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",'[url=$1]$2[/url]',$body); + $body = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'[url=$1]$2[/url]',$body); } @@ -346,7 +346,7 @@ function item_post(&$a) { * Fold multi-line [code] sequences */ - $body = preg_replace('/\[\/code\]\s*\[code\]/m',"\n",$body); + $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); /** * Look for any tags and linkify them -- cgit v1.2.3 From 70911731313d58458e48a50e76c4b3b8a4d2c934 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 3 Oct 2011 02:39:19 -0700 Subject: removing another potential way a post could have a zero parent. --- mod/item.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'mod/item.php') diff --git a/mod/item.php b/mod/item.php index e5d4eea82..b8c0683aa 100644 --- a/mod/item.php +++ b/mod/item.php @@ -779,6 +779,11 @@ function item_post(&$a) { } } + // fallback so that parent always gets set to non-zero. + + if(! $parent) + $parent = $post_id; + $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `plink` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1 WHERE `id` = %d LIMIT 1", intval($parent), -- cgit v1.2.3