aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2015-03-13 19:24:17 -0700
committerfriendica <info@friendica.com>2015-03-13 19:24:17 -0700
commitb76cdf82d298c92bdf5a59b6bf6b55da504a46ea (patch)
treea6837fc53dc2e523f0a4c5f41a3782b093f3453d
parent27e92ff2773cd12306bd2ce235d7fbea8f0e1bd4 (diff)
downloadvolse-hubzilla-b76cdf82d298c92bdf5a59b6bf6b55da504a46ea.tar.gz
volse-hubzilla-b76cdf82d298c92bdf5a59b6bf6b55da504a46ea.tar.bz2
volse-hubzilla-b76cdf82d298c92bdf5a59b6bf6b55da504a46ea.zip
create terms for Diaspora mention tags - which in Diaspora are handled differently than other tag links and have to be done separately; they aren't processed by linkify_tags which handles all of our other tag processing. Also move the abook_channel clause in mod_network to the join statement. This works fine in mysql and achievies the desired result. I hope postgres can handle an expression as a join clause.
-rwxr-xr-xinclude/diaspora.php100
-rw-r--r--mod/network.php12
2 files changed, 103 insertions, 9 deletions
diff --git a/include/diaspora.php b/include/diaspora.php
index e3bfc2806..1e0e48a86 100755
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -845,8 +845,9 @@ function diaspora_post($importer,$xml,$msg) {
// Look for tags and linkify them
$results = linkify_tags(get_app(), $body, $importer['channel_id']);
+ $datarray['term'] = array();
+
if($results) {
- $datarray['term'] = array();
foreach($results as $result) {
$success = $result['success'];
if($success['replaced']) {
@@ -861,6 +862,37 @@ function diaspora_post($importer,$xml,$msg) {
}
}
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ $cnt = preg_match_all('/@\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ // don't include plustags in the term
+ $term = ((substr($mtch[2],-1,1) === '+') ? substr($mtch[2],0,-1) : $mtch[2]);
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $term,
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+
+
+
$plink = service_plink($contact,$guid);
@@ -1032,8 +1064,9 @@ function diaspora_reshare($importer,$xml,$msg) {
// Look for tags and linkify them
$results = linkify_tags(get_app(), $body, $importer['channel_id']);
+ $datarray['term'] = array();
+
if($results) {
- $datarray['term'] = array();
foreach($results as $result) {
$success = $result['success'];
if($success['replaced']) {
@@ -1048,6 +1081,38 @@ function diaspora_reshare($importer,$xml,$msg) {
}
}
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ $cnt = preg_match_all('/@\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ // don't include plustags in the term
+ $term = ((substr($mtch[2],-1,1) === '+') ? substr($mtch[2],0,-1) : $mtch[2]);
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $term,
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+
+
+
+
$newbody = "[share author='" . urlencode($orig_author_name)
. "' profile='" . $orig_author_link
. "' avatar='" . $orig_author_photo
@@ -1334,8 +1399,9 @@ function diaspora_comment($importer,$xml,$msg) {
// Look for tags and linkify them
$results = linkify_tags(get_app(), $body, $importer['channel_id']);
+ $datarray['term'] = array();
+
if($results) {
- $datarray['term'] = array();
foreach($results as $result) {
$success = $result['success'];
if($success['replaced']) {
@@ -1350,6 +1416,34 @@ function diaspora_comment($importer,$xml,$msg) {
}
}
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ $cnt = preg_match_all('/@\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ // don't include plustags in the term
+ $term = ((substr($mtch[2],-1,1) === '+') ? substr($mtch[2],0,-1) : $mtch[2]);
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $term,
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
$datarray['uid'] = $importer['channel_id'];
$datarray['verb'] = ACTIVITY_POST;
$datarray['mid'] = $guid;
diff --git a/mod/network.php b/mod/network.php
index 642fc4f43..d2b9bc64c 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -377,8 +377,8 @@ function network_content(&$a, $update = 0, $load = false) {
// "New Item View" - show all items unthreaded in reverse created date order
$items = q("SELECT item.*, item.id AS item_id, received FROM item
- left join abook on item.owner_xchan = abook.abook_xchan
- WHERE true $uids $abook_uids AND item_restrict = 0
+ left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
+ WHERE true $uids AND item_restrict = 0
and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$simple_update
$sql_extra $sql_nets
@@ -408,8 +408,8 @@ function network_content(&$a, $update = 0, $load = false) {
// Fetch a page full of parent items for this page
$r = q("SELECT distinct item.id AS item_id, $ordering FROM item
- left join abook on item.owner_xchan = abook.abook_xchan
- WHERE true $uids $abook_uids AND item.item_restrict = 0
+ left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
+ WHERE true $uids AND item.item_restrict = 0
AND item.parent = item.id
and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$sql_extra3 $sql_extra $sql_nets
@@ -422,8 +422,8 @@ function network_content(&$a, $update = 0, $load = false) {
if(! $firehose) {
// update
$r = q("SELECT item.parent AS item_id FROM item
- left join abook on item.owner_xchan = abook.abook_xchan
- WHERE true $uids $abook_uids AND item.item_restrict = 0 $simple_update
+ left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
+ WHERE true $uids AND item.item_restrict = 0 $simple_update
and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$sql_extra3 $sql_extra $sql_nets ",
intval(ABOOK_FLAG_BLOCKED)