more api cleanup

This commit is contained in:
zotlabs 2016-10-11 18:37:47 -07:00
parent 03aacc35b3
commit 1a4a8f1ef7

View File

@ -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){
function api_favorites_create_destroy($type){
logger('favorites_create_destroy');
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())
);
$ret = array();
foreach($r as $cid){
$ret[] = api_get_user( $cid['abook_id']);
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())
);
}
return array('$users' => $ret);
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();
if($r) {
foreach($r as $cid) {
$ret[] = api_get_user($cid['abook_id']);
}
}
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()) : '');
$texlimit = get_config('system','api_import_size');
$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()
)
));
$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 == '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($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(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();