aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-02-03 19:38:15 -0800
committerfriendica <info@friendica.com>2014-02-03 19:38:15 -0800
commit876f5d4de09f6215c3e65146460027d0dd244bc8 (patch)
tree2287b38af784719957788c01438d4c2ea8f0f197
parentc4d088459634d8148620a27c56ba06b33814668f (diff)
downloadvolse-hubzilla-876f5d4de09f6215c3e65146460027d0dd244bc8.tar.gz
volse-hubzilla-876f5d4de09f6215c3e65146460027d0dd244bc8.tar.bz2
volse-hubzilla-876f5d4de09f6215c3e65146460027d0dd244bc8.zip
transmit, receive, and parse bookmarks
-rwxr-xr-xinclude/items.php10
-rwxr-xr-xinclude/text.php14
-rw-r--r--mod/item.php21
-rw-r--r--mod/page.php4
4 files changed, 39 insertions, 10 deletions
diff --git a/include/items.php b/include/items.php
index a74c3d460..7b11a1c3c 100755
--- a/include/items.php
+++ b/include/items.php
@@ -822,7 +822,7 @@ function encode_item_xchan($xchan) {
function encode_item_terms($terms) {
$ret = array();
- $allowed_export_terms = array( TERM_UNKNOWN, TERM_HASHTAG, TERM_MENTION, TERM_CATEGORY );
+ $allowed_export_terms = array( TERM_UNKNOWN, TERM_HASHTAG, TERM_MENTION, TERM_CATEGORY, TERM_BOOKMARK );
if($terms) {
foreach($terms as $term) {
@@ -834,7 +834,7 @@ function encode_item_terms($terms) {
}
function termtype($t) {
- $types = array('unknown','hashtag','mention','category','private_category','file','search');
+ $types = array('unknown','hashtag','mention','category','private_category','file','search','thing','bookmark');
return(($types[$t]) ? $types[$t] : 'unknown');
}
@@ -865,6 +865,12 @@ function decode_tags($t) {
case 'search':
$tag['type'] = TERM_SEARCH;
break;
+ case 'thing':
+ $tag['type'] = TERM_THING;
+ break;
+ case 'bookmark':
+ $tag['type'] = TERM_BOOKMARK;
+ break;
default:
case 'unknown':
$tag['type'] = TERM_UNKNOWN;
diff --git a/include/text.php b/include/text.php
index a72989147..37ce54f25 100755
--- a/include/text.php
+++ b/include/text.php
@@ -593,7 +593,7 @@ function get_tags($s) {
if(substr($mtch,-1,1) === '.')
$mtch = substr($mtch,0,-1);
// ignore strictly numeric tags like #1
- if((strpos($mtch,'#') === 0) && ctype_digit(substr($mtch,1)))
+ if((strpos($mtch,'#') === 0) && ( ctype_digit(substr($mtch,1)) || substr($mtch,1,1) === '^'))
continue;
// try not to catch url fragments
if(strpos($s,$mtch) && preg_match('/[a-zA-z0-9\/]/',substr($s,strpos($s,$mtch)-1,1)))
@@ -601,6 +601,18 @@ function get_tags($s) {
$ret[] = $mtch;
}
}
+
+ // bookmarks
+
+ if(preg_match_all('/#\^\[(url|zrl)=(.*?)\](.*?)\[\/(url|zrl)\]/',$s,$match,PREG_SET_ORDER)) {
+ foreach($match as $mtch) {
+ $ret[] = $mtch[0];
+ }
+ }
+
+
+ // logger('get_tags: ' . print_r($ret,true));
+
return $ret;
}
diff --git a/mod/item.php b/mod/item.php
index 6d421009b..88bf46a9f 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -887,13 +887,24 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag) {
$replaced = false;
$r = null;
- $termtype = ((strpos($tag,'#') === 0) ? TERM_HASHTAG : TERM_UNKNOWN);
- $termtype = ((strpos($tag,'@') === 0) ? TERM_MENTION : $termtype);
+
+ $termtype = ((strpos($tag,'#') === 0) ? TERM_HASHTAG : TERM_UNKNOWN);
+ $termtype = ((strpos($tag,'@') === 0) ? TERM_MENTION : $termtype);
+ $termtype = ((strpos($tag,'#^[') === 0) ? TERM_BOOKMARK : $termtype);
+
//is it a hash tag?
if(strpos($tag,'#') === 0) {
- // if the tag is replaced...
- if(strpos($tag,'[zrl=')) {
+ if(strpos($tag,'#^[') === 0) {
+ if(preg_match('/#\^\[(url|zrl)=(.*?)\](.*?)\[\/(url|zrl)\]/',$tag,$match)) {
+ $basetag = $match[3];
+ $url = $match[2];
+ $replaced = true;
+
+ }
+ }
+ // if the tag is already replaced...
+ elseif(strpos($tag,'[zrl=')) {
//...do nothing
return $replaced;
}
@@ -904,7 +915,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag) {
$body = str_replace($tag,$newtag,$body);
$replaced = true;
}
- else {
+ if(! $replaced) {
//base tag has the tags name only
$basetag = str_replace('_',' ',substr($tag,1));
//create text for link
diff --git a/mod/page.php b/mod/page.php
index 56592116f..df17dbf52 100644
--- a/mod/page.php
+++ b/mod/page.php
@@ -38,7 +38,7 @@ function page_content(&$a) {
$channel_address = argv(1);
$page_id = argv(2);
-dbg(1);
+
$u = q("select channel_id from channel where channel_address = '%s' limit 1",
dbesc($channel_address)
);
@@ -63,7 +63,7 @@ dbg(1);
dbesc($page_id),
intval(ITEM_WEBPAGE)
);
-dbg(0);
+
if(! $r) {
// Check again with no permissions clause to see if it is a permissions issue