Merge branch 'master' into noticetitle

This commit is contained in:
Evan Prodromou 2010-08-14 11:46:12 -07:00
commit 9e4f40806a
4 changed files with 37 additions and 34 deletions

View File

@ -61,7 +61,7 @@ class GroupsalmonAction extends SalmonAction
function handlePost() function handlePost()
{ {
// @fixme process all objects? // @fixme process all objects?
switch ($this->act->objects[0]->type) { switch ($this->activity->objects[0]->type) {
case ActivityObject::ARTICLE: case ActivityObject::ARTICLE:
case ActivityObject::BLOGENTRY: case ActivityObject::BLOGENTRY:
case ActivityObject::NOTE: case ActivityObject::NOTE:
@ -74,7 +74,7 @@ class GroupsalmonAction extends SalmonAction
// Notice must be to the attention of this group // Notice must be to the attention of this group
$context = $this->act->context; $context = $this->activity->context;
if (empty($context->attention)) { if (empty($context->attention)) {
throw new ClientException("Not to the attention of anyone."); throw new ClientException("Not to the attention of anyone.");

View File

@ -55,10 +55,10 @@ class UsersalmonAction extends SalmonAction
*/ */
function handlePost() function handlePost()
{ {
common_log(LOG_INFO, "Received post of '{$this->act->objects[0]->id}' from '{$this->act->actor->id}'"); common_log(LOG_INFO, "Received post of '{$this->activity->objects[0]->id}' from '{$this->activity->actor->id}'");
// @fixme: process all activity objects? // @fixme: process all activity objects?
switch ($this->act->objects[0]->type) { switch ($this->activity->objects[0]->type) {
case ActivityObject::ARTICLE: case ActivityObject::ARTICLE:
case ActivityObject::BLOGENTRY: case ActivityObject::BLOGENTRY:
case ActivityObject::NOTE: case ActivityObject::NOTE:
@ -72,7 +72,7 @@ class UsersalmonAction extends SalmonAction
// Notice must either be a) in reply to a notice by this user // Notice must either be a) in reply to a notice by this user
// or b) to the attention of this user // or b) to the attention of this user
$context = $this->act->context; $context = $this->activity->context;
if (!empty($context->replyToID)) { if (!empty($context->replyToID)) {
$notice = Notice::staticGet('uri', $context->replyToID); $notice = Notice::staticGet('uri', $context->replyToID);
@ -92,7 +92,7 @@ class UsersalmonAction extends SalmonAction
throw new ClientException("Not to anyone in reply to anything!"); throw new ClientException("Not to anyone in reply to anything!");
} }
$existing = Notice::staticGet('uri', $this->act->objects[0]->id); $existing = Notice::staticGet('uri', $this->activity->objects[0]->id);
if (!empty($existing)) { if (!empty($existing)) {
common_log(LOG_ERR, "Not saving notice '{$existing->uri}'; already exists."); common_log(LOG_ERR, "Not saving notice '{$existing->uri}'; already exists.");
@ -143,7 +143,7 @@ class UsersalmonAction extends SalmonAction
function handleFavorite() function handleFavorite()
{ {
$notice = $this->getNotice($this->act->objects[0]); $notice = $this->getNotice($this->activity->objects[0]);
$profile = $this->ensureProfile()->localProfile(); $profile = $this->ensureProfile()->localProfile();
$old = Fave::pkeyGet(array('user_id' => $profile->id, $old = Fave::pkeyGet(array('user_id' => $profile->id,
@ -164,7 +164,7 @@ class UsersalmonAction extends SalmonAction
*/ */
function handleUnfavorite() function handleUnfavorite()
{ {
$notice = $this->getNotice($this->act->objects[0]); $notice = $this->getNotice($this->activity->objects[0]);
$profile = $this->ensureProfile()->localProfile(); $profile = $this->ensureProfile()->localProfile();
$fave = Fave::pkeyGet(array('user_id' => $profile->id, $fave = Fave::pkeyGet(array('user_id' => $profile->id,

View File

@ -445,26 +445,31 @@ class Ostatus_profile extends Memcached_DataObject
* @param DOMElement $feed for context * @param DOMElement $feed for context
* @param string $source identifier ("push" or "salmon") * @param string $source identifier ("push" or "salmon")
*/ */
public function processEntry($entry, $feed, $source) public function processEntry($entry, $feed, $source)
{ {
$activity = new Activity($entry, $feed); $activity = new Activity($entry, $feed);
// @todo process all activity objects if (Event::handle('StartHandleFeedEntry', array($activity))) {
switch ($activity->objects[0]->type) {
case ActivityObject::ARTICLE:
case ActivityObject::BLOGENTRY:
case ActivityObject::NOTE:
case ActivityObject::STATUS:
case ActivityObject::COMMENT:
break;
default:
throw new ClientException("Can't handle that kind of post.");
}
if ($activity->verb == ActivityVerb::POST) { // @todo process all activity objects
$this->processPost($activity, $source); switch ($activity->objects[0]->type) {
} else { case ActivityObject::ARTICLE:
common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb"); case ActivityObject::BLOGENTRY:
case ActivityObject::NOTE:
case ActivityObject::STATUS:
case ActivityObject::COMMENT:
if ($activity->verb == ActivityVerb::POST) {
$this->processPost($activity, $source);
} else {
common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb");
}
break;
default:
throw new ClientException("Can't handle that kind of post.");
}
Event::handle('EndHandleFeedEntry', array($activity));
} }
} }

View File

@ -47,7 +47,6 @@ class SalmonAction extends Action
$xml = file_get_contents('php://input'); $xml = file_get_contents('php://input');
// Check the signature // Check the signature
$salmon = new Salmon; $salmon = new Salmon;
if (!$salmon->verifyMagicEnv($xml)) { if (!$salmon->verifyMagicEnv($xml)) {
@ -58,7 +57,6 @@ class SalmonAction extends Action
$env = $magic_env->parse($xml); $env = $magic_env->parse($xml);
$xml = $magic_env->unfold($env); $xml = $magic_env->unfold($env);
} }
$dom = DOMDocument::loadXML($xml); $dom = DOMDocument::loadXML($xml);
if ($dom->documentElement->namespaceURI != Activity::ATOM || if ($dom->documentElement->namespaceURI != Activity::ATOM ||
@ -67,7 +65,7 @@ class SalmonAction extends Action
$this->clientError(_m('Salmon post must be an Atom entry.')); $this->clientError(_m('Salmon post must be an Atom entry.'));
} }
$this->act = new Activity($dom->documentElement); $this->activity = new Activity($dom->documentElement);
return true; return true;
} }
@ -79,9 +77,9 @@ class SalmonAction extends Action
{ {
StatusNet::setApi(true); // Send smaller error pages StatusNet::setApi(true); // Send smaller error pages
common_log(LOG_DEBUG, "Got a " . $this->act->verb); common_log(LOG_DEBUG, "Got a " . $this->activity->verb);
if (Event::handle('StartHandleSalmon', array($this->activity))) { if (Event::handle('StartHandleSalmon', array($this->activity))) {
switch ($this->act->verb) switch ($this->activity->verb)
{ {
case ActivityVerb::POST: case ActivityVerb::POST:
$this->handlePost(); $this->handlePost();
@ -164,12 +162,12 @@ class SalmonAction extends Action
*/ */
function handleUpdateProfile() function handleUpdateProfile()
{ {
$oprofile = Ostatus_profile::getActorProfile($this->act); $oprofile = Ostatus_profile::getActorProfile($this->activity);
if ($oprofile) { if ($oprofile) {
common_log(LOG_INFO, "Got a profile-update ping from $oprofile->uri"); common_log(LOG_INFO, "Got a profile-update ping from $oprofile->uri");
$oprofile->updateFromActivityObject($this->act->actor); $oprofile->updateFromActivityObject($this->activity->actor);
} else { } else {
common_log(LOG_INFO, "Ignoring profile-update ping from unknown " . $this->act->actor->id); common_log(LOG_INFO, "Ignoring profile-update ping from unknown " . $this->activity->actor->id);
} }
} }
@ -178,10 +176,10 @@ class SalmonAction extends Action
*/ */
function ensureProfile() function ensureProfile()
{ {
$actor = $this->act->actor; $actor = $this->activity->actor;
if (empty($actor->id)) { if (empty($actor->id)) {
common_log(LOG_ERR, "broken actor: " . var_export($actor, true)); common_log(LOG_ERR, "broken actor: " . var_export($actor, true));
common_log(LOG_ERR, "activity with no actor: " . var_export($this->act, true)); common_log(LOG_ERR, "activity with no actor: " . var_export($this->activity, true));
throw new Exception("Received a salmon slap from unidentified actor."); throw new Exception("Received a salmon slap from unidentified actor.");
} }
@ -191,6 +189,6 @@ class SalmonAction extends Action
function saveNotice() function saveNotice()
{ {
$oprofile = $this->ensureProfile(); $oprofile = $this->ensureProfile();
return $oprofile->processPost($this->act, 'salmon'); return $oprofile->processPost($this->activity, 'salmon');
} }
} }