aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-10-26 20:09:03 -0700
committerFriendika <info@friendika.com>2011-10-26 20:09:03 -0700
commitfaa078b83f57b74183ee35165f0f9d7bac9e6bde (patch)
treea96d2de0f79a761e035826363d35a9bb42cfb646 /mod
parent2f3e39ba15b45b56ef750bd1d15a23c510ec798d (diff)
downloadvolse-hubzilla-faa078b83f57b74183ee35165f0f9d7bac9e6bde.tar.gz
volse-hubzilla-faa078b83f57b74183ee35165f0f9d7bac9e6bde.tar.bz2
volse-hubzilla-faa078b83f57b74183ee35165f0f9d7bac9e6bde.zip
basic portable contacts http://portablecontacts.net/draft-spec.html no filter/sort, or xml at the moment
Diffstat (limited to 'mod')
-rw-r--r--mod/poco.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/mod/poco.php b/mod/poco.php
new file mode 100644
index 000000000..79d5b7fb0
--- /dev/null
+++ b/mod/poco.php
@@ -0,0 +1,84 @@
+<?php
+
+
+function poco_init(&$a) {
+
+ if($a->argc > 1) {
+ $user = notags(trim($a->argv[1]));
+ }
+ if(! x($user) || get_config('system','block_public'))
+ killme();
+
+ $justme = false;
+
+ if($a->argc > 2 && $a->argv[2] === '@me')
+ $justme = true;
+ if($a->argc > 3 && $a->argv[3] === '@all')
+ $justme = false;
+ if($a->argc > 3 && $a->argv[3] === '@self')
+ $justme = true;
+ if($a->argc > 4 && intval($a->argv[4]) && $justme == false)
+ $cid = intval($a->argv[4]);
+
+
+ $r = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid`
+ where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1",
+ dbesc($user)
+ );
+ if(! count($r) || $r[0]['hidewall'] || $r[0]['hide-friends'])
+ killme();
+
+ $user = $r[0];
+
+ if($justme)
+ $sql_extra = " and `contact`.`self` = 1 ";
+
+ if($cid)
+ $sql_extra = sprintf(" and `contact`.`id` = %d ",intval($cid));
+
+ $r = q("SELECT count(*) as `total` from `contact` where `uid` = %d and blocked = 0 and pending = 0
+ $sql_extra ",
+ intval($user['uid'])
+ );
+ if(count($r))
+ $totalResults = intval($r[0]['total']);
+ else
+ $totalResults = 0;
+
+ $startIndex = intval($_GET['startIndex']);
+ if(! $startIndex)
+ $startIndex = 0;
+ $itemsPerPage = ((x($_GET,'count') && intval($_GET['count'])) ? intval($_GET['count']) : $totalResults);
+
+ $r = q("SELECT * from `contact` where `uid` = %d and blocked = 0 and pending = 0
+ $sql_extra LIMIT %d, %d",
+ intval($user['uid']),
+ intval($startIndex),
+ intval($itemsPerPage)
+ );
+
+ $ret = array(
+ 'startIndex' => $startIndex,
+ 'itemsPerPage' => $itemsPerPage,
+ 'totalResults' => $totalResults,
+ 'entry' => array()
+ );
+
+ if(count($r)) {
+ foreach($r as $rr) {
+ $entry = array();
+ $entry['id'] = $rr['id'];
+ $entry['displayName'] = $rr['name'];
+ $entry['urls'] = array('value' => $rr['url'], 'type' => 'profile');
+ $entry['preferredUsername'] = $rr['nick'];
+ $entry['photos'] = array('value' => $rr['photo'], 'type' => 'profile');
+ $ret['entry'][] = $entry;
+ }
+ }
+ header('Content-type: application/json');
+ echo json_encode($ret);
+ killme();
+
+
+
+} \ No newline at end of file