aboutsummaryrefslogblamecommitdiffstats
path: root/Zotlabs/Lib/Share.php
blob: b4cd5a194f99ea755be1e9052023519c373e528d (plain) (tree)
1
2
3
4



                      


















































                                                                                                                
                                                                                              




















































                                                                                                 
                                














                                                                                               


                                                                                           
                                                                                                                                             


                                                                           
                                                
                                                                                         







                                                                                                              
 
<?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['asld']         = Activity::fetch_item( [ 'id' => $this->item['mid'] ] );
		$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 = EMPTY_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'] .
				"' auth='"       . ((in_array($this->item['author']['xchan_network'], ['zot6', 'zot'])) ? 'true' : 'false') .
				"' posted='"     . $this->item['created'] .
				"' message_id='" . $this->item['mid'] .
			"']";
			if($this->item['title'])
				$bb .= '[h3][b]'.$this->item['title'].'[/b][/h3]'."\r\n";
			$bb .= (($is_photo) ? $photo_bb . "\r\n" . $this->item['body'] : $this->item['body']);
			$bb .= "[/share]";
		}

		return $bb;

	}

}