]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
Normalize App parameter declaration (doc-include folders, boot)
[friendica.git] / include / api.php
index 123a4b9cfe8b425e5e450b746684e4364f10df8a..91a3a34d110f20a926b780bd3db3a7d0cd25fa14 100644 (file)
         * @hook 'logged_in'
         *              array $user     logged user record
         */
-       function api_login(&$a){
+       function api_login(App $a){
                // login with oauth
                try{
                        $oauth = new FKOAuth1();
                                dbesc(trim($user)),
                                dbesc($encrypted)
                        );
-                       if(count($r))
+                       if (dbm::is_result($r))
                                $record = $r[0];
                }
 
         * @param App $a
         * @return string API call result
         */
-       function api_call(&$a){
-               GLOBAL $API, $called_api;
+       function api_call(App $a){
+               global $API, $called_api;
 
                $type="json";
                if (strpos($a->query_string, ".xml")>0) $type="xml";
         * @param array $user_info
         * @return array
         */
-       function api_rss_extra(&$a, $arr, $user_info){
+       function api_rss_extra(App $a, $arr, $user_info){
                if (is_null($user_info)) $user_info = api_get_user($a);
                $arr['$user'] = $user_info;
                $arr['$rss'] = array(
-                       'alternate' => $user_info['url'],
-                       'self' => App::get_baseurl(). "/". $a->query_string,
-                       'base' => App::get_baseurl(),
-                       'updated' => api_date(null),
+                       'alternate'    => $user_info['url'],
+                       'self'         => App::get_baseurl(). "/". $a->query_string,
+                       'base'         => App::get_baseurl(),
+                       'updated'      => api_date(null),
                        'atom_updated' => datetime_convert('UTC','UTC','now',ATOM_TIME),
-                       'language' => $user_info['language'],
-                       'logo'  => App::get_baseurl()."/images/friendica-32.png",
+                       'language'     => $user_info['language'],
+                       'logo'         => App::get_baseurl()."/images/friendica-32.png",
                );
 
                return $arr;
         * @param int|string $contact_id Contact ID or URL
         * @param string $type Return type (for errors)
         */
-       function api_get_user(&$a, $contact_id = Null, $type = "json"){
+       function api_get_user(App $a, $contact_id = Null, $type = "json"){
                global $called_api;
                $user = null;
                $extra_query = "";
                // count friends
                $r = q("SELECT count(*) as `count` FROM `contact`
                                WHERE  `uid` = %d AND `rel` IN ( %d, %d )
-                               AND `self`=0 AND `blocked`=0 AND `pending`=0 AND `hidden`=0",
+                               AND `self`=0 AND NOT `blocked` AND `hidden`=0",
                                intval($uinfo[0]['uid']),
                                intval(CONTACT_IS_SHARING),
                                intval(CONTACT_IS_FRIEND)
 
                $r = q("SELECT count(*) as `count` FROM `contact`
                                WHERE  `uid` = %d AND `rel` IN ( %d, %d )
-                               AND `self`=0 AND `blocked`=0 AND `pending`=0 AND `hidden`=0",
+                               AND `self`=0 AND NOT `blocked` AND `hidden`=0",
                                intval($uinfo[0]['uid']),
                                intval(CONTACT_IS_FOLLOWER),
                                intval(CONTACT_IS_FRIEND)
         * @param array $item : item from db
         * @return array(array:author, array:owner)
         */
-       function api_item_get_user(&$a, $item) {
+       function api_item_get_user(App $a, $item) {
 
                $status_user = api_get_user($a, $item["author-link"]);
 
 
                if (isset($_GET["q"])) {
                        $r = q("SELECT id FROM `contact` WHERE `uid` = 0 AND `name` = '%s'", dbesc($_GET["q"]));
-                       if (!count($r))
+                       if (!dbm::is_result($r))
                                $r = q("SELECT `id` FROM `contact` WHERE `uid` = 0 AND `nick` = '%s'", dbesc($_GET["q"]));
 
-                       if (count($r)) {
+                       if (dbm::is_result($r)) {
                                $k = 0;
                                foreach ($r AS $user) {
                                        $user_info = api_get_user($a, $user["id"], "json");
                        `contact`.`id` AS `cid`
                        FROM `item`
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`uid` = %d AND `verb` = '%s'
                        AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                        $sql_extra
                        `user`.`nickname`, `user`.`hidewall`
                        FROM `item`
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        STRAIGHT_JOIN `user` ON `user`.`uid` = `item`.`uid`
                                AND NOT `user`.`hidewall`
                        WHERE `verb` = '%s' AND `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
                        `contact`.`id` AS `cid`
                        FROM `item`
                        INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                        AND `item`.`uid` = %d AND `item`.`verb` = '%s'
                        $sql_extra",
                        `contact`.`id` AS `cid`
                        FROM `item`
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`parent` = %d AND `item`.`visible`
                        AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                        AND `item`.`uid` = %d AND `item`.`verb` = '%s'
                        `contact`.`id` AS `cid`
                        FROM `item`
                        INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                        AND NOT `item`.`private` AND `item`.`allow_cid` = '' AND `item`.`allow`.`gid` = ''
                        AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
                        `contact`.`id` AS `cid`
                        FROM `item` FORCE INDEX (`uid_id`)
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`uid` = %d AND `verb` = '%s'
                        AND NOT (`item`.`author-link` IN ('https://%s', 'http://%s'))
                        AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                        `contact`.`id` AS `cid`
                        FROM `item` FORCE INDEX (`uid_contactid_id`)
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        WHERE `item`.`uid` = %d AND `verb` = '%s'
                        AND `item`.`contact-id` = %d
                        AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
                                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
+                               AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                                $sql_extra
                                AND `item`.`id`>%d
                                ORDER BY `item`.`id` DESC LIMIT %d ,%d ",
                                                        'religion' => $profile['religion'],
                                                        'public_keywords' => $profile['pub_keywords'],
                                                        'private_keywords' => $profile['prv_keywords'],
-                                                       'likes' => bbcode(api_clean_plain_items($profile['likes']), false, false, 2, true),
-                                                       'dislikes' => bbcode(api_clean_plain_items($profile['dislikes']), false, false, 2, true),
-                                                       'about' => bbcode(api_clean_plain_items($profile['about']), false, false, 2, true),
-                                                       'music' => bbcode(api_clean_plain_items($profile['music']), false, false, 2, true),
-                                                       'book' => bbcode(api_clean_plain_items($profile['book']), false, false, 2, true),
-                                                       'tv' => bbcode(api_clean_plain_items($profile['tv']), false, false, 2, true),
-                                                       'film' => bbcode(api_clean_plain_items($profile['film']), false, false, 2, true),
-                                                       'interest' => bbcode(api_clean_plain_items($profile['interest']), false, false, 2, true),
-                                                       'romance' => bbcode(api_clean_plain_items($profile['romance']), false, false, 2, true),
-                                                       'work' => bbcode(api_clean_plain_items($profile['work']), false, false, 2, true),
-                                                       'education' => bbcode(api_clean_plain_items($profile['education']), false, false, 2, true),
-                                                       'social_networks' => bbcode(api_clean_plain_items($profile['contact']), false, false, 2, true),
+                                                       'likes' => bbcode(api_clean_plain_items($profile['likes']), false, false, 2, false),
+                                                       'dislikes' => bbcode(api_clean_plain_items($profile['dislikes']), false, false, 2, false),
+                                                       'about' => bbcode(api_clean_plain_items($profile['about']), false, false, 2, false),
+                                                       'music' => bbcode(api_clean_plain_items($profile['music']), false, false, 2, false),
+                                                       'book' => bbcode(api_clean_plain_items($profile['book']), false, false, 2, false),
+                                                       'tv' => bbcode(api_clean_plain_items($profile['tv']), false, false, 2, false),
+                                                       'film' => bbcode(api_clean_plain_items($profile['film']), false, false, 2, false),
+                                                       'interest' => bbcode(api_clean_plain_items($profile['interest']), false, false, 2, false),
+                                                       'romance' => bbcode(api_clean_plain_items($profile['romance']), false, false, 2, false),
+                                                       'work' => bbcode(api_clean_plain_items($profile['work']), false, false, 2, false),
+                                                       'education' => bbcode(api_clean_plain_items($profile['education']), false, false, 2, false),
+                                                       'social_networks' => bbcode(api_clean_plain_items($profile['contact']), false, false, 2, false),
                                                        'homepage' => $profile['homepage'],
                                                        'users' => null);
                        return $profile;
-               } 
+               }
        }
 
        /**
                if ($user_info['self'] == 0)
                        $sql_extra = " AND false ";
 
-               $r = q("SELECT `nurl` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 $sql_extra",
+               $r = q("SELECT `nurl` FROM `contact` WHERE `uid` = %d AND NOT `self` AND (NOT `blocked` OR `pending`) $sql_extra",
                        intval(api_user())
                );
 
                        intval(api_user())
                );
 
-               if(!dbm::is_result($r))
+               if (!dbm::is_result($r))
                        return;
 
                $ids = array();
                // BadRequestException if no id specified (for clients using Twitter API)
                if ($id == 0) throw new BadRequestException('Message id not specified');
 
-               // add parent-uri to sql command if specified by calling app            
+               // add parent-uri to sql command if specified by calling app
                $sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : "");
 
                // get data of the specified message id
                $r = q("SELECT `id` FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
-                       intval($uid), 
+                       intval($uid),
                        intval($id));
-       
+
                // error message if specified id is not in database
                if (!dbm::is_result($r)) {
                        if ($verbose == "true") {
                }
 
                // delete message
-               $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra, 
-                       intval($uid), 
+               $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra,
+                       intval($uid),
                        intval($id));
 
                if ($verbose == "true") {
                'image/gif' => 'gif'
                );
                $data = array('photo'=>array());
-               if($r) {
-                       foreach($r as $rr) {
+               if ($r) {
+                       foreach ($r as $rr) {
                                $photo = array();
                                $photo['id'] = $rr['resource-id'];
                                $photo['album'] = $rr['album'];
                        intval(api_user())
                );
 
-               if ((! count($r)) || ($r[0]['network'] !== NETWORK_DFRN))
+               if ((! dbm::is_result($r)) || ($r[0]['network'] !== NETWORK_DFRN))
                        throw new BadRequestException("Unknown contact");
 
                $cid = $r[0]['id'];
        function api_share_as_retweet(&$item) {
                $body = trim($item["body"]);
 
-               if (diaspora::is_reshare($body, false)===false) {
+               if (Diaspora::is_reshare($body, false)===false) {
                        return false;
                }
 
                                intval($uid),
                                intval($gid));
                        // error message if specified gid is not in database
-                       if (count($r) == 0)
+                       if (!dbm::is_result($r))
                                throw new BadRequestException("gid not available");
                }
                else
                        intval($uid),
                        intval($gid));
                // error message if specified gid is not in database
-               if (count($r) == 0)
+               if (!dbm::is_result($r))
                        throw new BadRequestException('gid not available');
 
                // get data of the specified group id and group name
                        intval($gid),
                        dbesc($name));
                // error message if specified gid is not in database
-               if (count($rname) == 0)
+               if (!dbm::is_result($rname))
                        throw new BadRequestException('wrong group name');
 
                // delete group
                        intval($uid),
                        dbesc($name));
                // error message if specified group name already exists
-               if (count($rname) != 0)
+               if (dbm::is_result($rname))
                        throw new BadRequestException('group name already exists');
 
                // check if specified group name is a deleted group
                        intval($uid),
                        dbesc($name));
                // error message if specified group name already exists
-               if (count($rname) != 0)
+               if (dbm::is_result($rname))
                        $reactivate_group = true;
 
                // create group
 
                // get data of the specified message id
                $r = q("SELECT `id` FROM `mail` WHERE `id` = %d AND `uid` = %d",
-                       intval($id), 
+                       intval($id),
                        intval($uid));
                // error message if specified id is not in database
                if (!dbm::is_result($r)) {
                }
 
                // update seen indicator
-               $result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d", 
-                       intval($id), 
+               $result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d",
+                       intval($id),
                        intval($uid));
 
                if ($result) {
 
                $profile_url = $user_info["url"];
                // message if nothing was found
-               if (count($r) == 0) 
+               if (!dbm::is_result($r))
+                       $success = array('success' => false, 'search_results' => 'problem with query');
+               else if (count($r) == 0)
                        $success = array('success' => false, 'search_results' => 'nothing found');
                else {
                        $ret = Array();
        }
        api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
 
-
        /**
         * @brief return data of all the profiles a user has to the client
         *
                                intval(api_user()),
                                intval($profileid));
                        // error message if specified gid is not in database
-                       if (count($r) == 0)
+                       if (!dbm::is_result($r))
                                throw new BadRequestException("profile_id not available");
                }
                else