X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fapi.php;h=bd579bf19adc3a1dacc0d5f3d9159a5caf0aab18;hb=5d0e7d24babf345431df73472fc0d1c7c80996f9;hp=67e191725897aca3b4ff89aad97038f7c4af82f8;hpb=4a473611163a12b48d3bbad71dc54765be8789f9;p=friendica.git diff --git a/include/api.php b/include/api.php index 67e1917258..bd579bf19a 100644 --- a/include/api.php +++ b/include/api.php @@ -7,6 +7,7 @@ */ use Friendica\App; +use Friendica\Core\System; use Friendica\Core\Config; require_once 'include/HTTPExceptions.php'; @@ -96,7 +97,7 @@ $called_api = null; * * Register a function to be the endpont for defined API path. * - * @param string $path API URL path, relative to App::get_baseurl() + * @param string $path API URL path, relative to System::baseUrl() * @param string $func Function name to call on path request * @param bool $auth API need logged user * @param string $method HTTP method reqiured to call this endpoint. @@ -436,12 +437,12 @@ $called_api = null; $arr['$user'] = $user_info; $arr['$rss'] = array( 'alternate' => $user_info['url'], - 'self' => App::get_baseurl() . "/" . $a->query_string, - 'base' => App::get_baseurl(), + 'self' => System::baseUrl() . "/" . $a->query_string, + 'base' => System::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", + 'logo' => System::baseUrl() . "/images/friendica-32.png", ); return $arr; @@ -456,10 +457,13 @@ $called_api = null; * Contact url or False if contact id is unknown */ function api_unique_id_to_url($id) { - $r = q("SELECT `url` FROM `contact` WHERE `uid` = 0 AND `id` = %d LIMIT 1", - intval($id)); + $r = dba::select('contact', array('url'), array('uid' => 0, 'id' => $id), array('limit' => 1)); - return (dbm::is_result($r) && $r[0]["url"]); + if (dbm::is_result($r)) { + return $r["url"]; + } else { + return false; + } } /** @@ -480,7 +484,7 @@ $called_api = null; logger("api_get_user: Fetching user data for user ".$contact_id, LOGGER_DEBUG); // Searching for contact URL - if (!is_null($contact_id) AND (intval($contact_id) == 0)) { + if (!is_null($contact_id) && (intval($contact_id) == 0)) { $user = dbesc(normalise_link($contact_id)); $url = $user; $extra_query = "AND `contact`.`nurl` = '%s' "; @@ -490,7 +494,7 @@ $called_api = null; } // Searching for contact id with uid = 0 - if (!is_null($contact_id) AND (intval($contact_id) != 0)) { + if (!is_null($contact_id) && (intval($contact_id) != 0)) { $user = dbesc(api_unique_id_to_url($contact_id)); if ($user == "") { @@ -535,7 +539,7 @@ $called_api = null; } } - if (is_null($user) AND ($a->argc > (count($called_api) - 1)) AND (count($called_api) > 0)) { + if (is_null($user) && ($a->argc > (count($called_api) - 1)) && (count($called_api) > 0)) { $argid = count($called_api); list($user, $null) = explode(".", $a->argv[$argid]); if (is_numeric($user)) { @@ -597,7 +601,7 @@ $called_api = null; $network_name = network_to_name($r[0]['network'], $r[0]['url']); // If no nick where given, extract it from the address - if (($r[0]['nick'] == "") OR ($r[0]['name'] == $r[0]['nick'])) { + if (($r[0]['nick'] == "") || ($r[0]['name'] == $r[0]['nick'])) { $r[0]['nick'] = api_get_nick($r[0]["url"]); } @@ -713,7 +717,7 @@ $called_api = null; $starred = 0; // Add a nick if it isn't present there - if (($uinfo[0]['nick'] == "") OR ($uinfo[0]['name'] == $uinfo[0]['nick'])) { + if (($uinfo[0]['nick'] == "") || ($uinfo[0]['name'] == $uinfo[0]['nick'])) { $uinfo[0]['nick'] = api_get_nick($uinfo[0]["url"]); } @@ -746,12 +750,12 @@ $called_api = null; 'contributors_enabled' => false, 'is_translator' => false, 'is_translation_enabled' => false, - 'following' => (($uinfo[0]['rel'] == CONTACT_IS_FOLLOWER) OR ($uinfo[0]['rel'] == CONTACT_IS_FRIEND)), + 'following' => (($uinfo[0]['rel'] == CONTACT_IS_FOLLOWER) || ($uinfo[0]['rel'] == CONTACT_IS_FRIEND)), 'follow_request_sent' => false, 'statusnet_blocking' => false, 'notifications' => false, /// @TODO old way? - //'statusnet_profile_url' => App::get_baseurl()."/contacts/".$uinfo[0]['cid'], + //'statusnet_profile_url' => System::baseUrl()."/contacts/".$uinfo[0]['cid'], 'statusnet_profile_url' => $uinfo[0]['url'], 'uid' => intval($uinfo[0]['uid']), 'cid' => intval($uinfo[0]['cid']), @@ -774,10 +778,10 @@ $called_api = null; $status_user = api_get_user($a, $item["author-link"]); - $status_user["protected"] = (($item["allow_cid"] != "") OR - ($item["allow_gid"] != "") OR - ($item["deny_cid"] != "") OR - ($item["deny_gid"] != "") OR + $status_user["protected"] = (($item["allow_cid"] != "") || + ($item["allow_gid"] != "") || + ($item["deny_cid"] != "") || + ($item["deny_gid"] != "") || $item["private"]); if ($item['thr-parent'] == $item['uri']) { @@ -1161,8 +1165,8 @@ $called_api = null; if (dbm::is_result($r)) { $phototypes = Photo::supportedTypes(); $ext = $phototypes[$r[0]['type']]; - $_REQUEST['body'] .= "\n\n" . '[url=' . App::get_baseurl() . '/photos/' . $r[0]['nickname'] . '/image/' . $r[0]['resource-id'] . ']'; - $_REQUEST['body'] .= '[img]' . App::get_baseurl() . '/photo/' . $r[0]['resource-id'] . '-' . $r[0]['scale'] . '.' . $ext . '[/img][/url]'; + $_REQUEST['body'] .= "\n\n" . '[url=' . System::baseUrl() . '/photos/' . $r[0]['nickname'] . '/image/' . $r[0]['resource-id'] . ']'; + $_REQUEST['body'] .= '[img]' . System::baseUrl() . '/photo/' . $r[0]['resource-id'] . '-' . $r[0]['scale'] . '.' . $ext . '[/img][/url]'; } } @@ -1302,9 +1306,9 @@ $called_api = null; $status_info["entities"] = $converted["entities"]; } - if (($lastwall['item_network'] != "") AND ($status["source"] == 'web')) { + if (($lastwall['item_network'] != "") && ($status["source"] == 'web')) { $status_info["source"] = network_to_name($lastwall['item_network'], $user_info['url']); - } elseif (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $status_info["source"])) { + } elseif (($lastwall['item_network'] != "") && (network_to_name($lastwall['item_network'], $user_info['url']) != $status_info["source"])) { $status_info["source"] = trim($status_info["source"].' ('.network_to_name($lastwall['item_network'], $user_info['url']).')'); } @@ -1390,11 +1394,11 @@ $called_api = null; $user_info["status"]["entities"] = $converted["entities"]; } - if (($lastwall['item_network'] != "") AND ($user_info["status"]["source"] == 'web')) { + if (($lastwall['item_network'] != "") && ($user_info["status"]["source"] == 'web')) { $user_info["status"]["source"] = network_to_name($lastwall['item_network'], $user_info['url']); } - if (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $user_info["status"]["source"])) { + if (($lastwall['item_network'] != "") && (network_to_name($lastwall['item_network'], $user_info['url']) != $user_info["status"]["source"])) { $user_info["status"]["source"] = trim($user_info["status"]["source"] . ' (' . network_to_name($lastwall['item_network'], $user_info['url']) . ')'); } @@ -1814,7 +1818,7 @@ $called_api = null; INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid` 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 NOT `item`.`private` AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' $sql_extra AND `item`.`id`=%d", @@ -1926,7 +1930,7 @@ $called_api = null; $start = $page * $count; // Ugly code - should be changed - $myurl = App::get_baseurl() . '/profile/'. $a->user['nickname']; + $myurl = System::baseUrl() . '/profile/'. $a->user['nickname']; $myurl = substr($myurl,strpos($myurl, '://') + 3); //$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl); $myurl = str_replace('www.', '', $myurl); @@ -2175,7 +2179,7 @@ $called_api = null; `contact`.`id` AS `cid` FROM `item`, `contact` WHERE `item`.`uid` = %d - AND `item`.`visible` = 1 and `item`.`moderated` = 0 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 (NOT `contact`.`blocked` OR `contact`.`pending`) @@ -2229,7 +2233,7 @@ $called_api = null; //don't send title to regular StatusNET requests to avoid confusing these apps if (x($_GET, 'getText')) { - $ret['title'] = $item['title'] ; + $ret['title'] = $item['title']; if ($_GET['getText'] == 'html') { $ret['text'] = bbcode($item['body'], false, false); } elseif ($_GET['getText'] == 'plain') { @@ -2260,30 +2264,49 @@ $called_api = null; $statustitle = trim($item['title']); - if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false)) { + if (($statustitle != '') && (strpos($statusbody, $statustitle) !== false)) { $statustext = trim($statusbody); } else { $statustext = trim($statustitle."\n\n".$statusbody); } - if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000)) { + if (($item["network"] == NETWORK_FEED) && (strlen($statustext)> 1000)) { $statustext = substr($statustext, 0, 1000)."... \n".$item["plink"]; } $statushtml = trim(bbcode($body, false, false)); + // Workaround for clients with limited HTML parser functionality $search = array("
", "
", "
", "

", "

", "

", "

", "

", "

", "

", "

", "
", "
", "
", "
"); - $replace = array("
\n", "\n
", "
\n", - "\n

", "

\n", "\n

", "

\n", - "\n

", "

\n", "\n

", "

\n", - "\n
", "
\n", "\n
", "
\n"); + $replace = array("
", "
", "

", + "

", "


", "

", "


", + "

", "


", "

", "


", + "
", "

", "
", "

"); $statushtml = str_replace($search, $replace, $statushtml); if ($item['title'] != "") { - $statushtml = "

" . bbcode($item['title']) . "

\n" . $statushtml; + $statushtml = "

" . bbcode($item['title']) . "


" . $statushtml; + } + + do { + $oldtext = $statushtml; + $statushtml = str_replace("

", "
", $statushtml); + } while ($oldtext != $statushtml); + + if (substr($statushtml, 0, 4) == '
') { + $statushtml = substr($statushtml, 4); + } + + if (substr($statushtml, 0, -4) == '
') { + $statushtml = substr($statushtml, -4); + } + + // feeds without body should contain the link + if (($item['network'] == NETWORK_FEED) && (strlen($item['body']) == 0)) { + $statushtml .= bbcode($item['plink']); } $entities = api_get_entitities($statustext, $body); @@ -2394,8 +2417,8 @@ $called_api = null; $offset = 0; //foreach ($urls[1] AS $id=>$url) { foreach ($ordered_urls AS $url) { - if ((substr($url["title"], 0, 7) != "http://") AND (substr($url["title"], 0, 8) != "https://") AND - !strpos($url["title"], "http://") AND !strpos($url["title"], "https://")) + if ((substr($url["title"], 0, 7) != "http://") && (substr($url["title"], 0, 8) != "https://") && + !strpos($url["title"], "http://") && !strpos($url["title"], "https://")) $display_url = $url["title"]; else { $display_url = str_replace(array("http://www.", "https://www."), array("", ""), $url["url"]); @@ -2447,7 +2470,7 @@ $called_api = null; $scale = scale_image($image[0], $image[1], 150); $sizes["thumb"] = array("w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"); - if (($image[0] > 150) OR ($image[1] > 150)) { + if (($image[0] > 150) || ($image[1] > 150)) { $scale = scale_image($image[0], $image[1], 340); $sizes["small"] = array("w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"); } @@ -2455,7 +2478,7 @@ $called_api = null; $scale = scale_image($image[0], $image[1], 600); $sizes["medium"] = array("w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"); - if (($image[0] > 600) OR ($image[1] > 600)) { + if (($image[0] > 600) || ($image[1] > 600)) { $scale = scale_image($image[0], $image[1], 1024); $sizes["large"] = array("w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"); } @@ -2486,7 +2509,7 @@ $called_api = null; $text = preg_replace_callback( "|data:image/([^;]+)[^=]+=*|m", function($match) use ($item) { - return App::get_baseurl()."/display/".$item['guid']; + return System::baseUrl()."/display/".$item['guid']; }, $text); return $text; @@ -2660,7 +2683,7 @@ $called_api = null; list($status_user, $owner_user) = api_item_get_user($a, $item); // Look if the posts are matching if they should be filtered by user id - if ($filter_user AND ($status_user["id"] != $user_info["id"])) { + if ($filter_user && ($status_user["id"] != $user_info["id"])) { continue; } @@ -2704,9 +2727,9 @@ $called_api = null; $status["entities"] = $converted["entities"]; } - if (($item['item_network'] != "") AND ($status["source"] == 'web')) { + if (($item['item_network'] != "") && ($status["source"] == 'web')) { $status["source"] = network_to_name($item['item_network'], $user_info['url']); - } elseif (($item['item_network'] != "") AND (network_to_name($item['item_network'], $user_info['url']) != $status["source"])) { + } elseif (($item['item_network'] != "") && (network_to_name($item['item_network'], $user_info['url']) != $status["source"])) { $status["source"] = trim($status["source"].' ('.network_to_name($item['item_network'], $user_info['url']).')'); } @@ -2715,7 +2738,7 @@ $called_api = null; // It doesn't work reliable with the link if its a feed //$IsRetweet = ($item['owner-link'] != $item['author-link']); //if ($IsRetweet) - // $IsRetweet = (($item['owner-name'] != $item['author-name']) OR ($item['owner-avatar'] != $item['author-avatar'])); + // $IsRetweet = (($item['owner-name'] != $item['author-name']) || ($item['owner-avatar'] != $item['author-avatar'])); if ($item["id"] == $item["parent"]) { @@ -2903,7 +2926,7 @@ $called_api = null; $name = $a->config['sitename']; $server = $a->get_hostname(); - $logo = App::get_baseurl() . '/images/friendica-64.png'; + $logo = System::baseUrl() . '/images/friendica-64.png'; $email = $a->config['admin_email']; $closed = (($a->config['register_policy'] == REGISTER_CLOSED) ? 'true' : 'false'); $private = ((Config::get('system', 'block_public')) ? 'true' : 'false'); @@ -2912,7 +2935,7 @@ $called_api = null; $texlimit = string($a->config['api_import_size']); } $ssl = ((Config::get('system', 'have_ssl')) ? 'true' : 'false'); - $sslserver = (($ssl === 'true') ? str_replace('http:','https:',App::get_baseurl()) : ''); + $sslserver = (($ssl === 'true') ? str_replace('http:','https:',System::baseUrl()) : ''); $config = array( 'site' => array('name' => $name,'server' => $server, 'theme' => 'default', 'path' => '', @@ -3014,7 +3037,7 @@ $called_api = null; if (api_user() === false) throw new ForbiddenException(); - if (!x($_POST, "text") OR (!x($_POST,"screen_name") AND !x($_POST,"user_id"))) return; + if (!x($_POST, "text") || (!x($_POST,"screen_name") && !x($_POST,"user_id"))) return; $sender = api_get_user($a); @@ -3027,8 +3050,9 @@ $called_api = null; api_best_nickname($r); $recipient = api_get_user($a, $r[0]['nurl']); - } else + } else { $recipient = api_get_user($a, $_POST['user_id']); + } $replyto = ''; $sub = ''; @@ -3413,7 +3437,7 @@ $called_api = null; $photo['album'] = $rr['album']; $photo['filename'] = $rr['filename']; $photo['type'] = $rr['type']; - $thumb = App::get_baseurl() . "/photo/" . $rr['resource-id'] . "-" . $rr['scale'] . "." . $typetoext[$rr['type']]; + $thumb = System::baseUrl() . "/photo/" . $rr['resource-id'] . "-" . $rr['scale'] . "." . $typetoext[$rr['type']]; $photo['created'] = $rr['created']; $photo['edited'] = $rr['edited']; $photo['desc'] = $rr['desc']; @@ -3711,15 +3735,15 @@ $called_api = null; ); $r = q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `self` AND `uid` = %d", - dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-4.' . $fileext), - dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-5.' . $fileext), - dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-6.' . $fileext), + dbesc(System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $fileext), + dbesc(System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $fileext), + dbesc(System::baseUrl() . '/photo/' . $data['photo']['id'] . '-6.' . $fileext), intval(local_user()) ); } else { $r = q("UPDATE `profile` SET `photo` = '%s', `thumb` = '%s' WHERE `id` = %d AND `uid` = %d", - dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype), - dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype), + dbesc(System::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype), + dbesc(System::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype), intval($_REQUEST['profile']), intval(local_user()) ); @@ -3735,13 +3759,12 @@ $called_api = null; // Update global directory in background //$user = api_get_user(get_app()); - $url = App::get_baseurl() . '/profile/' . get_app()->user['nickname']; + $url = System::baseUrl() . '/profile/' . get_app()->user['nickname']; if ($url && strlen(get_config('system', 'directory'))) { proc_run(PRIORITY_LOW, "include/directory.php", $url); } - require_once 'include/profile_update.php'; - profile_change(); + proc_run(PRIORITY_LOW, 'include/profile_update.php', api_user()); // output for client if ($data) { @@ -3965,8 +3988,8 @@ $called_api = null; ); // adds link to the thumbnail scale photo - $arr['body'] = '[url=' . App::get_baseurl() . '/photos/' . $owner_record[0]['name'] . '/image/' . $hash . ']' - . '[img]' . App::get_baseurl() . '/photo/' . $hash . '-' . "2" . '.'. $typetoext[$filetype] . '[/img]' + $arr['body'] = '[url=' . System::baseUrl() . '/photos/' . $owner_record[0]['nick'] . '/image/' . $hash . ']' + . '[img]' . System::baseUrl() . '/photo/' . $hash . '-' . "2" . '.'. $typetoext[$filetype] . '[/img]' . '[/url]'; // do the magic for storing the item in the database and trigger the federation to other contacts @@ -3974,7 +3997,7 @@ $called_api = null; } function prepare_photo_data($type, $scale, $photo_id) { - $scale_sql = ($scale === false ? "" : sprintf("and scale=%d", intval($scale))); + $scale_sql = ($scale === false ? "" : sprintf("AND scale=%d", intval($scale))); $data_sql = ($scale === false ? "" : "data, "); // added allow_cid, allow_gid, deny_cid, deny_gid to output as string like stored in database @@ -4009,14 +4032,14 @@ $called_api = null; for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) { $data['photo']['links'][$k . ":link"]["@attributes"] = array("type" => $data['photo']['type'], "scale" => $k, - "href" => App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]); + "href" => System::baseUrl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]); } } else { $data['photo']['link'] = array(); // when we have profile images we could have only scales from 4 to 6, but index of array always needs to start with 0 $i = 0; for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) { - $data['photo']['link'][$i] = App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]; + $data['photo']['link'][$i] = System::baseUrl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]; $i++; } } @@ -4326,7 +4349,7 @@ $called_api = null; $in_reply_to['user_id_str'] = NULL; $in_reply_to['screen_name'] = NULL; - if (($item['thr-parent'] != $item['uri']) AND (intval($item['parent']) != intval($item['id']))) { + if (($item['thr-parent'] != $item['uri']) && (intval($item['parent']) != intval($item['id']))) { $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", intval($item['uid']), dbesc($item['thr-parent'])); @@ -4407,7 +4430,7 @@ $called_api = null; if (isset($data["text"])) $body = $data["text"]; - if (($body == "") AND (isset($data["title"]))) + if (($body == "") && (isset($data["title"]))) $body = $data["title"]; if (isset($data["url"]))