105 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace Zotlabs\Module;
 | |
| 
 | |
| require_once('include/security.php');
 | |
| require_once('include/bbcode.php');
 | |
| 
 | |
| 
 | |
| class Share extends \Zotlabs\Web\Controller {
 | |
| 
 | |
| 	function init() {
 | |
| 	
 | |
| 		$post_id = ((argc() > 1) ? intval(argv(1)) : 0);
 | |
| 	
 | |
| 		if(! $post_id)
 | |
| 			killme();
 | |
| 	
 | |
| 		echo '[share=' . $post_id . '][/share]';
 | |
| 		killme();
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * The remaining code is deprecated and handled in Zotlabs/Lib/Share.php at post 
 | |
| 	 * submission time.
 | |
|  	 */
 | |
| 
 | |
| 		if(! (local_channel() || remote_channel()))
 | |
| 			killme();
 | |
| 	
 | |
| 		$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d  LIMIT 1",
 | |
| 			intval($post_id)
 | |
| 		);
 | |
| 		if(! $r)
 | |
| 			killme();
 | |
| 		if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
 | |
| 			killme();
 | |
| 	
 | |
| 		$sql_extra = item_permissions_sql($r[0]['uid']);
 | |
| 	
 | |
| 		$r = q("select * from item where id = %d $sql_extra",
 | |
| 			intval($post_id)
 | |
| 		);
 | |
| 		if(! $r)
 | |
| 			killme();
 | |
| 	
 | |
| 		/** @FIXME we only share bbcode */
 | |
| 	
 | |
| 		if($r[0]['mimetype'] !== 'text/bbcode')
 | |
| 			killme();
 | |
| 	
 | |
| 		/** @FIXME eventually we want to post remotely via rpost on your home site */
 | |
| 		// When that works remove this next bit:
 | |
| 	
 | |
| 		if(! local_channel())
 | |
| 			killme();
 | |
| 	
 | |
| 		xchan_query($r);
 | |
| 	
 | |
| 		$is_photo = (($r[0]['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
 | |
| 		if($is_photo) {
 | |
| 			$object = json_decode($r[0]['obj'],true);
 | |
| 			$photo_bb = $object['body'];
 | |
| 		}
 | |
| 	
 | |
| 		if (strpos($r[0]['body'], "[/share]") !== false) {
 | |
| 			$pos = strpos($r[0]['body'], "[share");
 | |
| 			$o = substr($r[0]['body'], $pos);
 | |
| 		} else {
 | |
| 			$o = "[share author='" . urlencode($r[0]['author']['xchan_name']) .
 | |
| 				"' profile='"    . $r[0]['author']['xchan_url'] .
 | |
| 				"' avatar='"     . $r[0]['author']['xchan_photo_s'] .
 | |
| 				"' link='"       . $r[0]['plink'] .
 | |
| 				"' auth='"       . (($r[0]['author']['network'] === 'zot') ? 'true' : 'false') .
 | |
| 				"' posted='"     . $r[0]['created'] .
 | |
| 				"' message_id='" . $r[0]['mid'] . 
 | |
| 			"']";
 | |
| 			if($r[0]['title'])
 | |
| 				$o .= '[b]'.$r[0]['title'].'[/b]'."\r\n";
 | |
| 			$o .= (($is_photo) ? $photo_bb . "\r\n" . $r[0]['body'] : $r[0]['body']);
 | |
| 			$o .= "[/share]";
 | |
| 		}
 | |
| 	
 | |
| 		if(local_channel()) {
 | |
| 			echo $o;
 | |
| 			killme();
 | |
| 		}
 | |
| 	
 | |
| 		$observer = \App::get_observer();
 | |
| 		$parsed = $observer['xchan_url'];
 | |
| 		if($parsed) {
 | |
| 			$post_url = $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '')
 | |
| 				. '/rpost';
 | |
| 	
 | |
| 			/**
 | |
| 			 * @FIXME we were probably called from JS so we don't know the return page.
 | |
| 			 * In fact we won't be able to load the remote page.
 | |
| 			 * we might need an iframe
 | |
| 			 */
 | |
| 	
 | |
| 			$x = z_post_url($post_url, array('f' => '', 'body' => $o ));
 | |
| 			killme();
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| }
 |