mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-19 23:35:12 +00:00
Merge branch 'share'
This commit is contained in:
commit
24da5d82db
3 changed files with 161 additions and 1 deletions
141
Zotlabs/Lib/Share.php
Normal file
141
Zotlabs/Lib/Share.php
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Zotlabs\Lib;
|
||||||
|
|
||||||
|
|
||||||
|
class Share {
|
||||||
|
|
||||||
|
private $item = null;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct($post_id) {
|
||||||
|
|
||||||
|
if(! $post_id)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(! (local_channel() || remote_channel()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
|
||||||
|
intval($post_id)
|
||||||
|
);
|
||||||
|
if(! $r)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
$sql_extra = item_permissions_sql($r[0]['uid']);
|
||||||
|
|
||||||
|
$r = q("select * from item where id = %d $sql_extra",
|
||||||
|
intval($post_id)
|
||||||
|
);
|
||||||
|
if(! $r)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if($r[0]['mimetype'] !== 'text/bbcode')
|
||||||
|
return;
|
||||||
|
|
||||||
|
/** @FIXME eventually we want to post remotely via rpost on your home site */
|
||||||
|
// When that works remove this next bit:
|
||||||
|
|
||||||
|
if(! local_channel())
|
||||||
|
return;
|
||||||
|
|
||||||
|
xchan_query($r);
|
||||||
|
|
||||||
|
$this->item = $r[0];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function obj() {
|
||||||
|
$obj = [];
|
||||||
|
|
||||||
|
if(! $this->item)
|
||||||
|
return $obj;
|
||||||
|
|
||||||
|
$obj['type'] = $this->item['obj_type'];
|
||||||
|
$obj['id'] = $this->item['mid'];
|
||||||
|
$obj['content'] = $this->item['body'];
|
||||||
|
$obj['content_type'] = $this->item['mimetype'];
|
||||||
|
$obj['title'] = $this->item['title'];
|
||||||
|
$obj['created'] = $this->item['created'];
|
||||||
|
$obj['edited'] = $this->item['edited'];
|
||||||
|
$obj['author'] = [
|
||||||
|
'name' => $this->item['author']['xchan_name'],
|
||||||
|
'address' => $this->item['author']['xchan_addr'],
|
||||||
|
'network' => $this->item['author']['xchan_network'],
|
||||||
|
'link' => [
|
||||||
|
[
|
||||||
|
'rel' => 'alternate',
|
||||||
|
'type' => 'text/html',
|
||||||
|
'href' => $this->item['author']['xchan_url']
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'rel' => 'photo',
|
||||||
|
'type' => $this->item['author']['xchan_photo_mimetype'],
|
||||||
|
'href' => $this->item['author']['xchan_photo_m']
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$obj['owner'] = [
|
||||||
|
'name' => $this->item['owner']['xchan_name'],
|
||||||
|
'address' => $this->item['owner']['xchan_addr'],
|
||||||
|
'network' => $this->item['owner']['xchan_network'],
|
||||||
|
'link' => [
|
||||||
|
[
|
||||||
|
'rel' => 'alternate',
|
||||||
|
'type' => 'text/html',
|
||||||
|
'href' => $this->item['owner']['xchan_url']
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'rel' => 'photo',
|
||||||
|
'type' => $this->item['owner']['xchan_photo_mimetype'],
|
||||||
|
'href' => $this->item['owner']['xchan_photo_m']
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$obj['link'] = [
|
||||||
|
'rel' => 'alternate',
|
||||||
|
'type' => 'text/html',
|
||||||
|
'href' => $this->item['plink']
|
||||||
|
];
|
||||||
|
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function bbcode() {
|
||||||
|
$bb = NULL_STR;
|
||||||
|
|
||||||
|
if(! $this->item)
|
||||||
|
return $bb;
|
||||||
|
|
||||||
|
$is_photo = (($this->item['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
|
||||||
|
if($is_photo) {
|
||||||
|
$object = json_decode($this->item['obj'],true);
|
||||||
|
$photo_bb = $object['body'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($this->item['body'], "[/share]") !== false) {
|
||||||
|
$pos = strpos($this->item['body'], "[share");
|
||||||
|
$bb = substr($this->item['body'], $pos);
|
||||||
|
} else {
|
||||||
|
$bb = "[share author='".urlencode($this->item['author']['xchan_name']).
|
||||||
|
"' profile='".$this->item['author']['xchan_url'] .
|
||||||
|
"' avatar='".$this->item['author']['xchan_photo_s'].
|
||||||
|
"' link='".$this->item['plink'].
|
||||||
|
"' posted='".$this->item['created'].
|
||||||
|
"' message_id='".$this->item['mid']."']";
|
||||||
|
if($this->item['title'])
|
||||||
|
$bb .= '[b]'.$this->item['title'].'[/b]'."\r\n";
|
||||||
|
$bb .= (($is_photo) ? $photo_bb . "\r\n" . $this->item['body'] : $this->item['body']);
|
||||||
|
$bb .= "[/share]";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $bb;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,6 +39,7 @@ class Item extends \Zotlabs\Web\Controller {
|
||||||
$uid = local_channel();
|
$uid = local_channel();
|
||||||
$channel = null;
|
$channel = null;
|
||||||
$observer = null;
|
$observer = null;
|
||||||
|
$datarray = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -620,6 +621,21 @@ class Item extends \Zotlabs\Web\Controller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(preg_match_all('/(\[share=(.*?)\](.*?)\[\/share\])/',$body,$match)) {
|
||||||
|
// process share by id
|
||||||
|
|
||||||
|
$verb = ACTIVITY_SHARE;
|
||||||
|
$i = 0;
|
||||||
|
foreach($match[2] as $mtch) {
|
||||||
|
$reshare = new \Zotlabs\Lib\Share($mtch);
|
||||||
|
$datarray['obj'] = $reshare->obj();
|
||||||
|
$datarray['obj_type'] = $datarray['obj']['type'];
|
||||||
|
$body = str_replace($match[1][$i],$reshare->bbcode(),$body);
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// BBCODE end alert
|
// BBCODE end alert
|
||||||
|
@ -720,7 +736,6 @@ class Item extends \Zotlabs\Web\Controller {
|
||||||
if(!$thr_parent)
|
if(!$thr_parent)
|
||||||
$thr_parent = $mid;
|
$thr_parent = $mid;
|
||||||
|
|
||||||
$datarray = array();
|
|
||||||
|
|
||||||
$item_thread_top = ((! $parent) ? 1 : 0);
|
$item_thread_top = ((! $parent) ? 1 : 0);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,10 @@ class Share extends \Zotlabs\Web\Controller {
|
||||||
if(! $post_id)
|
if(! $post_id)
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
|
|
||||||
|
echo '[share=' . $post_id . '][/share]';
|
||||||
|
killme();
|
||||||
|
|
||||||
if(! (local_channel() || remote_channel()))
|
if(! (local_channel() || remote_channel()))
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue