API: use regex instead of SimpleXMLElement
It's easier with exotic chars. And the editor replaced all leading spaces with tabs.
This commit is contained in:
parent
ce2f765d28
commit
18bd7f5eb7
1 changed files with 40 additions and 31 deletions
|
@ -250,7 +250,7 @@
|
||||||
*/
|
*/
|
||||||
function api_call(&$a){
|
function api_call(&$a){
|
||||||
GLOBAL $API, $called_api;
|
GLOBAL $API, $called_api;
|
||||||
|
|
||||||
$type="json";
|
$type="json";
|
||||||
if (strpos($a->query_string, ".xml")>0) $type="xml";
|
if (strpos($a->query_string, ".xml")>0) $type="xml";
|
||||||
if (strpos($a->query_string, ".json")>0) $type="json";
|
if (strpos($a->query_string, ".json")>0) $type="json";
|
||||||
|
@ -667,7 +667,7 @@
|
||||||
#if ($item["id"] == $item["parent"])
|
#if ($item["id"] == $item["parent"])
|
||||||
# $status_user = api_get_user($a,$item["owner-link"]);
|
# $status_user = api_get_user($a,$item["owner-link"]);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
$status_user = api_get_user($a,$item["author-link"]);
|
$status_user = api_get_user($a,$item["author-link"]);
|
||||||
$status_user["protected"] = (($item["allow_cid"] != "") OR
|
$status_user["protected"] = (($item["allow_cid"] != "") OR
|
||||||
($item["allow_gid"] != "") OR
|
($item["allow_gid"] != "") OR
|
||||||
|
@ -675,8 +675,8 @@
|
||||||
($item["deny_gid"] != "") OR
|
($item["deny_gid"] != "") OR
|
||||||
$item["private"]);
|
$item["private"]);
|
||||||
|
|
||||||
$owner_user = api_get_user($a,$item["owner-link"]);
|
$owner_user = api_get_user($a,$item["owner-link"]);
|
||||||
|
|
||||||
return (array($status_user, $owner_user));
|
return (array($status_user, $owner_user));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -723,7 +723,7 @@
|
||||||
case "xml":
|
case "xml":
|
||||||
$data = array_xmlify($data);
|
$data = array_xmlify($data);
|
||||||
if ($templatename==="<auto>") {
|
if ($templatename==="<auto>") {
|
||||||
$ret = api_array_to_xml($data);
|
$ret = api_array_to_xml($data);
|
||||||
} else {
|
} else {
|
||||||
$tpl = get_markup_template("api_".$templatename."_".$type.".tpl");
|
$tpl = get_markup_template("api_".$templatename."_".$type.".tpl");
|
||||||
if(! $tpl) {
|
if(! $tpl) {
|
||||||
|
@ -2083,7 +2083,7 @@
|
||||||
$statushtml = "<h4>".bbcode($item['title'])."</h4>\n".$statushtml;
|
$statushtml = "<h4>".bbcode($item['title'])."</h4>\n".$statushtml;
|
||||||
|
|
||||||
$entities = api_get_entitities($statustext, $body);
|
$entities = api_get_entitities($statustext, $body);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
"text" => $statustext,
|
"text" => $statustext,
|
||||||
"html" => $statushtml,
|
"html" => $statushtml,
|
||||||
|
@ -2270,7 +2270,7 @@
|
||||||
$offset = $start + 1;
|
$offset = $start + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return($entities);
|
return($entities);
|
||||||
}
|
}
|
||||||
function api_format_items_embeded_images(&$item, $text){
|
function api_format_items_embeded_images(&$item, $text){
|
||||||
|
@ -2284,7 +2284,7 @@
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief return <a href='url'>name</a> as array
|
* @brief return <a href='url'>name</a> as array
|
||||||
*
|
*
|
||||||
|
@ -2292,16 +2292,25 @@
|
||||||
* @return array
|
* @return array
|
||||||
* name => 'name'
|
* name => 'name'
|
||||||
* 'url => 'url'
|
* 'url => 'url'
|
||||||
*/
|
*/
|
||||||
function api_contactlink_to_array($txt) {
|
function api_contactlink_to_array($txt) {
|
||||||
$elm = new SimpleXMLElement($txt);
|
$match = array();
|
||||||
return array(
|
$r = preg_match_all('|<a href="([^"]*)">([^<]*)</a>|', $txt, $match);
|
||||||
'name' => $elm->__toString(),
|
if ($r && count($match)==3) {
|
||||||
'url' => $elm->attributes()['href']->__toString()
|
$res = array(
|
||||||
);
|
'name' => $match[2],
|
||||||
|
'url' => $match[1]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$res = array(
|
||||||
|
'name' => $text,
|
||||||
|
'url' => ""
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief return likes, dislikes and attend status for item
|
* @brief return likes, dislikes and attend status for item
|
||||||
*
|
*
|
||||||
|
@ -2325,13 +2334,13 @@
|
||||||
foreach ($items as $i){
|
foreach ($items as $i){
|
||||||
builtin_activity_puller($i, $activities);
|
builtin_activity_puller($i, $activities);
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = array();
|
$res = array();
|
||||||
$uri = $item['uri']."-l";
|
$uri = $item['uri']."-l";
|
||||||
foreach($activities as $k => $v) {
|
foreach($activities as $k => $v) {
|
||||||
$res[$k] = ( x($v,$uri) ? array_map("api_contactlink_to_array", $v[$uri]) : array() );
|
$res[$k] = ( x($v,$uri) ? array_map("api_contactlink_to_array", $v[$uri]) : array() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2436,8 +2445,8 @@
|
||||||
#$IsRetweet = ($item['owner-link'] != $item['author-link']);
|
#$IsRetweet = ($item['owner-link'] != $item['author-link']);
|
||||||
#if ($IsRetweet)
|
#if ($IsRetweet)
|
||||||
# $IsRetweet = (($item['owner-name'] != $item['author-name']) OR ($item['owner-avatar'] != $item['author-avatar']));
|
# $IsRetweet = (($item['owner-name'] != $item['author-name']) OR ($item['owner-avatar'] != $item['author-avatar']));
|
||||||
|
|
||||||
|
|
||||||
if ($item['is_retweet'] AND ($item["id"] == $item["parent"])) {
|
if ($item['is_retweet'] AND ($item["id"] == $item["parent"])) {
|
||||||
$retweeted_status = $status;
|
$retweeted_status = $status;
|
||||||
try {
|
try {
|
||||||
|
@ -2454,7 +2463,7 @@
|
||||||
$status["retweeted_status"]["author-link"] = $item["retweet-author-link"];
|
$status["retweeted_status"]["author-link"] = $item["retweet-author-link"];
|
||||||
$status["retweeted_status"]["author-avatar"] = $item["retweet-author-avatar"];
|
$status["retweeted_status"]["author-avatar"] = $item["retweet-author-avatar"];
|
||||||
$status["retweeted_status"]["plink"] = $item["retweet-plink"];
|
$status["retweeted_status"]["plink"] = $item["retweet-plink"];
|
||||||
|
|
||||||
//echo "<pre>"; var_dump($status); killme();
|
//echo "<pre>"; var_dump($status); killme();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3482,16 +3491,16 @@
|
||||||
if (api_user()===false) throw new ForbiddenException();
|
if (api_user()===false) throw new ForbiddenException();
|
||||||
if ($a->argc!==3) throw new BadRequestException("Invalid argument count");
|
if ($a->argc!==3) throw new BadRequestException("Invalid argument count");
|
||||||
$nm = new NotificationsManager();
|
$nm = new NotificationsManager();
|
||||||
|
|
||||||
$notes = $nm->getAll(array(), "+seen -date", 50);
|
$notes = $nm->getAll(array(), "+seen -date", 50);
|
||||||
return api_apply_template("<auto>", $type, array('$notes' => $notes));
|
return api_apply_template("<auto>", $type, array('$notes' => $notes));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set notification as seen and returns associated item (if possible)
|
* @brief Set notification as seen and returns associated item (if possible)
|
||||||
*
|
*
|
||||||
* POST request with 'id' param as notification id
|
* POST request with 'id' param as notification id
|
||||||
*
|
*
|
||||||
* @param App $a
|
* @param App $a
|
||||||
* @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
|
* @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -3499,13 +3508,13 @@
|
||||||
function api_friendica_notification_seen(&$a, $type){
|
function api_friendica_notification_seen(&$a, $type){
|
||||||
if (api_user()===false) throw new ForbiddenException();
|
if (api_user()===false) throw new ForbiddenException();
|
||||||
if ($a->argc!==4) throw new BadRequestException("Invalid argument count");
|
if ($a->argc!==4) throw new BadRequestException("Invalid argument count");
|
||||||
|
|
||||||
$id = (x($_REQUEST, 'id') ? intval($_REQUEST['id']) : 0);
|
$id = (x($_REQUEST, 'id') ? intval($_REQUEST['id']) : 0);
|
||||||
|
|
||||||
$nm = new NotificationsManager();
|
$nm = new NotificationsManager();
|
||||||
$note = $nm->getByID($id);
|
$note = $nm->getByID($id);
|
||||||
if (is_null($note)) throw new BadRequestException("Invalid argument");
|
if (is_null($note)) throw new BadRequestException("Invalid argument");
|
||||||
|
|
||||||
$nm->setSeen($note);
|
$nm->setSeen($note);
|
||||||
if ($note['otype']=='item') {
|
if ($note['otype']=='item') {
|
||||||
// would be really better with an ItemsManager and $im->getByID() :-P
|
// would be really better with an ItemsManager and $im->getByID() :-P
|
||||||
|
@ -3521,13 +3530,13 @@
|
||||||
return api_apply_template("timeline", $type, $data);
|
return api_apply_template("timeline", $type, $data);
|
||||||
}
|
}
|
||||||
// the item can't be found, but we set the note as seen, so we count this as a success
|
// the item can't be found, but we set the note as seen, so we count this as a success
|
||||||
}
|
}
|
||||||
return api_apply_template('<auto>', $type, array('status' => "success"));
|
return api_apply_template('<auto>', $type, array('status' => "success"));
|
||||||
}
|
}
|
||||||
|
|
||||||
api_register_func('api/friendica/notification/seen', 'api_friendica_notification_seen', true, API_METHOD_POST);
|
api_register_func('api/friendica/notification/seen', 'api_friendica_notification_seen', true, API_METHOD_POST);
|
||||||
api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET);
|
api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
To.Do:
|
To.Do:
|
||||||
|
|
Loading…
Reference in a new issue