]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
truncate overflow text on acl selector items (3 themes)
[friendica.git] / include / api.php
index aa42313b2a15387c7488a0730c42b603a2812754..1f58a6baae3e77a264789d754ebe95003bc1949e 100644 (file)
@@ -1,6 +1,7 @@
 <?php
        require_once("bbcode.php");
        require_once("datetime.php");
+       require_once("conversation.php");
        
        /* 
         * Twitter-Like API
@@ -8,7 +9,7 @@
         */
 
        $API = Array();
-        
+       $called_api = Null; 
 
        function api_date($str){
                //Wed May 23 06:01:13 +0000 2007
         *  MAIN API ENTRY POINT  *
         **************************/
        function api_call(&$a){
-               GLOBAL $API;
+               GLOBAL $API, $called_api;
                foreach ($API as $p=>$info){
                        if (strpos($a->query_string, $p)===0){
+                               $called_api= explode("/",$p);
                                #unset($_SERVER['PHP_AUTH_USER']);
                                if ($info['auth']===true && local_user()===false) {
                                                api_login($a);
                                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                                break;
                                        case "json": 
-                                               header ("Content-Type: application/json");  
+                                               //header ("Content-Type: application/json");  
                                                foreach($r as $rr)
                                                    return json_encode($rr);
                                                break;
         * Returns user info array.
         */
        function api_get_user(&$a, $contact_id = Null){
+               global $called_api;
                $user = null;
                $extra_query = "";
 
                if(is_null($user) && x($_GET, 'screen_name')) {
                        $user = dbesc($_GET['screen_name']);    
                        $extra_query = "AND `contact`.`nick` = '%s' ";
+                       if (local_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(local_user());
+                       
                }
                
-               if (is_null($user) && $a->argc > 3){
-                       list($user, $null) = explode(".",$a->argv[3]);
+               if (is_null($user) && $a->argc > (count($called_api)-1)){
+                       $argid = count($called_api);
+                       list($user, $null) = explode(".",$a->argv[$argid]);
                        if(is_numeric($user)){
                                $user = intval($user);
                                $extra_query = "AND `contact`.`id` = %d ";
                        } else {
                                $user = dbesc($user);
                                $extra_query = "AND `contact`.`nick` = '%s' ";
+                               if (local_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(local_user());
                        }
                }
                
                }
 
                $ret = Array(
+                       'self' => intval($uinfo[0]['self']),
                        'uid' => intval($uinfo[0]['uid']),
                        'id' => intval($uinfo[0]['cid']),
                        'name' => $uinfo[0]['name'],
                        'followers_count' => intval($countfollowers),
                        'favourites_count' => intval($starred),
                        'contributors_enabled' => false,
-                       'follow_request_sent' => false,
+                       'follow_request_sent' => true,
                        'profile_background_color' => 'cfe8f6',
                        'profile_text_color' => '000000',
                        'profile_link_color' => 'FF8500',
                $user_info = api_get_user($a);
                // get last newtork messages
 
+
                // params
                $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
                $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
                $user_info = api_get_user($a);
                // get last newtork messages
 
+
+               logger("api_statuses_user_timeline: local_user: ". local_user() .
+                          "\nuser_info: ".print_r($user_info, true) .
+                          "\n_REQUEST:  ".print_r($_REQUEST, true),
+                          LOGGER_DEBUG);
+
                // params
                $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
                $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
                
                $start = $page*$count;
 
+               if ($user_info['self']==1) $sql_extra = "AND `item`.`wall` = 1 ";
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
                        FROM `item`, `contact`
                        WHERE `item`.`uid` = %d
+                       AND `item`.`contact-id` = %d
                        AND `item`.`visible` = 1 AND `item`.`deleted` = 0
-                       AND `item`.`wall` = 1
                        AND `contact`.`id` = `item`.`contact-id`
                        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
                        $sql_extra
                        AND `item`.`id`>%d
                        ORDER BY `item`.`received` DESC LIMIT %d ,%d ",
-                       intval($user_info['uid']),
+                       intval(local_user()),
+                       intval($user_info['id']),
                        intval($since_id),
                        intval($start), intval($count)
                );
                if (local_user()===false) return false;
                
                $user_info = api_get_user($a);
-               // get last newtork messages
-               
-               // params
-               $count = (x($_GET,'count')?$_GET['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
+               // in friendika starred item are private
+               // return favorites only for self
+               logger('api_favorites: self:' . $user_info['self']);
                
-               $start = $page*$count;
-
-               $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
-                       `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
-                       `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`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`.`starred` = 1
-                       AND `contact`.`id` = `item`.`contact-id`
-                       AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                       $sql_extra
-                       ORDER BY `item`.`received` DESC LIMIT %d ,%d ",
-                       intval($user_info['uid']),
-                       intval($start), intval($count)
-               );
-
-               $ret = api_format_items($r,$user_info);
+               if ($user_info['self']==0) {
+                       $ret = array();
+               } else {
+                       
+                       
+                       // params
+                       $count = (x($_GET,'count')?$_GET['count']:20);
+                       $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
+                       if ($page<0) $page=0;
+                       
+                       $start = $page*$count;
+
+                       $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
+                               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+                               `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`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`.`starred` = 1
+                               AND `contact`.`id` = `item`.`contact-id`
+                               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+                               $sql_extra
+                               ORDER BY `item`.`received` DESC LIMIT %d ,%d ",
+                               intval($user_info['uid']),
+                               intval($start), intval($count)
+                       );
 
+                       $ret = api_format_items($r,$user_info);
+               
+               }
                
                $data = array('$statuses' => $ret);
                switch($type){
                $ret = Array();
 
                foreach($r as $item) {
+                       localize_item($item);
                        $status_user = (($item['cid']==$user_info['id'])?$user_info: api_item_get_user($a,$item));
                        $status = array(
                                'created_at'=> api_date($item['created']),
                if (local_user()===false) return false;
                $user_info = api_get_user($a);
                
+               
+               // friends and followers only for self
+               if ($user_info['self']==0){
+                       return false;
+               }
+               
                if (x($_GET,'cursor') && $_GET['cursor']=='undefined'){
                        /* this is to stop Hotot to load friends multiple times
                        *  I'm not sure if I'm missing return something or
                        *  is a bug in hotot. Workaround, meantime
                        */
                        
-                       $ret=Array();
-                       $data = array('$users' => $ret);
-                       return  api_apply_template("friends", $type, $data);
+                       /*$ret=Array();
+                       return array('$users' => $ret);*/
+                       return false;
                }
                
                if($qtype == 'friends')
                }
 
                
-               $data = array('$users' => $ret);
-               return  api_apply_template("friends", $type, $data);
+               return array('$users' => $ret);
 
        }
        function api_statuses_friends(&$a, $type){
-               return api_statuses_f($a,$type,"friends");
+               $data =  api_statuses_f($a,$type,"friends");
+               if ($data===false) return false;
+               return  api_apply_template("friends", $type, $data);
        }
        function api_statuses_followers(&$a, $type){
-               return api_statuses_f($a,$type,"followers");
+               $data = api_statuses_f($a,$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);