aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/api.php383
1 files changed, 183 insertions, 200 deletions
diff --git a/include/api.php b/include/api.php
index efd15df48..0c5839143 100644
--- a/include/api.php
+++ b/include/api.php
@@ -62,7 +62,7 @@ require_once('include/api_zot.php');
}
- function api_register_func($path, $func, $auth=false) {
+ function api_register_func($path, $func, $auth = false) {
\Zotlabs\Lib\Api_router::register($path,$func,$auth);
}
@@ -128,15 +128,6 @@ require_once('include/api_zot.php');
$r = $_GET['callback'] . '(' . $r . ')' ;
return $r;
break;
- case "rss":
- header ("Content-Type: application/rss+xml");
- return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
- break;
- case "atom":
- header ("Content-Type: application/atom+xml");
- return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
- break;
-
}
}
@@ -170,7 +161,7 @@ require_once('include/api_zot.php');
*/
function api_rss_extra( $arr, $user_info){
- if (is_null($user_info)) $user_info = api_get_user($a);
+ if (is_null($user_info)) $user_info = api_get_user();
$arr['$user'] = $user_info;
$arr['$rss'] = array(
'alternate' => $user_info['url'],
@@ -477,7 +468,7 @@ require_once('include/api_zot.php');
function api_account_verify_credentials($type){
if(api_user()===false)
return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
return api_apply_template('user', $type, array('user' => $user_info));
}
api_register_func('api/account/verify_credentials','api_account_verify_credentials', true);
@@ -508,7 +499,7 @@ require_once('include/api_zot.php');
logger('api_statuses_update: no user');
return false;
}
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// logger('status_with_media: ' . print_r($_REQUEST,true), LOGGER_DEBUG);
@@ -564,7 +555,7 @@ require_once('include/api_zot.php');
$_REQUEST['api_source'] = true;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// convert $_POST array items to the form we use for web posts.
@@ -734,7 +725,7 @@ require_once('include/api_zot.php');
}
function api_status_show( $type){
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// get last public message
@@ -812,7 +803,7 @@ require_once('include/api_zot.php');
function api_users_show( $type){
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
require_once('include/security.php');
$item_normal = item_normal();
@@ -887,7 +878,7 @@ require_once('include/api_zot.php');
if (api_user() === false)
return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// get last network messages
@@ -945,30 +936,17 @@ require_once('include/api_zot.php');
);
}
-
$data = array('$statuses' => $ret);
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra( $data, $user_info);
- break;
- case "as":
- $as = api_format_as( $ret, $user_info);
- $as['title'] = App::$config['sitename']." Home Timeline";
- $as['link']['url'] = z_root()."/".$user_info["screen_name"]."/all";
- return($as);
- break;
- }
-
return api_apply_template("timeline", $type, $data);
}
+
api_register_func('api/statuses/home_timeline','api_statuses_home_timeline', true);
api_register_func('api/statuses/friends_timeline','api_statuses_home_timeline', true);
function api_statuses_public_timeline( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
$sys = get_sys_channel();
@@ -1032,7 +1010,7 @@ require_once('include/api_zot.php');
function api_statuses_show( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// params
$id = intval(argv(3));
@@ -1082,7 +1060,7 @@ require_once('include/api_zot.php');
function api_statuses_repeat( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// params
$id = intval(argv(3));
@@ -1128,7 +1106,7 @@ require_once('include/api_zot.php');
function api_statuses_destroy( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// params
$id = intval(argv(3));
@@ -1192,7 +1170,7 @@ require_once('include/api_zot.php');
function api_statuses_mentions( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// get last network messages
@@ -1259,7 +1237,7 @@ require_once('include/api_zot.php');
function api_statuses_user_timeline( $type){
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// get last network messages
@@ -1340,17 +1318,16 @@ require_once('include/api_zot.php');
*
* api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
*/
- function api_favorites_create_destroy( $type){
-
- logger('favorites_create_destroy');
+ function api_favorites_create_destroy($type){
- if (api_user()===false)
+ if(api_user() === false)
return false;
- $action = str_replace(".".$type,"",argv(2));
+ $action = str_replace('.' . $type,'',argv(2));
if (argc() > 3) {
$itemid = intval(argv(3));
- } else {
+ }
+ else {
$itemid = intval($_REQUEST['id']);
}
@@ -1359,14 +1336,14 @@ require_once('include/api_zot.php');
intval(api_user())
);
- if (! $item)
+ if(! $item)
return false;
switch($action){
- case "create":
+ case 'create':
$flags = $item[0]['item_starred'] = 1;
break;
- case "destroy":
+ case 'destroy':
$flags = $item[0]['item_starred'] = 0;
break;
default:
@@ -1388,31 +1365,24 @@ require_once('include/api_zot.php');
xchan_query($item,true);
-
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
$rets = api_format_items($item,$user_info);
$ret = $rets[0];
- $data = array('$status' => $ret);
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra( $data, $user_info);
- }
+ $data = array('status' => $ret);
- return api_apply_template("status", $type, $data);
+ return api_apply_template('status', $type, $data);
}
api_register_func('api/favorites/create', 'api_favorites_create_destroy', true);
api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true);
-
function api_favorites( $type){
if (api_user()===false)
return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// params
$count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
@@ -1457,29 +1427,14 @@ require_once('include/api_zot.php');
$ret = api_format_items($r,$user_info);
- $data = array('$statuses' => $ret);
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra( $data, $user_info);
- break;
- case "as":
- $as = api_format_as( $ret, $user_info);
- $as['title'] = App::$config['sitename']." Home Timeline";
- $as['link']['url'] = z_root()."/".$user_info["screen_name"]."/all";
- return($as);
- break;
- }
-
- return api_apply_template("timeline", $type, $data);
+ $data = array('statuses' => $ret);
+ return(api_apply_template("timeline", $type, $data));
}
api_register_func('api/favorites','api_favorites', true);
-
-
function api_format_as( $ret, $user_info) {
$as = array();
@@ -1700,7 +1655,7 @@ require_once('include/api_zot.php');
else
$ok = "ok";
- return api_apply_template('test', $type, array('$ok' => $ok));
+ return api_apply_template('test', $type, array('ok' => $ok));
}
api_register_func('api/help/test','api_help_test',false);
@@ -1712,7 +1667,7 @@ require_once('include/api_zot.php');
**/
function api_statuses_f( $type, $qtype) {
if (api_user()===false) return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// friends and followers only for self
@@ -1731,37 +1686,48 @@ require_once('include/api_zot.php');
return false;
}
-// @fixme - update for hubzilla extensible perms using abconfig or find a better way to do it
- // For Red, the closest thing we can do to figure out if you're friends is if both of you are sending each other your streams.
- // This won't work if either of you send your stream to everybody on the network
- if($qtype == 'friends')
- $sql_extra = sprintf(" AND ( abook_their_perms & %d )>0 and ( abook_my_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
- if($qtype == 'followers')
- $sql_extra = sprintf(" AND ( abook_my_perms & %d )>0 and not ( abook_their_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
-
- $r = q("SELECT abook_id FROM abook where abook_self = 0 and abook_channel = %d $sql_extra",
- intval(api_user())
- );
+
+
+
+ if($qtype == 'friends') {
+ $r = q("select abook_id from abook left join abconfig on abook_xchan = xchan and abook_channel = chan
+ where chan = %d and abook_self = 0 and abook_pending = 0 and cat = 'my_perms' and k = 'view_stream' and v = '1' ",
+ intval(api_user())
+ );
+ }
+
+ if($qtype == 'followers') {
+ $r = q("select abook_id from abook left join abconfig on abook_xchan = xchan and abook_channel = chan
+ where chan = %d and abook_self = 0 and abook_pending = 0 and cat = 'their_perms' and k = 'view_stream' and v = '1' ",
+ intval(api_user())
+ );
+ }
$ret = array();
- foreach($r as $cid){
- $ret[] = api_get_user( $cid['abook_id']);
+
+ if($r) {
+ foreach($r as $cid) {
+ $ret[] = api_get_user($cid['abook_id']);
+ }
}
-
- return array('$users' => $ret);
+ return array('users' => $ret);
}
- function api_statuses_friends( $type){
- $data = api_statuses_f($type,"friends");
- if ($data===false) return false;
- return api_apply_template("friends", $type, $data);
+
+ function api_statuses_friends($type){
+ $data = api_statuses_f($type,'friends');
+ if($data === false)
+ return false;
+ return(api_apply_template('friends', $type, $data));
}
- function api_statuses_followers( $type){
- $data = api_statuses_f($type,"followers");
- if ($data===false) return false;
- return api_apply_template("friends", $type, $data);
+ function api_statuses_followers($type){
+ $data = api_statuses_f($type,'followers');
+ if ($data === false)
+ return false;
+ return(api_apply_template('friends', $type, $data));
}
+
api_register_func('api/statuses/friends','api_statuses_friends',true);
api_register_func('api/statuses/followers','api_statuses_followers',true);
@@ -1772,33 +1738,50 @@ require_once('include/api_zot.php');
function api_statusnet_config($type) {
- load_config('system');
-
- $name = get_config('system','sitename');
- $server = App::get_hostname();
- $logo = z_root() . '/images/hz-64.png';
- $email = get_config('system','admin_email');
- $closed = ((get_config('system','register_policy') == REGISTER_CLOSED) ? 'true' : 'false');
- $private = ((get_config('system','block_public')) ? 'true' : 'false');
- $textlimit = (string) ((get_config('system','max_import_size')) ? get_config('system','max_import_size') : 200000);
+ $name = get_config('system','sitename');
+ $server = App::get_hostname();
+ $logo = z_root() . '/images/hz-64.png';
+ $email = get_config('system','admin_email');
+ $closed = ((get_config('system','register_policy') == REGISTER_CLOSED) ? true : false);
+ $private = ((get_config('system','block_public')) ? true : false);
+ $textlimit = ((get_config('system','max_import_size')) ? get_config('system','max_import_size') : 200000);
if(get_config('system','api_import_size'))
- $texlimit = string(get_config('system','api_import_size'));
- $ssl = ((get_config('system','have_ssl')) ? 'true' : 'false');
- $sslserver = (($ssl === 'true') ? str_replace('http:','https:',z_root()) : '');
-
- $config = array(
- 'site' => array('name' => $name,'server' => $server, 'theme' => 'default', 'path' => '',
- 'logo' => $logo, 'fancy' => 'true', 'language' => 'en', 'email' => $email, 'broughtby' => '',
- 'broughtbyurl' => '', 'timezone' => 'UTC', 'closed' => $closed, 'inviteonly' => 'false',
- 'private' => $private, 'textlimit' => $textlimit, 'sslserver' => $sslserver, 'ssl' => $ssl,
- 'shorturllength' => '30',
- 'hubzilla' => array(
- 'PLATFORM_NAME' => Zotlabs\Lib\System::get_platform_name(),
- 'STD_VERSION' => Zotlabs\Lib\System::get_project_version(),
- 'ZOT_REVISION' => ZOT_REVISION,
- 'DB_UPDATE_VERSION' => Zotlabs\Lib\System::get_update_version()
- )
- ));
+ $texlimit = get_config('system','api_import_size');
+
+ $m = parse_url(z_root());
+
+ $ssl = (($m['scheme'] === 'https') ? true : false);
+ $sslserver = (($ssl) ? str_replace('http:','https:',z_root()) : '');
+
+ $config = [
+ 'site' => [
+ 'name' => $name,
+ 'server' => $server,
+ 'theme' => 'default',
+ 'path' => '',
+ 'logo' => $logo,
+ 'fancy' => true,
+ 'language' => 'en',
+ 'email' => $email,
+ 'broughtby' => '',
+ 'broughtbyurl' => '',
+ 'timezone' => 'UTC',
+ 'closed' => $closed,
+ 'inviteonly' => false,
+ 'private' => $private,
+ 'textlimit' => $textlimit,
+ 'sslserver' => $sslserver,
+ 'ssl' => $ssl,
+ 'shorturllength' => 30,
+
+ 'platform' => [
+ 'PLATFORM_NAME' => Zotlabs\Lib\System::get_platform_name(),
+ 'STD_VERSION' => Zotlabs\Lib\System::get_project_version(),
+ 'ZOT_REVISION' => ZOT_REVISION,
+ 'DB_UPDATE_VERSION' => Zotlabs\Lib\System::get_update_version()
+ ]
+ ]
+ ];
return api_apply_template('config', $type, array('config' => $config));
@@ -1845,23 +1828,25 @@ require_once('include/api_zot.php');
function api_ff_ids($type,$qtype) {
+
if(! api_user())
return false;
+ if($qtype == 'friends') {
+ $r = q("select abook_id from abook left join abconfig on abook_xchan = xchan and abook_channel = chan
+ where chan = %d and abook_self = 0 and abook_pending = 0 and cat = 'my_perms' and k = 'view_stream' and v = '1' ",
+ intval(api_user())
+ );
+ }
- // For Red, the closest thing we can do to figure out if you're friends is if both of you are sending each other your streams.
- // This won't work if either of you send your stream to everybody on the network
-
- if($qtype == 'friends')
- $sql_extra = sprintf(" AND ( abook_their_perms & %d )>0 and ( abook_my_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
- if($qtype == 'followers')
- $sql_extra = sprintf(" AND ( abook_my_perms & %d )>0 and not ( abook_their_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
-
- $r = q("SELECT abook_id FROM abook where abook_self = 0 and abook_channel = %d $sql_extra",
- intval(api_user())
- );
+ if($qtype == 'followers') {
+ $r = q("select abook_id from abook left join abconfig on abook_xchan = xchan and abook_channel = chan
+ where chan = %d and abook_self = 0 and abook_pending = 0 and cat = 'their_perms' and k = 'view_stream' and v = '1' ",
+ intval(api_user())
+ );
+ }
- if(is_array($r)) {
+ if($r) {
if($type === 'xml') {
header("Content-type: application/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" . '<ids>' . "\r\n";
@@ -1895,29 +1880,34 @@ require_once('include/api_zot.php');
if (!x($_POST, "text") || !x($_POST,"screen_name")) return;
- $sender = api_get_user($a);
+ $sender = api_get_user();
require_once("include/message.php");
// in a decentralised world the screen name is ambiguous
- $r = q("SELECT abook_id FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel=%d and xchan_addr like '%s'",
- intval(api_user()),
- dbesc($_POST['screen_name'] . '@%')
+ $r = q("SELECT abook_id FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE abook_channel = %d and xchan_addr like '%s'",
+ intval(api_user()),
+ dbesc($_POST['screen_name'] . '@%')
);
- $recipient = api_get_user( $r[0]['abook_id']);
- $replyto = '';
- $sub = '';
- if (x($_REQUEST,'replyto')) {
+ $recipient = api_get_user($r[0]['abook_id']);
+ $replyto = '';
+ $sub = '';
+
+ if(array_key_exists('replyto',$_REQUEST) && $_REQUEST['replyto']) {
$r = q('SELECT parent_mid, title FROM mail WHERE uid=%d AND id=%d',
- intval(api_user()),
- intval($_REQUEST['replyto']));
- $replyto = $r[0]['parent_mid'];
- $sub = $r[0]['title'];
+ intval(api_user()),
+ intval($_REQUEST['replyto'])
+ );
+ if($r) {
+ $replyto = $r[0]['parent_mid'];
+ $sub = $r[0]['title'];
+ }
}
else {
- if (x($_REQUEST,'title')) {
+ if(x($_REQUEST,'title')) {
$sub = $_REQUEST['title'];
}
else {
@@ -1931,59 +1921,57 @@ require_once('include/api_zot.php');
$r = q("SELECT * FROM mail WHERE id = %d", intval($id));
$ret = api_format_message($r[0], $recipient, $sender);
- } else {
- $ret = array("error"=>$id);
+ }
+ else {
+ $ret = [ 'error' => $id ];
}
- $data = Array('$messages'=>$ret);
-
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra( $data, $user_info);
- }
-
- return api_apply_template("direct_messages", $type, $data);
+ $data = [ 'messages' => $ret ];
+ return(api_apply_template('direct_messages', $type, $data));
}
+
api_register_func('api/direct_messages/new','api_direct_messages_new',true);
function api_direct_messages_box( $type, $box) {
- if (api_user()===false) return false;
+ if(api_user()===false)
+ return false;
- $user_info = api_get_user($a);
+ $user_info = api_get_user();
// params
- $count = (x($_GET,'count')?$_GET['count']:20);
- $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
- if ($page<0) $page=0;
+ $count = (x($_GET,'count') ? $_GET['count'] : 20);
+ $page = (x($_REQUEST,'page') ? $_REQUEST['page'] - 1 : 0);
+ if($page < 0)
+ $page=0;
- $start = $page*$count;
+ $start = $page*$count;
$channel = App::get_channel();
$profile_url = z_root() . '/channel/' . $channel['channel_address'];
- if ($box=="sentbox") {
- $sql_extra = "from_xchan = '".dbesc( $channel['channel_hash'] )."'";
+ if ($box === 'sentbox') {
+ $sql_extra = "from_xchan = '" . dbesc( $channel['channel_hash'] ) . "'";
}
- elseif ($box=="conversation") {
- $sql_extra = "parent_mid = '".dbesc( $_GET["uri"] ) ."'";
+ elseif($box === 'conversation') {
+ $sql_extra = "parent_mid = '" . dbesc($_GET['uri']) . "'";
}
- elseif ($box=="all") {
- $sql_extra = "true";
+ elseif($box === 'all') {
+ $sql_extra = 'true';
}
- elseif ($box=="inbox") {
- $sql_extra = "from_xchan != '".dbesc( $channel['channel_hash'] )."'";
+ elseif($box === 'inbox') {
+ $sql_extra = "from_xchan != '" . dbesc($channel['channel_hash']) . "'";
}
$r = q("SELECT * FROM mail WHERE channel_id = %d AND $sql_extra ORDER BY created DESC LIMIT %d OFFSET %d",
intval(api_user()),
- intval($count), intval($start)
+ intval($count),
+ intval($start)
);
- $ret = Array();
+ $ret = array();
if($r) {
foreach($r as $item) {
- if ($item['from_xchan'] == $channel['channel_hash']) {
+ if ($item['from_xchan'] === $channel['channel_hash']) {
$sender = $user_info;
$recipient = api_get_user( null, $item['to_xchan']);
}
@@ -1992,33 +1980,26 @@ require_once('include/api_zot.php');
$recipient = $user_info;
}
- $ret[]=api_format_message($item, $recipient, $sender);
+ $ret[] = api_format_message($item, $recipient, $sender);
}
}
-
- $data = array('$messages' => $ret);
- switch($type){
- case "atom":
- case "rss":
- $data = api_rss_extra( $data, $user_info);
- }
-
- return api_apply_template("direct_messages", $type, $data);
+ $data = array('messages' => $ret);
+ return(api_apply_template('direct_messages', $type, $data));
}
- function api_direct_messages_sentbox( $type){
- return api_direct_messages_box( $type, "sentbox");
+ function api_direct_messages_sentbox($type){
+ return api_direct_messages_box($type, 'sentbox');
}
- function api_direct_messages_inbox( $type){
- return api_direct_messages_box( $type, "inbox");
+ function api_direct_messages_inbox($type){
+ return api_direct_messages_box($type, 'inbox');
}
- function api_direct_messages_all( $type){
- return api_direct_messages_box( $type, "all");
+ function api_direct_messages_all($type){
+ return api_direct_messages_box($type, 'all');
}
- function api_direct_messages_conversation( $type){
- return api_direct_messages_box( $type, "conversation");
+ function api_direct_messages_conversation($type){
+ return api_direct_messages_box($type, 'conversation');
}
api_register_func('api/direct_messages/conversation','api_direct_messages_conversation',true);
api_register_func('api/direct_messages/all','api_direct_messages_all',true);
@@ -2044,10 +2025,12 @@ require_once('include/api_zot.php');
function api_oauth_access_token( $type){
try{
$oauth = new ZotOAuth1();
- $req = OAuth1Request::from_request();
- $r = $oauth->fetch_access_token($req);
- }catch(Exception $e){
- echo "error=". OAuth1Util::urlencode_rfc3986($e->getMessage()); killme();
+ $req = OAuth1Request::from_request();
+ $r = $oauth->fetch_access_token($req);
+ }
+ catch(Exception $e) {
+ echo 'error=' . OAuth1Util::urlencode_rfc3986($e->getMessage());
+ killme();
}
echo $r;
killme();