X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fapi.php;h=013f4b97aebf4a4b289cf4aa43f9a31890cf10e0;hb=4dd4a2258235cfafc0d5a4f87d116755ebe52ead;hp=aa05f0ad5e605f29b19c32fc02e0e1309ea8833d;hpb=4b6990e1ff42a509144b9b28f9377b2c9d9df3d9;p=friendica.git diff --git a/include/api.php b/include/api.php old mode 100644 new mode 100755 index aa05f0ad5e..013f4b97ae --- a/include/api.php +++ b/include/api.php @@ -26,6 +26,7 @@ /** * Simple HTTP Login */ + function api_login(&$a){ // login with oauth try{ @@ -56,7 +57,7 @@ if (!isset($_SERVER['PHP_AUTH_USER'])) { logger('API_login: ' . print_r($_SERVER,true), LOGGER_DEBUG); - header('WWW-Authenticate: Basic realm="Friendika"'); + header('WWW-Authenticate: Basic realm="Friendica"'); header('HTTP/1.0 401 Unauthorized'); die('This api requires login'); } @@ -98,6 +99,10 @@ **************************/ function api_call(&$a){ GLOBAL $API, $called_api; + + // preset + $type="json"; + foreach ($API as $p=>$info){ if (strpos($a->query_string, $p)===0){ $called_api= explode("/",$p); @@ -108,14 +113,14 @@ load_contact_links(local_user()); - logger('API call for ' . $a->user['username'] . ': ' . $a->query_string); + logger('API call for ' . $a->user['username'] . ': ' . $a->query_string); logger('API parameters: ' . print_r($_REQUEST,true)); - $type="json"; + $type="json"; if (strpos($a->query_string, ".xml")>0) $type="xml"; if (strpos($a->query_string, ".json")>0) $type="json"; if (strpos($a->query_string, ".rss")>0) $type="rss"; - if (strpos($a->query_string, ".atom")>0) $type="atom"; - + if (strpos($a->query_string, ".atom")>0) $type="atom"; + $r = call_user_func($info['func'], $a, $type); if ($r===false) return; @@ -125,8 +130,8 @@ header ("Content-Type: text/xml"); return ''."\n".$r; break; - case "json": - //header ("Content-Type: application/json"); + case "json": + //header ("Content-Type: application/json"); foreach($r as $rr) return json_encode($rr); break; @@ -138,19 +143,20 @@ header ("Content-Type: application/atom+xml"); return ''."\n".$r; break; - + } //echo "
"; var_dump($r); die(); } } + logger('API call not implemented: '.$a->query_string." - ".print_r($_REQUEST,true)); $r = ''; switch($type){ case "xml": header ("Content-Type: text/xml"); return ''."\n".$r; break; - case "json": - header ("Content-Type: application/json"); + case "json": + header ("Content-Type: application/json"); return json_encode(array('error' => 'not implemented')); break; case "rss": @@ -161,7 +167,6 @@ header ("Content-Type: application/atom+xml"); return ''."\n".$r; break; - } } @@ -178,7 +183,7 @@ 'updated' => api_date(null), 'atom_updated' => datetime_convert('UTC','UTC','now',ATOM_TIME), 'language' => $user_info['language'], - 'logo' => $a->get_baseurl()."/images/friendika-32.png", + 'logo' => $a->get_baseurl()."/images/friendica-32.png", ); return $arr; @@ -452,9 +457,54 @@ return null; } - // TODO - media uploads +/*Waitman Gobble Mod*/ + function api_statuses_mediap(&$a, $type) { + if (local_user()===false) { + logger('api_statuses_update: no user'); + return false; + } + $user_info = api_get_user($a); + + $_REQUEST['type'] = 'wall'; + $_REQUEST['profile_uid'] = local_user(); + $_REQUEST['api_source'] = true; + $txt = urldecode(requestdata('status')); + + require_once('library/HTMLPurifier.auto.php'); + require_once('include/html2bbcode.php'); + + if((strpos($txt,'<') !== false) || (strpos($txt,'>') !== false)) { + $txt = html2bb_video($txt); + $config = HTMLPurifier_Config::createDefault(); + $config->set('Cache.DefinitionImpl', null); + $purifier = new HTMLPurifier($config); + $txt = $purifier->purify($txt); + } + $txt = html2bbcode($txt); + + $a->argv[1]=$user_info['screen_name']; //should be set to username? + + $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo + require_once('mod/wall_upload.php'); + $bebop = wall_upload_post($a); + + //now that we have the img url in bbcode we can add it to the status and insert the wall item. + $_REQUEST['body']=$txt."\n\n".$bebop; + require_once('mod/item.php'); + item_post($a); + + // this should output the last post (the one we just posted). + return api_status_show($a,$type); + } + api_register_func('api/statuses/mediap','api_statuses_mediap', true); +/*Waitman Gobble Mod*/ + + function api_statuses_update(&$a, $type) { - if (local_user()===false) return false; + if (local_user()===false) { + logger('api_statuses_update: no user'); + return false; + } $user_info = api_get_user($a); // convert $_POST array items to the form we use for web posts. @@ -477,30 +527,30 @@ $purifier = new HTMLPurifier($config); $txt = $purifier->purify($txt); - $_POST['body'] = html2bbcode($txt); + $_REQUEST['body'] = html2bbcode($txt); } } else - $_POST['body'] = urldecode(requestdata('status')); + $_REQUEST['body'] = urldecode(requestdata('status')); $parent = requestdata('in_reply_to_status_id'); if(ctype_digit($parent)) - $_POST['parent'] = $parent; + $_REQUEST['parent'] = $parent; else - $_POST['parent_uri'] = $parent; + $_REQUEST['parent_uri'] = $parent; if(requestdata('lat') && requestdata('long')) - $_POST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long')); - $_POST['profile_uid'] = local_user(); + $_REQUEST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long')); + $_REQUEST['profile_uid'] = local_user(); if(requestdata('parent')) - $_POST['type'] = 'net-comment'; + $_REQUEST['type'] = 'net-comment'; else - $_POST['type'] = 'wall'; + $_REQUEST['type'] = 'wall'; // set this so that the item_post() function is quiet and doesn't redirect or emit json - $_POST['api_source'] = true; + $_REQUEST['api_source'] = true; // call out normal post function @@ -646,7 +696,7 @@ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` FROM `item`, `contact` WHERE `item`.`uid` = %d - AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $sql_extra @@ -703,7 +753,7 @@ FROM `item`, `contact` WHERE `item`.`uid` = %d AND `item`.`contact-id` = %d - AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $sql_extra @@ -735,7 +785,7 @@ if (local_user()===false) return false; $user_info = api_get_user($a); - // in friendika starred item are private + // in friendica starred item are private // return favorites only for self logger('api_favorites: self:' . $user_info['self']); @@ -757,7 +807,7 @@ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` FROM `item`, `contact` WHERE `item`.`uid` = %d - AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 AND `item`.`starred` = 1 AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 @@ -908,7 +958,7 @@ function api_statusnet_config(&$a,$type) { $name = $a->config['sitename']; $server = $a->get_hostname(); - $logo = $a->get_baseurl() . '/images/friendika-64.png'; + $logo = $a->get_baseurl() . '/images/friendica-64.png'; $email = $a->config['admin_email']; $closed = (($a->config['register_policy'] == REGISTER_CLOSED) ? 'true' : 'false'); $private = (($a->config['system']['block_public']) ? 'true' : 'false'); not implemented