/* Add them to the database */
foreach(array_unique($hashtags) as $hashtag) {
- /* elide characters we do not want in the tag */
+ /* elide characters we don't want in the tag */
$this->saveTag($hashtag);
}
return true;
' take a breather and post again in a few minutes.'));
}
- $banned = common_config('profile', 'banned');
-
- if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) {
- common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id).");
+ if (!$profile->hasRight(Right::NEWNOTICE)) {
+ common_log(LOG_WARNING, "Attempted post from user disallowed to post: " . $profile->nickname);
throw new ClientException(_('You are banned from posting notices on this site.'));
}
$notice = new Notice();
$notice->profile_id = $profile_id;
- $blacklist = common_config('public', 'blacklist');
$autosource = common_config('public', 'autosource');
- # Blacklisted are non-false, but not 1, either
+ # Sandboxed are non-false, but not 1, either
- if (($blacklist && in_array($profile_id, $blacklist)) ||
+ if (!$profile->hasRight(Right::PUBLICNOTICE) ||
($source && $autosource && in_array($source, $autosource))) {
$notice->is_local = Notice::LOCAL_NONPUBLIC;
} else {
return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null);
}
- # Get the cache; if we cannot, just go to the DB
+ # Get the cache; if we can't, just go to the DB
$cache = common_memcache();
}
$groups = $this->saveGroups();
+ $profile = $this->getProfile();
foreach ($groups as $group) {
$users = $group->getUserMembers();
foreach ($users as $id) {
if (!array_key_exists($id, $ni)) {
$user = User::staticGet('id', $id);
- if (!$user->hasBlocked($notice->profile_id)) {
+ if (!$user->hasBlocked($profile)) {
$ni[$id] = NOTICE_INBOX_SOURCE_GROUP;
}
}
}
}
- $cnt = 0;
-
- $qryhdr = 'INSERT INTO notice_inbox (user_id, notice_id, source, created) VALUES ';
- $qry = $qryhdr;
-
- foreach ($ni as $id => $source) {
- if ($cnt > 0) {
- $qry .= ', ';
- }
- $qry .= '('.$id.', '.$this->id.', '.$source.", '".$this->created. "') ";
- $cnt++;
- if (rand() % NOTICE_INBOX_SOFT_LIMIT == 0) {
- // FIXME: Causes lag in replicated servers
- // Notice_inbox::gc($id);
- }
- if ($cnt >= MAX_BOXCARS) {
- $inbox = new Notice_inbox();
- $inbox->query($qry);
- $qry = $qryhdr;
- $cnt = 0;
- }
- }
-
- if ($cnt > 0) {
- $inbox = new Notice_inbox();
- $inbox->query($qry);
- }
+ Notice_inbox::bulkInsert($this->id, $this->created, $ni);
return;
}
if (empty($recipient)) {
continue;
}
- // Do not save replies from blocked profile to local user
+ // Don't save replies from blocked profile to local user
$recipient_user = User::staticGet('id', $recipient->id);
if (!empty($recipient_user) && $recipient_user->hasBlocked($sender)) {
continue;
$tagged = Profile_tag::getTagged($sender->id, $tag);
foreach ($tagged as $t) {
if (!$replied[$t->id]) {
- // Do not save replies from blocked profile to local user
+ // Don't save replies from blocked profile to local user
$t_user = User::staticGet('id', $t->id);
if ($t_user && $t_user->hasBlocked($sender)) {
continue;
}
}
+ if (!empty($this->lat) && !empty($this->lon)) {
+ $xs->elementStart('geo', array('xmlns:georss' => 'http://www.georss.org/georss'));
+ $xs->element('georss:point', null, $this->lat . ' ' . $this->lon);
+ $xs->elementEnd('geo');
+ }
+
$xs->elementEnd('entry');
return $xs->getString();
}
}
- // If it's not a "low bandwidth" source (one where you cannot set
+ // If it's not a "low bandwidth" source (one where you can't set
// a reply_to argument), we return. This is mostly web and API
// clients.