]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
From Tobias H - catch some irregularities caused by cut/paste code
[friendica.git] / include / api.php
old mode 100644 (file)
new mode 100755 (executable)
index aa05f0a..013f4b9
@@ -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');
                }
         **************************/
        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);
 
                                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;
 
                                                header ("Content-Type: text/xml");
                                                return '<?xml version="1.0" encoding="UTF-8"?>'."\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;
                                                header ("Content-Type: application/atom+xml");
                                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                                break;
-                                               
+
                                }
                                //echo "<pre>"; var_dump($r); die();
                        }
                }
+               logger('API call not implemented: '.$a->query_string." - ".print_r($_REQUEST,true));
                $r = '<status><error>not implemented</error></status>';
                switch($type){
                        case "xml":
                                header ("Content-Type: text/xml");
                                return '<?xml version="1.0" encoding="UTF-8"?>'."\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":
                                header ("Content-Type: application/atom+xml");
                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                break;
-                               
                }
        }
 
                        '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;
                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.
                                $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
 
                        `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
                        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
                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']);
                
                                `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
        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');