コード例 #1
0
 function handle($channel)
 {
     // Throws a command exception if group not found
     $group = $this->getGroup($this->nickname);
     $gm = Group_message::send($this->user, $group, $this->text);
     $channel->output($this->user, sprintf(_m('Direct message to group %s sent.'), $group->nickname));
     return true;
 }
コード例 #2
0
ファイル: newgroupmessage.php プロジェクト: Grasia/bolotweet
 function sendNewMessage()
 {
     $gm = Group_message::send($this->user, $this->group, $this->text);
     if ($this->boolean('ajax')) {
         $this->startHTML('text/xml;charset=utf-8');
         $this->elementStart('head');
         // TRANS: Title after sending a private group message.
         $this->element('title', null, _m('Message sent'));
         $this->elementEnd('head');
         $this->elementStart('body');
         $this->element('p', array('id' => 'command_result'), sprintf(_m('Direct message to %s sent.'), $this->group->nickname));
         $this->elementEnd('body');
         $this->elementEnd('html');
     } else {
         common_redirect($gm->url, 303);
     }
 }
コード例 #3
0
 /**
  * When saving a notice, check its groups. If any of them has
  * privacy == always, force a group private message to all mentioned groups.
  * If any of the groups disallows private messages, skip it.
  *
  * @param 
  *
  */
 function onStartNoticeSave(&$notice)
 {
     // Look for group tags
     // FIXME: won't work for remote groups
     // @fixme if Notice::saveNew is refactored so we can just pull its list
     // of groups between processing and saving, make use of it
     $count = preg_match_all('/(?:^|\\s)!(' . Nickname::DISPLAY_FMT . ')/', strtolower($notice->content), $match);
     $groups = array();
     $ignored = array();
     $forcePrivate = false;
     if ($count > 0) {
         /* Add them to the database */
         foreach (array_unique($match[1]) as $nickname) {
             $group = User_group::getForNickname($nickname, $profile);
             if (empty($group)) {
                 continue;
             }
             $gps = Group_privacy_settings::forGroup($group);
             switch ($gps->allow_privacy) {
                 case Group_privacy_settings::ALWAYS:
                     $forcePrivate = true;
                     // fall through
                 // fall through
                 case Group_privacy_settings::SOMETIMES:
                     $groups[] = $group;
                     break;
                 case Group_privacy_settings::NEVER:
                     $ignored[] = $group;
                     break;
             }
         }
         if ($forcePrivate) {
             foreach ($ignored as $group) {
                 common_log(LOG_NOTICE, "Notice forced to group direct message " . "but group " . $group->nickname . " does not allow them.");
             }
             $user = User::staticGet('id', $notice->profile_id);
             if (empty($user)) {
                 common_log(LOG_WARNING, "Notice forced to group direct message " . "but profile " . $notice->profile_id . " is not a local user.");
             } else {
                 foreach ($groups as $group) {
                     Group_message::send($user, $group, $notice->content);
                 }
             }
             // Don't save the notice!
             // FIXME: this is probably cheating.
             throw new ClientException(sprintf(_('Forced notice to private group message.')), 200);
         }
     }
     return true;
 }