예제 #1
0
 function asActivity()
 {
     $act = new Activity();
     if (Event::handle('StartMessageAsActivity', array($this, &$act))) {
         $act->id = TagURI::mint(sprintf('activity:message:%d', $this->id));
         $act->time = strtotime($this->created);
         $act->link = $this->url;
         $profile = Profile::getKV('id', $this->from_profile);
         if (empty($profile)) {
             throw new Exception(sprintf("Sender profile not found: %d", $this->from_profile));
         }
         $act->actor = $profile->asActivityObject();
         $act->actor->extra[] = $profile->profileInfo();
         $act->verb = ActivityVerb::POST;
         $act->objects[] = ActivityObject::fromMessage($this);
         $ctx = new ActivityContext();
         $rprofile = Profile::getKV('id', $this->to_profile);
         if (empty($rprofile)) {
             throw new Exception(sprintf("Receiver profile not found: %d", $this->to_profile));
         }
         $ctx->attention[$rprofile->getUri()] = ActivityObject::PERSON;
         $act->context = $ctx;
         $source = $this->getSource();
         if ($source instanceof Notice_source) {
             $act->generator = ActivityObject::fromNoticeSource($source);
         }
         Event::handle('EndMessageAsActivity', array($this, &$act));
     }
     return $act;
 }