Merge branch 'testing' into 0.9.x
This commit is contained in:
commit
e4d934827b
@ -184,13 +184,21 @@ class NewnoticeAction extends Action
|
||||
|
||||
$options = array('reply_to' => ($replyto == 'false') ? null : $replyto);
|
||||
|
||||
if ($user->shareLocation() && $this->arg('notice_data-geo')) {
|
||||
|
||||
$locOptions = Notice::locationOptions($this->trimmed('lat'),
|
||||
$this->trimmed('lon'),
|
||||
$this->trimmed('location_id'),
|
||||
$this->trimmed('location_ns'),
|
||||
$user->getProfile());
|
||||
if ($user->shareLocation()) {
|
||||
// use browser data if checked; otherwise profile data
|
||||
if ($this->arg('notice_data-geo')) {
|
||||
$locOptions = Notice::locationOptions($this->trimmed('lat'),
|
||||
$this->trimmed('lon'),
|
||||
$this->trimmed('location_id'),
|
||||
$this->trimmed('location_ns'),
|
||||
$user->getProfile());
|
||||
} else {
|
||||
$locOptions = Notice::locationOptions(null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
$user->getProfile());
|
||||
}
|
||||
|
||||
$options = array_merge($options, $locOptions);
|
||||
}
|
||||
@ -201,8 +209,6 @@ class NewnoticeAction extends Action
|
||||
$upload->attachToNotice($notice);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($this->boolean('ajax')) {
|
||||
header('Content-Type: text/xml;charset=utf-8');
|
||||
$this->xw->startDocument('1.0', 'UTF-8');
|
||||
|
@ -96,12 +96,23 @@ class Inbox extends Memcached_DataObject
|
||||
$inbox = new Inbox();
|
||||
|
||||
$inbox->user_id = $user_id;
|
||||
$inbox->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids));
|
||||
$inbox->pack($ids);
|
||||
$inbox->fake = true;
|
||||
|
||||
return $inbox;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append the given notice to the given user's inbox.
|
||||
* Caching updates are managed for the inbox itself.
|
||||
*
|
||||
* If the notice is already in this inbox, the second
|
||||
* add will be silently dropped.
|
||||
*
|
||||
* @param int @user_id
|
||||
* @param int $notice_id
|
||||
* @return boolean success
|
||||
*/
|
||||
static function insertNotice($user_id, $notice_id)
|
||||
{
|
||||
$inbox = DB_DataObject::staticGet('inbox', 'user_id', $user_id);
|
||||
@ -114,6 +125,13 @@ class Inbox extends Memcached_DataObject
|
||||
return false;
|
||||
}
|
||||
|
||||
$ids = $inbox->unpack();
|
||||
if (in_array(intval($notice_id), $ids)) {
|
||||
// Already in there, we probably re-ran some inbox adds
|
||||
// due to an error. Skip the dupe silently.
|
||||
return true;
|
||||
}
|
||||
|
||||
$result = $inbox->query(sprintf('UPDATE inbox '.
|
||||
'set notice_ids = concat(cast(0x%08x as binary(4)), '.
|
||||
'substr(notice_ids, 1, %d)) '.
|
||||
@ -150,7 +168,7 @@ class Inbox extends Memcached_DataObject
|
||||
}
|
||||
}
|
||||
|
||||
$ids = unpack('N*', $inbox->notice_ids);
|
||||
$ids = $inbox->unpack();
|
||||
|
||||
if (!empty($since_id)) {
|
||||
$newids = array();
|
||||
@ -229,4 +247,21 @@ class Inbox extends Memcached_DataObject
|
||||
}
|
||||
return new ArrayWrapper($items);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a list of integer notice_ids into a packed blob in this object.
|
||||
* @param array $ids list of integer notice_ids
|
||||
*/
|
||||
protected function pack(array $ids)
|
||||
{
|
||||
$this->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array of integer notice_ids
|
||||
*/
|
||||
protected function unpack()
|
||||
{
|
||||
return unpack('N*', $this->notice_ids);
|
||||
}
|
||||
}
|
||||
|
@ -340,8 +340,9 @@ class NoticeListItem extends Widget
|
||||
|
||||
function showNickname()
|
||||
{
|
||||
$this->out->element('span', array('class' => 'nickname fn'),
|
||||
$this->profile->nickname);
|
||||
$this->out->raw('<span class="nickname fn">' .
|
||||
htmlspecialchars($this->profile->nickname) .
|
||||
'</span>');
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user