Merge branch '0.9.x' into finish-account-api
* 0.9.x: Added a events for the settings menu items Bringing Sphinx search support up to code: broken out to a plugin, now supports multiple sites on a single server. Changed to Evan's event style and added an AuthPlugin superclass add geo output to statuses in json, xml, atom, rss in API Localisation updates from translatewiki.net (2009-11-10) Localisation updates from translatewiki.net Update pot add lat and long parameters to api/statuses/update change credential check to work more like other events fixup output of object attributes in db error code Performance fix for subscription/subscriber lists based on feedback from ops. Adjusting indexes to make favorites query more efficient, based on feedback from ops. Revert untested code; spews PHP notice warnings on every page view: "just sent a http 200 for the check-fancy from install.php" Added hook for the Group navigation items Updated block @title text (shouldn't say from group) Updated group block markup Revert "Remove more contractions"
This commit is contained in:
59
lib/api.php
59
lib/api.php
@@ -60,26 +60,26 @@ class ApiAction extends Action
|
||||
var $max_id = null;
|
||||
var $since_id = null;
|
||||
var $since = null;
|
||||
|
||||
|
||||
/**
|
||||
* Initialization.
|
||||
*
|
||||
* @param array $args Web and URL arguments
|
||||
*
|
||||
* @return boolean false if user does not exist
|
||||
* @return boolean false if user doesn't exist
|
||||
*/
|
||||
|
||||
function prepare($args)
|
||||
{
|
||||
parent::prepare($args);
|
||||
|
||||
|
||||
$this->format = $this->arg('format');
|
||||
$this->page = (int)$this->arg('page', 1);
|
||||
$this->count = (int)$this->arg('count', 20);
|
||||
$this->max_id = (int)$this->arg('max_id', 0);
|
||||
$this->since_id = (int)$this->arg('since_id', 0);
|
||||
$this->since = $this->arg('since');
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ class ApiAction extends Action
|
||||
$design = null;
|
||||
$user = $profile->getUser();
|
||||
|
||||
// Note: some profiles do not have an associated user
|
||||
// Note: some profiles don't have an associated user
|
||||
|
||||
if (!empty($user)) {
|
||||
$design = $user->getDesign();
|
||||
@@ -164,7 +164,6 @@ class ApiAction extends Action
|
||||
|
||||
$twitter_user['favourites_count'] = $profile->faveCount(); // British spelling!
|
||||
|
||||
|
||||
$timezone = 'UTC';
|
||||
|
||||
if ($user->timezone) {
|
||||
@@ -208,7 +207,7 @@ class ApiAction extends Action
|
||||
if ($get_notice) {
|
||||
$notice = $profile->getCurrentNotice();
|
||||
if ($notice) {
|
||||
# do not get user!
|
||||
# don't get user!
|
||||
$twitter_user['status'] = $this->twitterStatusArray($notice, false);
|
||||
}
|
||||
}
|
||||
@@ -243,6 +242,15 @@ class ApiAction extends Action
|
||||
$twitter_status['in_reply_to_screen_name'] =
|
||||
($replier_profile) ? $replier_profile->nickname : null;
|
||||
|
||||
if (isset($notice->lat) && isset($notice->lon)) {
|
||||
// This is the format that GeoJSON expects stuff to be in
|
||||
$twitter_status['geo'] = array('type' => 'Point',
|
||||
'coordinates' => array((float) $notice->lat,
|
||||
(float) $notice->lon));
|
||||
} else {
|
||||
$twitter_status['geo'] = null;
|
||||
}
|
||||
|
||||
if (isset($this->auth_user)) {
|
||||
$twitter_status['favorited'] = $this->auth_user->hasFave($notice);
|
||||
} else {
|
||||
@@ -268,7 +276,7 @@ class ApiAction extends Action
|
||||
}
|
||||
|
||||
if ($include_user) {
|
||||
# Do not get notice (recursive!)
|
||||
# Don't get notice (recursive!)
|
||||
$twitter_user = $this->twitterUserArray($profile, false);
|
||||
$twitter_status['user'] = $twitter_user;
|
||||
}
|
||||
@@ -367,10 +375,19 @@ class ApiAction extends Action
|
||||
$entry['pubDate'] = common_date_rfc2822($notice->created);
|
||||
$entry['guid'] = $entry['link'];
|
||||
|
||||
if (isset($notice->lat) && isset($notice->lon)) {
|
||||
// This is the format that GeoJSON expects stuff to be in.
|
||||
// showGeoRSS() below uses it for XML output, so we reuse it
|
||||
$entry['geo'] = array('type' => 'Point',
|
||||
'coordinates' => array((float) $notice->lat,
|
||||
(float) $notice->lon));
|
||||
} else {
|
||||
$entry['geo'] = null;
|
||||
}
|
||||
|
||||
return $entry;
|
||||
}
|
||||
|
||||
|
||||
function twitterRelationshipArray($source, $target)
|
||||
{
|
||||
$relationship = array();
|
||||
@@ -446,6 +463,9 @@ class ApiAction extends Action
|
||||
case 'attachments':
|
||||
$this->showXmlAttachments($twitter_status['attachments']);
|
||||
break;
|
||||
case 'geo':
|
||||
$this->showGeoRSS($value);
|
||||
break;
|
||||
default:
|
||||
$this->element($element, null, $value);
|
||||
}
|
||||
@@ -489,6 +509,18 @@ class ApiAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function showGeoRSS($geo)
|
||||
{
|
||||
if (empty($geo)) {
|
||||
// empty geo element
|
||||
$this->element('geo');
|
||||
} else {
|
||||
$this->elementStart('geo', array('xmlns:georss' => 'http://www.georss.org/georss'));
|
||||
$this->element('georss:point', null, $geo['coordinates'][0] . ' ' . $geo['coordinates'][1]);
|
||||
$this->elementEnd('geo');
|
||||
}
|
||||
}
|
||||
|
||||
function showTwitterRssItem($entry)
|
||||
{
|
||||
$this->elementStart('item');
|
||||
@@ -510,6 +542,7 @@ class ApiAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
$this->showGeoRSS($entry['geo']);
|
||||
$this->elementEnd('item');
|
||||
}
|
||||
|
||||
@@ -534,7 +567,6 @@ class ApiAction extends Action
|
||||
$this->endDocument('json');
|
||||
}
|
||||
|
||||
|
||||
function showXmlTimeline($notice)
|
||||
{
|
||||
|
||||
@@ -654,7 +686,6 @@ class ApiAction extends Action
|
||||
$this->endTwitterRss();
|
||||
}
|
||||
|
||||
|
||||
function showTwitterAtomEntry($entry)
|
||||
{
|
||||
$this->elementStart('entry');
|
||||
@@ -1079,7 +1110,7 @@ class ApiAction extends Action
|
||||
function initTwitterAtom()
|
||||
{
|
||||
$this->startXML();
|
||||
// FIXME: do not hardcode the language here!
|
||||
// FIXME: don't hardcode the language here!
|
||||
$this->elementStart('feed', array('xmlns' => 'http://www.w3.org/2005/Atom',
|
||||
'xml:lang' => 'en-US',
|
||||
'xmlns:thr' => 'http://purl.org/syndication/thread/1.0'));
|
||||
@@ -1121,7 +1152,7 @@ class ApiAction extends Action
|
||||
return User::staticGet('nickname', $nickname);
|
||||
} else if ($this->arg('user_id')) {
|
||||
// This is to ensure that a non-numeric user_id still
|
||||
// overrides screen_name even if it does not get used
|
||||
// overrides screen_name even if it doesn't get used
|
||||
if (is_numeric($this->arg('user_id'))) {
|
||||
return User::staticGet('id', $this->arg('user_id'));
|
||||
}
|
||||
@@ -1151,7 +1182,7 @@ class ApiAction extends Action
|
||||
return User_group::staticGet('nickname', $nickname);
|
||||
} else if ($this->arg('group_id')) {
|
||||
// This is to ensure that a non-numeric user_id still
|
||||
// overrides screen_name even if it does not get used
|
||||
// overrides screen_name even if it doesn't get used
|
||||
if (is_numeric($this->arg('group_id'))) {
|
||||
return User_group::staticGet('id', $this->arg('group_id'));
|
||||
}
|
||||
|
Reference in New Issue
Block a user