public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
public $source; // varchar(32)
- /* Static get */
- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Message',$k,$v); }
-
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
function getFrom()
{
- return Profile::staticGet('id', $this->from_profile);
+ return Profile::getKV('id', $this->from_profile);
}
function getTo()
{
- return Profile::staticGet('id', $this->to_profile);
+ return Profile::getKV('id', $this->to_profile);
}
static function saveNew($from, $to, $content, $source) {
- $sender = Profile::staticGet('id', $from);
+ $sender = Profile::getKV('id', $from);
if (!$sender->hasRight(Right::NEWMESSAGE)) {
// TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
throw new ClientException(_('You are banned from sending direct messages.'));
}
- $user = User::staticGet('id', $sender->id);
+ $user = User::getKV('id', $sender->id);
$msg = new Message();
$msg->from_profile = $from;
$msg->to_profile = $to;
- if ($user) {
+
+ if ($user instanceof User) {
// Use the sender's URL shortening options.
$msg->content = $user->shortenLinks($content);
} else {
$msg->content = common_shorten_links($content);
}
+
$msg->rendered = common_render_text($msg->content);
$msg->created = common_sql_now();
$msg->source = $source;
if (!$result) {
common_log_db_error($msg, 'INSERT', __FILE__);
// TRANS: Message given when a message could not be stored on the server.
- return _('Could not insert message.');
+ throw new ServerException(_('Could not insert message.'));
}
$orig = clone($msg);
if (!$result) {
common_log_db_error($msg, 'UPDATE', __FILE__);
// TRANS: Message given when a message could not be updated on the server.
- return _('Could not update message with new URI.');
+ throw new ServerException(_('Could not update message with new URI.'));
}
return $msg;
function notify()
{
- $from = User::staticGet('id', $this->from_profile);
- $to = User::staticGet('id', $this->to_profile);
+ $from = User::getKV('id', $this->from_profile);
+ $to = User::getKV('id', $this->to_profile);
mail_notify_message($this, $from, $to);
}
+
+ function getSource()
+ {
+ $ns = new Notice_source();
+ if (!empty($this->source)) {
+ switch ($this->source) {
+ case 'web':
+ case 'xmpp':
+ case 'mail':
+ case 'omb':
+ case 'system':
+ case 'api':
+ $ns->code = $this->source;
+ break;
+ default:
+ $ns = Notice_source::getKV($this->source);
+ if (!$ns) {
+ $ns = new Notice_source();
+ $ns->code = $this->source;
+ $app = Oauth_application::getKV('name', $this->source);
+ if ($app) {
+ $ns->name = $app->name;
+ $ns->url = $app->source_url;
+ }
+ }
+ break;
+ }
+ }
+ return $ns;
+ }
+
+ 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) {
+ $act->generator = ActivityObject::fromNoticeSource($source);
+ }
+
+ Event::handle('EndMessageAsActivity', array($this, &$act));
+ }
+
+ return $act;
+ }
}