Whitespace updates.
Header updates.
Break long lines in README.
Indentation updates.
<?php
/*
-StatusNet Plugin: 0.9
-Plugin Name: FirePHP
-Description: Sends StatusNet log output to FirePHP
-Version: 0.1
-Author: Craig Andrews <candrews@integralblue.com>
-Author URI: http://candrews.integralblue.com/
+ * StatusNet Plugin: 0.9
+ * Plugin Name: FirePHP
+ * Description: Sends StatusNet log output to FirePHP
+ * Version: 0.1
+ * Author: Craig Andrews <candrews@integralblue.com>
+ * Author URI: http://candrews.integralblue.com/
*/
/*
'author' => 'Craig Andrews',
'homepage' => 'http://status.net/wiki/Plugin:FirePHP',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('The FirePHP plugin writes StatusNet\'s log output to FirePHP.'));
return true;
}
The FirePHP plugin writes StatusNet's log output to FirePHP.
Using FirePHP on production sites can expose sensitive information.
- You must protect the security of your application by disabling FirePHP
- logging on your live site.
+
+You must protect the security of your application by disabling FirePHP logging
+on your live site!
Installation
============
=======
addPlugin('FirePHP', array());
-
* @param User &$newUser The new user
*
* @return boolean hook value
- *
*/
function onEndUserRegister(&$newProfile, &$newUser)
{
$schema = Schema::get();
// For storing user-submitted flags on profiles
-
$schema->ensureTable('user_followeveryone_prefs',
array(new ColumnDef('user_id', 'integer', null,
true, 'PRI'),
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:FollowEveryone',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('New users follow everyone at registration and are followed in return.'));
return true;
}
* List by local nickname.
*/
public $post = array();
-
+
/**
* New user registrations will automatically join these groups on
* registration. They're not prevented from leaving, however.
- *
+ *
* List by local nickname.
*/
public $join = array();
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:GeoURL',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Ping <a href="http://geourl.org/">GeoURL</a> when '.
'new geolocation-enhanced notices are posted.'));
return true;
function getGeonames($method, $params)
{
if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) {
- throw new Exception("skipping due to recent web service timeout");
+ // TRANS: Exception thrown when a geo names service is not used because of a recent timeout.
+ throw new Exception(_m('Skipping due to recent web service timeout.'));
}
$client = HTTPClient::start();
}
if (!$result->isOk()) {
- throw new Exception("HTTP error code " . $result->getStatus());
+ // TRANS: Exception thrown when a geo names service does not return an expected response.
+ // TRANS: %s is an HTTP error code.
+ throw new Exception(sprintf(_m('HTTP error code %s.'),$result->getStatus()));
}
$body = $result->getBody();
if (empty($body)) {
- throw new Exception("Empty HTTP body in response");
+ // TRANS: Exception thrown when a geo names service returns an empty body.
+ throw new Exception(_m('Empty HTTP body in response.'));
}
// This will throw an exception if the XML is mal-formed
}
if (isset($document->status)) {
- throw new Exception("Error #".$document->status['value']." ('".$document->status['message']."')");
+ // TRANS: Exception thrown when a geo names service return a specific error number and error text.
+ // TRANS: %1$s is an error code, %2$s is an error message.
+ throw new Exception(sprintf(_m('Error #%1$s ("%2$s").'),$document->status['value'],$document->status['message']));
}
// Array of elements, >0 elements
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:Geonames',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Uses <a href="http://geonames.org/">Geonames</a> service to get human-readable '.
'names for locations based on user-provided lat/long pairs.'));
return true;
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:GoogleAnalytics',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Use <a href="http://www.google.com/analytics/">Google Analytics</a>'.
' to track web access.'));
return true;
'action' =>
common_local_url('avatarsettings')));
$action->elementStart('fieldset', array('id' => 'settings_gravatar_add'));
+ // TRANS: Fieldset legend. Gravatar is an avatar service.
$action->element('legend', null, _m('Set Gravatar'));
$action->hidden('token', common_session_token());
$action->element('p', 'form_guide',
+ // TRANS: Form guide. Gravatar is an avatar service.
_m('If you want to use your Gravatar image, click "Add".'));
$action->element('input', array('type' => 'submit',
'id' => 'settings_gravatar_add_action-submit',
'name' => 'add',
'class' => 'submit',
- 'value' => _m('Add')));
+ // TRANS: Button text to add a Gravatar. Gravatar is an avatar service.
+ 'value' => _m('BUTTON','Add')));
$action->elementEnd('fieldset');
$action->elementEnd('form');
} elseif($hasGravatar) {
'action' =>
common_local_url('avatarsettings')));
$action->elementStart('fieldset', array('id' => 'settings_gravatar_remove'));
+ // TRANS: Fieldset legend. Gravatar is an avatar service.
$action->element('legend', null, _m('Remove Gravatar'));
$action->hidden('token', common_session_token());
$action->element('p', 'form_guide',
+ // TRANS: Form guide. Gravatar is an avatar service.
_m('If you want to remove your Gravatar image, click "Remove".'));
$action->element('input', array('type' => 'submit',
'id' => 'settings_gravatar_remove_action-submit',
'name' => 'remove',
'class' => 'submit',
+ // TRANS: Button text to remove a Gravatar. Gravatar is an avatar service.
'value' => _m('Remove')));
$action->elementEnd('fieldset');
$action->elementEnd('form');
} else {
$action->element('p', 'form_guide',
+ // TRANS: Form guide. Gravatar is an avatar service.
_m('To use a Gravatar first enter in an email address.'));
}
}
$cur = common_current_user();
if(empty($cur->email)) {
+ // TRANS: Message displayed when no e-mail address was set when saving Gravatar setting. Gravatar is an avatar service.
return array('message' => _m('You do not have an email address set in your profile.'),
'success' => false);
}
$gravatar->created = DB_DataObject_Cast::dateTime(); # current time
if (!$gravatar->insert()) {
+ // TRANS: Message displayed when saving Gravatar setting fails. Gravatar is an avatar service.
return array('message' => _m('Failed to save Gravatar to the database.'),
'success' => false);
}
}
+ // TRANS: Message displayed when Gravatar was added. Gravatar is an avatar service.
return array('message' => _m('Gravatar added.'),
'success' => true);
}
$avatar = $profile->getAvatar(AVATAR_MINI_SIZE);
if($avatar) $avatar->delete();
+ // TRANS: Message displayed when Gravatar was removed. Gravatar is an avatar service.
return array('message' => _m('Gravatar removed.'),
'success' => true);
}
'author' => 'Eric Helgeson',
'homepage' => 'http://status.net/wiki/Plugin:Gravatar',
'rawdescription' =>
+ // TRANS: Plugin decsription.
_m('The Gravatar plugin allows users to use their <a href="http://www.gravatar.com/">Gravatar</a> with StatusNet.'));
return true;
GravatarPlugin 0.1
-About
+About:
This will allow users to use their Gravatar Avatar with your StatusNet install.
-Configuration
+Configuration:
add this to your config.php:
addPlugin('Gravatar', array());
-ToDo:
+To do:
Site default all on for gravatar by default
Migration Script
-Localize
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class GroupPrivateMessagePlugin extends Plugin
{
/**
*
* @return boolean hook value
*/
-
function onCheckSchema()
{
$schema = Schema::get();
'datetime'),
new ColumnDef('modified',
'timestamp')));
-
+
$schema->ensureTable('group_message',
array(new ColumnDef('id',
'char',
*
* @return boolean hook value
*/
-
function onAutoload($cls)
{
$dir = dirname(__FILE__);
*
* @return boolean hook value
*/
-
function onRouterInitialized($m)
{
$m->connect('group/:nickname/inbox',
*
* @see Action
*/
-
function onEndGroupGroupNav($groupnav)
{
$action = $groupnav->action;
$action->menuItem(common_local_url('groupinbox',
array('nickname' => $group->nickname)),
+ // TRANS: Menu item in group page.
_m('MENU','Inbox'),
+ // TRANS: Menu title in group page.
_m('Private messages for this group.'),
$action->trimmed('action') == 'groupinbox',
'nav_group_inbox');
*
* @result boolean hook value
*/
-
function onEndGroupSave($group)
{
$gps = new Group_privacy_settings();
*
* @param GroupEditForm $form form being shown
*/
-
function onEndGroupEditFormData($form)
{
$gps = null;
$form->out->elementStart('li');
$form->out->dropdown('allow_privacy',
+ // TRANS: Dropdown label in group settings page for if group allows private messages.
_m('Private messages'),
+ // TRANS: Dropdown option in group settings page for allowing private messages.
array(Group_privacy_settings::SOMETIMES => _m('Sometimes'),
+ // TRANS: Dropdown option in group settings page for allowing private messages.
Group_privacy_settings::ALWAYS => _m('Always'),
+ // TRANS: Dropdown option in group settings page for allowing private messages.
Group_privacy_settings::NEVER => _m('Never')),
+ // TRANS: Dropdown title in group settings page for if group allows private messages.
_m('Whether to allow private messages to this group.'),
false,
(empty($gps)) ? Group_privacy_settings::SOMETIMES : $gps->allow_privacy);
$form->out->elementEnd('li');
$form->out->elementStart('li');
$form->out->dropdown('allow_sender',
+ // TRANS: Dropdown label in group settings page for who can send private messages to the group.
_m('Private senders'),
+ // TRANS: Dropdown option in group settings page for who can send private messages.
array(Group_privacy_settings::EVERYONE => _m('Everyone'),
+ // TRANS: Dropdown option in group settings page for who can send private messages.
Group_privacy_settings::MEMBER => _m('Member'),
+ // TRANS: Dropdown option in group settings page for who can send private messages.
Group_privacy_settings::ADMIN => _m('Admin')),
+ // TRANS: Dropdown title in group settings page for who can send private messages to the group.
_m('Who can send private messages to the group.'),
false,
(empty($gps)) ? Group_privacy_settings::MEMBER : $gps->allow_sender);
} else {
$orig = clone($gps);
}
-
+
$gps->allow_privacy = $action->trimmed('allow_privacy');
$gps->allow_sender = $action->trimmed('allow_sender');
} else {
$gps->update($orig);
}
-
+
return true;
}
/**
* Overload 'd' command to send private messages to groups.
- *
+ *
* 'd !group word word word' will send the private message
* 'word word word' to the group 'group'.
- *
+ *
* @param string $cmd Command being run
* @param string $arg Rest of the message (including address)
* @param User $user User sending the message
* @param Command &$result The resulting command object to be run.
- *
+ *
* @return boolean hook value
*/
function onStartIntepretCommand($cmd, $arg, $user, &$result)
*
* @param Widget $widget The showgroup action being shown
* @param User_group $group The current group
- *
+ *
* @return boolean hook value
*/
function onEndGroupActionsList($widget, $group)
$action->elementStart('li', 'entity_send-a-message');
$action->element('a', array('href' => common_local_url('newgroupmessage', array('nickname' => $group->nickname)),
+ // TRANS: Title for action in group actions list.
'title' => _m('Send a direct message to this group.')),
- _m('Message'));
+ // TRANS: Link text for action in group actions list to send a private message to a group.
+ _m('LINKTEXT','Message'));
// $form = new GroupMessageForm($action, $group);
// $form->hidden = true;
// $form->show();
* privacy == always, force a group private message to all mentioned groups.
* If any of the groups disallows private messages, skip it.
*
- * @param
- *
+ * @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
$profile = $notice->getProfile();
if ($count > 0) {
-
/* Add them to the database */
foreach (array_unique($match[1]) as $nickname) {
-
$group = User_group::getForNickname($nickname, $profile);
if (empty($group)) {
}
if ($forcePrivate) {
-
foreach ($ignored as $group) {
common_log(LOG_NOTICE,
"Notice forced to group direct message ".
// Don't save the notice!
// FIXME: this is probably cheating.
+ // TRANS: Client exception thrown when a private group message has to be forced.
throw new ClientException(sprintf(_m('Forced notice to private group message.')),
200);
}
}
-
+
return true;
}
*
* @return boolean hook value
*/
-
function onEndGroupProfileElements($action, $group)
{
$gps = Group_privacy_settings::forGroup($group);
-
+
if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) {
+ // TRANS: Indicator on the group page that the group is (essentially) private.
$action->element('p', 'privategroupindicator', _m('Private'));
}
{
if ($action instanceof ShowgroupAction) {
$gps = Group_privacy_settings::forGroup($action->group);
-
+
if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) {
return false;
}
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:GroupPrivateMessage',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Allow posting private messages to groups.'));
return true;
}
*
* @see DB_DataObject
*/
-
class Group_message extends Memcached_DataObject
{
public $__table = 'group_message'; // table name
* @param mixed $v Value to lookup
*
* @return Group_message object found, or null for no hits
- *
*/
function staticGet($k, $v=null)
{
{
if (!$user->hasRight(Right::NEWMESSAGE)) {
// XXX: maybe break this out into a separate right
+ // TRANS: Exception thrown when trying to send group private message without having the right to do that.
+ // TRANS: %s is a user nickname.
throw new Exception(sprintf(_m('User %s is not allowed to send private messages.'),
$user->nickname));
}
// We use the same limits as for 'regular' private messages.
if (Message::contentTooLong($text)) {
+ // TRANS: Exception thrown when trying to send group private message that is too long.
+ // TRANS: %d is the maximum meggage length.
throw new Exception(sprintf(_m('That\'s too long. Maximum message size is %d character.',
'That\'s too long. Maximum message size is %d characters.',
Message::maxContent()),
// Valid! Let's do this thing!
$gm = new Group_message();
-
+
$gm->id = UUID::gen();
$gm->uri = common_local_url('showgroupmessage', array('id' => $gm->id));
$gm->from_profile = $user->id;
function distribute()
{
$group = User_group::staticGet('id', $this->to_group);
-
+
$member = $group->getMembers();
while ($member->fetch()) {
{
$group = User_group::staticGet('id', $this->to_group);
if (empty($group)) {
+ // TRANS: Exception thrown when trying to send group private message to a non-existing group.
throw new ServerException(_m('No group for group message.'));
}
return $group;
{
$sender = Profile::staticGet('id', $this->from_profile);
if (empty($sender)) {
+ // TRANS: Exception thrown when trying to send group private message without having a sender.
throw new ServerException(_m('No sender for group message.'));
}
return $sender;
return $gm;
}
-
}
*
* @see DB_DataObject
*/
-
class Group_message_profile extends Memcached_DataObject
{
public $__table = 'group_message_profile'; // table name
* @param mixed $v Value to lookup
*
* @return Group_message object found, or null for no hits
- *
*/
function staticGet($k, $v=null)
{
function send($gm, $profile)
{
$gmp = new Group_message_profile();
-
+
$gmp->group_message_id = $gm->id;
$gmp->to_profile = $profile->id;
$gmp->created = common_sql_now();
$this->notifyByMail();
}
- function notifyByMail()
+ function notifyByMail()
{
$to = User::staticGet('id', $this->to_profile);
// TRANS: %3$s is the message content, %4$s a URL to the message,
// TRANS: %5$s is the StatusNet sitename.
$body = sprintf(_m("%1\$s (%2\$s) sent a private message to group %3\$s:\n\n".
- "------------------------------------------------------\n".
- "%4\$s\n".
- "------------------------------------------------------\n\n".
- "You can reply to their message here:\n\n".
- "%5\$s\n\n".
- "Do not reply to this email; it will not get to them.\n\n".
- "With kind regards,\n".
- "%6\$s"),
+ "------------------------------------------------------\n".
+ "%4\$s\n".
+ "------------------------------------------------------\n\n".
+ "You can reply to their message here:\n\n".
+ "%5\$s\n\n".
+ "Do not reply to this email; it will not get to them.\n\n".
+ "With kind regards,\n".
+ "%6\$s"),
$from_profile->getBestName(),
$from_profile->nickname,
$group->nickname,
*
* @see DB_DataObject
*/
-
class Group_privacy_settings extends Memcached_DataObject
{
public $__table = 'group_privacy_settings';
/** ID of the group. */
- public $group_id;
+ public $group_id;
/** When to allow privacy: always, sometimes, or never. */
public $allow_privacy;
/** Who can send private messages: everyone, member, admin */
- public $allow_sender;
+ public $allow_sender;
/** row creation timestamp */
public $created;
/** Last-modified timestamp */
*
* @return User_greeting_count object found, or null for no hits
*/
-
function staticGet($k, $v=null)
{
return Memcached_DataObject::staticGet('Group_privacy_settings', $k, $v);
*
* @return array array of column definitions
*/
-
function table()
{
return array('group_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'allow_sender' => DB_DATAOBJECT_INT,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
-
+
}
/**
*
* @return array list of key field names
*/
-
function keys()
{
return array_keys($this->keyTypes());
* 'K' for primary key: for compound keys, add an entry for each component;
* 'U' for unique keys: compound keys are not well supported here.
*/
-
function keyTypes()
{
return array('group_id' => 'K');
*
* @return array magic three-false array that stops auto-incrementing.
*/
-
function sequenceKey()
{
return array(false, false, false);
$gps = self::forGroup($group);
if ($gps->allow_privacy == Group_privacy_settings::NEVER) {
+ // TRANS: Exception thrown when trying to set group privacy setting if group %s does not allow private messages.
throw new Exception(sprintf(_m('Group %s does not allow private messages.'),
$group->nickname));
}
case Group_privacy_settings::EVERYONE:
$profile = $user->getProfile();
if (Group_block::isBlocked($group, $profile)) {
+ // TRANS: Exception thrown when trying to send group private message while blocked from that group.
+ // TRANS: %1$s is a user nickname, %2$s is a group nickname.
throw new Exception(sprintf(_m('User %1$s is blocked from group %2$s.'),
$user->nickname,
$group->nickname));
break;
case Group_privacy_settings::MEMBER:
if (!$user->isMember($group)) {
+ // TRANS: Exception thrown when trying to send group private message while not a member.
+ // TRANS: %1$s is a user nickname, %2$s is a group nickname.
throw new Exception(sprintf(_m('User %1$s is not a member of group %2$s.'),
$user->nickname,
$group->nickname));
break;
case Group_privacy_settings::ADMIN:
if (!$user->isAdmin($group)) {
+ // TRANS: Exception thrown when trying to send group private message while not a group administrator.
+ // TRANS: %1$s is a user nickname, %2$s is a group nickname.
throw new Exception(sprintf(_m('User %1$s is not an administrator of group %2$s.'),
$user->nickname,
$group->nickname));
}
break;
default:
+ // TRANS: Exception thrown when encountering undefined group privacy settings.
+ // TRANS: %s is a group nickname.
throw new Exception(sprintf(_m('Unknown privacy settings for group %s.'),
$group->nickname));
}
* Copyright (C) 2011, StatusNet, Inc.
*
* List of private messages to this group
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class GroupinboxAction extends GroupDesignAction
{
var $gm;
$cur = common_current_user();
if (empty($cur)) {
+ // TRANS: Client exception thrown when trying to view group inbox while not logged in.
throw new ClientException(_m('Only for logged-in users.'), 403);
}
$localGroup = Local_group::staticGet('nickname', $nickname);
if (empty($localGroup)) {
+ // TRANS: Client exception thrown when trying to view group inbox for non-existing group.
throw new ClientException(_m('No such group.'), 404);
}
$this->group = User_group::staticGet('id', $localGroup->group_id);
if (empty($this->group)) {
+ // TRANS: Client exception thrown when trying to view group inbox for non-existing group.
throw new ClientException(_m('No such group.'), 404);
}
if (!$cur->isMember($this->group)) {
+ // TRANS: Client exception thrown when trying to view group inbox while not a member.
throw new ClientException(_m('Only for members.'), 403);
}
if (!$this->page) {
$this->page = 1;
}
-
- $this->gm = Group_message::forGroup($this->group,
+
+ $this->gm = Group_message::forGroup($this->group,
($this->page - 1) * MESSAGES_PER_PAGE,
MESSAGES_PER_PAGE + 1);
return true;
$cnt = $gml->show();
if ($cnt == 0) {
+ // TRANS: Text of group inbox if no private messages were sent to it.
$this->element('p', 'guide', _m('This group has not received any private messages.'));
}
$this->pagination($this->page > 1,
$base = $this->group->getFancyName();
if ($this->page == 1) {
+ // TRANS: Title of inbox for group %s.
return sprintf(_m('%s group inbox'), $base);
} else {
// TRANS: Page title for any but first group page.
*
* @return void
*/
-
function showPageNotice()
{
$instr = $this->getInstructions();
* Copyright (C) 2011, StatusNet, Inc.
*
* Command object for messages to groups
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class GroupMessageCommand extends Command
{
/** User sending the message. */
* @param string $nickname Nickname of the group
* @param string $text Text of message
*/
-
function __construct($user, $nickname, $text)
{
$this->user = $user;
$gm = Group_message::send($this->user, $group, $this->text);
- $channel->output($this->user,
- sprintf(_m('Direct message to group %s sent.'),
+ $channel->output($this->user,
+ // TRANS: Succes message after sending private group message to group %s.
+ sprintf(_m('Direct message to group %s sent.'),
$group->nickname));
return true;
* Copyright (C) 2011, StatusNet, Inc.
*
* Form for posting a group message
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class GroupMessageForm extends Form
{
var $group;
*
* @todo add a drop-down list to post to any group
*/
-
function __construct($out, $group, $content=null)
{
parent::__construct($out);
* Action for the form
*/
function action()
- {
+ {
return common_local_url('newgroupmessage',
array('nickname' => $this->group->nickname));
}
{
$this->out->element('legend',
null,
+ // TRANS: Form legend for sending private message to group %s.
sprintf(_m('Message to %s'), $this->group->nickname));
}
*
* @return
*/
-
function id()
{
return 'form_notice-group-message';
*
* @return
*/
-
function formClass()
{
return 'form_notice';
*
* @return
*/
-
function formData()
{
$this->out->element('label', array('for' => 'notice_data-text',
'id' => 'notice_data-text-label'),
+ // TRANS: Field label for private group message to group %s.
sprintf(_m('Direct message to %s'), $this->group->nickname));
$this->out->element('textarea', array('id' => 'notice_data-text',
if ($contentLimit > 0) {
$this->out->elementStart('dl', 'form_note');
+ // TRANS: Indicator for number of chatacters still available for notice.
$this->out->element('dt', null, _m('Available characters'));
$this->out->element('dd', array('class' => 'count'),
$contentLimit);
*
* @return
*/
-
function formActions()
{
$this->out->element('input', array('id' => 'notice_action-submit',
'class' => 'submit',
'name' => 'message_send',
'type' => 'submit',
+ // TRANS: Send button text for sending private group notice.
'value' => _m('Send button for sending notice', 'Send')));
}
}
* Copyright (C) 2011, StatusNet, Inc.
*
* Widget for showing list of group messages
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* Copyright (C) 2011, StatusNet, Inc.
*
* Widget for showing an individual group message
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
{
$group = $this->gm->getGroup();
$sender = $this->gm->getSender();
-
+
$this->out->elementStart('li', array('class' => 'hentry notice message group-message',
'id' => 'message-' . $this->gm->id));
$this->out->elementStart('div', 'entry-title');
$this->out->elementStart('span', 'vcard author');
- $this->out->elementStart('a',
+ $this->out->elementStart('a',
array('href' => $sender->profileurl,
'class' => 'url'));
$avatar = $sender->getAvatar(AVATAR_STREAM_SIZE);
* Copyright (C) 2011, StatusNet, Inc.
*
* Action for adding a new group message
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class NewgroupmessageAction extends Action
{
var $group;
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
$this->user = common_current_user();
if (empty($this->user)) {
+ // TRANS: Client exception thrown when trying to send a private group message while not logged in.
throw new ClientException(_m('Must be logged in.'), 403);
}
if (!$this->user->hasRight(Right::NEWMESSAGE)) {
+ // TRANS: Exception thrown when user %s is not allowed to send a private group message.
throw new Exception(sprintf(_m('User %s is not allowed to send private messages.'),
$this->user->nickname));
}
$localGroup = Local_group::staticGet('nickname', $nickname);
if (empty($localGroup)) {
+ // TRANS: Client exception thrown when trying to send a private group message to a non-existing group.
throw new ClientException(_m('No such group.'), 404);
}
$this->group = User_group::staticGet('id', $localGroup->group_id);
if (empty($this->group)) {
+ // TRANS: Client exception thrown when trying to send a private group message to a non-existing group.
throw new ClientException(_m('No such group.'), 404);
}
// This throws an exception on error
-
Group_privacy_settings::ensurePost($this->user, $this->group);
// If we're posted to, check session token and get text
-
if ($this->isPost()) {
$this->checkSessionToken();
$this->text = $this->trimmed('content');
*
* @return void
*/
-
function handle($argarray=null)
{
if ($this->isPost()) {
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'),
+ // TRANS: Succes text after sending a direct message to group %s.
sprintf(_m('Direct message to %s sent.'),
$this->group->nickname));
$this->elementEnd('body');
function title()
{
+ // TRANS: Title of form for new private group message.
return sprintf(_m('New message to group %s'), $this->group->nickname);
}
}
* Copyright (C) 2011, StatusNet, Inc.
*
* Show a single group message
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class ShowgroupmessageAction extends Action
{
var $gm;
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
$this->user = common_current_user();
if (empty($this->user)) {
+ // TRANS: Client exception thrown when trying to view group private messages without being logged in.
throw new ClientException(_m('Only logged-in users can view private messages.'),
403);
}
$this->gm = Group_message::staticGet('id', $id);
if (empty($this->gm)) {
+ // TRANS: Client exception thrown when trying to view a non-existing group private message.
throw new ClientException(_m('No such message.'), 404);
}
$this->group = User_group::staticGet('id', $this->gm->to_group);
if (empty($this->group)) {
+ // TRANS: Server exception thrown when trying to view group private messages for a non-exsting group.
throw new ServerException(_m('Group not found.'));
}
if (!$this->user->isMember($this->group)) {
+ // TRANS: Client exception thrown when trying to view a group private message without being a group member.
throw new ClientException(_m('Cannot read message.'), 403);
}
$this->sender = Profile::staticGet('id', $this->gm->from_profile);
if (empty($this->sender)) {
+ // TRANS: Server exception thrown when trying to view a group private message without a sender.
throw new ServerException(_m('No sender found.'));
}
*
* @return void
*/
-
function handle($argarray=null)
{
$this->showPage();
/**
* Title of the page
*/
-
function title()
{
+ // TRANS: Title for private group message.
+ // TRANS: %1$s is the sender name, %2$s is the group name, %3$s is a timestamp.
return sprintf(_m('Message from %1$s to group %2$s on %3$s'),
$this->sender->nickname,
$this->group->nickname,
/**
* Show the content area.
*/
-
function showContent()
{
$this->elementStart('ul', 'notices messages');
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
return true;