public function createAction(StreamableInterface $actor, $verb, StreamableInterface $object = null, StreamableInterface $target = null)
 {
     $action = new Action();
     $action->setActorId($actor->getStreamIdentifier());
     $action->setActorType($actor->getStreamType());
     $actorResolver = $this->dataResolverProvider->get($actor->getStreamIdentifier(), $actor->getStreamType());
     $action->setActorUrl($actorResolver->getUrl());
     $action->setActorName($actorResolver->getName());
     $action->setActorImage($actorResolver->getImage());
     $action->setVerb($verb);
     if (null !== $object) {
         $action->setObjectId($object->getStreamIdentifier());
         $action->setObjectType($object->getStreamType());
         $objectResolver = $this->dataResolverProvider->get($object->getStreamIdentifier(), $object->getStreamType());
         $action->setObjectUrl($objectResolver->getUrl());
         $action->setObjectName($objectResolver->getName());
         $action->setObjectImage($objectResolver->getImage());
     }
     if (null !== $target) {
         $action->setTargetId($target->getStreamIdentifier());
         $action->setTargetType($target->getStreamType());
         $targetResolver = $this->dataResolverProvider->get($target->getStreamIdentifier(), $target->getStreamType());
         $action->setTargetUrl($targetResolver->getUrl());
         $action->setTargetName($targetResolver->getName());
         $action->setTargetImage($objectResolver->getImage());
     }
     $action->setPublishedAt(time());
     $action->save();
     return $action;
 }
 /**
  * Exclude object from result
  *
  * @param     Action $action Object to remove from the list of results
  *
  * @return    ActionQuery The current query, for fluid interface
  */
 public function prune($action = null)
 {
     if ($action) {
         $this->addUsingAlias(ActionPeer::ID, $action->getId(), Criteria::NOT_EQUAL);
     }
     return $this;
 }