forked from GNUsocial/gnu-social
Merge branch '0.9.x' into testing
This commit is contained in:
commit
e9b733e7f0
12
EVENTS.txt
12
EVENTS.txt
@ -290,6 +290,18 @@ StartRegistrationTry: before validating and saving a new user
|
|||||||
EndRegistrationTry: after saving a new user (note: no profile or user object!)
|
EndRegistrationTry: after saving a new user (note: no profile or user object!)
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
|
|
||||||
|
StartAvatarFormData: before displaying avatar form
|
||||||
|
- $action: action object being shown
|
||||||
|
|
||||||
|
EndAvatarFormData: after displaying avatar form
|
||||||
|
- $action: action object being shown
|
||||||
|
|
||||||
|
StartAvatarSaveForm: before saving the avatar
|
||||||
|
- $action: action object being shown
|
||||||
|
|
||||||
|
EndAvatarSaveForm: after saving the avatar
|
||||||
|
- $action: action object being shown
|
||||||
|
|
||||||
StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
|
StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
|
||||||
- $qm: empty queue manager to set
|
- $qm: empty queue manager to set
|
||||||
|
|
||||||
|
18
Makefile
Normal file
18
Makefile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Warning: do not transform tabs to spaces in this file.
|
||||||
|
|
||||||
|
all : translations
|
||||||
|
|
||||||
|
core_mo = $(patsubst %.po,%.mo,$(wildcard locale/*/LC_MESSAGES/statusnet.po))
|
||||||
|
plugin_mo = $(patsubst %.po,%.mo,$(wildcard plugins/*/locale/*/LC_MESSAGES/*.po))
|
||||||
|
|
||||||
|
translations : $(core_mo) $(plugin_mo)
|
||||||
|
|
||||||
|
clean :
|
||||||
|
rm -f $(core_mo) $(plugin_mo)
|
||||||
|
|
||||||
|
updatepo :
|
||||||
|
php scripts/update_po_templates.php --all
|
||||||
|
|
||||||
|
%.mo : %.po
|
||||||
|
msgfmt -o $@ $<
|
||||||
|
|
@ -167,5 +167,4 @@ class AllAction extends ProfileAction
|
|||||||
$this->element('h1', null, sprintf(_('%s and friends'), $this->user->nickname));
|
$this->element('h1', null, sprintf(_('%s and friends'), $this->user->nickname));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -118,53 +118,56 @@ class AvatarsettingsAction extends AccountSettingsAction
|
|||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
$this->element('legend', null, _('Avatar settings'));
|
$this->element('legend', null, _('Avatar settings'));
|
||||||
$this->hidden('token', common_session_token());
|
$this->hidden('token', common_session_token());
|
||||||
|
|
||||||
|
if (Event::handle('StartAvatarFormData', array($this))) {
|
||||||
|
$this->elementStart('ul', 'form_data');
|
||||||
|
if ($original) {
|
||||||
|
$this->elementStart('li', array('id' => 'avatar_original',
|
||||||
|
'class' => 'avatar_view'));
|
||||||
|
$this->element('h2', null, _("Original"));
|
||||||
|
$this->elementStart('div', array('id'=>'avatar_original_view'));
|
||||||
|
$this->element('img', array('src' => $original->url,
|
||||||
|
'width' => $original->width,
|
||||||
|
'height' => $original->height,
|
||||||
|
'alt' => $user->nickname));
|
||||||
|
$this->elementEnd('div');
|
||||||
|
$this->elementEnd('li');
|
||||||
|
}
|
||||||
|
|
||||||
$this->elementStart('ul', 'form_data');
|
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
|
||||||
if ($original) {
|
|
||||||
$this->elementStart('li', array('id' => 'avatar_original',
|
if ($avatar) {
|
||||||
'class' => 'avatar_view'));
|
$this->elementStart('li', array('id' => 'avatar_preview',
|
||||||
$this->element('h2', null, _("Original"));
|
'class' => 'avatar_view'));
|
||||||
$this->elementStart('div', array('id'=>'avatar_original_view'));
|
$this->element('h2', null, _("Preview"));
|
||||||
$this->element('img', array('src' => $original->url,
|
$this->elementStart('div', array('id'=>'avatar_preview_view'));
|
||||||
'width' => $original->width,
|
$this->element('img', array('src' => $original->url,
|
||||||
'height' => $original->height,
|
'width' => AVATAR_PROFILE_SIZE,
|
||||||
'alt' => $user->nickname));
|
'height' => AVATAR_PROFILE_SIZE,
|
||||||
$this->elementEnd('div');
|
'alt' => $user->nickname));
|
||||||
|
$this->elementEnd('div');
|
||||||
|
$this->submit('delete', _('Delete'));
|
||||||
|
$this->elementEnd('li');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->elementStart('li', array ('id' => 'settings_attach'));
|
||||||
|
$this->element('input', array('name' => 'avatarfile',
|
||||||
|
'type' => 'file',
|
||||||
|
'id' => 'avatarfile'));
|
||||||
|
$this->element('input', array('name' => 'MAX_FILE_SIZE',
|
||||||
|
'type' => 'hidden',
|
||||||
|
'id' => 'MAX_FILE_SIZE',
|
||||||
|
'value' => ImageFile::maxFileSizeInt()));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
$this->elementEnd('ul');
|
||||||
|
|
||||||
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
|
$this->elementStart('ul', 'form_actions');
|
||||||
|
$this->elementStart('li');
|
||||||
if ($avatar) {
|
$this->submit('upload', _('Upload'));
|
||||||
$this->elementStart('li', array('id' => 'avatar_preview',
|
|
||||||
'class' => 'avatar_view'));
|
|
||||||
$this->element('h2', null, _("Preview"));
|
|
||||||
$this->elementStart('div', array('id'=>'avatar_preview_view'));
|
|
||||||
$this->element('img', array('src' => $original->url,
|
|
||||||
'width' => AVATAR_PROFILE_SIZE,
|
|
||||||
'height' => AVATAR_PROFILE_SIZE,
|
|
||||||
'alt' => $user->nickname));
|
|
||||||
$this->elementEnd('div');
|
|
||||||
$this->submit('delete', _('Delete'));
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
$this->elementEnd('ul');
|
||||||
}
|
}
|
||||||
|
Event::handle('EndAvatarFormData', array($this));
|
||||||
$this->elementStart('li', array ('id' => 'settings_attach'));
|
|
||||||
$this->element('input', array('name' => 'avatarfile',
|
|
||||||
'type' => 'file',
|
|
||||||
'id' => 'avatarfile'));
|
|
||||||
$this->element('input', array('name' => 'MAX_FILE_SIZE',
|
|
||||||
'type' => 'hidden',
|
|
||||||
'id' => 'MAX_FILE_SIZE',
|
|
||||||
'value' => ImageFile::maxFileSizeInt()));
|
|
||||||
$this->elementEnd('li');
|
|
||||||
$this->elementEnd('ul');
|
|
||||||
|
|
||||||
$this->elementStart('ul', 'form_actions');
|
|
||||||
$this->elementStart('li');
|
|
||||||
$this->submit('upload', _('Upload'));
|
|
||||||
$this->elementEnd('li');
|
|
||||||
$this->elementEnd('ul');
|
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
@ -266,15 +269,18 @@ class AvatarsettingsAction extends AccountSettingsAction
|
|||||||
'Try again, please.'));
|
'Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->arg('upload')) {
|
if (Event::handle('StartAvatarSaveForm', array($this))) {
|
||||||
$this->uploadAvatar();
|
if ($this->arg('upload')) {
|
||||||
} else if ($this->arg('crop')) {
|
$this->uploadAvatar();
|
||||||
$this->cropAvatar();
|
} else if ($this->arg('crop')) {
|
||||||
} else if ($this->arg('delete')) {
|
$this->cropAvatar();
|
||||||
$this->deleteAvatar();
|
} else if ($this->arg('delete')) {
|
||||||
} else {
|
$this->deleteAvatar();
|
||||||
$this->showForm(_('Unexpected form submission.'));
|
} else {
|
||||||
|
$this->showForm(_('Unexpected form submission.'));
|
||||||
|
}
|
||||||
|
Event::handle('EndAvatarSaveForm', array($this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,12 +77,13 @@ class LoginAction extends Action
|
|||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
|
|
||||||
$disabled = common_config('logincommand','disabled');
|
$disabled = common_config('logincommand','disabled');
|
||||||
|
$disabled = isset($disabled) && $disabled;
|
||||||
|
|
||||||
if (common_is_real_login()) {
|
if (common_is_real_login()) {
|
||||||
$this->clientError(_('Already logged in.'));
|
$this->clientError(_('Already logged in.'));
|
||||||
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
$this->checkLogin();
|
$this->checkLogin();
|
||||||
} else if (!isset($disabled) && isset($args['user_id']) && isset($args['token'])){
|
} else if (!$disabled && isset($args['user_id']) && isset($args['token'])){
|
||||||
$this->checkLogin($args['user_id'],$args['token']);
|
$this->checkLogin($args['user_id'],$args['token']);
|
||||||
} else {
|
} else {
|
||||||
common_ensure_session();
|
common_ensure_session();
|
||||||
|
@ -39,4 +39,17 @@ class Login_token extends Memcached_DataObject
|
|||||||
|
|
||||||
/* the code above is auto generated do not remove the tag below */
|
/* the code above is auto generated do not remove the tag below */
|
||||||
###END_AUTOCODE
|
###END_AUTOCODE
|
||||||
|
|
||||||
|
/*
|
||||||
|
DB_DataObject calculates the sequence key(s) by taking the first key returned by the keys() function.
|
||||||
|
In this case, the keys() function returns user_id as the first key. user_id is not a sequence, but
|
||||||
|
DB_DataObject's sequenceKey() will incorrectly think it is. Then, since the sequenceKey() is a numeric
|
||||||
|
type, but is not set to autoincrement in the database, DB_DataObject will create a _seq table and
|
||||||
|
manage the sequence itself. This is not the correct behavior for the user_id in this class.
|
||||||
|
So we override that incorrect behavior, and simply say there is no sequence key.
|
||||||
|
*/
|
||||||
|
function sequenceKey()
|
||||||
|
{
|
||||||
|
return array(false,false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -788,10 +788,24 @@ class Notice extends Memcached_DataObject
|
|||||||
return $notice;
|
return $notice;
|
||||||
}
|
}
|
||||||
$notice->whereAdd('id in (' . implode(', ', $ids) . ')');
|
$notice->whereAdd('id in (' . implode(', ', $ids) . ')');
|
||||||
$notice->orderBy('id DESC');
|
|
||||||
|
|
||||||
$notice->find();
|
$notice->find();
|
||||||
return $notice;
|
|
||||||
|
$temp = array();
|
||||||
|
|
||||||
|
while ($notice->fetch()) {
|
||||||
|
$temp[$notice->id] = clone($notice);
|
||||||
|
}
|
||||||
|
|
||||||
|
$wrapped = array();
|
||||||
|
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
if (array_key_exists($id, $temp)) {
|
||||||
|
$wrapped[] = $temp[$id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayWrapper($wrapped);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -948,39 +962,7 @@ class Notice extends Memcached_DataObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$cnt = 0;
|
Notice_inbox::bulkInsert($this->id, $this->created, $ni);
|
||||||
|
|
||||||
$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();
|
|
||||||
$result = $inbox->query($qry);
|
|
||||||
if (PEAR::isError($result)) {
|
|
||||||
common_log_db_error($inbox, $qry);
|
|
||||||
}
|
|
||||||
$qry = $qryhdr;
|
|
||||||
$cnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($cnt > 0) {
|
|
||||||
$inbox = new Notice_inbox();
|
|
||||||
$result = $inbox->query($qry);
|
|
||||||
if (PEAR::isError($result)) {
|
|
||||||
common_log_db_error($inbox, $qry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ define('NOTICE_INBOX_SOFT_LIMIT', 1000);
|
|||||||
define('NOTICE_INBOX_SOURCE_SUB', 1);
|
define('NOTICE_INBOX_SOURCE_SUB', 1);
|
||||||
define('NOTICE_INBOX_SOURCE_GROUP', 2);
|
define('NOTICE_INBOX_SOURCE_GROUP', 2);
|
||||||
define('NOTICE_INBOX_SOURCE_REPLY', 3);
|
define('NOTICE_INBOX_SOURCE_REPLY', 3);
|
||||||
|
define('NOTICE_INBOX_SOURCE_FORWARD', 4);
|
||||||
define('NOTICE_INBOX_SOURCE_GATEWAY', -1);
|
define('NOTICE_INBOX_SOURCE_GATEWAY', -1);
|
||||||
|
|
||||||
class Notice_inbox extends Memcached_DataObject
|
class Notice_inbox extends Memcached_DataObject
|
||||||
@ -83,7 +84,7 @@ class Notice_inbox extends Memcached_DataObject
|
|||||||
$inbox->whereAdd('created > \'' . date('Y-m-d H:i:s', $since) . '\'');
|
$inbox->whereAdd('created > \'' . date('Y-m-d H:i:s', $since) . '\'');
|
||||||
}
|
}
|
||||||
|
|
||||||
$inbox->orderBy('notice_id DESC');
|
$inbox->orderBy('created DESC');
|
||||||
|
|
||||||
if (!is_null($offset)) {
|
if (!is_null($offset)) {
|
||||||
$inbox->limit($offset, $limit);
|
$inbox->limit($offset, $limit);
|
||||||
@ -141,4 +142,43 @@ class Notice_inbox extends Memcached_DataObject
|
|||||||
'WHERE user_id = ' . $user_id . ' ' .
|
'WHERE user_id = ' . $user_id . ' ' .
|
||||||
'AND notice_id in ('.implode(',', $notices).')');
|
'AND notice_id in ('.implode(',', $notices).')');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function bulkInsert($notice_id, $created, $ni)
|
||||||
|
{
|
||||||
|
$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.', '.$notice_id.', '.$source.", '".$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();
|
||||||
|
$result = $inbox->query($qry);
|
||||||
|
if (PEAR::isError($result)) {
|
||||||
|
common_log_db_error($inbox, $qry);
|
||||||
|
}
|
||||||
|
$qry = $qryhdr;
|
||||||
|
$cnt = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($cnt > 0) {
|
||||||
|
$inbox = new Notice_inbox();
|
||||||
|
$result = $inbox->query($qry);
|
||||||
|
if (PEAR::isError($result)) {
|
||||||
|
common_log_db_error($inbox, $qry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -260,7 +260,6 @@ modified = 384
|
|||||||
|
|
||||||
[login_token__keys]
|
[login_token__keys]
|
||||||
user_id = K
|
user_id = K
|
||||||
token = K
|
|
||||||
|
|
||||||
[message]
|
[message]
|
||||||
id = 129
|
id = 129
|
||||||
|
@ -39,6 +39,16 @@ create table profile_role (
|
|||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
create table location_namespace (
|
||||||
|
|
||||||
|
id integer /*comment 'identity for this namespace'*/,
|
||||||
|
description text /* comment 'description of the namespace'*/ ,
|
||||||
|
created integer not null /*comment 'date the record was created*/ ,
|
||||||
|
/* modified timestamp comment 'date this record was modified',*/
|
||||||
|
primary key (id)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
create table login_token (
|
create table login_token (
|
||||||
user_id integer not null /* comment 'user owning this token'*/ references "user" (id),
|
user_id integer not null /* comment 'user owning this token'*/ references "user" (id),
|
||||||
token char(32) not null /* comment 'token useable for logging in'*/,
|
token char(32) not null /* comment 'token useable for logging in'*/,
|
||||||
@ -69,3 +79,4 @@ ALTER TABLE profile ADD COLUMN lat decimal(10,7) /*comment 'latitude'*/ ;
|
|||||||
ALTER TABLE profile ADD COLUMN lon decimal(10,7) /*comment 'longitude'*/;
|
ALTER TABLE profile ADD COLUMN lon decimal(10,7) /*comment 'longitude'*/;
|
||||||
ALTER TABLE profile ADD COLUMN location_id integer /* comment 'location id if possible'*/;
|
ALTER TABLE profile ADD COLUMN location_id integer /* comment 'location id if possible'*/;
|
||||||
ALTER TABLE profile ADD COLUMN location_ns integer /* comment 'namespace for location'*/;
|
ALTER TABLE profile ADD COLUMN location_ns integer /* comment 'namespace for location'*/;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ create table "user" (
|
|||||||
emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
|
emailnotifyfav integer default 1 /* comment 'Notify by email of favorites' */,
|
||||||
emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
|
emailnotifynudge integer default 1 /* comment 'Notify by email of nudges' */,
|
||||||
emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
|
emailnotifymsg integer default 1 /* comment 'Notify by email of direct messages' */,
|
||||||
emailnotifyattn integer default 1 /* command 'Notify by email of @-replies' */,
|
emailnotifyattn integer default 1 /* command 'Notify by email of @-replies' */,
|
||||||
emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
|
emailmicroid integer default 1 /* comment 'whether to publish email microid' */,
|
||||||
language varchar(50) /* comment 'preferred language' */,
|
language varchar(50) /* comment 'preferred language' */,
|
||||||
timezone varchar(50) /* comment 'timezone' */,
|
timezone varchar(50) /* comment 'timezone' */,
|
||||||
@ -82,7 +82,7 @@ create table "user" (
|
|||||||
uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
|
uri varchar(255) unique /* comment 'universally unique identifier, usually a tag URI' */,
|
||||||
autosubscribe integer default 0 /* comment 'automatically subscribe to users who subscribe to us' */,
|
autosubscribe integer default 0 /* comment 'automatically subscribe to users who subscribe to us' */,
|
||||||
urlshorteningservice varchar(50) default 'ur1.ca' /* comment 'service to use for auto-shortening URLs' */,
|
urlshorteningservice varchar(50) default 'ur1.ca' /* comment 'service to use for auto-shortening URLs' */,
|
||||||
inboxed integer default 0 /* comment 'has an inbox been created for this user?' */,
|
inboxed integer default 0 /* comment 'has an inbox been created for this user?' */,
|
||||||
design_id integer /* comment 'id of a design' */references design(id),
|
design_id integer /* comment 'id of a design' */references design(id),
|
||||||
viewdesigns integer default 1 /* comment 'whether to view user-provided designs'*/,
|
viewdesigns integer default 1 /* comment 'whether to view user-provided designs'*/,
|
||||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
@ -298,7 +298,7 @@ create table foreign_user (
|
|||||||
nickname varchar(255) /* comment 'nickname on foreign service' */,
|
nickname varchar(255) /* comment 'nickname on foreign service' */,
|
||||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
|
|
||||||
primary key (id, service)
|
primary key (id, service)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -308,7 +308,7 @@ create table foreign_link (
|
|||||||
service int not null /* comment 'foreign key to service' */ references foreign_service (id),
|
service int not null /* comment 'foreign key to service' */ references foreign_service (id),
|
||||||
credentials varchar(255) /* comment 'authc credentials, typically a password' */,
|
credentials varchar(255) /* comment 'authc credentials, typically a password' */,
|
||||||
noticesync int not null default 1 /* comment 'notice synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies' */,
|
noticesync int not null default 1 /* comment 'notice synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies' */,
|
||||||
friendsync int not null default 2 /* comment 'friend synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming */,
|
friendsync int not null default 2 /* comment 'friend synchronisation, bit 1 = sync outgoing, bit 2 = sync incoming */,
|
||||||
profilesync int not null default 1 /* comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming' */,
|
profilesync int not null default 1 /* comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming' */,
|
||||||
last_noticesync timestamp default null /* comment 'last time notices were imported' */,
|
last_noticesync timestamp default null /* comment 'last time notices were imported' */,
|
||||||
last_friendsync timestamp default null /* comment 'last time friends were imported' */,
|
last_friendsync timestamp default null /* comment 'last time friends were imported' */,
|
||||||
@ -324,7 +324,7 @@ create table foreign_subscription (
|
|||||||
subscriber int not null /* comment 'subscriber on foreign service' */ ,
|
subscriber int not null /* comment 'subscriber on foreign service' */ ,
|
||||||
subscribed int not null /* comment 'subscribed user' */ ,
|
subscribed int not null /* comment 'subscribed user' */ ,
|
||||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
|
|
||||||
primary key (service, subscriber, subscribed)
|
primary key (service, subscriber, subscribed)
|
||||||
);
|
);
|
||||||
create index foreign_subscription_subscriber_idx on foreign_subscription using btree(subscriber);
|
create index foreign_subscription_subscriber_idx on foreign_subscription using btree(subscriber);
|
||||||
@ -354,7 +354,7 @@ create table message (
|
|||||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */,
|
modified timestamp /* comment 'date this record was modified' */,
|
||||||
source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
|
source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */
|
||||||
|
|
||||||
);
|
);
|
||||||
create index message_from_idx on message using btree(from_profile);
|
create index message_from_idx on message using btree(from_profile);
|
||||||
create index message_to_idx on message using btree(to_profile);
|
create index message_to_idx on message using btree(to_profile);
|
||||||
@ -409,7 +409,6 @@ create table user_group (
|
|||||||
mini_logo varchar(255) /* comment 'mini logo' */,
|
mini_logo varchar(255) /* comment 'mini logo' */,
|
||||||
design_id integer /*comment 'id of a design' */ references design(id),
|
design_id integer /*comment 'id of a design' */ references design(id),
|
||||||
|
|
||||||
|
|
||||||
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */,
|
||||||
modified timestamp /* comment 'date this record was modified' */
|
modified timestamp /* comment 'date this record was modified' */
|
||||||
|
|
||||||
@ -447,16 +446,15 @@ create table group_inbox (
|
|||||||
);
|
);
|
||||||
create index group_inbox_created_idx on group_inbox using btree(created);
|
create index group_inbox_created_idx on group_inbox using btree(created);
|
||||||
|
|
||||||
|
|
||||||
/*attachments and URLs stuff */
|
/*attachments and URLs stuff */
|
||||||
create sequence file_seq;
|
create sequence file_seq;
|
||||||
create table file (
|
create table file (
|
||||||
id bigint default nextval('file_seq') primary key /* comment 'unique identifier' */,
|
id bigint default nextval('file_seq') primary key /* comment 'unique identifier' */,
|
||||||
url varchar(255) unique,
|
url varchar(255) unique,
|
||||||
mimetype varchar(50),
|
mimetype varchar(50),
|
||||||
size integer,
|
size integer,
|
||||||
title varchar(255),
|
title varchar(255),
|
||||||
date integer,
|
date integer,
|
||||||
protected integer,
|
protected integer,
|
||||||
filename text /* comment 'if a local file, name of the file' */,
|
filename text /* comment 'if a local file, name of the file' */,
|
||||||
modified timestamp default CURRENT_TIMESTAMP /* comment 'date this record was modified'*/
|
modified timestamp default CURRENT_TIMESTAMP /* comment 'date this record was modified'*/
|
||||||
@ -467,38 +465,38 @@ create table file_oembed (
|
|||||||
file_id bigint default nextval('file_oembed_seq') primary key /* comment 'unique identifier' */,
|
file_id bigint default nextval('file_oembed_seq') primary key /* comment 'unique identifier' */,
|
||||||
version varchar(20),
|
version varchar(20),
|
||||||
type varchar(20),
|
type varchar(20),
|
||||||
mimetype varchar(50),
|
mimetype varchar(50),
|
||||||
provider varchar(50),
|
provider varchar(50),
|
||||||
provider_url varchar(255),
|
provider_url varchar(255),
|
||||||
width integer,
|
width integer,
|
||||||
height integer,
|
height integer,
|
||||||
html text,
|
html text,
|
||||||
title varchar(255),
|
title varchar(255),
|
||||||
author_name varchar(50),
|
author_name varchar(50),
|
||||||
author_url varchar(255),
|
author_url varchar(255),
|
||||||
url varchar(255)
|
url varchar(255)
|
||||||
);
|
);
|
||||||
|
|
||||||
create sequence file_redirection_seq;
|
create sequence file_redirection_seq;
|
||||||
create table file_redirection (
|
create table file_redirection (
|
||||||
url varchar(255) primary key,
|
url varchar(255) primary key,
|
||||||
file_id bigint,
|
file_id bigint,
|
||||||
redirections integer,
|
redirections integer,
|
||||||
httpcode integer
|
httpcode integer
|
||||||
);
|
);
|
||||||
|
|
||||||
create sequence file_thumbnail_seq;
|
create sequence file_thumbnail_seq;
|
||||||
create table file_thumbnail (
|
create table file_thumbnail (
|
||||||
file_id bigint primary key,
|
file_id bigint primary key,
|
||||||
url varchar(255) unique,
|
url varchar(255) unique,
|
||||||
width integer,
|
width integer,
|
||||||
height integer
|
height integer
|
||||||
);
|
);
|
||||||
|
|
||||||
create sequence file_to_post_seq;
|
create sequence file_to_post_seq;
|
||||||
create table file_to_post (
|
create table file_to_post (
|
||||||
file_id bigint,
|
file_id bigint,
|
||||||
post_id bigint,
|
post_id bigint,
|
||||||
|
|
||||||
primary key (file_id, post_id)
|
primary key (file_id, post_id)
|
||||||
);
|
);
|
||||||
@ -527,7 +525,7 @@ create table session (
|
|||||||
id varchar(32) primary key /* comment 'session ID'*/,
|
id varchar(32) primary key /* comment 'session ID'*/,
|
||||||
session_data text /* comment 'session data'*/,
|
session_data text /* comment 'session data'*/,
|
||||||
created timestamp not null DEFAULT CURRENT_TIMESTAMP /* comment 'date this record was created'*/,
|
created timestamp not null DEFAULT CURRENT_TIMESTAMP /* comment 'date this record was created'*/,
|
||||||
modified integer DEFAULT extract(epoch from CURRENT_TIMESTAMP) /* comment 'date this record was modified'*/
|
modified integer DEFAULT extract(epoch from CURRENT_TIMESTAMP) /* comment 'date this record was modified'*/
|
||||||
);
|
);
|
||||||
|
|
||||||
create index session_modified_idx on session (modified);
|
create index session_modified_idx on session (modified);
|
||||||
@ -543,7 +541,6 @@ create table deleted_notice (
|
|||||||
|
|
||||||
CREATE index deleted_notice_profile_id_idx on deleted_notice (profile_id);
|
CREATE index deleted_notice_profile_id_idx on deleted_notice (profile_id);
|
||||||
|
|
||||||
|
|
||||||
/* Textsearch stuff */
|
/* Textsearch stuff */
|
||||||
|
|
||||||
create index textsearch_idx on profile using gist(textsearch);
|
create index textsearch_idx on profile using gist(textsearch);
|
||||||
@ -551,7 +548,6 @@ create index noticecontent_idx on notice using gist(to_tsvector('english',conten
|
|||||||
create trigger textsearchupdate before insert or update on profile for each row
|
create trigger textsearchupdate before insert or update on profile for each row
|
||||||
execute procedure tsvector_update_trigger(textsearch, 'pg_catalog.english', nickname, fullname, location, bio, homepage);
|
execute procedure tsvector_update_trigger(textsearch, 'pg_catalog.english', nickname, fullname, location, bio, homepage);
|
||||||
|
|
||||||
|
|
||||||
create table config (
|
create table config (
|
||||||
|
|
||||||
section varchar(32) /* comment 'configuration section'*/,
|
section varchar(32) /* comment 'configuration section'*/,
|
||||||
@ -572,6 +568,16 @@ create table profile_role (
|
|||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
create table location_namespace (
|
||||||
|
|
||||||
|
id integer /*comment 'identity for this namespace'*/,
|
||||||
|
description text /* comment 'description of the namespace'*/ ,
|
||||||
|
created integer not null /*comment 'date the record was created*/ ,
|
||||||
|
/* modified timestamp comment 'date this record was modified',*/
|
||||||
|
primary key (id)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
create table login_token (
|
create table login_token (
|
||||||
user_id integer not null /* comment 'user owning this token'*/ references "user" (id),
|
user_id integer not null /* comment 'user owning this token'*/ references "user" (id),
|
||||||
token char(32) not null /* comment 'token useable for logging in'*/,
|
token char(32) not null /* comment 'token useable for logging in'*/,
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* @author Alan Knowles <alan@akbkhome.com>
|
* @author Alan Knowles <alan@akbkhome.com>
|
||||||
* @copyright 1997-2006 The PHP Group
|
* @copyright 1997-2006 The PHP Group
|
||||||
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||||
* @version CVS: $Id: DataObject.php 284150 2009-07-15 23:27:59Z alan_k $
|
* @version CVS: $Id: DataObject.php 291349 2009-11-27 09:15:18Z alan_k $
|
||||||
* @link http://pear.php.net/package/DB_DataObject
|
* @link http://pear.php.net/package/DB_DataObject
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -235,7 +235,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
* @access private
|
* @access private
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
var $_DB_DataObject_version = "1.8.12";
|
var $_DB_DataObject_version = "1.9.0";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Database table (used by table extends)
|
* The Database table (used by table extends)
|
||||||
@ -309,7 +309,8 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* An autoloading, caching static get method using key, value (based on get)
|
* An autoloading, caching static get method using key, value (based on get)
|
||||||
*
|
* (depreciated - use ::get / and your own caching method)
|
||||||
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* $object = DB_DataObject::staticGet("DbTable_mytable",12);
|
* $object = DB_DataObject::staticGet("DbTable_mytable",12);
|
||||||
* or
|
* or
|
||||||
@ -942,9 +943,13 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
$this->$key = $keyvalue;
|
$this->$key = $keyvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if we haven't set disable_null_strings to "full"
|
||||||
|
$ignore_null = !isset($options['disable_null_strings'])
|
||||||
|
|| !is_string($options['disable_null_strings'])
|
||||||
|
|| strtolower($options['disable_null_strings']) !== 'full' ;
|
||||||
|
|
||||||
|
|
||||||
foreach($items as $k => $v) {
|
foreach($items as $k => $v) {
|
||||||
|
|
||||||
// if we are using autoincrement - skip the column...
|
// if we are using autoincrement - skip the column...
|
||||||
@ -953,7 +958,10 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!isset($this->$k)) {
|
|
||||||
|
|
||||||
|
// Ignore variables which aren't set to a value
|
||||||
|
if ( !isset($this->$k) && $ignore_null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// dont insert data into mysql timestamps
|
// dont insert data into mysql timestamps
|
||||||
@ -980,8 +988,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) {
|
||||||
if (!isset($options['disable_null_strings']) && is_string($this->$k) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) {
|
|
||||||
$rightq .= " NULL ";
|
$rightq .= " NULL ";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1194,8 +1201,14 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
$options = $_DB_DATAOBJECT['CONFIG'];
|
$options = $_DB_DATAOBJECT['CONFIG'];
|
||||||
|
|
||||||
|
|
||||||
|
$ignore_null = !isset($options['disable_null_strings'])
|
||||||
|
|| !is_string($options['disable_null_strings'])
|
||||||
|
|| strtolower($options['disable_null_strings']) !== 'full' ;
|
||||||
|
|
||||||
|
|
||||||
foreach($items as $k => $v) {
|
foreach($items as $k => $v) {
|
||||||
if (!isset($this->$k)) {
|
|
||||||
|
if (!isset($this->$k) && $ignore_null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// ignore stuff thats
|
// ignore stuff thats
|
||||||
@ -1234,7 +1247,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
// special values ... at least null is handled...
|
// special values ... at least null is handled...
|
||||||
if (!isset($options['disable_null_strings']) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) {
|
if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) {
|
||||||
$settings .= "$kSql = NULL ";
|
$settings .= "$kSql = NULL ";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1796,10 +1809,15 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$_DB_DATAOBJECT['INI'][$this->_database] = array();
|
||||||
foreach ($schemas as $ini) {
|
foreach ($schemas as $ini) {
|
||||||
if (file_exists($ini) && is_file($ini)) {
|
if (file_exists($ini) && is_file($ini)) {
|
||||||
$_DB_DATAOBJECT['INI'][$this->_database] = parse_ini_file($ini, true);
|
|
||||||
|
$_DB_DATAOBJECT['INI'][$this->_database] = array_merge(
|
||||||
|
$_DB_DATAOBJECT['INI'][$this->_database],
|
||||||
|
parse_ini_file($ini, true)
|
||||||
|
);
|
||||||
|
|
||||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||||
if (!is_readable ($ini)) {
|
if (!is_readable ($ini)) {
|
||||||
$this->debug("ini file is not readable: $ini","databaseStructure",1);
|
$this->debug("ini file is not readable: $ini","databaseStructure",1);
|
||||||
@ -2478,7 +2496,8 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
$x = new DB_DataObject;
|
$x = new DB_DataObject;
|
||||||
$this->_query= $x->_query;
|
$this->_query= $x->_query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
foreach($keys as $k => $v) {
|
foreach($keys as $k => $v) {
|
||||||
// index keys is an indexed array
|
// index keys is an indexed array
|
||||||
/* these filter checks are a bit suspicious..
|
/* these filter checks are a bit suspicious..
|
||||||
@ -2519,7 +2538,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($options['disable_null_strings']) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) {
|
if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) {
|
||||||
$this->whereAdd(" $kSql IS NULL");
|
$this->whereAdd(" $kSql IS NULL");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -2624,15 +2643,31 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
// does this need multi db support??
|
// does this need multi db support??
|
||||||
$p = isset($_DB_DATAOBJECT['CONFIG']['class_prefix']) ?
|
$cp = isset($_DB_DATAOBJECT['CONFIG']['class_prefix']) ?
|
||||||
$_DB_DATAOBJECT['CONFIG']['class_prefix'] : '';
|
explode(PATH_SEPARATOR, $_DB_DATAOBJECT['CONFIG']['class_prefix']) : '';
|
||||||
$class = $p . preg_replace('/[^A-Z0-9]/i','_',ucfirst($table));
|
|
||||||
$ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class);
|
|
||||||
|
|
||||||
$class = $ce ? $class : DB_DataObject::_autoloadClass($class);
|
// multiprefix support.
|
||||||
|
$tbl = preg_replace('/[^A-Z0-9]/i','_',ucfirst($table));
|
||||||
|
if (is_array($cp)) {
|
||||||
|
$class = array();
|
||||||
|
foreach($cp as $cpr) {
|
||||||
|
$ce = substr(phpversion(),0,1) > 4 ? class_exists($cpr . $tbl,false) : class_exists($cpr . $tbl);
|
||||||
|
if ($ce) {
|
||||||
|
$class = $cpr . $tbl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$class[] = $cpr . $tbl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$class = $tbl;
|
||||||
|
$ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$rclass = $ce ? $class : DB_DataObject::_autoloadClass($class, $table);
|
||||||
|
|
||||||
// proxy = full|light
|
// proxy = full|light
|
||||||
if (!$class && isset($_DB_DATAOBJECT['CONFIG']['proxy'])) {
|
if (!$rclass && isset($_DB_DATAOBJECT['CONFIG']['proxy'])) {
|
||||||
|
|
||||||
DB_DataObject::debug("FAILED TO Autoload $database.$table - using proxy.","FACTORY",1);
|
DB_DataObject::debug("FAILED TO Autoload $database.$table - using proxy.","FACTORY",1);
|
||||||
|
|
||||||
@ -2653,12 +2688,14 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
return $x->$proxyMethod( $d->_database, $table);
|
return $x->$proxyMethod( $d->_database, $table);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$class) {
|
if (!$rclass) {
|
||||||
return DB_DataObject::raiseError(
|
return DB_DataObject::raiseError(
|
||||||
"factory could not find class $class from $table",
|
"factory could not find class " .
|
||||||
|
(is_array($class) ? implode(PATH_SEPARATOR, $class) : $class ).
|
||||||
|
"from $table",
|
||||||
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
||||||
}
|
}
|
||||||
$ret = new $class;
|
$ret = new $rclass;
|
||||||
if (!empty($database)) {
|
if (!empty($database)) {
|
||||||
DB_DataObject::debug("Setting database to $database","FACTORY",1);
|
DB_DataObject::debug("Setting database to $database","FACTORY",1);
|
||||||
$ret->database($database);
|
$ret->database($database);
|
||||||
@ -2668,11 +2705,12 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
/**
|
/**
|
||||||
* autoload Class
|
* autoload Class
|
||||||
*
|
*
|
||||||
* @param string $class Class
|
* @param string|array $class Class
|
||||||
|
* @param string $table Table trying to load.
|
||||||
* @access private
|
* @access private
|
||||||
* @return string classname on Success
|
* @return string classname on Success
|
||||||
*/
|
*/
|
||||||
function _autoloadClass($class)
|
function _autoloadClass($class, $table=false)
|
||||||
{
|
{
|
||||||
global $_DB_DATAOBJECT;
|
global $_DB_DATAOBJECT;
|
||||||
|
|
||||||
@ -2682,32 +2720,62 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
$class_prefix = empty($_DB_DATAOBJECT['CONFIG']['class_prefix']) ?
|
$class_prefix = empty($_DB_DATAOBJECT['CONFIG']['class_prefix']) ?
|
||||||
'' : $_DB_DATAOBJECT['CONFIG']['class_prefix'];
|
'' : $_DB_DATAOBJECT['CONFIG']['class_prefix'];
|
||||||
|
|
||||||
$table = substr($class,strlen($class_prefix));
|
$table = $table ? $table : substr($class,strlen($class_prefix));
|
||||||
|
|
||||||
// only include the file if it exists - and barf badly if it has parse errors :)
|
// only include the file if it exists - and barf badly if it has parse errors :)
|
||||||
if (!empty($_DB_DATAOBJECT['CONFIG']['proxy']) || empty($_DB_DATAOBJECT['CONFIG']['class_location'])) {
|
if (!empty($_DB_DATAOBJECT['CONFIG']['proxy']) || empty($_DB_DATAOBJECT['CONFIG']['class_location'])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// support for:
|
||||||
|
// class_location = mydir/ => maps to mydir/Tablename.php
|
||||||
|
// class_location = mydir/myfile_%s.php => maps to mydir/myfile_Tablename
|
||||||
|
// with directory sepr
|
||||||
|
// class_location = mydir/:mydir2/: => tries all of thes locations.
|
||||||
|
$cl = $_DB_DATAOBJECT['CONFIG']['class_location'];
|
||||||
|
|
||||||
|
|
||||||
if (strpos($_DB_DATAOBJECT['CONFIG']['class_location'],'%s') !== false) {
|
switch (true) {
|
||||||
$file = sprintf($_DB_DATAOBJECT['CONFIG']['class_location'], preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)));
|
case (strpos($cl ,'%s') !== false):
|
||||||
} else {
|
$file = sprintf($cl , preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)));
|
||||||
$file = $_DB_DATAOBJECT['CONFIG']['class_location'].'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php";
|
break;
|
||||||
|
|
||||||
|
case (strpos($cl , PATH_SEPARATOR) !== false):
|
||||||
|
$file = array();
|
||||||
|
foreach(explode(PATH_SEPARATOR, $cl ) as $p) {
|
||||||
|
$file[] = $p .'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$file = $cl .'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists($file)) {
|
$cls = is_array($class) ? $class : array($class);
|
||||||
|
|
||||||
|
if (is_array($file) || !file_exists($file)) {
|
||||||
$found = false;
|
$found = false;
|
||||||
foreach(explode(PATH_SEPARATOR, ini_get('include_path')) as $p) {
|
|
||||||
if (file_exists("$p/$file")) {
|
$file = is_array($file) ? $file : array($file);
|
||||||
$file = "$p/$file";
|
$search = implode(PATH_SEPARATOR, $file);
|
||||||
$found = true;
|
foreach($file as $f) {
|
||||||
|
foreach(explode(PATH_SEPARATOR, '' . PATH_SEPARATOR . ini_get('include_path')) as $p) {
|
||||||
|
$ff = empty($p) ? $f : "$p/$f";
|
||||||
|
|
||||||
|
if (file_exists($ff)) {
|
||||||
|
$file = $ff;
|
||||||
|
$found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($found) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$found) {
|
if (!$found) {
|
||||||
DB_DataObject::raiseError(
|
DB_DataObject::raiseError(
|
||||||
"autoload:Could not find class {$class} using class_location value",
|
"autoload:Could not find class " . implode(',', $cls) .
|
||||||
|
" using class_location value :" . $search .
|
||||||
|
" using include_path value :" . ini_get('include_path'),
|
||||||
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2715,12 +2783,18 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
|
|
||||||
include_once $file;
|
include_once $file;
|
||||||
|
|
||||||
|
|
||||||
$ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class);
|
$ce = false;
|
||||||
|
foreach($cls as $c) {
|
||||||
|
$ce = substr(phpversion(),0,1) > 4 ? class_exists($c,false) : class_exists($c);
|
||||||
|
if ($ce) {
|
||||||
|
$class = $c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!$ce) {
|
if (!$ce) {
|
||||||
DB_DataObject::raiseError(
|
DB_DataObject::raiseError(
|
||||||
"autoload:Could not autoload {$class}",
|
"autoload:Could not autoload " . implode(',', $cls) ,
|
||||||
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2786,7 +2860,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$_DB_DATAOBJECT['LINKS'][$this->_database] = array();
|
||||||
foreach ($schemas as $ini) {
|
foreach ($schemas as $ini) {
|
||||||
|
|
||||||
$links =
|
$links =
|
||||||
@ -2794,9 +2868,13 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
$_DB_DATAOBJECT['CONFIG']["links_{$this->_database}"] :
|
$_DB_DATAOBJECT['CONFIG']["links_{$this->_database}"] :
|
||||||
str_replace('.ini','.links.ini',$ini);
|
str_replace('.ini','.links.ini',$ini);
|
||||||
|
|
||||||
if (empty($_DB_DATAOBJECT['LINKS'][$this->_database]) && file_exists($links) && is_file($links)) {
|
if (file_exists($links) && is_file($links)) {
|
||||||
/* not sure why $links = ... here - TODO check if that works */
|
/* not sure why $links = ... here - TODO check if that works */
|
||||||
$_DB_DATAOBJECT['LINKS'][$this->_database] = parse_ini_file($links, true);
|
$_DB_DATAOBJECT['LINKS'][$this->_database] = array_merge(
|
||||||
|
$_DB_DATAOBJECT['LINKS'][$this->_database],
|
||||||
|
parse_ini_file($links, true)
|
||||||
|
);
|
||||||
|
|
||||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||||
$this->debug("Loaded links.ini file: $links","links",1);
|
$this->debug("Loaded links.ini file: $links","links",1);
|
||||||
}
|
}
|
||||||
@ -2977,14 +3055,12 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
if ($link) {
|
if ($link) {
|
||||||
if ($obj->get($link, $this->$row)) {
|
if ($obj->get($link, $this->$row)) {
|
||||||
$obj->free();
|
|
||||||
return $obj;
|
return $obj;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($obj->get($this->$row)) {
|
if ($obj->get($this->$row)) {
|
||||||
$obj->free();
|
|
||||||
return $obj;
|
return $obj;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -3315,14 +3391,23 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ignore_null = !isset($options['disable_null_strings'])
|
||||||
|
|| !is_string($options['disable_null_strings'])
|
||||||
|
|| strtolower($options['disable_null_strings']) !== 'full' ;
|
||||||
|
|
||||||
|
|
||||||
foreach($items as $k => $v) {
|
foreach($items as $k => $v) {
|
||||||
if (!isset($obj->$k)) {
|
if (!isset($obj->$k) && $ignore_null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$kSql = ($quoteIdentifiers ? $DB->quoteIdentifier($k) : $k);
|
$kSql = ($quoteIdentifiers ? $DB->quoteIdentifier($k) : $k);
|
||||||
|
|
||||||
|
if (DB_DataObject::_is_null($obj,$k)) {
|
||||||
|
$obj->whereAdd("{$joinAs}.{$kSql} IS NULL");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($v & DB_DATAOBJECT_STR) {
|
if ($v & DB_DATAOBJECT_STR) {
|
||||||
$obj->whereAdd("{$joinAs}.{$kSql} = " . $this->_quote((string) (
|
$obj->whereAdd("{$joinAs}.{$kSql} = " . $this->_quote((string) (
|
||||||
@ -3344,14 +3429,9 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
if (PEAR::isError($value)) {
|
if (PEAR::isError($value)) {
|
||||||
$this->raiseError($value->getMessage() ,DB_DATAOBJECT_ERROR_INVALIDARG);
|
$this->raiseError($value->getMessage() ,DB_DATAOBJECT_ERROR_INVALIDARG);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isset($options['disable_null_strings']) && strtolower($value) === 'null') {
|
$obj->whereAdd("{$joinAs}.{$kSql} = $value");
|
||||||
$obj->whereAdd("{$joinAs}.{$kSql} IS NULL");
|
continue;
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
$obj->whereAdd("{$joinAs}.{$kSql} = $value");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3514,7 +3594,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($from[sprintf($format,$k)])) {
|
if (!isset($from[sprintf($format,$k)]) && !DB_DataObject::_is_null($from, sprintf($format,$k))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3643,7 +3723,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
|
|
||||||
// if not null - and it's not set.......
|
// if not null - and it's not set.......
|
||||||
|
|
||||||
if (!isset($this->$key) && ($val & DB_DATAOBJECT_NOTNULL)) {
|
if ($val & DB_DATAOBJECT_NOTNULL && DB_DataObject::_is_null($this, $key)) {
|
||||||
// dont check empty sequence key values..
|
// dont check empty sequence key values..
|
||||||
if (($key == $seq[0]) && ($seq[1] == true)) {
|
if (($key == $seq[0]) && ($seq[1] == true)) {
|
||||||
continue;
|
continue;
|
||||||
@ -3653,7 +3733,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!isset($options['disable_null_strings']) && is_string($this->$key) && (strtolower($this->$key) == 'null')) {
|
if (DB_DataObject::_is_null($this, $key)) {
|
||||||
if ($val & DB_DATAOBJECT_NOTNULL) {
|
if ($val & DB_DATAOBJECT_NOTNULL) {
|
||||||
$this->debug("'null' field used for '$key', but it is defined as NOT NULL", 'VALIDATION', 4);
|
$this->debug("'null' field used for '$key', but it is defined as NOT NULL", 'VALIDATION', 4);
|
||||||
$ret[$key] = false;
|
$ret[$key] = false;
|
||||||
@ -3868,13 +3948,14 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
//echo "FROM VALUE $col, {$cols[$col]}, $value\n";
|
//echo "FROM VALUE $col, {$cols[$col]}, $value\n";
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// set to null and column is can be null...
|
// set to null and column is can be null...
|
||||||
case (!isset($options['disable_null_strings']) && (strtolower($value) == 'null') && (!($cols[$col] & DB_DATAOBJECT_NOTNULL))):
|
case ((!($cols[$col] & DB_DATAOBJECT_NOTNULL)) && DB_DataObject::_is_null($value, false)):
|
||||||
case (is_object($value) && is_a($value,'DB_DataObject_Cast')):
|
case (is_object($value) && is_a($value,'DB_DataObject_Cast')):
|
||||||
$this->$col = $value;
|
$this->$col = $value;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// fail on setting null on a not null field..
|
// fail on setting null on a not null field..
|
||||||
case (!isset($options['disable_null_strings']) && (strtolower($value) == 'null') && ($cols[$col] & DB_DATAOBJECT_NOTNULL)):
|
case (($cols[$col] & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($value,false)):
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case (($cols[$col] & DB_DATAOBJECT_DATE) && ($cols[$col] & DB_DATAOBJECT_TIME)):
|
case (($cols[$col] & DB_DATAOBJECT_DATE) && ($cols[$col] & DB_DATAOBJECT_TIME)):
|
||||||
@ -4189,9 +4270,65 @@ class DB_DataObject extends DB_DataObject_Overload
|
|||||||
if (isset($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5])) {
|
if (isset($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5])) {
|
||||||
$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]->num_rows = array();
|
$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]->num_rows = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_array($this->_link_loaded)) {
|
||||||
|
foreach ($this->_link_loaded as $do) {
|
||||||
|
$do->free();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Evaluate whether or not a value is set to null, taking the 'disable_null_strings' option into account.
|
||||||
|
* If the value is a string set to "null" and the "disable_null_strings" option is not set to
|
||||||
|
* true, then the value is considered to be null.
|
||||||
|
* If the value is actually a PHP NULL value, and "disable_null_strings" has been set to
|
||||||
|
* the value "full", then it will also be considered null. - this can not differenticate between not set
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param object|array $obj_or_ar
|
||||||
|
* @param string|false $prop prperty
|
||||||
|
|
||||||
|
* @access private
|
||||||
|
* @return bool object
|
||||||
|
*/
|
||||||
|
function _is_null($obj_or_ar , $prop)
|
||||||
|
{
|
||||||
|
global $_DB_DATAOBJECT;
|
||||||
|
|
||||||
|
|
||||||
|
$isset = $prop === false ? isset($obj_or_ar) :
|
||||||
|
(is_array($obj_or_ar) ? isset($obj_or_ar[$prop]) : isset($obj_or_ar->$prop));
|
||||||
|
|
||||||
|
$value = $isset ?
|
||||||
|
($prop === false ? $obj_or_ar :
|
||||||
|
(is_array($obj_or_ar) ? $obj_or_ar[$prop] : $obj_or_ar->$prop))
|
||||||
|
: null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$options = $_DB_DATAOBJECT['CONFIG'];
|
||||||
|
|
||||||
|
$null_strings = !isset($options['disable_null_strings'])
|
||||||
|
|| $options['disable_null_strings'] === false;
|
||||||
|
|
||||||
|
$crazy_null = isset($options['disable_null_strings'])
|
||||||
|
&& is_string($options['disable_null_strings'])
|
||||||
|
&& strtolower($options['disable_null_strings'] === 'full');
|
||||||
|
|
||||||
|
if ( $null_strings && $isset && is_string($value) && (strtolower($value) === 'null') ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $crazy_null && !$isset ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* ---- LEGACY BC METHODS - NOT DOCUMENTED - See Documentation on New Methods. ---*/
|
/* ---- LEGACY BC METHODS - NOT DOCUMENTED - See Documentation on New Methods. ---*/
|
||||||
|
|
||||||
@ -4214,3 +4351,4 @@ if (!defined('DB_DATAOBJECT_NO_OVERLOAD')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* @author Alan Knowles <alan@akbkhome.com>
|
* @author Alan Knowles <alan@akbkhome.com>
|
||||||
* @copyright 1997-2006 The PHP Group
|
* @copyright 1997-2006 The PHP Group
|
||||||
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||||
* @version CVS: $Id: Generator.php 284150 2009-07-15 23:27:59Z alan_k $
|
* @version CVS: $Id: Generator.php 289384 2009-10-09 00:17:26Z alan_k $
|
||||||
* @link http://pear.php.net/package/DB_DataObject
|
* @link http://pear.php.net/package/DB_DataObject
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Config _$ptions
|
* Config _$ptions
|
||||||
* [DB_DataObject_Generator]
|
* [DB_DataObject]
|
||||||
* ; optional default = DB/DataObject.php
|
* ; optional default = DB/DataObject.php
|
||||||
* extends_location =
|
* extends_location =
|
||||||
* ; optional default = DB_DataObject
|
* ; optional default = DB_DataObject
|
||||||
@ -775,11 +775,9 @@ class DB_DataObject_Generator extends DB_DataObject
|
|||||||
//echo "Generating Class files: \n";
|
//echo "Generating Class files: \n";
|
||||||
$options = &PEAR::getStaticProperty('DB_DataObject','options');
|
$options = &PEAR::getStaticProperty('DB_DataObject','options');
|
||||||
|
|
||||||
|
$this->_extends = empty($options['extends']) ? $this->_extends : $options['extends'];
|
||||||
if ($extends = @$options['extends']) {
|
$this->_extendsFile = empty($options['extends_location']) ? $this->_extendsFile : $options['extends_location'];
|
||||||
$this->_extends = $extends;
|
|
||||||
$this->_extendsFile = $options['extends_location'];
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($this->tables as $this->table) {
|
foreach($this->tables as $this->table) {
|
||||||
$this->table = trim($this->table);
|
$this->table = trim($this->table);
|
||||||
@ -814,7 +812,7 @@ class DB_DataObject_Generator extends DB_DataObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class being extended (can be overridden by [DB_DataObject_Generator] extends=xxxx
|
* class being extended (can be overridden by [DB_DataObject] extends=xxxx
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
* @access private
|
* @access private
|
||||||
@ -1142,10 +1140,9 @@ class DB_DataObject_Generator extends DB_DataObject
|
|||||||
$options = &PEAR::getStaticProperty('DB_DataObject','options');
|
$options = &PEAR::getStaticProperty('DB_DataObject','options');
|
||||||
$class_prefix = empty($options['class_prefix']) ? '' : $options['class_prefix'];
|
$class_prefix = empty($options['class_prefix']) ? '' : $options['class_prefix'];
|
||||||
|
|
||||||
if ($extends = @$options['extends']) {
|
$this->_extends = empty($options['extends']) ? $this->_extends : $options['extends'];
|
||||||
$this->_extends = $extends;
|
$this->_extendsFile = empty($options['extends_location']) ? $this->_extendsFile : $options['extends_location'];
|
||||||
$this->_extendsFile = $options['extends_location'];
|
|
||||||
}
|
|
||||||
$classname = $this->classname = $this->getClassNameFromTableName($this->table);
|
$classname = $this->classname = $this->getClassNameFromTableName($this->table);
|
||||||
|
|
||||||
$out = $this->_generateClassTable();
|
$out = $this->_generateClassTable();
|
||||||
|
48
js/util.js
48
js/util.js
@ -57,21 +57,31 @@ var SN = { // StatusNet
|
|||||||
U: { // Utils
|
U: { // Utils
|
||||||
FormNoticeEnhancements: function(form) {
|
FormNoticeEnhancements: function(form) {
|
||||||
form_id = form.attr('id');
|
form_id = form.attr('id');
|
||||||
$('#'+form_id+' #'+SN.C.S.NoticeDataText).unbind('keyup');
|
|
||||||
$('#'+form_id+' #'+SN.C.S.NoticeDataText).unbind('keydown');
|
if (jQuery.data(form[0], 'ElementData') === undefined) {
|
||||||
if (maxLength > 0) {
|
MaxLength = $('#'+form_id+' #'+SN.C.S.NoticeTextCount).text();
|
||||||
$('#'+form_id+' #'+SN.C.S.NoticeDataText).bind('keyup', function(e) {
|
if (typeof(MaxLength) == 'undefined') {
|
||||||
|
MaxLength = SN.C.I.MaxLength;
|
||||||
|
}
|
||||||
|
jQuery.data(form[0], 'ElementData', {MaxLength:MaxLength});
|
||||||
|
|
||||||
|
SN.U.Counter(form);
|
||||||
|
|
||||||
|
NDT = $('#'+form_id+' #'+SN.C.S.NoticeDataText);
|
||||||
|
|
||||||
|
NDT.bind('keyup', function(e) {
|
||||||
SN.U.Counter(form);
|
SN.U.Counter(form);
|
||||||
});
|
});
|
||||||
// run once in case there's something in there
|
|
||||||
SN.U.Counter(form);
|
NDT.bind('keydown', function(e) {
|
||||||
|
SN.U.SubmitOnReturn(e, form);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#'+form_id+' #'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#'+form_id+' #'+SN.C.S.NoticeDataText).bind('keydown', function(e) {
|
if ($('body')[0].id != 'conversation') {
|
||||||
SN.U.SubmitOnReturn(e, form);
|
|
||||||
});
|
|
||||||
|
|
||||||
if($('body')[0].id != 'conversation') {
|
|
||||||
$('#'+form_id+' textarea').focus();
|
$('#'+form_id+' textarea').focus();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -91,15 +101,14 @@ var SN = { // StatusNet
|
|||||||
Counter: function(form) {
|
Counter: function(form) {
|
||||||
SN.C.I.FormNoticeCurrent = form;
|
SN.C.I.FormNoticeCurrent = form;
|
||||||
form_id = form.attr('id');
|
form_id = form.attr('id');
|
||||||
if (typeof(maxLength) == "undefined") {
|
|
||||||
maxLength = SN.C.I.MaxLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (maxLength <= 0) {
|
var MaxLength = jQuery.data(form[0], 'ElementData').MaxLength;
|
||||||
|
|
||||||
|
if (MaxLength <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var remaining = maxLength - $('#'+form_id+' #'+SN.C.S.NoticeDataText).val().length;
|
var remaining = MaxLength - $('#'+form_id+' #'+SN.C.S.NoticeDataText).val().length;
|
||||||
var counter = $('#'+form_id+' #'+SN.C.S.NoticeTextCount);
|
var counter = $('#'+form_id+' #'+SN.C.S.NoticeTextCount);
|
||||||
|
|
||||||
if (remaining.toString() != counter.text()) {
|
if (remaining.toString() != counter.text()) {
|
||||||
@ -208,7 +217,7 @@ var SN = { // StatusNet
|
|||||||
$('#'+form_id+' .form_response').remove();
|
$('#'+form_id+' .form_response').remove();
|
||||||
var result;
|
var result;
|
||||||
if ($('#'+SN.C.S.Error, data).length > 0) {
|
if ($('#'+SN.C.S.Error, data).length > 0) {
|
||||||
result = document._importNode($('p', data)[0], true);
|
result = document._importNode($('p', data)[0], true);
|
||||||
result = result.textContent || result.innerHTML;
|
result = result.textContent || result.innerHTML;
|
||||||
form.append('<p class="form_response error">'+result+'</p>');
|
form.append('<p class="form_response error">'+result+'</p>');
|
||||||
}
|
}
|
||||||
@ -307,7 +316,7 @@ var SN = { // StatusNet
|
|||||||
},
|
},
|
||||||
|
|
||||||
NoticeAttachments: function() {
|
NoticeAttachments: function() {
|
||||||
$('.notice a.attachment').each(function() {
|
$('.notice a.attachment').each(function() {
|
||||||
SN.U.NoticeWithAttachment($(this).closest('.notice'));
|
SN.U.NoticeWithAttachment($(this).closest('.notice'));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -439,7 +448,6 @@ var SN = { // StatusNet
|
|||||||
Notices: function() {
|
Notices: function() {
|
||||||
if ($('body.user_in').length > 0) {
|
if ($('body.user_in').length > 0) {
|
||||||
SN.U.NoticeFavor();
|
SN.U.NoticeFavor();
|
||||||
|
|
||||||
SN.U.NoticeReply();
|
SN.U.NoticeReply();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,6 +461,8 @@ var SN = { // StatusNet
|
|||||||
$('.form_group_join').each(function() { SN.U.FormXHR($(this)); });
|
$('.form_group_join').each(function() { SN.U.FormXHR($(this)); });
|
||||||
$('.form_group_leave').each(function() { SN.U.FormXHR($(this)); });
|
$('.form_group_leave').each(function() { SN.U.FormXHR($(this)); });
|
||||||
$('.form_user_nudge').each(function() { SN.U.FormXHR($(this)); });
|
$('.form_user_nudge').each(function() { SN.U.FormXHR($(this)); });
|
||||||
|
|
||||||
|
SN.U.NewDirectMessage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,7 +584,8 @@ class LoginCommand extends Command
|
|||||||
function execute($channel)
|
function execute($channel)
|
||||||
{
|
{
|
||||||
$disabled = common_config('logincommand','disabled');
|
$disabled = common_config('logincommand','disabled');
|
||||||
if(isset($disabled)) {
|
$disabled = isset($disabled) && $disabled;
|
||||||
|
if($disabled) {
|
||||||
$channel->error($this->user, _('Login command is disabled'));
|
$channel->error($this->user, _('Login command is disabled'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
125
lib/language.php
125
lib/language.php
@ -36,6 +36,33 @@ if (!function_exists('gettext')) {
|
|||||||
require_once("php-gettext/gettext.inc");
|
require_once("php-gettext/gettext.inc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!function_exists('dpgettext')) {
|
||||||
|
/**
|
||||||
|
* Context-aware dgettext wrapper; use when messages in different contexts
|
||||||
|
* won't be distinguished from the English source but need different translations.
|
||||||
|
* The context string will appear as msgctxt in the .po files.
|
||||||
|
*
|
||||||
|
* Not currently exposed in PHP's gettext module; implemented to be compat
|
||||||
|
* with gettext.h's macros.
|
||||||
|
*
|
||||||
|
* @param string $domain domain identifier, or null for default domain
|
||||||
|
* @param string $context context identifier, should be some key like "menu|file"
|
||||||
|
* @param string $msgid English source text
|
||||||
|
* @return string original or translated message
|
||||||
|
*/
|
||||||
|
function dpgettext($domain, $context, $msg)
|
||||||
|
{
|
||||||
|
$msgid = $context . "\004" . $msg;
|
||||||
|
$out = dcgettext($domain, $msgid, LC_MESSAGES);
|
||||||
|
if ($out == $msgid) {
|
||||||
|
return $msg;
|
||||||
|
} else {
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!function_exists('pgettext')) {
|
if (!function_exists('pgettext')) {
|
||||||
/**
|
/**
|
||||||
* Context-aware gettext wrapper; use when messages in different contexts
|
* Context-aware gettext wrapper; use when messages in different contexts
|
||||||
@ -50,9 +77,31 @@ if (!function_exists('pgettext')) {
|
|||||||
* @return string original or translated message
|
* @return string original or translated message
|
||||||
*/
|
*/
|
||||||
function pgettext($context, $msg)
|
function pgettext($context, $msg)
|
||||||
|
{
|
||||||
|
return dpgettext(textdomain(NULL), $context, $msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('dnpgettext')) {
|
||||||
|
/**
|
||||||
|
* Context-aware dngettext wrapper; use when messages in different contexts
|
||||||
|
* won't be distinguished from the English source but need different translations.
|
||||||
|
* The context string will appear as msgctxt in the .po files.
|
||||||
|
*
|
||||||
|
* Not currently exposed in PHP's gettext module; implemented to be compat
|
||||||
|
* with gettext.h's macros.
|
||||||
|
*
|
||||||
|
* @param string $domain domain identifier, or null for default domain
|
||||||
|
* @param string $context context identifier, should be some key like "menu|file"
|
||||||
|
* @param string $msg singular English source text
|
||||||
|
* @param string $plural plural English source text
|
||||||
|
* @param int $n number of items to control plural selection
|
||||||
|
* @return string original or translated message
|
||||||
|
*/
|
||||||
|
function dnpgettext($domain, $context, $msg, $plural, $n)
|
||||||
{
|
{
|
||||||
$msgid = $context . "\004" . $msg;
|
$msgid = $context . "\004" . $msg;
|
||||||
$out = dcgettext(textdomain(NULL), $msgid, LC_MESSAGES);
|
$out = dcngettext($domain, $msgid, $plural, $n, LC_MESSAGES);
|
||||||
if ($out == $msgid) {
|
if ($out == $msgid) {
|
||||||
return $msg;
|
return $msg;
|
||||||
} else {
|
} else {
|
||||||
@ -78,14 +127,78 @@ if (!function_exists('npgettext')) {
|
|||||||
*/
|
*/
|
||||||
function npgettext($context, $msg, $plural, $n)
|
function npgettext($context, $msg, $plural, $n)
|
||||||
{
|
{
|
||||||
$msgid = $context . "\004" . $msg;
|
return dnpgettext(textdomain(NULL), $msgid, $plural, $n, LC_MESSAGES);
|
||||||
$out = dcngettext(textdomain(NULL), $msgid, $plural, $n, LC_MESSAGES);
|
}
|
||||||
if ($out == $msgid) {
|
}
|
||||||
return $msg;
|
|
||||||
|
/**
|
||||||
|
* Shortcut for *gettext functions with smart domain detection.
|
||||||
|
*
|
||||||
|
* If calling from a plugin, this function checks which plugin was
|
||||||
|
* being called from and uses that as text domain, which will have
|
||||||
|
* been set up during plugin initialization.
|
||||||
|
*
|
||||||
|
* Also handles plurals and contexts depending on what parameters
|
||||||
|
* are passed to it:
|
||||||
|
*
|
||||||
|
* gettext -> _m($msg)
|
||||||
|
* ngettext -> _m($msg1, $msg2, $n)
|
||||||
|
* pgettext -> _m($ctx, $msg)
|
||||||
|
* npgettext -> _m($ctx, $msg1, $msg2, $n)
|
||||||
|
*
|
||||||
|
* @fixme may not work properly in eval'd code
|
||||||
|
*
|
||||||
|
* @param string $msg
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function _m($msg/*, ...*/)
|
||||||
|
{
|
||||||
|
$domain = _mdomain(debug_backtrace());
|
||||||
|
$args = func_get_args();
|
||||||
|
switch(count($args)) {
|
||||||
|
case 1: return dgettext($domain, $msg);
|
||||||
|
case 2: return dpgettext($domain, $args[0], $args[1]);
|
||||||
|
case 3: return dngettext($domain, $args[0], $args[1], $args[2]);
|
||||||
|
case 4: return dnpgettext($domain, $args[0], $args[1], $args[2], $args[3]);
|
||||||
|
default: throw new Exception("Bad parameter count to _m()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Looks for which plugin we've been called from to set the gettext domain.
|
||||||
|
*
|
||||||
|
* @param array $backtrace debug_backtrace() output
|
||||||
|
* @return string
|
||||||
|
* @private
|
||||||
|
* @fixme could explode if SN is under a 'plugins' folder or share name.
|
||||||
|
*/
|
||||||
|
function _mdomain($backtrace)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
0 =>
|
||||||
|
array
|
||||||
|
'file' => string '/var/www/mublog/plugins/FeedSub/FeedSubPlugin.php' (length=49)
|
||||||
|
'line' => int 77
|
||||||
|
'function' => string '_m' (length=2)
|
||||||
|
'args' =>
|
||||||
|
array
|
||||||
|
0 => &string 'Feeds' (length=5)
|
||||||
|
*/
|
||||||
|
static $cached;
|
||||||
|
$path = $backtrace[0]['file'];
|
||||||
|
if (!isset($cached[$path])) {
|
||||||
|
if (DIRECTORY_SEPARATOR !== '/') {
|
||||||
|
$path = strtr($path, DIRECTORY_SEPARATOR, '/');
|
||||||
|
}
|
||||||
|
$cut = strpos($path, '/plugins/') + 9;
|
||||||
|
$cut2 = strpos($path, '/', $cut);
|
||||||
|
if ($cut && $cut2) {
|
||||||
|
$cached[$path] = substr($path, $cut, $cut2 - $cut);
|
||||||
} else {
|
} else {
|
||||||
return $out;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $cached[$path];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,8 +154,6 @@ class MessageForm extends Form
|
|||||||
|
|
||||||
$contentLimit = Message::maxContent();
|
$contentLimit = Message::maxContent();
|
||||||
|
|
||||||
$this->out->inlineScript('maxLength = ' . $contentLimit . ';');
|
|
||||||
|
|
||||||
if ($contentLimit > 0) {
|
if ($contentLimit > 0) {
|
||||||
$this->out->elementStart('dl', 'form_note');
|
$this->out->elementStart('dl', 'form_note');
|
||||||
$this->out->element('dt', null, _('Available characters'));
|
$this->out->element('dt', null, _('Available characters'));
|
||||||
|
@ -178,8 +178,6 @@ class NoticeForm extends Form
|
|||||||
|
|
||||||
$contentLimit = Notice::maxContent();
|
$contentLimit = Notice::maxContent();
|
||||||
|
|
||||||
$this->out->inlineScript('maxLength = ' . $contentLimit . ';');
|
|
||||||
|
|
||||||
if ($contentLimit > 0) {
|
if ($contentLimit > 0) {
|
||||||
$this->out->elementStart('dl', 'form_note');
|
$this->out->elementStart('dl', 'form_note');
|
||||||
$this->out->element('dt', null, _('Available characters'));
|
$this->out->element('dt', null, _('Available characters'));
|
||||||
|
@ -65,6 +65,8 @@ class Plugin
|
|||||||
Event::addHandler(mb_substr($method, 2), array($this, $method));
|
Event::addHandler(mb_substr($method, 2), array($this, $method));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->setupGettext();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initialize()
|
function initialize()
|
||||||
@ -77,6 +79,22 @@ class Plugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if this plugin has localization that needs to be set up.
|
||||||
|
* Gettext localizations can be called via the _m() helper function.
|
||||||
|
*/
|
||||||
|
protected function setupGettext()
|
||||||
|
{
|
||||||
|
$class = get_class($this);
|
||||||
|
if (substr($class, -6) == 'Plugin') {
|
||||||
|
$name = substr($class, 0, -6);
|
||||||
|
$path = INSTALLDIR . "/plugins/$name/locale";
|
||||||
|
if (file_exists($path) && is_dir($path)) {
|
||||||
|
bindtextdomain($name, $path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function log($level, $msg)
|
protected function log($level, $msg)
|
||||||
{
|
{
|
||||||
common_log($level, get_class($this) . ': '.$msg);
|
common_log($level, get_class($this) . ': '.$msg);
|
||||||
@ -87,3 +105,4 @@ class Plugin
|
|||||||
$this->log(LOG_DEBUG, $msg);
|
$this->log(LOG_DEBUG, $msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,4 +43,19 @@ class User_username extends Memcached_DataObject
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function table() {
|
||||||
|
return array(
|
||||||
|
'user_id' => DB_DATAOBJECT_INT,
|
||||||
|
'username' => DB_DATAOBJECT_STR,
|
||||||
|
'provider_name' => DB_DATAOBJECT_STR ,
|
||||||
|
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// now define the keys.
|
||||||
|
function keys() {
|
||||||
|
return array('provider_name', 'username');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,8 @@ class FBConnectauthAction extends Action
|
|||||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||||
"Failed auth attempt, proxy = $proxy, ip = $ip.");
|
"Failed auth attempt, proxy = $proxy, ip = $ip.");
|
||||||
|
|
||||||
$this->clientError(_('You must be logged into Facebook to ' .
|
$this->clientError(_m('You must be logged into Facebook to ' .
|
||||||
'use Facebook Connect.'));
|
'use Facebook Connect.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -74,7 +74,7 @@ class FBConnectauthAction extends Action
|
|||||||
// We don't want these cookies
|
// We don't want these cookies
|
||||||
getFacebook()->clear_cookie_state();
|
getFacebook()->clear_cookie_state();
|
||||||
|
|
||||||
$this->clientError(_('There is already a local user linked with this Facebook.'));
|
$this->clientError(_m('There is already a local user linked with this Facebook.'));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -87,12 +87,12 @@ class FBConnectauthAction extends Action
|
|||||||
|
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. Try again, please.'));
|
$this->showForm(_m('There was a problem with your session token. Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($this->arg('create')) {
|
if ($this->arg('create')) {
|
||||||
if (!$this->boolean('license')) {
|
if (!$this->boolean('license')) {
|
||||||
$this->showForm(_('You can\'t register if you don\'t agree to the license.'),
|
$this->showForm(_m('You can\'t register if you don\'t agree to the license.'),
|
||||||
$this->trimmed('newname'));
|
$this->trimmed('newname'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -102,7 +102,7 @@ class FBConnectauthAction extends Action
|
|||||||
} else {
|
} else {
|
||||||
common_debug('Facebook Connect Plugin - ' .
|
common_debug('Facebook Connect Plugin - ' .
|
||||||
print_r($this->args, true));
|
print_r($this->args, true));
|
||||||
$this->showForm(_('Something weird happened.'),
|
$this->showForm(_m('Something weird happened.'),
|
||||||
$this->trimmed('newname'));
|
$this->trimmed('newname'));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -116,13 +116,13 @@ class FBConnectauthAction extends Action
|
|||||||
$this->element('div', array('class' => 'error'), $this->error);
|
$this->element('div', array('class' => 'error'), $this->error);
|
||||||
} else {
|
} else {
|
||||||
$this->element('div', 'instructions',
|
$this->element('div', 'instructions',
|
||||||
sprintf(_('This is the first time you\'ve logged into %s so we must connect your Facebook to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
|
sprintf(_m('This is the first time you\'ve logged into %s so we must connect your Facebook to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('Facebook Account Setup');
|
return _m('Facebook Account Setup');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showForm($error=null, $username=null)
|
function showForm($error=null, $username=null)
|
||||||
@ -150,7 +150,7 @@ class FBConnectauthAction extends Action
|
|||||||
'class' => 'form_settings',
|
'class' => 'form_settings',
|
||||||
'action' => common_local_url('FBConnectAuth')));
|
'action' => common_local_url('FBConnectAuth')));
|
||||||
$this->elementStart('fieldset', array('id' => 'settings_facebook_connect_options'));
|
$this->elementStart('fieldset', array('id' => 'settings_facebook_connect_options'));
|
||||||
$this->element('legend', null, _('Connection options'));
|
$this->element('legend', null, _m('Connection options'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->element('input', array('type' => 'checkbox',
|
$this->element('input', array('type' => 'checkbox',
|
||||||
@ -159,10 +159,10 @@ class FBConnectauthAction extends Action
|
|||||||
'name' => 'license',
|
'name' => 'license',
|
||||||
'value' => 'true'));
|
'value' => 'true'));
|
||||||
$this->elementStart('label', array('class' => 'checkbox', 'for' => 'license'));
|
$this->elementStart('label', array('class' => 'checkbox', 'for' => 'license'));
|
||||||
$this->text(_('My text and files are available under '));
|
$this->text(_m('My text and files are available under '));
|
||||||
$this->element('a', array('href' => common_config('license', 'url')),
|
$this->element('a', array('href' => common_config('license', 'url')),
|
||||||
common_config('license', 'title'));
|
common_config('license', 'title'));
|
||||||
$this->text(_(' except this private data: password, email address, IM address, phone number.'));
|
$this->text(_m(' except this private data: password, email address, IM address, phone number.'));
|
||||||
$this->elementEnd('label');
|
$this->elementEnd('label');
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
@ -170,33 +170,33 @@ class FBConnectauthAction extends Action
|
|||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
$this->hidden('token', common_session_token());
|
$this->hidden('token', common_session_token());
|
||||||
$this->element('legend', null,
|
$this->element('legend', null,
|
||||||
_('Create new account'));
|
_m('Create new account'));
|
||||||
$this->element('p', null,
|
$this->element('p', null,
|
||||||
_('Create a new user with this nickname.'));
|
_m('Create a new user with this nickname.'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('newname', _('New nickname'),
|
$this->input('newname', _m('New nickname'),
|
||||||
($this->username) ? $this->username : '',
|
($this->username) ? $this->username : '',
|
||||||
_('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
_m('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('create', _('Create'));
|
$this->submit('create', _m('Create'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
|
|
||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
$this->element('legend', null,
|
$this->element('legend', null,
|
||||||
_('Connect existing account'));
|
_m('Connect existing account'));
|
||||||
$this->element('p', null,
|
$this->element('p', null,
|
||||||
_('If you already have an account, login with your username and password to connect it to your Facebook.'));
|
_m('If you already have an account, login with your username and password to connect it to your Facebook.'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('nickname', _('Existing nickname'));
|
$this->input('nickname', _m('Existing nickname'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->password('password', _('Password'));
|
$this->password('password', _m('Password'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('connect', _('Connect'));
|
$this->submit('connect', _m('Connect'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
@ -212,7 +212,7 @@ class FBConnectauthAction extends Action
|
|||||||
function createNewUser()
|
function createNewUser()
|
||||||
{
|
{
|
||||||
if (common_config('site', 'closed')) {
|
if (common_config('site', 'closed')) {
|
||||||
$this->clientError(_('Registration not allowed.'));
|
$this->clientError(_m('Registration not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,14 +221,14 @@ class FBConnectauthAction extends Action
|
|||||||
if (common_config('site', 'inviteonly')) {
|
if (common_config('site', 'inviteonly')) {
|
||||||
$code = $_SESSION['invitecode'];
|
$code = $_SESSION['invitecode'];
|
||||||
if (empty($code)) {
|
if (empty($code)) {
|
||||||
$this->clientError(_('Registration not allowed.'));
|
$this->clientError(_m('Registration not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$invite = Invitation::staticGet($code);
|
$invite = Invitation::staticGet($code);
|
||||||
|
|
||||||
if (empty($invite)) {
|
if (empty($invite)) {
|
||||||
$this->clientError(_('Not a valid invitation code.'));
|
$this->clientError(_m('Not a valid invitation code.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,17 +238,17 @@ class FBConnectauthAction extends Action
|
|||||||
if (!Validate::string($nickname, array('min_length' => 1,
|
if (!Validate::string($nickname, array('min_length' => 1,
|
||||||
'max_length' => 64,
|
'max_length' => 64,
|
||||||
'format' => NICKNAME_FMT))) {
|
'format' => NICKNAME_FMT))) {
|
||||||
$this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.'));
|
$this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!User::allowed_nickname($nickname)) {
|
if (!User::allowed_nickname($nickname)) {
|
||||||
$this->showForm(_('Nickname not allowed.'));
|
$this->showForm(_m('Nickname not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (User::staticGet('nickname', $nickname)) {
|
if (User::staticGet('nickname', $nickname)) {
|
||||||
$this->showForm(_('Nickname already in use. Try another one.'));
|
$this->showForm(_m('Nickname already in use. Try another one.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ class FBConnectauthAction extends Action
|
|||||||
$result = $this->flinkUser($user->id, $this->fbuid);
|
$result = $this->flinkUser($user->id, $this->fbuid);
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->serverError(_('Error connecting user to Facebook.'));
|
$this->serverError(_m('Error connecting user to Facebook.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,7 +286,7 @@ class FBConnectauthAction extends Action
|
|||||||
$password = $this->trimmed('password');
|
$password = $this->trimmed('password');
|
||||||
|
|
||||||
if (!common_check_user($nickname, $password)) {
|
if (!common_check_user($nickname, $password)) {
|
||||||
$this->showForm(_('Invalid username or password.'));
|
$this->showForm(_m('Invalid username or password.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +300,7 @@ class FBConnectauthAction extends Action
|
|||||||
$result = $this->flinkUser($user->id, $this->fbuid);
|
$result = $this->flinkUser($user->id, $this->fbuid);
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->serverError(_('Error connecting user to Facebook.'));
|
$this->serverError(_m('Error connecting user to Facebook.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +320,7 @@ class FBConnectauthAction extends Action
|
|||||||
$result = $this->flinkUser($user->id, $this->fbuid);
|
$result = $this->flinkUser($user->id, $this->fbuid);
|
||||||
|
|
||||||
if (empty($result)) {
|
if (empty($result)) {
|
||||||
$this->serverError(_('Error connecting user to Facebook.'));
|
$this->serverError(_m('Error connecting user to Facebook.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ class FBConnectLoginAction extends Action
|
|||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
|
|
||||||
if (common_is_real_login()) {
|
if (common_is_real_login()) {
|
||||||
$this->clientError(_('Already logged in.'));
|
$this->clientError(_m('Already logged in.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->showPage();
|
$this->showPage();
|
||||||
@ -38,7 +38,7 @@ class FBConnectLoginAction extends Action
|
|||||||
|
|
||||||
function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
return _('Login with your Facebook Account');
|
return _m('Login with your Facebook Account');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showPageNotice()
|
function showPageNotice()
|
||||||
@ -52,7 +52,7 @@ class FBConnectLoginAction extends Action
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('Facebook Login');
|
return _m('Facebook Login');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showContent() {
|
function showContent() {
|
||||||
|
@ -53,7 +53,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('Facebook Connect Settings');
|
return _m('Facebook Connect Settings');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,7 +64,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
return _('Manage how your account connects to Facebook');
|
return _m('Manage how your account connects to Facebook');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -89,7 +89,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
if (!$flink) {
|
if (!$flink) {
|
||||||
|
|
||||||
$this->element('p', 'instructions',
|
$this->element('p', 'instructions',
|
||||||
_('There is no Facebook user connected to this account.'));
|
_m('There is no Facebook user connected to this account.'));
|
||||||
|
|
||||||
$this->element('fb:login-button', array('onlogin' => 'goto_login()',
|
$this->element('fb:login-button', array('onlogin' => 'goto_login()',
|
||||||
'length' => 'long'));
|
'length' => 'long'));
|
||||||
@ -97,7 +97,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
$this->element('p', 'form_note',
|
$this->element('p', 'form_note',
|
||||||
_('Connected Facebook user'));
|
_m('Connected Facebook user'));
|
||||||
|
|
||||||
$this->elementStart('p', array('class' => 'facebook-user-display'));
|
$this->elementStart('p', array('class' => 'facebook-user-display'));
|
||||||
$this->elementStart('fb:profile-pic',
|
$this->elementStart('fb:profile-pic',
|
||||||
@ -116,18 +116,18 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
|
|
||||||
$this->element('legend', null, _('Disconnect my account from Facebook'));
|
$this->element('legend', null, _m('Disconnect my account from Facebook'));
|
||||||
|
|
||||||
if (!$user->password) {
|
if (!$user->password) {
|
||||||
|
|
||||||
$this->elementStart('p', array('class' => 'form_guide'));
|
$this->elementStart('p', array('class' => 'form_guide'));
|
||||||
$this->text(_('Disconnecting your Faceboook ' .
|
$this->text(_m('Disconnecting your Faceboook ' .
|
||||||
'would make it impossible to log in! Please '));
|
'would make it impossible to log in! Please '));
|
||||||
$this->element('a',
|
$this->element('a',
|
||||||
array('href' => common_local_url('passwordsettings')),
|
array('href' => common_local_url('passwordsettings')),
|
||||||
_('set a password'));
|
_m('set a password'));
|
||||||
|
|
||||||
$this->text(_(' first.'));
|
$this->text(_m(' first.'));
|
||||||
$this->elementEnd('p');
|
$this->elementEnd('p');
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
$this->element('p', 'instructions',
|
$this->element('p', 'instructions',
|
||||||
sprintf($note, $site, $site));
|
sprintf($note, $site, $site));
|
||||||
|
|
||||||
$this->submit('disconnect', _('Disconnect'));
|
$this->submit('disconnect', _m('Disconnect'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
@ -161,8 +161,8 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
// CSRF protection
|
// CSRF protection
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. '.
|
$this->showForm(_m('There was a problem with your session token. '.
|
||||||
'Try again, please.'));
|
'Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
common_log_db_error($user, 'DELETE', __FILE__);
|
common_log_db_error($user, 'DELETE', __FILE__);
|
||||||
$this->serverError(_('Couldn\'t delete link to Facebook.'));
|
$this->serverError(_m('Couldn\'t delete link to Facebook.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,10 +191,10 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
|||||||
$e->getMessage());
|
$e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->showForm(_('You have disconnected from Facebook.'), true);
|
$this->showForm(_m('You have disconnected from Facebook.'), true);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$this->showForm(_('Not sure what you\'re trying to do.'));
|
$this->showForm(_m('Not sure what you\'re trying to do.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,9 +406,9 @@ class FacebookPlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('FBConnectLogin'),
|
$action->menuItem(common_local_url('FBConnectLogin'),
|
||||||
_('Facebook'),
|
_m('Facebook'),
|
||||||
_('Login or register using Facebook'),
|
_m('Login or register using Facebook'),
|
||||||
'FBConnectLogin' === $action_name);
|
'FBConnectLogin' === $action_name);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -426,8 +426,8 @@ class FacebookPlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('FBConnectSettings'),
|
$action->menuItem(common_local_url('FBConnectSettings'),
|
||||||
_('Facebook'),
|
_m('Facebook'),
|
||||||
_('Facebook Connect Settings'),
|
_m('Facebook Connect Settings'),
|
||||||
$action_name === 'FBConnectSettings');
|
$action_name === 'FBConnectSettings');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -168,7 +168,7 @@ class FacebookAction extends Action
|
|||||||
$this->elementStart('li', array('class' =>
|
$this->elementStart('li', array('class' =>
|
||||||
($this->action == 'facebookhome') ? 'current' : 'facebook_home'));
|
($this->action == 'facebookhome') ? 'current' : 'facebook_home'));
|
||||||
$this->element('a',
|
$this->element('a',
|
||||||
array('href' => 'index.php', 'title' => _('Home')), _('Home'));
|
array('href' => 'index.php', 'title' => _m('Home')), _m('Home'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
if (common_config('invite', 'enabled')) {
|
if (common_config('invite', 'enabled')) {
|
||||||
@ -176,7 +176,7 @@ class FacebookAction extends Action
|
|||||||
array('class' =>
|
array('class' =>
|
||||||
($this->action == 'facebookinvite') ? 'current' : 'facebook_invite'));
|
($this->action == 'facebookinvite') ? 'current' : 'facebook_invite'));
|
||||||
$this->element('a',
|
$this->element('a',
|
||||||
array('href' => 'invite.php', 'title' => _('Invite')), _('Invite'));
|
array('href' => 'invite.php', 'title' => _m('Invite')), _m('Invite'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ class FacebookAction extends Action
|
|||||||
($this->action == 'facebooksettings') ? 'current' : 'facebook_settings'));
|
($this->action == 'facebooksettings') ? 'current' : 'facebook_settings'));
|
||||||
$this->element('a',
|
$this->element('a',
|
||||||
array('href' => 'settings.php',
|
array('href' => 'settings.php',
|
||||||
'title' => _('Settings')), _('Settings'));
|
'title' => _m('Settings')), _m('Settings'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
@ -225,15 +225,15 @@ class FacebookAction extends Action
|
|||||||
$this->elementStart('dl', array('class' => 'system_notice'));
|
$this->elementStart('dl', array('class' => 'system_notice'));
|
||||||
$this->element('dt', null, 'Page Notice');
|
$this->element('dt', null, 'Page Notice');
|
||||||
|
|
||||||
$loginmsg_part1 = _('To use the %s Facebook Application you need to login ' .
|
$loginmsg_part1 = _m('To use the %s Facebook Application you need to login ' .
|
||||||
'with your username and password. Don\'t have a username yet? ');
|
'with your username and password. Don\'t have a username yet? ');
|
||||||
$loginmsg_part2 = _(' a new account.');
|
$loginmsg_part2 = _m(' a new account.');
|
||||||
|
|
||||||
$this->elementStart('dd');
|
$this->elementStart('dd');
|
||||||
$this->elementStart('p');
|
$this->elementStart('p');
|
||||||
$this->text(sprintf($loginmsg_part1, common_config('site', 'name')));
|
$this->text(sprintf($loginmsg_part1, common_config('site', 'name')));
|
||||||
$this->element('a',
|
$this->element('a',
|
||||||
array('href' => common_local_url('register')), _('Register'));
|
array('href' => common_local_url('register')), _m('Register'));
|
||||||
$this->text($loginmsg_part2);
|
$this->text($loginmsg_part2);
|
||||||
$this->elementEnd('p');
|
$this->elementEnd('p');
|
||||||
$this->elementEnd('dd');
|
$this->elementEnd('dd');
|
||||||
@ -246,7 +246,7 @@ class FacebookAction extends Action
|
|||||||
{
|
{
|
||||||
|
|
||||||
$this->elementStart('div', array('id' => 'content'));
|
$this->elementStart('div', array('id' => 'content'));
|
||||||
$this->element('h1', null, _('Login'));
|
$this->element('h1', null, _m('Login'));
|
||||||
|
|
||||||
if ($msg) {
|
if ($msg) {
|
||||||
$this->element('fb:error', array('message' => $msg));
|
$this->element('fb:error', array('message' => $msg));
|
||||||
@ -265,20 +265,20 @@ class FacebookAction extends Action
|
|||||||
|
|
||||||
$this->elementStart('ul', array('class' => 'form_datas'));
|
$this->elementStart('ul', array('class' => 'form_datas'));
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('nickname', _('Nickname'));
|
$this->input('nickname', _m('Nickname'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->password('password', _('Password'));
|
$this->password('password', _m('Password'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
|
|
||||||
$this->submit('submit', _('Login'));
|
$this->submit('submit', _m('Login'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
|
|
||||||
$this->elementStart('p');
|
$this->elementStart('p');
|
||||||
$this->element('a', array('href' => common_local_url('recoverpassword')),
|
$this->element('a', array('href' => common_local_url('recoverpassword')),
|
||||||
_('Lost or forgotten password?'));
|
_m('Lost or forgotten password?'));
|
||||||
$this->elementEnd('p');
|
$this->elementEnd('p');
|
||||||
|
|
||||||
$this->elementEnd('div');
|
$this->elementEnd('div');
|
||||||
@ -383,7 +383,7 @@ class FacebookAction extends Action
|
|||||||
// Does a little before-after block for next/prev page
|
// Does a little before-after block for next/prev page
|
||||||
if ($have_before || $have_after) {
|
if ($have_before || $have_after) {
|
||||||
$this->elementStart('dl', 'pagination');
|
$this->elementStart('dl', 'pagination');
|
||||||
$this->element('dt', null, _('Pagination'));
|
$this->element('dt', null, _m('Pagination'));
|
||||||
$this->elementStart('dd', null);
|
$this->elementStart('dd', null);
|
||||||
$this->elementStart('ul', array('class' => 'nav'));
|
$this->elementStart('ul', array('class' => 'nav'));
|
||||||
}
|
}
|
||||||
@ -392,7 +392,7 @@ class FacebookAction extends Action
|
|||||||
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
||||||
$this->elementStart('li', array('class' => 'nav_prev'));
|
$this->elementStart('li', array('class' => 'nav_prev'));
|
||||||
$this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'prev'),
|
$this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'prev'),
|
||||||
_('After'));
|
_m('After'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
if ($have_after) {
|
if ($have_after) {
|
||||||
@ -400,7 +400,7 @@ class FacebookAction extends Action
|
|||||||
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
||||||
$this->elementStart('li', array('class' => 'nav_next'));
|
$this->elementStart('li', array('class' => 'nav_next'));
|
||||||
$this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'next'),
|
$this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'next'),
|
||||||
_('Before'));
|
_m('Before'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
if ($have_before || $have_after) {
|
if ($have_before || $have_after) {
|
||||||
@ -418,13 +418,13 @@ class FacebookAction extends Action
|
|||||||
$content = $this->trimmed('status_textarea');
|
$content = $this->trimmed('status_textarea');
|
||||||
|
|
||||||
if (!$content) {
|
if (!$content) {
|
||||||
$this->showPage(_('No notice content!'));
|
$this->showPage(_m('No notice content!'));
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
$content_shortened = common_shorten_links($content);
|
$content_shortened = common_shorten_links($content);
|
||||||
|
|
||||||
if (Notice::contentTooLong($content_shortened)) {
|
if (Notice::contentTooLong($content_shortened)) {
|
||||||
$this->showPage(sprintf(_('That\'s too long. Max notice size is %d chars.'),
|
$this->showPage(sprintf(_m('That\'s too long. Max notice size is %d chars.'),
|
||||||
Notice::maxContent()));
|
Notice::maxContent()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -520,7 +520,7 @@ class FacebookNoticeList extends NoticeList
|
|||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
$this->out->elementStart('div', array('id' =>'notices_primary'));
|
$this->out->elementStart('div', array('id' =>'notices_primary'));
|
||||||
$this->out->element('h2', null, _('Notices'));
|
$this->out->element('h2', null, _m('Notices'));
|
||||||
$this->out->elementStart('ul', array('class' => 'notices'));
|
$this->out->elementStart('ul', array('class' => 'notices'));
|
||||||
|
|
||||||
$cnt = 0;
|
$cnt = 0;
|
||||||
|
@ -108,7 +108,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
$user = User::staticGet('nickname', $nickname);
|
$user = User::staticGet('nickname', $nickname);
|
||||||
|
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
$this->showLoginForm(_("Server error - couldn't get user!"));
|
$this->showLoginForm(_m("Server error - couldn't get user!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
$flink = DB_DataObject::factory('foreign_link');
|
$flink = DB_DataObject::factory('foreign_link');
|
||||||
@ -128,7 +128,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$msg = _('Incorrect username or password.');
|
$msg = _m('Incorrect username or password.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,9 +155,9 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
if ($this->page > 1) {
|
if ($this->page > 1) {
|
||||||
return sprintf(_("%s and friends, page %d"), $this->user->nickname, $this->page);
|
return sprintf(_m("%s and friends, page %d"), $this->user->nickname, $this->page);
|
||||||
} else {
|
} else {
|
||||||
return sprintf(_("%s and friends"), $this->user->nickname);
|
return sprintf(_m("%s and friends"), $this->user->nickname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
|
|
||||||
$this->elementStart('div', array('class' => 'facebook_guide'));
|
$this->elementStart('div', array('class' => 'facebook_guide'));
|
||||||
|
|
||||||
$instructions = sprintf(_('If you would like the %s app to automatically update ' .
|
$instructions = sprintf(_m('If you would like the %s app to automatically update ' .
|
||||||
'your Facebook status with your latest notice, you need ' .
|
'your Facebook status with your latest notice, you need ' .
|
||||||
'to give it permission.'), $this->app_name);
|
'to give it permission.'), $this->app_name);
|
||||||
|
|
||||||
@ -210,13 +210,13 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
|
|
||||||
$this->elementStart('span', array('class' => 'facebook-button'));
|
$this->elementStart('span', array('class' => 'facebook-button'));
|
||||||
$this->element('a', array('href' => $auth_url),
|
$this->element('a', array('href' => $auth_url),
|
||||||
sprintf(_('Okay, do it!'), $this->app_name));
|
sprintf(_m('Okay, do it!'), $this->app_name));
|
||||||
$this->elementEnd('span');
|
$this->elementEnd('span');
|
||||||
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
$this->elementStart('li', array('id' => 'fb-permissions-item'));
|
$this->elementStart('li', array('id' => 'fb-permissions-item'));
|
||||||
$this->submit('skip', _('Skip'));
|
$this->submit('skip', _m('Skip'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
|
|
||||||
if ($have_before || $have_after) {
|
if ($have_before || $have_after) {
|
||||||
$this->elementStart('dl', 'pagination');
|
$this->elementStart('dl', 'pagination');
|
||||||
$this->element('dt', null, _('Pagination'));
|
$this->element('dt', null, _m('Pagination'));
|
||||||
$this->elementStart('dd', null);
|
$this->elementStart('dd', null);
|
||||||
$this->elementStart('ul', array('class' => 'nav'));
|
$this->elementStart('ul', array('class' => 'nav'));
|
||||||
}
|
}
|
||||||
@ -254,7 +254,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
||||||
$this->elementStart('li', array('class' => 'nav_prev'));
|
$this->elementStart('li', array('class' => 'nav_prev'));
|
||||||
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'prev'),
|
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'prev'),
|
||||||
_('After'));
|
_m('After'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
if ($have_after) {
|
if ($have_after) {
|
||||||
@ -262,7 +262,7 @@ class FacebookhomeAction extends FacebookAction
|
|||||||
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
$newargs = $args ? array_merge($args, $pargs) : $pargs;
|
||||||
$this->elementStart('li', array('class' => 'nav_next'));
|
$this->elementStart('li', array('class' => 'nav_next'));
|
||||||
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'next'),
|
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'next'),
|
||||||
_('Before'));
|
_m('Before'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
if ($have_before || $have_after) {
|
if ($have_before || $have_after) {
|
||||||
|
@ -69,9 +69,9 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
function showSuccessContent()
|
function showSuccessContent()
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->element('h2', null, sprintf(_('Thanks for inviting your friends to use %s'),
|
$this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s'),
|
||||||
common_config('site', 'name')));
|
common_config('site', 'name')));
|
||||||
$this->element('p', null, _('Invitations have been sent to the following users:'));
|
$this->element('p', null, _m('Invitations have been sent to the following users:'));
|
||||||
|
|
||||||
$friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list?
|
$friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list?
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
|
|
||||||
function showFormContent()
|
function showFormContent()
|
||||||
{
|
{
|
||||||
$content = sprintf(_('You have been invited to %s'), common_config('site', 'name')) .
|
$content = sprintf(_m('You have been invited to %s'), common_config('site', 'name')) .
|
||||||
htmlentities('<fb:req-choice url="' . $this->app_uri . '" label="Add"/>');
|
htmlentities('<fb:req-choice url="' . $this->app_uri . '" label="Add"/>');
|
||||||
|
|
||||||
$this->elementStart('fb:request-form', array('action' => 'invite.php',
|
$this->elementStart('fb:request-form', array('action' => 'invite.php',
|
||||||
@ -100,7 +100,7 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
'type' => common_config('site', 'name'),
|
'type' => common_config('site', 'name'),
|
||||||
'content' => $content));
|
'content' => $content));
|
||||||
$this->hidden('invite', 'true');
|
$this->hidden('invite', 'true');
|
||||||
$actiontext = sprintf(_('Invite your friends to use %s'), common_config('site', 'name'));
|
$actiontext = sprintf(_m('Invite your friends to use %s'), common_config('site', 'name'));
|
||||||
|
|
||||||
$multi_params = array('showborder' => 'false');
|
$multi_params = array('showborder' => 'false');
|
||||||
$multi_params['actiontext'] = $actiontext;
|
$multi_params['actiontext'] = $actiontext;
|
||||||
@ -122,7 +122,7 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
|
|
||||||
if ($exclude_ids) {
|
if ($exclude_ids) {
|
||||||
|
|
||||||
$this->element('h2', null, sprintf(_('Friends already using %s:'),
|
$this->element('h2', null, sprintf(_m('Friends already using %s:'),
|
||||||
common_config('site', 'name')));
|
common_config('site', 'name')));
|
||||||
$this->elementStart('ul', array('id' => 'facebook-friends'));
|
$this->elementStart('ul', array('id' => 'facebook-friends'));
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return sprintf(_('Send invitations'));
|
return sprintf(_m('Send invitations'));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ class FacebookinviteAction extends FacebookAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return sprintf(_('Login'));
|
return sprintf(_m('Login'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function redirectHome()
|
function redirectHome()
|
||||||
|
@ -55,7 +55,7 @@ class FacebookremoveAction extends FacebookAction
|
|||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
common_log_db_error($flink, 'DELETE', __FILE__);
|
common_log_db_error($flink, 'DELETE', __FILE__);
|
||||||
$this->serverError(_('Couldn\'t remove Facebook user.'));
|
$this->serverError(_m('Couldn\'t remove Facebook user.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,9 +71,9 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
$trimmed);
|
$trimmed);
|
||||||
|
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
$this->showForm(_('There was a problem saving your sync preferences!'));
|
$this->showForm(_m('There was a problem saving your sync preferences!'));
|
||||||
} else {
|
} else {
|
||||||
$this->showForm(_('Sync preferences saved.'), true);
|
$this->showForm(_m('Sync preferences saved.'), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,14 +96,14 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
|
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
|
|
||||||
$this->checkbox('noticesync', _('Automatically update my Facebook status with my notices.'),
|
$this->checkbox('noticesync', _m('Automatically update my Facebook status with my notices.'),
|
||||||
($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND) : true);
|
($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND) : true);
|
||||||
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
|
|
||||||
$this->checkbox('replysync', _('Send "@" replies to Facebook.'),
|
$this->checkbox('replysync', _m('Send "@" replies to Facebook.'),
|
||||||
($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true);
|
($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true);
|
||||||
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
@ -112,15 +112,15 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
|
|
||||||
$prefix = trim($this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX));
|
$prefix = trim($this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX));
|
||||||
|
|
||||||
$this->input('prefix', _('Prefix'),
|
$this->input('prefix', _m('Prefix'),
|
||||||
($prefix) ? $prefix : null,
|
($prefix) ? $prefix : null,
|
||||||
_('A string to prefix notices with.'));
|
_m('A string to prefix notices with.'));
|
||||||
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
|
|
||||||
$this->submit('save', _('Save'));
|
$this->submit('save', _m('Save'));
|
||||||
|
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$instructions = sprintf(_('If you would like %s to automatically update ' .
|
$instructions = sprintf(_m('If you would like %s to automatically update ' .
|
||||||
'your Facebook status with your latest notice, you need ' .
|
'your Facebook status with your latest notice, you need ' .
|
||||||
'to give it permission.'), $this->app_name);
|
'to give it permission.'), $this->app_name);
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
$this->elementStart('fb:prompt-permission', array('perms' => 'publish_stream',
|
$this->elementStart('fb:prompt-permission', array('perms' => 'publish_stream',
|
||||||
'next_fbjs' => 'document.setLocation(\'' . "$this->app_uri/settings.php" . '\')'));
|
'next_fbjs' => 'document.setLocation(\'' . "$this->app_uri/settings.php" . '\')'));
|
||||||
$this->element('span', array('class' => 'facebook-button'),
|
$this->element('span', array('class' => 'facebook-button'),
|
||||||
sprintf(_('Allow %s to update my Facebook status'), common_config('site', 'name')));
|
sprintf(_m('Allow %s to update my Facebook status'), common_config('site', 'name')));
|
||||||
$this->elementEnd('fb:prompt-permission');
|
$this->elementEnd('fb:prompt-permission');
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
@ -153,7 +153,7 @@ class FacebooksettingsAction extends FacebookAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('Sync preferences');
|
return _m('Sync preferences');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -277,10 +277,10 @@ function mail_facebook_app_removed($user)
|
|||||||
$site_name = common_config('site', 'name');
|
$site_name = common_config('site', 'name');
|
||||||
|
|
||||||
$subject = sprintf(
|
$subject = sprintf(
|
||||||
_('Your %1$s Facebook application access has been disabled.',
|
_m('Your %1$s Facebook application access has been disabled.',
|
||||||
$site_name));
|
$site_name));
|
||||||
|
|
||||||
$body = sprintf(_("Hi, %1\$s. We're sorry to inform you that we are " .
|
$body = sprintf(_m("Hi, %1\$s. We're sorry to inform you that we are " .
|
||||||
'unable to update your Facebook status from %2$s, and have disabled ' .
|
'unable to update your Facebook status from %2$s, and have disabled ' .
|
||||||
'the Facebook application for your account. This may be because ' .
|
'the Facebook application for your account. This may be because ' .
|
||||||
'you have removed the Facebook application\'s authorization, or ' .
|
'you have removed the Facebook application\'s authorization, or ' .
|
||||||
|
394
plugins/Facebook/locale/Facebook.po
Normal file
394
plugins/Facebook/locale/Facebook.po
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 20:38-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: facebookaction.php:171
|
||||||
|
msgid "Home"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:179
|
||||||
|
msgid "Invite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:188
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:228
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"To use the %s Facebook Application you need to login with your username and "
|
||||||
|
"password. Don't have a username yet? "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:230
|
||||||
|
msgid " a new account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:236
|
||||||
|
msgid "Register"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:249 facebookaction.php:275 facebooklogin.php:91
|
||||||
|
msgid "Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:268
|
||||||
|
msgid "Nickname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:271 FBConnectAuth.php:196
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:281
|
||||||
|
msgid "Lost or forgotten password?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:386 facebookhome.php:248
|
||||||
|
msgid "Pagination"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:395 facebookhome.php:257
|
||||||
|
msgid "After"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:403 facebookhome.php:265
|
||||||
|
msgid "Before"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:421
|
||||||
|
msgid "No notice content!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:427
|
||||||
|
#, php-format
|
||||||
|
msgid "That's too long. Max notice size is %d chars."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookaction.php:523
|
||||||
|
msgid "Notices"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookutil.php:280
|
||||||
|
#, php-format
|
||||||
|
msgid "Your %1$s Facebook application access has been disabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookutil.php:283
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Hi, %1$s. We're sorry to inform you that we are unable to update your "
|
||||||
|
"Facebook status from %2$s, and have disabled the Facebook application for "
|
||||||
|
"your account. This may be because you have removed the Facebook "
|
||||||
|
"application's authorization, or have deleted your Facebook account. You can "
|
||||||
|
"re-enable the Facebook application and automatic status updating by re-"
|
||||||
|
"installing the %2$s Facebook application.\n"
|
||||||
|
"\n"
|
||||||
|
"Regards,\n"
|
||||||
|
"\n"
|
||||||
|
"%2$s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectLogin.php:33
|
||||||
|
msgid "Already logged in."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectLogin.php:41
|
||||||
|
msgid "Login with your Facebook Account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectLogin.php:55
|
||||||
|
msgid "Facebook Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:111
|
||||||
|
msgid "Server error - couldn't get user!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:131
|
||||||
|
msgid "Incorrect username or password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:158
|
||||||
|
#, php-format
|
||||||
|
msgid "%s and friends, page %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:160
|
||||||
|
#, php-format
|
||||||
|
msgid "%s and friends"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:189
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"If you would like the %s app to automatically update your Facebook status "
|
||||||
|
"with your latest notice, you need to give it permission."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:213
|
||||||
|
msgid "Okay, do it!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookhome.php:219
|
||||||
|
msgid "Skip"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:74
|
||||||
|
msgid "There was a problem saving your sync preferences!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:76
|
||||||
|
msgid "Sync preferences saved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:99
|
||||||
|
msgid "Automatically update my Facebook status with my notices."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:106
|
||||||
|
msgid "Send \"@\" replies to Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:115
|
||||||
|
msgid "Prefix"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:117
|
||||||
|
msgid "A string to prefix notices with."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:123
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:133
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"If you would like %s to automatically update your Facebook status with your "
|
||||||
|
"latest notice, you need to give it permission."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:146
|
||||||
|
#, php-format
|
||||||
|
msgid "Allow %s to update my Facebook status"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebooksettings.php:156
|
||||||
|
msgid "Sync preferences"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:72
|
||||||
|
#, php-format
|
||||||
|
msgid "Thanks for inviting your friends to use %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:74
|
||||||
|
msgid "Invitations have been sent to the following users:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:94
|
||||||
|
#, php-format
|
||||||
|
msgid "You have been invited to %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:103
|
||||||
|
#, php-format
|
||||||
|
msgid "Invite your friends to use %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:125
|
||||||
|
#, php-format
|
||||||
|
msgid "Friends already using %s:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookinvite.php:143
|
||||||
|
msgid "Send invitations"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: facebookremove.php:58
|
||||||
|
msgid "Couldn't remove Facebook user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:56 FacebookPlugin.php:430
|
||||||
|
msgid "Facebook Connect Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:67
|
||||||
|
msgid "Manage how your account connects to Facebook"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:92
|
||||||
|
msgid "There is no Facebook user connected to this account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:100
|
||||||
|
msgid "Connected Facebook user"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:119
|
||||||
|
msgid "Disconnect my account from Facebook"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:124
|
||||||
|
msgid ""
|
||||||
|
"Disconnecting your Faceboook would make it impossible to log in! Please "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:128
|
||||||
|
msgid "set a password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:130
|
||||||
|
msgid " first."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:142
|
||||||
|
msgid "Disconnect"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:164 FBConnectAuth.php:90
|
||||||
|
msgid "There was a problem with your session token. Try again, please."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:178
|
||||||
|
msgid "Couldn't delete link to Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:194
|
||||||
|
msgid "You have disconnected from Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectSettings.php:197
|
||||||
|
msgid "Not sure what you're trying to do."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:51
|
||||||
|
msgid "You must be logged into Facebook to use Facebook Connect."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:77
|
||||||
|
msgid "There is already a local user linked with this Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:95
|
||||||
|
msgid "You can't register if you don't agree to the license."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:105
|
||||||
|
msgid "Something weird happened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:119
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"This is the first time you've logged into %s so we must connect your "
|
||||||
|
"Facebook to a local account. You can either create a new account, or connect "
|
||||||
|
"with your existing account, if you have one."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:125
|
||||||
|
msgid "Facebook Account Setup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:153
|
||||||
|
msgid "Connection options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:162
|
||||||
|
msgid "My text and files are available under "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:165
|
||||||
|
msgid ""
|
||||||
|
" except this private data: password, email address, IM address, phone number."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:173
|
||||||
|
msgid "Create new account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:175
|
||||||
|
msgid "Create a new user with this nickname."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:178
|
||||||
|
msgid "New nickname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:180
|
||||||
|
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:183
|
||||||
|
msgid "Create"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:188
|
||||||
|
msgid "Connect existing account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:190
|
||||||
|
msgid ""
|
||||||
|
"If you already have an account, login with your username and password to "
|
||||||
|
"connect it to your Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:193
|
||||||
|
msgid "Existing nickname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:199
|
||||||
|
msgid "Connect"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:215 FBConnectAuth.php:224
|
||||||
|
msgid "Registration not allowed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:231
|
||||||
|
msgid "Not a valid invitation code."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:241
|
||||||
|
msgid "Nickname must have only lowercase letters and numbers and no spaces."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:246
|
||||||
|
msgid "Nickname not allowed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:251
|
||||||
|
msgid "Nickname already in use. Try another one."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:269 FBConnectAuth.php:303 FBConnectAuth.php:323
|
||||||
|
msgid "Error connecting user to Facebook."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FBConnectAuth.php:289
|
||||||
|
msgid "Invalid username or password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FacebookPlugin.php:409 FacebookPlugin.php:429
|
||||||
|
msgid "Facebook"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FacebookPlugin.php:410
|
||||||
|
msgid "Login or register using Facebook"
|
||||||
|
msgstr ""
|
@ -51,7 +51,6 @@ class FeedSubPlugin extends Plugin
|
|||||||
* @param Net_URL_Mapper $m path-to-action mapper
|
* @param Net_URL_Mapper $m path-to-action mapper
|
||||||
* @return boolean hook return
|
* @return boolean hook return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function onRouterInitialized($m)
|
function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
$m->connect('feedsub/callback/:feed',
|
$m->connect('feedsub/callback/:feed',
|
||||||
@ -74,8 +73,8 @@ class FeedSubPlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('feedsubsettings'),
|
$action->menuItem(common_local_url('feedsubsettings'),
|
||||||
dgettext('FeebSubPlugin', 'Feeds'),
|
_m('Feeds'),
|
||||||
dgettext('FeedSubPlugin', 'Feed subscription options'),
|
_m('Feed subscription options'),
|
||||||
$action_name === 'feedsubsettings');
|
$action_name === 'feedsubsettings');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -38,7 +38,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return dgettext('FeedSubPlugin', 'Feed subscriptions');
|
return _m('Feed subscriptions');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,9 +49,8 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
return dgettext('FeedSubPlugin',
|
return _m('You can subscribe to feeds from other sites; ' .
|
||||||
'You can subscribe to feeds from other sites; ' .
|
'updates will appear in your personal timeline.');
|
||||||
'updates will appear in your personal timeline.');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,9 +93,9 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
|
|
||||||
if ($this->preview) {
|
if ($this->preview) {
|
||||||
$this->submit('subscribe', dgettext('FeedSubPlugin', 'Subscribe'));
|
$this->submit('subscribe', _m('Subscribe'));
|
||||||
} else {
|
} else {
|
||||||
$this->submit('validate', dgettext('FeedSubPlugin', 'Continue'));
|
$this->submit('validate', _m('Continue'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
@ -149,8 +148,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$feedurl = trim($this->arg('feedurl'));
|
$feedurl = trim($this->arg('feedurl'));
|
||||||
|
|
||||||
if ($feedurl == '') {
|
if ($feedurl == '') {
|
||||||
$this->showForm(dgettext('FeedSubPlugin',
|
$this->showForm(_m('Empty feed URL!'));
|
||||||
'Empty feed URL!'));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->feedurl = $feedurl;
|
$this->feedurl = $feedurl;
|
||||||
@ -160,26 +158,26 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$discover = new FeedDiscovery();
|
$discover = new FeedDiscovery();
|
||||||
$uri = $discover->discoverFromURL($feedurl);
|
$uri = $discover->discoverFromURL($feedurl);
|
||||||
} catch (FeedSubBadURLException $e) {
|
} catch (FeedSubBadURLException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Invalid URL or could not reach server.'));
|
$this->showForm(_m('Invalid URL or could not reach server.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubBadResponseException $e) {
|
} catch (FeedSubBadResponseException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Cannot read feed; server returned error.'));
|
$this->showForm(_m('Cannot read feed; server returned error.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubEmptyException $e) {
|
} catch (FeedSubEmptyException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Cannot read feed; server returned an empty page.'));
|
$this->showForm(_m('Cannot read feed; server returned an empty page.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubBadHTMLException $e) {
|
} catch (FeedSubBadHTMLException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Bad HTML, could not find feed link.'));
|
$this->showForm(_m('Bad HTML, could not find feed link.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubNoFeedException $e) {
|
} catch (FeedSubNoFeedException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Could not find a feed linked from this URL.'));
|
$this->showForm(_m('Could not find a feed linked from this URL.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubUnrecognizedTypeException $e) {
|
} catch (FeedSubUnrecognizedTypeException $e) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Not a recognized feed type.'));
|
$this->showForm(_m('Not a recognized feed type.'));
|
||||||
return false;
|
return false;
|
||||||
} catch (FeedSubException $e) {
|
} catch (FeedSubException $e) {
|
||||||
// Any new ones we forgot about
|
// Any new ones we forgot about
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Bad feed URL.'));
|
$this->showForm(_m('Bad feed URL.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,7 +185,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$this->feedinfo = $this->munger->feedInfo();
|
$this->feedinfo = $this->munger->feedInfo();
|
||||||
|
|
||||||
if ($this->feedinfo->huburi == '') {
|
if ($this->feedinfo->huburi == '') {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Feed is not PuSH-enabled; cannot subscribe.'));
|
$this->showForm(_m('Feed is not PuSH-enabled; cannot subscribe.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +205,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$ok = $this->feedinfo->subscribe();
|
$ok = $this->feedinfo->subscribe();
|
||||||
common_log(LOG_INFO, __METHOD__ . ": sub was $ok");
|
common_log(LOG_INFO, __METHOD__ . ": sub was $ok");
|
||||||
if (!$ok) {
|
if (!$ok) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Feed subscription failed! Bad response from hub.'));
|
$this->showForm(_m('Feed subscription failed! Bad response from hub.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,11 +215,11 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
$profile = $this->feedinfo->getProfile();
|
$profile = $this->feedinfo->getProfile();
|
||||||
|
|
||||||
if ($user->isSubscribed($profile)) {
|
if ($user->isSubscribed($profile)) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Already subscribed!'));
|
$this->showForm(_m('Already subscribed!'));
|
||||||
} elseif ($user->subscribeTo($profile)) {
|
} elseif ($user->subscribeTo($profile)) {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Feed subscribed!'));
|
$this->showForm(_m('Feed subscribed!'));
|
||||||
} else {
|
} else {
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Feed subscription failed!'));
|
$this->showForm(_m('Feed subscription failed!'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,7 +228,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
|
|||||||
{
|
{
|
||||||
if ($this->validateFeed()) {
|
if ($this->validateFeed()) {
|
||||||
$this->preview = true;
|
$this->preview = true;
|
||||||
$this->showForm(dgettext('FeedSubPlugin', 'Previewing feed:'));
|
$this->showForm(_m('Previewing feed:'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ class FeedMunger
|
|||||||
// try adding #hashtags from the categories/tags on a post.
|
// try adding #hashtags from the categories/tags on a post.
|
||||||
|
|
||||||
// @todo Should we force a language here?
|
// @todo Should we force a language here?
|
||||||
$format = dgettext("FeedSubPlugin", 'New post: "%1$s" %2$s');
|
$format = _m('New post: "%1$s" %2$s');
|
||||||
$title = $entry->title;
|
$title = $entry->title;
|
||||||
$link = $this->getAltLink($entry);
|
$link = $this->getAltLink($entry);
|
||||||
$out = sprintf($format, $title, $link);
|
$out = sprintf($format, $title, $link);
|
||||||
|
104
plugins/FeedSub/locale/FeedSub.po
Normal file
104
plugins/FeedSub/locale/FeedSub.po
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 20:38-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: tests/gettext-speedtest.php:57 FeedSubPlugin.php:76
|
||||||
|
msgid "Feeds"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: FeedSubPlugin.php:77
|
||||||
|
msgid "Feed subscription options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: feedmunger.php:215
|
||||||
|
#, php-format
|
||||||
|
msgid "New post: \"%1$s\" %2$s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:41
|
||||||
|
msgid "Feed subscriptions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:52
|
||||||
|
msgid ""
|
||||||
|
"You can subscribe to feeds from other sites; updates will appear in your "
|
||||||
|
"personal timeline."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:96
|
||||||
|
msgid "Subscribe"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:98
|
||||||
|
msgid "Continue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:151
|
||||||
|
msgid "Empty feed URL!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:161
|
||||||
|
msgid "Invalid URL or could not reach server."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:164
|
||||||
|
msgid "Cannot read feed; server returned error."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:167
|
||||||
|
msgid "Cannot read feed; server returned an empty page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:170
|
||||||
|
msgid "Bad HTML, could not find feed link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:173
|
||||||
|
msgid "Could not find a feed linked from this URL."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:176
|
||||||
|
msgid "Not a recognized feed type."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:180
|
||||||
|
msgid "Bad feed URL."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:188
|
||||||
|
msgid "Feed is not PuSH-enabled; cannot subscribe."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:208
|
||||||
|
msgid "Feed subscription failed! Bad response from hub."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:218
|
||||||
|
msgid "Already subscribed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:220
|
||||||
|
msgid "Feed subscribed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:222
|
||||||
|
msgid "Feed subscription failed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:231
|
||||||
|
msgid "Previewing feed:"
|
||||||
|
msgstr ""
|
106
plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po
Normal file
106
plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 14:14-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: FeedSubPlugin.php:77
|
||||||
|
msgid "Feeds"
|
||||||
|
msgstr "Flux"
|
||||||
|
|
||||||
|
#: FeedSubPlugin.php:78
|
||||||
|
msgid "Feed subscription options"
|
||||||
|
msgstr "Préférences pour abonnement flux"
|
||||||
|
|
||||||
|
#: feedmunger.php:215
|
||||||
|
#, php-format
|
||||||
|
msgid "New post: \"%1$s\" %2$s"
|
||||||
|
msgstr "Nouveau: \"%1$s\" %2$s"
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:41
|
||||||
|
msgid "Feed subscriptions"
|
||||||
|
msgstr "Abonnements aux fluxes"
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:52
|
||||||
|
msgid ""
|
||||||
|
"You can subscribe to feeds from other sites; updates will appear in your "
|
||||||
|
"personal timeline."
|
||||||
|
msgstr ""
|
||||||
|
"Abonner aux fluxes RSS ou Atom des autres sites web; les temps se trouverair"
|
||||||
|
"en votre flux personnel."
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:96
|
||||||
|
msgid "Subscribe"
|
||||||
|
msgstr "Abonner"
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:98
|
||||||
|
msgid "Continue"
|
||||||
|
msgstr "Prochaine"
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:151
|
||||||
|
msgid "Empty feed URL!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:161
|
||||||
|
msgid "Invalid URL or could not reach server."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:164
|
||||||
|
msgid "Cannot read feed; server returned error."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:167
|
||||||
|
msgid "Cannot read feed; server returned an empty page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:170
|
||||||
|
msgid "Bad HTML, could not find feed link."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:173
|
||||||
|
msgid "Could not find a feed linked from this URL."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:176
|
||||||
|
msgid "Not a recognized feed type."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:180
|
||||||
|
msgid "Bad feed URL."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:188
|
||||||
|
msgid "Feed is not PuSH-enabled; cannot subscribe."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:208
|
||||||
|
msgid "Feed subscription failed! Bad response from hub."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:218
|
||||||
|
msgid "Already subscribed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:220
|
||||||
|
msgid "Feed subscribed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:222
|
||||||
|
msgid "Feed subscription failed!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: actions/feedsubsettings.php:231
|
||||||
|
msgid "Previewing feed:"
|
||||||
|
msgstr ""
|
78
plugins/FeedSub/tests/gettext-speedtest.php
Normal file
78
plugins/FeedSub/tests/gettext-speedtest.php
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
|
||||||
|
print "This script must be run from the command line\n";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
|
||||||
|
define('STATUSNET', true);
|
||||||
|
define('LACONICA', true);
|
||||||
|
|
||||||
|
require_once INSTALLDIR . '/scripts/commandline.inc';
|
||||||
|
require_once INSTALLDIR . '/extlib/php-gettext/gettext.inc';
|
||||||
|
|
||||||
|
common_init_locale("en_US");
|
||||||
|
common_init_locale('fr');
|
||||||
|
|
||||||
|
|
||||||
|
putenv("LANG=fr");
|
||||||
|
putenv("LANGUAGE=fr");
|
||||||
|
setlocale('fr.utf8');
|
||||||
|
_setlocale('fr.utf8');
|
||||||
|
|
||||||
|
_bindtextdomain("statusnet", INSTALLDIR . '/locale');
|
||||||
|
_bindtextdomain("FeedSub", INSTALLDIR . '/plugins/FeedSub/locale');
|
||||||
|
|
||||||
|
$times = 10000;
|
||||||
|
$delta = array();
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = _("Send");
|
||||||
|
}
|
||||||
|
$delta["_"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = __("Send");
|
||||||
|
}
|
||||||
|
$delta["__"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = dgettext("FeedSub", "Feeds");
|
||||||
|
}
|
||||||
|
$delta["dgettext"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = _dgettext("FeedSub", "Feeds");
|
||||||
|
}
|
||||||
|
$delta["_dgettext"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = _m("Feeds");
|
||||||
|
}
|
||||||
|
$delta["_m"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for($i = 0; $i < $times; $i++) {
|
||||||
|
$result = fake("Feeds");
|
||||||
|
}
|
||||||
|
$delta["fake"] = array((microtime(true) - $start) / $times, $result);
|
||||||
|
|
||||||
|
foreach ($delta as $func => $bits) {
|
||||||
|
list($time, $result) = $bits;
|
||||||
|
$ms = $time * 1000.0;
|
||||||
|
printf("%10s %2.4fms %s\n", $func, $ms, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fake($str) {
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
188
plugins/Gravatar/GravatarPlugin.php
Normal file
188
plugins/Gravatar/GravatarPlugin.php
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* StatusNet - the distributed open-source microblogging tool
|
||||||
|
* Copyright (C) 2009, StatusNet, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package GravatarPlugin
|
||||||
|
* @maintainer Eric Helgeson <erichelgeson@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||||
|
// This check helps protect against security problems;
|
||||||
|
// your code file can't be executed directly from the web.
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class GravatarPlugin extends Plugin
|
||||||
|
{
|
||||||
|
function onInitializePlugin() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onStartAvatarFormData($action) {
|
||||||
|
$user = common_current_user();
|
||||||
|
$hasGravatar = $this->hasGravatar($user->id);
|
||||||
|
|
||||||
|
if($hasGravatar) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onEndAvatarFormData(&$action) {
|
||||||
|
$user = common_current_user();
|
||||||
|
$hasGravatar = $this->hasGravatar($user->id);
|
||||||
|
|
||||||
|
if(!empty($user->email) && !$hasGravatar) { //and not gravatar already set
|
||||||
|
$action->elementStart('form', array('method' => 'post',
|
||||||
|
'id' => 'form_settings_gravatar_add',
|
||||||
|
'class' => 'form_settings',
|
||||||
|
'action' =>
|
||||||
|
common_local_url('avatarsettings')));
|
||||||
|
$action->elementStart('fieldset', array('id' => 'settings_gravatar_add'));
|
||||||
|
$action->element('legend', null, _m('Set Gravatar'));
|
||||||
|
$action->hidden('token', common_session_token());
|
||||||
|
$action->element('p', 'form_guide',
|
||||||
|
_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')));
|
||||||
|
$action->elementEnd('fieldset');
|
||||||
|
$action->elementEnd('form');
|
||||||
|
} elseif($hasGravatar) {
|
||||||
|
$action->elementStart('form', array('method' => 'post',
|
||||||
|
'id' => 'form_settings_gravatar_remove',
|
||||||
|
'class' => 'form_settings',
|
||||||
|
'action' =>
|
||||||
|
common_local_url('avatarsettings')));
|
||||||
|
$action->elementStart('fieldset', array('id' => 'settings_gravatar_remove'));
|
||||||
|
$action->element('legend', null, _m('Remove Gravatar'));
|
||||||
|
$action->hidden('token', common_session_token());
|
||||||
|
$action->element('p', 'form_guide',
|
||||||
|
_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',
|
||||||
|
'value' => _m('Remove')));
|
||||||
|
$action->elementEnd('fieldset');
|
||||||
|
$action->elementEnd('form');
|
||||||
|
} else {
|
||||||
|
$action->element('p', 'form_guide',
|
||||||
|
_m('To use a Gravatar first enter in an email address.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onStartAvatarSaveForm($action) {
|
||||||
|
if ($action->arg('add')) {
|
||||||
|
$result = $this->gravatar_save();
|
||||||
|
|
||||||
|
if($result['success']===true) {
|
||||||
|
common_broadcast_profile(common_current_user()->getProfile());
|
||||||
|
}
|
||||||
|
|
||||||
|
$action->showForm($result['message'], $result['success']);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else if ($action->arg('remove')) {
|
||||||
|
$result = $this->gravatar_remove();
|
||||||
|
|
||||||
|
if($result['success']===true) {
|
||||||
|
common_broadcast_profile(common_current_user()->getProfile());
|
||||||
|
}
|
||||||
|
|
||||||
|
$action->showForm($result['message'], $result['success']);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function hasGravatar($id) {
|
||||||
|
$avatar = new Avatar();
|
||||||
|
$avatar->profile_id = $id;
|
||||||
|
if ($avatar->find()) {
|
||||||
|
while ($avatar->fetch()) {
|
||||||
|
if($avatar->filename == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function gravatar_save()
|
||||||
|
{
|
||||||
|
$cur = common_current_user();
|
||||||
|
|
||||||
|
if(empty($cur->email)) {
|
||||||
|
return array('message' => _m('You do not have a email set in your profile.'),
|
||||||
|
'success' => false);
|
||||||
|
}
|
||||||
|
//Get rid of previous Avatar
|
||||||
|
$this->gravatar_remove();
|
||||||
|
|
||||||
|
foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
|
||||||
|
$gravatar = new Avatar();
|
||||||
|
$gravatar->profile_id = $cur->id;
|
||||||
|
$gravatar->width = $size;
|
||||||
|
$gravatar->height = $size;
|
||||||
|
$gravatar->original = false; //No file, so no original
|
||||||
|
$gravatar->mediatype = 'img';//XXX: Unsure what to put here
|
||||||
|
//$gravatar->filename = null;//No filename. Remote
|
||||||
|
$gravatar->url = $this->gravatar_url($cur->email, $size);
|
||||||
|
$gravatar->created = DB_DataObject_Cast::dateTime(); # current time
|
||||||
|
|
||||||
|
if (!$gravatar->insert()) {
|
||||||
|
return array('message' => _m('Failed to save Gravatar to the DB.'),
|
||||||
|
'success' => false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array('message' => _m('Gravatar added.'),
|
||||||
|
'success' => true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function gravatar_remove()
|
||||||
|
{
|
||||||
|
$user = common_current_user();
|
||||||
|
$profile = $user->getProfile();
|
||||||
|
|
||||||
|
$avatar = $profile->getOriginalAvatar();
|
||||||
|
if($avatar) $avatar->delete();
|
||||||
|
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
|
||||||
|
if($avatar) $avatar->delete();
|
||||||
|
$avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
|
||||||
|
if($avatar) $avatar->delete();
|
||||||
|
$avatar = $profile->getAvatar(AVATAR_MINI_SIZE);
|
||||||
|
if($avatar) $avatar->delete();
|
||||||
|
|
||||||
|
return array('message' => _m('Gravatar removed.'),
|
||||||
|
'success' => true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function gravatar_url($email, $size) {
|
||||||
|
$url = "http://www.gravatar.com/avatar.php?gravatar_id=".
|
||||||
|
md5(strtolower($email)).
|
||||||
|
"&default=".urlencode(Avatar::defaultImage($size)).
|
||||||
|
"&size=".$size;
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
}
|
13
plugins/Gravatar/README
Normal file
13
plugins/Gravatar/README
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
GravatarPlugin 0.1
|
||||||
|
|
||||||
|
About
|
||||||
|
This will allow users to use their Gravatar Avatar with your StatusNet install.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
add this to your config.php:
|
||||||
|
addPlugin('Gravatar', array());
|
||||||
|
|
||||||
|
ToDo:
|
||||||
|
Site default all on for gravatar by default
|
||||||
|
Migration Script
|
||||||
|
Localize
|
@ -177,7 +177,7 @@ class MapstractionPlugin extends Plugin
|
|||||||
$action->elementStart('div', array('id' => 'entity_map',
|
$action->elementStart('div', array('id' => 'entity_map',
|
||||||
'class' => 'section'));
|
'class' => 'section'));
|
||||||
|
|
||||||
$action->element('h2', null, _('Map'));
|
$action->element('h2', null, _m('Map'));
|
||||||
|
|
||||||
$action->element('div', array('id' => 'map_canvas',
|
$action->element('div', array('id' => 'map_canvas',
|
||||||
'class' => 'gray smallmap',
|
'class' => 'gray smallmap',
|
||||||
@ -188,7 +188,7 @@ class MapstractionPlugin extends Plugin
|
|||||||
array('nickname' => $action->trimmed('nickname')));
|
array('nickname' => $action->trimmed('nickname')));
|
||||||
|
|
||||||
$action->element('a', array('href' => $mapUrl),
|
$action->element('a', array('href' => $mapUrl),
|
||||||
_("Full size"));
|
_m("Full size"));
|
||||||
|
|
||||||
$action->elementEnd('div');
|
$action->elementEnd('div');
|
||||||
}
|
}
|
||||||
|
@ -68,10 +68,10 @@ class AllmapAction extends MapAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->page == 1) {
|
if ($this->page == 1) {
|
||||||
return sprintf(_("%s friends map"),
|
return sprintf(_m("%s friends map"),
|
||||||
$base);
|
$base);
|
||||||
} else {
|
} else {
|
||||||
return sprintf(_("%s friends map, page %d"),
|
return sprintf(_m("%s friends map, page %d"),
|
||||||
$base,
|
$base,
|
||||||
$this->page);
|
$this->page);
|
||||||
}
|
}
|
||||||
|
48
plugins/Mapstraction/locale/Mapstraction.po
Normal file
48
plugins/Mapstraction/locale/Mapstraction.po
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 20:38-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: allmap.php:71
|
||||||
|
#, php-format
|
||||||
|
msgid "%s friends map"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: allmap.php:74
|
||||||
|
#, php-format
|
||||||
|
msgid "%s friends map, page %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: map.php:72
|
||||||
|
msgid "No such user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: map.php:79
|
||||||
|
msgid "User has no profile."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: usermap.php:71
|
||||||
|
#, php-format
|
||||||
|
msgid "%s map, page %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: MapstractionPlugin.php:180
|
||||||
|
msgid "Map"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: MapstractionPlugin.php:191
|
||||||
|
msgid "Full size"
|
||||||
|
msgstr ""
|
@ -69,14 +69,14 @@ class MapAction extends OwnerDesignAction
|
|||||||
$this->user = User::staticGet('nickname', $nickname);
|
$this->user = User::staticGet('nickname', $nickname);
|
||||||
|
|
||||||
if (!$this->user) {
|
if (!$this->user) {
|
||||||
$this->clientError(_('No such user.'), 404);
|
$this->clientError(_m('No such user.'), 404);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->profile = $this->user->getProfile();
|
$this->profile = $this->user->getProfile();
|
||||||
|
|
||||||
if (!$this->profile) {
|
if (!$this->profile) {
|
||||||
$this->serverError(_('User has no profile.'));
|
$this->serverError(_m('User has no profile.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ class UsermapAction extends MapAction
|
|||||||
if ($this->page == 1) {
|
if ($this->page == 1) {
|
||||||
return $base;
|
return $base;
|
||||||
} else {
|
} else {
|
||||||
return sprintf(_("%s map, page %d"),
|
return sprintf(_m("%s map, page %d"),
|
||||||
$base,
|
$base,
|
||||||
$this->page);
|
$this->page);
|
||||||
}
|
}
|
||||||
|
@ -120,8 +120,8 @@ class OpenIDPlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('openidlogin'),
|
$action->menuItem(common_local_url('openidlogin'),
|
||||||
_('OpenID'),
|
_m('OpenID'),
|
||||||
_('Login or register with OpenID'),
|
_m('Login or register with OpenID'),
|
||||||
$action_name === 'openidlogin');
|
$action_name === 'openidlogin');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -132,8 +132,8 @@ class OpenIDPlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('openidsettings'),
|
$action->menuItem(common_local_url('openidsettings'),
|
||||||
_('OpenID'),
|
_m('OpenID'),
|
||||||
_('Add or remove OpenIDs'),
|
_m('Add or remove OpenIDs'),
|
||||||
$action_name === 'openidsettings');
|
$action_name === 'openidsettings');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -64,7 +64,7 @@ class FinishaddopenidAction extends Action
|
|||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
if (!common_logged_in()) {
|
if (!common_logged_in()) {
|
||||||
$this->clientError(_('Not logged in.'));
|
$this->clientError(_m('Not logged in.'));
|
||||||
} else {
|
} else {
|
||||||
$this->tryLogin();
|
$this->tryLogin();
|
||||||
}
|
}
|
||||||
@ -85,11 +85,11 @@ class FinishaddopenidAction extends Action
|
|||||||
$response = $consumer->complete(common_local_url('finishaddopenid'));
|
$response = $consumer->complete(common_local_url('finishaddopenid'));
|
||||||
|
|
||||||
if ($response->status == Auth_OpenID_CANCEL) {
|
if ($response->status == Auth_OpenID_CANCEL) {
|
||||||
$this->message(_('OpenID authentication cancelled.'));
|
$this->message(_m('OpenID authentication cancelled.'));
|
||||||
return;
|
return;
|
||||||
} else if ($response->status == Auth_OpenID_FAILURE) {
|
} else if ($response->status == Auth_OpenID_FAILURE) {
|
||||||
// Authentication failed; display the error message.
|
// Authentication failed; display the error message.
|
||||||
$this->message(sprintf(_('OpenID authentication failed: %s'),
|
$this->message(sprintf(_m('OpenID authentication failed: %s'),
|
||||||
$response->message));
|
$response->message));
|
||||||
} else if ($response->status == Auth_OpenID_SUCCESS) {
|
} else if ($response->status == Auth_OpenID_SUCCESS) {
|
||||||
|
|
||||||
@ -109,9 +109,9 @@ class FinishaddopenidAction extends Action
|
|||||||
|
|
||||||
if ($other) {
|
if ($other) {
|
||||||
if ($other->id == $cur->id) {
|
if ($other->id == $cur->id) {
|
||||||
$this->message(_('You already have this OpenID!'));
|
$this->message(_m('You already have this OpenID!'));
|
||||||
} else {
|
} else {
|
||||||
$this->message(_('Someone else already has this OpenID.'));
|
$this->message(_m('Someone else already has this OpenID.'));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -123,12 +123,12 @@ class FinishaddopenidAction extends Action
|
|||||||
$result = oid_link_user($cur->id, $canonical, $display);
|
$result = oid_link_user($cur->id, $canonical, $display);
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->message(_('Error connecting user.'));
|
$this->message(_m('Error connecting user.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($sreg) {
|
if ($sreg) {
|
||||||
if (!oid_update_user($cur, $sreg)) {
|
if (!oid_update_user($cur, $sreg)) {
|
||||||
$this->message(_('Error updating profile'));
|
$this->message(_m('Error updating profile'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@ class FinishaddopenidAction extends Action
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID Login');
|
return _m('OpenID Login');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,16 +31,16 @@ class FinishopenidloginAction extends Action
|
|||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
if (common_is_real_login()) {
|
if (common_is_real_login()) {
|
||||||
$this->clientError(_('Already logged in.'));
|
$this->clientError(_m('Already logged in.'));
|
||||||
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. Try again, please.'));
|
$this->showForm(_m('There was a problem with your session token. Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($this->arg('create')) {
|
if ($this->arg('create')) {
|
||||||
if (!$this->boolean('license')) {
|
if (!$this->boolean('license')) {
|
||||||
$this->showForm(_('You can\'t register if you don\'t agree to the license.'),
|
$this->showForm(_m('You can\'t register if you don\'t agree to the license.'),
|
||||||
$this->trimmed('newname'));
|
$this->trimmed('newname'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ class FinishopenidloginAction extends Action
|
|||||||
$this->connectUser();
|
$this->connectUser();
|
||||||
} else {
|
} else {
|
||||||
common_debug(print_r($this->args, true), __FILE__);
|
common_debug(print_r($this->args, true), __FILE__);
|
||||||
$this->showForm(_('Something weird happened.'),
|
$this->showForm(_m('Something weird happened.'),
|
||||||
$this->trimmed('newname'));
|
$this->trimmed('newname'));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -63,13 +63,13 @@ class FinishopenidloginAction extends Action
|
|||||||
$this->element('div', array('class' => 'error'), $this->error);
|
$this->element('div', array('class' => 'error'), $this->error);
|
||||||
} else {
|
} else {
|
||||||
$this->element('div', 'instructions',
|
$this->element('div', 'instructions',
|
||||||
sprintf(_('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
|
sprintf(_m('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID Account Setup');
|
return _m('OpenID Account Setup');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showForm($error=null, $username=null)
|
function showForm($error=null, $username=null)
|
||||||
@ -94,14 +94,14 @@ class FinishopenidloginAction extends Action
|
|||||||
$this->hidden('token', common_session_token());
|
$this->hidden('token', common_session_token());
|
||||||
$this->elementStart('fieldset', array('id' => 'form_openid_createaccount'));
|
$this->elementStart('fieldset', array('id' => 'form_openid_createaccount'));
|
||||||
$this->element('legend', null,
|
$this->element('legend', null,
|
||||||
_('Create new account'));
|
_m('Create new account'));
|
||||||
$this->element('p', null,
|
$this->element('p', null,
|
||||||
_('Create a new user with this nickname.'));
|
_m('Create a new user with this nickname.'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('newname', _('New nickname'),
|
$this->input('newname', _m('New nickname'),
|
||||||
($this->username) ? $this->username : '',
|
($this->username) ? $this->username : '',
|
||||||
_('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
_m('1-64 lowercase letters or numbers, no punctuation or spaces'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->element('input', array('type' => 'checkbox',
|
$this->element('input', array('type' => 'checkbox',
|
||||||
@ -111,30 +111,30 @@ class FinishopenidloginAction extends Action
|
|||||||
'value' => 'true'));
|
'value' => 'true'));
|
||||||
$this->elementStart('label', array('for' => 'license',
|
$this->elementStart('label', array('for' => 'license',
|
||||||
'class' => 'checkbox'));
|
'class' => 'checkbox'));
|
||||||
$this->text(_('My text and files are available under '));
|
$this->text(_m('My text and files are available under '));
|
||||||
$this->element('a', array('href' => common_config('license', 'url')),
|
$this->element('a', array('href' => common_config('license', 'url')),
|
||||||
common_config('license', 'title'));
|
common_config('license', 'title'));
|
||||||
$this->text(_(' except this private data: password, email address, IM address, phone number.'));
|
$this->text(_m(' except this private data: password, email address, IM address, phone number.'));
|
||||||
$this->elementEnd('label');
|
$this->elementEnd('label');
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('create', _('Create'));
|
$this->submit('create', _m('Create'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
|
|
||||||
$this->elementStart('fieldset', array('id' => 'form_openid_createaccount'));
|
$this->elementStart('fieldset', array('id' => 'form_openid_createaccount'));
|
||||||
$this->element('legend', null,
|
$this->element('legend', null,
|
||||||
_('Connect existing account'));
|
_m('Connect existing account'));
|
||||||
$this->element('p', null,
|
$this->element('p', null,
|
||||||
_('If you already have an account, login with your username and password to connect it to your OpenID.'));
|
_m('If you already have an account, login with your username and password to connect it to your OpenID.'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('nickname', _('Existing nickname'));
|
$this->input('nickname', _m('Existing nickname'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->password('password', _('Password'));
|
$this->password('password', _m('Password'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('connect', _('Connect'));
|
$this->submit('connect', _m('Connect'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
}
|
}
|
||||||
@ -146,11 +146,11 @@ class FinishopenidloginAction extends Action
|
|||||||
$response = $consumer->complete(common_local_url('finishopenidlogin'));
|
$response = $consumer->complete(common_local_url('finishopenidlogin'));
|
||||||
|
|
||||||
if ($response->status == Auth_OpenID_CANCEL) {
|
if ($response->status == Auth_OpenID_CANCEL) {
|
||||||
$this->message(_('OpenID authentication cancelled.'));
|
$this->message(_m('OpenID authentication cancelled.'));
|
||||||
return;
|
return;
|
||||||
} else if ($response->status == Auth_OpenID_FAILURE) {
|
} else if ($response->status == Auth_OpenID_FAILURE) {
|
||||||
// Authentication failed; display the error message.
|
// Authentication failed; display the error message.
|
||||||
$this->message(sprintf(_('OpenID authentication failed: %s'), $response->message));
|
$this->message(sprintf(_m('OpenID authentication failed: %s'), $response->message));
|
||||||
} else if ($response->status == Auth_OpenID_SUCCESS) {
|
} else if ($response->status == Auth_OpenID_SUCCESS) {
|
||||||
// This means the authentication succeeded; extract the
|
// This means the authentication succeeded; extract the
|
||||||
// identity URL and Simple Registration data (if it was
|
// identity URL and Simple Registration data (if it was
|
||||||
@ -212,7 +212,7 @@ class FinishopenidloginAction extends Action
|
|||||||
# FIXME: save invite code before redirect, and check here
|
# FIXME: save invite code before redirect, and check here
|
||||||
|
|
||||||
if (common_config('site', 'closed')) {
|
if (common_config('site', 'closed')) {
|
||||||
$this->clientError(_('Registration not allowed.'));
|
$this->clientError(_m('Registration not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,14 +221,14 @@ class FinishopenidloginAction extends Action
|
|||||||
if (common_config('site', 'inviteonly')) {
|
if (common_config('site', 'inviteonly')) {
|
||||||
$code = $_SESSION['invitecode'];
|
$code = $_SESSION['invitecode'];
|
||||||
if (empty($code)) {
|
if (empty($code)) {
|
||||||
$this->clientError(_('Registration not allowed.'));
|
$this->clientError(_m('Registration not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$invite = Invitation::staticGet($code);
|
$invite = Invitation::staticGet($code);
|
||||||
|
|
||||||
if (empty($invite)) {
|
if (empty($invite)) {
|
||||||
$this->clientError(_('Not a valid invitation code.'));
|
$this->clientError(_m('Not a valid invitation code.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,24 +238,24 @@ class FinishopenidloginAction extends Action
|
|||||||
if (!Validate::string($nickname, array('min_length' => 1,
|
if (!Validate::string($nickname, array('min_length' => 1,
|
||||||
'max_length' => 64,
|
'max_length' => 64,
|
||||||
'format' => NICKNAME_FMT))) {
|
'format' => NICKNAME_FMT))) {
|
||||||
$this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.'));
|
$this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!User::allowed_nickname($nickname)) {
|
if (!User::allowed_nickname($nickname)) {
|
||||||
$this->showForm(_('Nickname not allowed.'));
|
$this->showForm(_m('Nickname not allowed.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (User::staticGet('nickname', $nickname)) {
|
if (User::staticGet('nickname', $nickname)) {
|
||||||
$this->showForm(_('Nickname already in use. Try another one.'));
|
$this->showForm(_m('Nickname already in use. Try another one.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
list($display, $canonical, $sreg) = $this->getSavedValues();
|
list($display, $canonical, $sreg) = $this->getSavedValues();
|
||||||
|
|
||||||
if (!$display || !$canonical) {
|
if (!$display || !$canonical) {
|
||||||
$this->serverError(_('Stored OpenID not found.'));
|
$this->serverError(_m('Stored OpenID not found.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +264,7 @@ class FinishopenidloginAction extends Action
|
|||||||
$other = oid_get_user($canonical);
|
$other = oid_get_user($canonical);
|
||||||
|
|
||||||
if ($other) {
|
if ($other) {
|
||||||
$this->serverError(_('Creating new account for OpenID that already has a user.'));
|
$this->serverError(_m('Creating new account for OpenID that already has a user.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ class FinishopenidloginAction extends Action
|
|||||||
$password = $this->trimmed('password');
|
$password = $this->trimmed('password');
|
||||||
|
|
||||||
if (!common_check_user($nickname, $password)) {
|
if (!common_check_user($nickname, $password)) {
|
||||||
$this->showForm(_('Invalid username or password.'));
|
$this->showForm(_m('Invalid username or password.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,14 +335,14 @@ class FinishopenidloginAction extends Action
|
|||||||
list($display, $canonical, $sreg) = $this->getSavedValues();
|
list($display, $canonical, $sreg) = $this->getSavedValues();
|
||||||
|
|
||||||
if (!$display || !$canonical) {
|
if (!$display || !$canonical) {
|
||||||
$this->serverError(_('Stored OpenID not found.'));
|
$this->serverError(_m('Stored OpenID not found.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = oid_link_user($user->id, $canonical, $display);
|
$result = oid_link_user($user->id, $canonical, $display);
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->serverError(_('Error connecting user to OpenID.'));
|
$this->serverError(_m('Error connecting user to OpenID.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
344
plugins/OpenID/locale/OpenID.po
Normal file
344
plugins/OpenID/locale/OpenID.po
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 20:38-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: openidlogin.php:30 finishopenidlogin.php:34
|
||||||
|
msgid "Already logged in."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:37 openidsettings.php:194 finishopenidlogin.php:38
|
||||||
|
msgid "There was a problem with your session token. Try again, please."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:66
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
|
||||||
|
"before changing your settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:70
|
||||||
|
#, php-format
|
||||||
|
msgid "Login with an [OpenID](%%doc.openid%%) account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:95 finishaddopenid.php:170
|
||||||
|
msgid "OpenID Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:112
|
||||||
|
msgid "OpenID login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:117 openidsettings.php:107
|
||||||
|
msgid "OpenID URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:119
|
||||||
|
msgid "Your OpenID URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:122
|
||||||
|
msgid "Remember me"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:123
|
||||||
|
msgid "Automatically login in the future; not for shared computers!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidlogin.php:127
|
||||||
|
msgid "Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidserver.php:106
|
||||||
|
#, php-format
|
||||||
|
msgid "You are not authorized to use the identity %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidserver.php:126
|
||||||
|
msgid "Just an OpenID provider. Nothing to see here, move along..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: OpenIDPlugin.php:123 OpenIDPlugin.php:135
|
||||||
|
msgid "OpenID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: OpenIDPlugin.php:124
|
||||||
|
msgid "Login or register with OpenID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: OpenIDPlugin.php:136
|
||||||
|
msgid "Add or remove OpenIDs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:141
|
||||||
|
msgid "Cannot instantiate OpenID consumer object."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:151
|
||||||
|
msgid "Not a valid OpenID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:153
|
||||||
|
#, php-format
|
||||||
|
msgid "OpenID failure: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:180
|
||||||
|
#, php-format
|
||||||
|
msgid "Could not redirect to server: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:198
|
||||||
|
#, php-format
|
||||||
|
msgid "Could not create OpenID form: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:214
|
||||||
|
msgid ""
|
||||||
|
"This form should automatically submit itself. If not, click the submit "
|
||||||
|
"button to go to your OpenID provider."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:246
|
||||||
|
msgid "Error saving the profile."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:257
|
||||||
|
msgid "Error saving the user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openid.php:277
|
||||||
|
msgid "OpenID Auto-Submit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidtrust.php:51
|
||||||
|
msgid "OpenID Identity Verification"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidtrust.php:69
|
||||||
|
msgid ""
|
||||||
|
"This page should only be reached during OpenID processing, not directly."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidtrust.php:118
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"%s has asked to verify your identity. Click Continue to verify your "
|
||||||
|
"identity and login without creating a new password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidtrust.php:136
|
||||||
|
msgid "Continue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidtrust.php:137
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:67
|
||||||
|
msgid "Not logged in."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:88 finishopenidlogin.php:149
|
||||||
|
msgid "OpenID authentication cancelled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:92 finishopenidlogin.php:153
|
||||||
|
#, php-format
|
||||||
|
msgid "OpenID authentication failed: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:112
|
||||||
|
msgid "You already have this OpenID!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:114
|
||||||
|
msgid "Someone else already has this OpenID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:126
|
||||||
|
msgid "Error connecting user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishaddopenid.php:131
|
||||||
|
msgid "Error updating profile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:59
|
||||||
|
msgid "OpenID settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:70
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
|
||||||
|
"account. Manage your associated OpenIDs from here."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:99
|
||||||
|
msgid "Add OpenID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:102
|
||||||
|
msgid ""
|
||||||
|
"If you want to add an OpenID to your account, enter it in the box below and "
|
||||||
|
"click \"Add\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:117
|
||||||
|
msgid "Add"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:129
|
||||||
|
msgid "Remove OpenID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:134
|
||||||
|
msgid ""
|
||||||
|
"Removing your only OpenID would make it impossible to log in! If you need to "
|
||||||
|
"remove it, add another OpenID first."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:149
|
||||||
|
msgid ""
|
||||||
|
"You can remove an OpenID from your account by clicking the button marked "
|
||||||
|
"\"Remove\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:172
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:208 finishopenidlogin.php:52
|
||||||
|
msgid "Something weird happened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:228
|
||||||
|
msgid "No such OpenID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:233
|
||||||
|
msgid "That OpenID does not belong to you."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openidsettings.php:237
|
||||||
|
msgid "OpenID removed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:43
|
||||||
|
msgid "You can't register if you don't agree to the license."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:66
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"This is the first time you've logged into %s so we must connect your OpenID "
|
||||||
|
"to a local account. You can either create a new account, or connect with "
|
||||||
|
"your existing account, if you have one."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:72
|
||||||
|
msgid "OpenID Account Setup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:97
|
||||||
|
msgid "Create new account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:99
|
||||||
|
msgid "Create a new user with this nickname."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:102
|
||||||
|
msgid "New nickname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:104
|
||||||
|
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:114
|
||||||
|
msgid "My text and files are available under "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:117
|
||||||
|
msgid ""
|
||||||
|
" except this private data: password, email address, IM address, phone number."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:121
|
||||||
|
msgid "Create"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:126
|
||||||
|
msgid "Connect existing account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:128
|
||||||
|
msgid ""
|
||||||
|
"If you already have an account, login with your username and password to "
|
||||||
|
"connect it to your OpenID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:131
|
||||||
|
msgid "Existing nickname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:134
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:137
|
||||||
|
msgid "Connect"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:215 finishopenidlogin.php:224
|
||||||
|
msgid "Registration not allowed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:231
|
||||||
|
msgid "Not a valid invitation code."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:241
|
||||||
|
msgid "Nickname must have only lowercase letters and numbers and no spaces."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:246
|
||||||
|
msgid "Nickname not allowed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:251
|
||||||
|
msgid "Nickname already in use. Try another one."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:258 finishopenidlogin.php:338
|
||||||
|
msgid "Stored OpenID not found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:267
|
||||||
|
msgid "Creating new account for OpenID that already has a user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:327
|
||||||
|
msgid "Invalid username or password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: finishopenidlogin.php:345
|
||||||
|
msgid "Error connecting user to OpenID."
|
||||||
|
msgstr ""
|
@ -138,7 +138,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
|
|||||||
$consumer = oid_consumer();
|
$consumer = oid_consumer();
|
||||||
|
|
||||||
if (!$consumer) {
|
if (!$consumer) {
|
||||||
common_server_error(_('Cannot instantiate OpenID consumer object.'));
|
common_server_error(_m('Cannot instantiate OpenID consumer object.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,9 +148,9 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
|
|||||||
|
|
||||||
// Handle failure status return values.
|
// Handle failure status return values.
|
||||||
if (!$auth_request) {
|
if (!$auth_request) {
|
||||||
return _('Not a valid OpenID.');
|
return _m('Not a valid OpenID.');
|
||||||
} else if (Auth_OpenID::isFailure($auth_request)) {
|
} else if (Auth_OpenID::isFailure($auth_request)) {
|
||||||
return sprintf(_('OpenID failure: %s'), $auth_request->message);
|
return sprintf(_m('OpenID failure: %s'), $auth_request->message);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sreg_request = Auth_OpenID_SRegRequest::build(// Required
|
$sreg_request = Auth_OpenID_SRegRequest::build(// Required
|
||||||
@ -177,7 +177,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
|
|||||||
$immediate);
|
$immediate);
|
||||||
if (!$redirect_url) {
|
if (!$redirect_url) {
|
||||||
} else if (Auth_OpenID::isFailure($redirect_url)) {
|
} else if (Auth_OpenID::isFailure($redirect_url)) {
|
||||||
return sprintf(_('Could not redirect to server: %s'), $redirect_url->message);
|
return sprintf(_m('Could not redirect to server: %s'), $redirect_url->message);
|
||||||
} else {
|
} else {
|
||||||
common_redirect($redirect_url, 303);
|
common_redirect($redirect_url, 303);
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
|
|||||||
// Display an error if the form markup couldn't be generated;
|
// Display an error if the form markup couldn't be generated;
|
||||||
// otherwise, render the HTML.
|
// otherwise, render the HTML.
|
||||||
if (Auth_OpenID::isFailure($form_html)) {
|
if (Auth_OpenID::isFailure($form_html)) {
|
||||||
common_server_error(sprintf(_('Could not create OpenID form: %s'), $form_html->message));
|
common_server_error(sprintf(_m('Could not create OpenID form: %s'), $form_html->message));
|
||||||
} else {
|
} else {
|
||||||
$action = new AutosubmitAction(); // see below
|
$action = new AutosubmitAction(); // see below
|
||||||
$action->form_html = $form_html;
|
$action->form_html = $form_html;
|
||||||
@ -211,7 +211,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
|
|||||||
function _oid_print_instructions()
|
function _oid_print_instructions()
|
||||||
{
|
{
|
||||||
common_element('div', 'instructions',
|
common_element('div', 'instructions',
|
||||||
_('This form should automatically submit itself. '.
|
_m('This form should automatically submit itself. '.
|
||||||
'If not, click the submit button to go to your '.
|
'If not, click the submit button to go to your '.
|
||||||
'OpenID provider.'));
|
'OpenID provider.'));
|
||||||
}
|
}
|
||||||
@ -243,7 +243,7 @@ function oid_update_user(&$user, &$sreg)
|
|||||||
# XXX save timezone if it's passed
|
# XXX save timezone if it's passed
|
||||||
|
|
||||||
if (!$profile->update($orig_profile)) {
|
if (!$profile->update($orig_profile)) {
|
||||||
common_server_error(_('Error saving the profile.'));
|
common_server_error(_m('Error saving the profile.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ function oid_update_user(&$user, &$sreg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->update($orig_user)) {
|
if (!$user->update($orig_user)) {
|
||||||
common_server_error(_('Error saving the user.'));
|
common_server_error(_m('Error saving the user.'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ class AutosubmitAction extends Action
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID Auto-Submit');
|
return _m('OpenID Auto-Submit');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showContent()
|
function showContent()
|
||||||
|
@ -27,14 +27,14 @@ class OpenidloginAction extends Action
|
|||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
if (common_is_real_login()) {
|
if (common_is_real_login()) {
|
||||||
$this->clientError(_('Already logged in.'));
|
$this->clientError(_m('Already logged in.'));
|
||||||
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
$openid_url = $this->trimmed('openid_url');
|
$openid_url = $this->trimmed('openid_url');
|
||||||
|
|
||||||
# CSRF protection
|
# CSRF protection
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. Try again, please.'), $openid_url);
|
$this->showForm(_m('There was a problem with your session token. Try again, please.'), $openid_url);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,11 +63,11 @@ class OpenidloginAction extends Action
|
|||||||
common_get_returnto()) {
|
common_get_returnto()) {
|
||||||
// rememberme logins have to reauthenticate before
|
// rememberme logins have to reauthenticate before
|
||||||
// changing any profile settings (cookie-stealing protection)
|
// changing any profile settings (cookie-stealing protection)
|
||||||
return _('For security reasons, please re-login with your ' .
|
return _m('For security reasons, please re-login with your ' .
|
||||||
'[OpenID](%%doc.openid%%) ' .
|
'[OpenID](%%doc.openid%%) ' .
|
||||||
'before changing your settings.');
|
'before changing your settings.');
|
||||||
} else {
|
} else {
|
||||||
return _('Login with an [OpenID](%%doc.openid%%) account.');
|
return _m('Login with an [OpenID](%%doc.openid%%) account.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ class OpenidloginAction extends Action
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID Login');
|
return _m('OpenID Login');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showForm($error=null, $openid_url)
|
function showForm($error=null, $openid_url)
|
||||||
@ -109,22 +109,22 @@ class OpenidloginAction extends Action
|
|||||||
'class' => 'form_settings',
|
'class' => 'form_settings',
|
||||||
'action' => $formaction));
|
'action' => $formaction));
|
||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
$this->element('legend', null, _('OpenID login'));
|
$this->element('legend', null, _m('OpenID login'));
|
||||||
$this->hidden('token', common_session_token());
|
$this->hidden('token', common_session_token());
|
||||||
|
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->input('openid_url', _('OpenID URL'),
|
$this->input('openid_url', _m('OpenID URL'),
|
||||||
$this->openid_url,
|
$this->openid_url,
|
||||||
_('Your OpenID URL'));
|
_m('Your OpenID URL'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li', array('id' => 'settings_rememberme'));
|
$this->elementStart('li', array('id' => 'settings_rememberme'));
|
||||||
$this->checkbox('rememberme', _('Remember me'), false,
|
$this->checkbox('rememberme', _m('Remember me'), false,
|
||||||
_('Automatically login in the future; ' .
|
_m('Automatically login in the future; ' .
|
||||||
'not for shared computers!'));
|
'not for shared computers!'));
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('submit', _('Login'));
|
$this->submit('submit', _m('Login'));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ class OpenidserverAction extends Action
|
|||||||
$response = $this->generateDenyResponse($request);
|
$response = $this->generateDenyResponse($request);
|
||||||
} else {
|
} else {
|
||||||
//invalid
|
//invalid
|
||||||
$this->clientError(sprintf(_('You are not authorized to use the identity %s'),$request->identity),$code=403);
|
$this->clientError(sprintf(_m('You are not authorized to use the identity %s'),$request->identity),$code=403);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$response = $this->oserver->handleRequest($request);
|
$response = $this->oserver->handleRequest($request);
|
||||||
@ -123,7 +123,7 @@ class OpenidserverAction extends Action
|
|||||||
}
|
}
|
||||||
$this->raw($response->body);
|
$this->raw($response->body);
|
||||||
}else{
|
}else{
|
||||||
$this->clientError(_('Just an OpenID provider. Nothing to see here, move along...'),$code=500);
|
$this->clientError(_m('Just an OpenID provider. Nothing to see here, move along...'),$code=500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID settings');
|
return _m('OpenID settings');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +67,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
|
|
||||||
function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
return _('[OpenID](%%doc.openid%%) lets you log into many sites' .
|
return _m('[OpenID](%%doc.openid%%) lets you log into many sites' .
|
||||||
' with the same user account.'.
|
' with the same user account.'.
|
||||||
' Manage your associated OpenIDs from here.');
|
' Manage your associated OpenIDs from here.');
|
||||||
}
|
}
|
||||||
@ -96,15 +96,15 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
'action' =>
|
'action' =>
|
||||||
common_local_url('openidsettings')));
|
common_local_url('openidsettings')));
|
||||||
$this->elementStart('fieldset', array('id' => 'settings_openid_add'));
|
$this->elementStart('fieldset', array('id' => 'settings_openid_add'));
|
||||||
$this->element('legend', null, _('Add OpenID'));
|
$this->element('legend', null, _m('Add OpenID'));
|
||||||
$this->hidden('token', common_session_token());
|
$this->hidden('token', common_session_token());
|
||||||
$this->element('p', 'form_guide',
|
$this->element('p', 'form_guide',
|
||||||
_('If you want to add an OpenID to your account, ' .
|
_m('If you want to add an OpenID to your account, ' .
|
||||||
'enter it in the box below and click "Add".'));
|
'enter it in the box below and click "Add".'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->element('label', array('for' => 'openid_url'),
|
$this->element('label', array('for' => 'openid_url'),
|
||||||
_('OpenID URL'));
|
_m('OpenID URL'));
|
||||||
$this->element('input', array('name' => 'openid_url',
|
$this->element('input', array('name' => 'openid_url',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'id' => 'openid_url'));
|
'id' => 'openid_url'));
|
||||||
@ -114,7 +114,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
'id' => 'settings_openid_add_action-submit',
|
'id' => 'settings_openid_add_action-submit',
|
||||||
'name' => 'add',
|
'name' => 'add',
|
||||||
'class' => 'submit',
|
'class' => 'submit',
|
||||||
'value' => _('Add')));
|
'value' => _m('Add')));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
|
|
||||||
@ -126,12 +126,12 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
|
|
||||||
if ($cnt > 0) {
|
if ($cnt > 0) {
|
||||||
|
|
||||||
$this->element('h2', null, _('Remove OpenID'));
|
$this->element('h2', null, _m('Remove OpenID'));
|
||||||
|
|
||||||
if ($cnt == 1 && !$user->password) {
|
if ($cnt == 1 && !$user->password) {
|
||||||
|
|
||||||
$this->element('p', 'form_guide',
|
$this->element('p', 'form_guide',
|
||||||
_('Removing your only OpenID '.
|
_m('Removing your only OpenID '.
|
||||||
'would make it impossible to log in! ' .
|
'would make it impossible to log in! ' .
|
||||||
'If you need to remove it, '.
|
'If you need to remove it, '.
|
||||||
'add another OpenID first.'));
|
'add another OpenID first.'));
|
||||||
@ -146,7 +146,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
$this->element('p', 'form_guide',
|
$this->element('p', 'form_guide',
|
||||||
_('You can remove an OpenID from your account '.
|
_m('You can remove an OpenID from your account '.
|
||||||
'by clicking the button marked "Remove".'));
|
'by clicking the button marked "Remove".'));
|
||||||
$idx = 0;
|
$idx = 0;
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
'id' => 'remove'.$idx,
|
'id' => 'remove'.$idx,
|
||||||
'name' => 'remove',
|
'name' => 'remove',
|
||||||
'class' => 'submit remove',
|
'class' => 'submit remove',
|
||||||
'value' => _('Remove')));
|
'value' => _m('Remove')));
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
$idx++;
|
$idx++;
|
||||||
@ -191,7 +191,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
// CSRF protection
|
// CSRF protection
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. '.
|
$this->showForm(_m('There was a problem with your session token. '.
|
||||||
'Try again, please.'));
|
'Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -205,7 +205,7 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
} else if ($this->arg('remove')) {
|
} else if ($this->arg('remove')) {
|
||||||
$this->removeOpenid();
|
$this->removeOpenid();
|
||||||
} else {
|
} else {
|
||||||
$this->showForm(_('Something weird happened.'));
|
$this->showForm(_m('Something weird happened.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,16 +225,16 @@ class OpenidsettingsAction extends AccountSettingsAction
|
|||||||
$oid = User_openid::staticGet('canonical', $openid_url);
|
$oid = User_openid::staticGet('canonical', $openid_url);
|
||||||
|
|
||||||
if (!$oid) {
|
if (!$oid) {
|
||||||
$this->showForm(_('No such OpenID.'));
|
$this->showForm(_m('No such OpenID.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$cur = common_current_user();
|
$cur = common_current_user();
|
||||||
if (!$cur || $oid->user_id != $cur->id) {
|
if (!$cur || $oid->user_id != $cur->id) {
|
||||||
$this->showForm(_('That OpenID does not belong to you.'));
|
$this->showForm(_m('That OpenID does not belong to you.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$oid->delete();
|
$oid->delete();
|
||||||
$this->showForm(_('OpenID removed.'), true);
|
$this->showForm(_m('OpenID removed.'), true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ class OpenidtrustAction extends Action
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('OpenID Identity Verification');
|
return _m('OpenID Identity Verification');
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepare($args)
|
function prepare($args)
|
||||||
@ -66,7 +66,7 @@ class OpenidtrustAction extends Action
|
|||||||
$this->allowUrl = $_SESSION['openid_allow_url'];
|
$this->allowUrl = $_SESSION['openid_allow_url'];
|
||||||
$this->denyUrl = $_SESSION['openid_deny_url'];
|
$this->denyUrl = $_SESSION['openid_deny_url'];
|
||||||
if(empty($this->trust_root) || empty($this->allowUrl) || empty($this->denyUrl)){
|
if(empty($this->trust_root) || empty($this->allowUrl) || empty($this->denyUrl)){
|
||||||
$this->clientError(_('This page should only be reached during OpenID processing, not directly.'));
|
$this->clientError(_m('This page should only be reached during OpenID processing, not directly.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -115,7 +115,7 @@ class OpenidtrustAction extends Action
|
|||||||
|
|
||||||
function showPageNotice()
|
function showPageNotice()
|
||||||
{
|
{
|
||||||
$this->element('p',null,sprintf(_('%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.'),$this->trust_root));
|
$this->element('p',null,sprintf(_m('%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.'),$this->trust_root));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -133,8 +133,8 @@ class OpenidtrustAction extends Action
|
|||||||
'class' => 'form_settings',
|
'class' => 'form_settings',
|
||||||
'action' => common_local_url('openidtrust')));
|
'action' => common_local_url('openidtrust')));
|
||||||
$this->elementStart('fieldset');
|
$this->elementStart('fieldset');
|
||||||
$this->submit('allow', _('Continue'));
|
$this->submit('allow', _m('Continue'));
|
||||||
$this->submit('deny', _('Cancel'));
|
$this->submit('deny', _m('Cancel'));
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
$this->elementEnd('form');
|
$this->elementEnd('form');
|
||||||
|
11
plugins/Realtime/README
Normal file
11
plugins/Realtime/README
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
== TODO ==
|
||||||
|
* i18n
|
||||||
|
* Change in context URL to conversation (try not to construct the URL in JS)
|
||||||
|
* Update mark behaviour (on notice send)
|
||||||
|
* Pause, Send a notice ~ should not update counter
|
||||||
|
* Pause ~ retain up to 50-100 most recent notices
|
||||||
|
* Add geo data
|
||||||
|
* Make it work for Conversation page (perhaps a little tricky)
|
||||||
|
* IE is updating the counter in document title all the time (Not sure if this is still an issue)
|
||||||
|
* Reconsider the timestamp approach
|
||||||
|
|
59
plugins/Sample/SamplePlugin.php
Normal file
59
plugins/Sample/SamplePlugin.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* StatusNet - the distributed open-source microblogging tool
|
||||||
|
* Copyright (C) 2009, StatusNet, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package SamplePlugin
|
||||||
|
* @maintainer Your Name <you@example.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||||
|
// This check helps protect against security problems;
|
||||||
|
// your code file can't be executed directly from the web.
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
class SamplePlugin extends Plugin
|
||||||
|
{
|
||||||
|
function onInitializePlugin()
|
||||||
|
{
|
||||||
|
// Event handlers normally return true to indicate that all is well.
|
||||||
|
//
|
||||||
|
// Returning false will cancel further processing of any other
|
||||||
|
// plugins or core code hooking the same event.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook for RouterInitialized event.
|
||||||
|
*
|
||||||
|
* @param Net_URL_Mapper $m path-to-action mapper
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRouterInitialized($m)
|
||||||
|
{
|
||||||
|
$m->connect(':nickname/samples',
|
||||||
|
array('action' => 'showsamples'),
|
||||||
|
array('feed' => '[A-Za-z0-9_-]+'));
|
||||||
|
$m->connect('settings/sample',
|
||||||
|
array('action' => 'samplesettings'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -86,8 +86,8 @@ class TwitterBridgePlugin extends Plugin
|
|||||||
$action_name = $action->trimmed('action');
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
$action->menuItem(common_local_url('twittersettings'),
|
$action->menuItem(common_local_url('twittersettings'),
|
||||||
_('Twitter'),
|
_m('Twitter'),
|
||||||
_('Twitter integration options'),
|
_m('Twitter integration options'),
|
||||||
$action_name === 'twittersettings');
|
$action_name === 'twittersettings');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
128
plugins/TwitterBridge/locale/TwitterBridge.po
Normal file
128
plugins/TwitterBridge/locale/TwitterBridge.po
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2009-12-07 20:38-0800\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: twitterauthorization.php:81
|
||||||
|
msgid "Not logged in."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twitterauthorization.php:131 twitterauthorization.php:150
|
||||||
|
#: twitterauthorization.php:170 twitterauthorization.php:217
|
||||||
|
msgid "Couldn't link your Twitter account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: TwitterBridgePlugin.php:89
|
||||||
|
msgid "Twitter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: TwitterBridgePlugin.php:90
|
||||||
|
msgid "Twitter integration options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:59
|
||||||
|
msgid "Twitter settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:70
|
||||||
|
msgid ""
|
||||||
|
"Connect your Twitter account to share your updates with your Twitter friends "
|
||||||
|
"and vice-versa."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:118
|
||||||
|
msgid "Twitter account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:123
|
||||||
|
msgid "Connected Twitter account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:125
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:131
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:135
|
||||||
|
msgid "Automatically send my notices to Twitter."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:142
|
||||||
|
msgid "Send local \"@\" replies to Twitter."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:149
|
||||||
|
msgid "Subscribe to my Twitter friends here."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:158
|
||||||
|
msgid "Import my Friends Timeline."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:174
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:176
|
||||||
|
msgid "Add"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:201
|
||||||
|
msgid "There was a problem with your session token. Try again, please."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:211
|
||||||
|
msgid "Unexpected form submission."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:230
|
||||||
|
msgid "Couldn't remove Twitter user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:234
|
||||||
|
msgid "Twitter account removed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:255 twittersettings.php:265
|
||||||
|
msgid "Couldn't save Twitter preferences."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twittersettings.php:269
|
||||||
|
msgid "Twitter preferences saved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twitter.php:333
|
||||||
|
msgid "Your Twitter bridge has been disabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: twitter.php:337
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Hi, %1$s. We're sorry to inform you that your link to Twitter has been "
|
||||||
|
"disabled. We no longer seem to have permission to update your Twitter "
|
||||||
|
"status. (Did you revoke %3$s's access?)\n"
|
||||||
|
"\n"
|
||||||
|
"You can re-enable your Twitter bridge by visiting your Twitter settings "
|
||||||
|
"page:\n"
|
||||||
|
"\n"
|
||||||
|
"\t%2$s\n"
|
||||||
|
"\n"
|
||||||
|
"Regards,\n"
|
||||||
|
"%3$s\n"
|
||||||
|
msgstr ""
|
@ -330,11 +330,11 @@ function mail_twitter_bridge_removed($user)
|
|||||||
|
|
||||||
$profile = $user->getProfile();
|
$profile = $user->getProfile();
|
||||||
|
|
||||||
$subject = sprintf(_('Your Twitter bridge has been disabled.'));
|
$subject = sprintf(_m('Your Twitter bridge has been disabled.'));
|
||||||
|
|
||||||
$site_name = common_config('site', 'name');
|
$site_name = common_config('site', 'name');
|
||||||
|
|
||||||
$body = sprintf(_('Hi, %1$s. We\'re sorry to inform you that your ' .
|
$body = sprintf(_m('Hi, %1$s. We\'re sorry to inform you that your ' .
|
||||||
'link to Twitter has been disabled. We no longer seem to have ' .
|
'link to Twitter has been disabled. We no longer seem to have ' .
|
||||||
'permission to update your Twitter status. (Did you revoke ' .
|
'permission to update your Twitter status. (Did you revoke ' .
|
||||||
'%3$s\'s access?)' . "\n\n" .
|
'%3$s\'s access?)' . "\n\n" .
|
||||||
|
@ -78,7 +78,7 @@ class TwitterauthorizationAction extends Action
|
|||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
|
|
||||||
if (!common_logged_in()) {
|
if (!common_logged_in()) {
|
||||||
$this->clientError(_('Not logged in.'), 403);
|
$this->clientError(_m('Not logged in.'), 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
@ -128,7 +128,7 @@ class TwitterauthorizationAction extends Action
|
|||||||
} catch (OAuthClientException $e) {
|
} catch (OAuthClientException $e) {
|
||||||
$msg = sprintf('OAuth client cURL error - code: %1s, msg: %2s',
|
$msg = sprintf('OAuth client cURL error - code: %1s, msg: %2s',
|
||||||
$e->getCode(), $e->getMessage());
|
$e->getCode(), $e->getMessage());
|
||||||
$this->serverError(_('Couldn\'t link your Twitter account.'));
|
$this->serverError(_m('Couldn\'t link your Twitter account.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
common_redirect($auth_link);
|
common_redirect($auth_link);
|
||||||
@ -147,7 +147,7 @@ class TwitterauthorizationAction extends Action
|
|||||||
// token we sent them
|
// token we sent them
|
||||||
|
|
||||||
if ($_SESSION['twitter_request_token'] != $this->oauth_token) {
|
if ($_SESSION['twitter_request_token'] != $this->oauth_token) {
|
||||||
$this->serverError(_('Couldn\'t link your Twitter account.'));
|
$this->serverError(_m('Couldn\'t link your Twitter account.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -167,7 +167,7 @@ class TwitterauthorizationAction extends Action
|
|||||||
} catch (OAuthClientException $e) {
|
} catch (OAuthClientException $e) {
|
||||||
$msg = sprintf('OAuth client cURL error - code: %1$s, msg: %2$s',
|
$msg = sprintf('OAuth client cURL error - code: %1$s, msg: %2$s',
|
||||||
$e->getCode(), $e->getMessage());
|
$e->getCode(), $e->getMessage());
|
||||||
$this->serverError(_('Couldn\'t link your Twitter account.'));
|
$this->serverError(_m('Couldn\'t link your Twitter account.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the access token and Twitter user info
|
// Save the access token and Twitter user info
|
||||||
@ -214,7 +214,7 @@ class TwitterauthorizationAction extends Action
|
|||||||
|
|
||||||
if (empty($flink_id)) {
|
if (empty($flink_id)) {
|
||||||
common_log_db_error($flink, 'INSERT', __FILE__);
|
common_log_db_error($flink, 'INSERT', __FILE__);
|
||||||
$this->serverError(_('Couldn\'t link your Twitter account.'));
|
$this->serverError(_m('Couldn\'t link your Twitter account.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
save_twitter_user($twitter_user->id, $twitter_user->screen_name);
|
save_twitter_user($twitter_user->id, $twitter_user->screen_name);
|
||||||
|
@ -56,7 +56,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function title()
|
function title()
|
||||||
{
|
{
|
||||||
return _('Twitter settings');
|
return _m('Twitter settings');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,8 +67,8 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
return _('Connect your Twitter account to share your updates ' .
|
return _m('Connect your Twitter account to share your updates ' .
|
||||||
'with your Twitter friends and vice-versa.');
|
'with your Twitter friends and vice-versa.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,38 +115,38 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
} else {
|
} else {
|
||||||
$this->element('legend', null, _('Twitter account'));
|
$this->element('legend', null, _m('Twitter account'));
|
||||||
$this->elementStart('p', array('id' => 'form_confirmed'));
|
$this->elementStart('p', array('id' => 'form_confirmed'));
|
||||||
$this->element('a', array('href' => $fuser->uri), $fuser->nickname);
|
$this->element('a', array('href' => $fuser->uri), $fuser->nickname);
|
||||||
$this->elementEnd('p');
|
$this->elementEnd('p');
|
||||||
$this->element('p', 'form_note',
|
$this->element('p', 'form_note',
|
||||||
_('Connected Twitter account'));
|
_m('Connected Twitter account'));
|
||||||
|
|
||||||
$this->submit('remove', _('Remove'));
|
$this->submit('remove', _m('Remove'));
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
|
|
||||||
$this->elementStart('fieldset', array('id' => 'settings_twitter_preferences'));
|
$this->elementStart('fieldset', array('id' => 'settings_twitter_preferences'));
|
||||||
|
|
||||||
$this->element('legend', null, _('Preferences'));
|
$this->element('legend', null, _m('Preferences'));
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('noticesend',
|
$this->checkbox('noticesend',
|
||||||
_('Automatically send my notices to Twitter.'),
|
_m('Automatically send my notices to Twitter.'),
|
||||||
($flink) ?
|
($flink) ?
|
||||||
($flink->noticesync & FOREIGN_NOTICE_SEND) :
|
($flink->noticesync & FOREIGN_NOTICE_SEND) :
|
||||||
true);
|
true);
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('replysync',
|
$this->checkbox('replysync',
|
||||||
_('Send local "@" replies to Twitter.'),
|
_m('Send local "@" replies to Twitter.'),
|
||||||
($flink) ?
|
($flink) ?
|
||||||
($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) :
|
($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) :
|
||||||
true);
|
true);
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('friendsync',
|
$this->checkbox('friendsync',
|
||||||
_('Subscribe to my Twitter friends here.'),
|
_m('Subscribe to my Twitter friends here.'),
|
||||||
($flink) ?
|
($flink) ?
|
||||||
($flink->friendsync & FOREIGN_FRIEND_RECV) :
|
($flink->friendsync & FOREIGN_FRIEND_RECV) :
|
||||||
false);
|
false);
|
||||||
@ -155,7 +155,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
if (common_config('twitterimport','enabled')) {
|
if (common_config('twitterimport','enabled')) {
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('noticerecv',
|
$this->checkbox('noticerecv',
|
||||||
_('Import my Friends Timeline.'),
|
_m('Import my Friends Timeline.'),
|
||||||
($flink) ?
|
($flink) ?
|
||||||
($flink->noticesync & FOREIGN_NOTICE_RECV) :
|
($flink->noticesync & FOREIGN_NOTICE_RECV) :
|
||||||
false);
|
false);
|
||||||
@ -171,9 +171,9 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
|
|
||||||
if ($flink) {
|
if ($flink) {
|
||||||
$this->submit('save', _('Save'));
|
$this->submit('save', _m('Save'));
|
||||||
} else {
|
} else {
|
||||||
$this->submit('add', _('Add'));
|
$this->submit('add', _m('Add'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->elementEnd('fieldset');
|
$this->elementEnd('fieldset');
|
||||||
@ -198,8 +198,8 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
// CSRF protection
|
// CSRF protection
|
||||||
$token = $this->trimmed('token');
|
$token = $this->trimmed('token');
|
||||||
if (!$token || $token != common_session_token()) {
|
if (!$token || $token != common_session_token()) {
|
||||||
$this->showForm(_('There was a problem with your session token. '.
|
$this->showForm(_m('There was a problem with your session token. '.
|
||||||
'Try again, please.'));
|
'Try again, please.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
} else if ($this->arg('remove')) {
|
} else if ($this->arg('remove')) {
|
||||||
$this->removeTwitterAccount();
|
$this->removeTwitterAccount();
|
||||||
} else {
|
} else {
|
||||||
$this->showForm(_('Unexpected form submission.'));
|
$this->showForm(_m('Unexpected form submission.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,11 +227,11 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
if (empty($result)) {
|
if (empty($result)) {
|
||||||
common_log_db_error($flink, 'DELETE', __FILE__);
|
common_log_db_error($flink, 'DELETE', __FILE__);
|
||||||
$this->serverError(_('Couldn\'t remove Twitter user.'));
|
$this->serverError(_m('Couldn\'t remove Twitter user.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->showForm(_('Twitter account removed.'), true);
|
$this->showForm(_m('Twitter account removed.'), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -252,7 +252,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
if (empty($flink)) {
|
if (empty($flink)) {
|
||||||
common_log_db_error($flink, 'SELECT', __FILE__);
|
common_log_db_error($flink, 'SELECT', __FILE__);
|
||||||
$this->showForm(_('Couldn\'t save Twitter preferences.'));
|
$this->showForm(_m('Couldn\'t save Twitter preferences.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,11 +262,11 @@ class TwittersettingsAction extends ConnectSettingsAction
|
|||||||
|
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
common_log_db_error($flink, 'UPDATE', __FILE__);
|
common_log_db_error($flink, 'UPDATE', __FILE__);
|
||||||
$this->showForm(_('Couldn\'t save Twitter preferences.'));
|
$this->showForm(_m('Couldn\'t save Twitter preferences.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->showForm(_('Twitter preferences saved.'), true);
|
$this->showForm(_m('Twitter preferences saved.'), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
211
scripts/update_po_templates.php
Executable file
211
scripts/update_po_templates.php
Executable file
@ -0,0 +1,211 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* StatusNet - the distributed open-source microblogging tool
|
||||||
|
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Abort if called from a web server
|
||||||
|
if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
|
||||||
|
print "This script must be run from the command line\n";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||||
|
|
||||||
|
function update_core($dir, $domain)
|
||||||
|
{
|
||||||
|
$old = getcwd();
|
||||||
|
chdir($dir);
|
||||||
|
passthru(<<<END
|
||||||
|
xgettext \
|
||||||
|
--from-code=UTF-8 \
|
||||||
|
--default-domain=$domain \
|
||||||
|
--output=locale/$domain.po \
|
||||||
|
--language=PHP \
|
||||||
|
--keyword="_m:1" \
|
||||||
|
--keyword="pgettext:1c,2" \
|
||||||
|
--keyword="npgettext:1c,2,3" \
|
||||||
|
actions/*.php \
|
||||||
|
classes/*.php \
|
||||||
|
lib/*.php \
|
||||||
|
scripts/*.php
|
||||||
|
END
|
||||||
|
);
|
||||||
|
chdir($old);
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_update_plugin($dir, $domain)
|
||||||
|
{
|
||||||
|
$old = getcwd();
|
||||||
|
chdir($dir);
|
||||||
|
if (!file_exists('locale')) {
|
||||||
|
mkdir('locale');
|
||||||
|
}
|
||||||
|
$files = get_plugin_sources(".");
|
||||||
|
$cmd = <<<END
|
||||||
|
xgettext \
|
||||||
|
--from-code=UTF-8 \
|
||||||
|
--default-domain=$domain \
|
||||||
|
--output=locale/$domain.po \
|
||||||
|
--language=PHP \
|
||||||
|
--keyword='' \
|
||||||
|
--keyword="_m:1" \
|
||||||
|
|
||||||
|
END;
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$cmd .= ' ' . escapeshellarg($file);
|
||||||
|
}
|
||||||
|
passthru($cmd);
|
||||||
|
chdir($old);
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_translatewiki_plugin($basedir, $plugin)
|
||||||
|
{
|
||||||
|
$yamldir = "$basedir/locale/TranslateWiki";
|
||||||
|
if (!file_exists($yamldir)) {
|
||||||
|
mkdir($yamldir);
|
||||||
|
}
|
||||||
|
$outfile = "$yamldir/StatusNet-{$plugin}.yml";
|
||||||
|
$data = <<<END
|
||||||
|
---
|
||||||
|
BASIC:
|
||||||
|
id: out-statusnet-{$plugin}
|
||||||
|
label: StatusNet - {$plugin}
|
||||||
|
description: "{{int:bw-desc-statusnet-plugin-{$plugin}}}"
|
||||||
|
namespace: NS_STATUSNET
|
||||||
|
display: out/statusnet/{$plugin}
|
||||||
|
class: GettextMessageGroup
|
||||||
|
|
||||||
|
FILES:
|
||||||
|
class: GettextFFS
|
||||||
|
sourcePattern: %GROUPROOT%/plugins/{$plugin}/locale/%CODE%/LC_MESSAGES/{$plugin}.po
|
||||||
|
targetPattern: {$plugin}.po
|
||||||
|
codeMap:
|
||||||
|
en-gb: en_GB
|
||||||
|
no: nb
|
||||||
|
pt-br: pt_BR
|
||||||
|
zh-hans: zh_CN
|
||||||
|
zh-hant: zh_TW
|
||||||
|
|
||||||
|
MANGLER
|
||||||
|
class: StringMatcher
|
||||||
|
prefix: {$plugin}-
|
||||||
|
patterns:
|
||||||
|
- "*"
|
||||||
|
|
||||||
|
END;
|
||||||
|
file_put_contents($outfile, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_plugins($dir)
|
||||||
|
{
|
||||||
|
$plugins = array();
|
||||||
|
$dirs = new DirectoryIterator("$dir/plugins");
|
||||||
|
foreach ($dirs as $item) {
|
||||||
|
if ($item->isDir() && !$item->isDot()) {
|
||||||
|
$name = $item->getBasename();
|
||||||
|
if (file_exists("$dir/plugins/$name/{$name}Plugin.php")) {
|
||||||
|
$plugins[] = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $plugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_plugin_sources($dir)
|
||||||
|
{
|
||||||
|
$files = array();
|
||||||
|
|
||||||
|
$dirs = new RecursiveDirectoryIterator($dir);
|
||||||
|
$iter = new RecursiveIteratorIterator($dirs);
|
||||||
|
foreach ($iter as $pathname => $item) {
|
||||||
|
if ($item->isFile() && preg_match('/\.php$/', $item->getBaseName())) {
|
||||||
|
$files[] = $pathname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $files;
|
||||||
|
}
|
||||||
|
|
||||||
|
function plugin_using_gettext($dir)
|
||||||
|
{
|
||||||
|
$files = get_plugin_sources($dir);
|
||||||
|
foreach ($files as $pathname) {
|
||||||
|
// Check if the file is using our _m gettext wrapper
|
||||||
|
$code = file_get_contents($pathname);
|
||||||
|
if (preg_match('/\b_m\(/', $code)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_plugin($basedir, $name)
|
||||||
|
{
|
||||||
|
$dir = "$basedir/plugins/$name";
|
||||||
|
if (plugin_using_gettext($dir)) {
|
||||||
|
do_update_plugin($dir, $name);
|
||||||
|
do_translatewiki_plugin($basedir, $name);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$args = $_SERVER['argv'];
|
||||||
|
array_shift($args);
|
||||||
|
|
||||||
|
$all = false;
|
||||||
|
$core = false;
|
||||||
|
$allplugins = false;
|
||||||
|
$plugins = array();
|
||||||
|
if (count($args) == 0) {
|
||||||
|
$all = true;
|
||||||
|
}
|
||||||
|
foreach ($args as $arg) {
|
||||||
|
if ($arg == '--all') {
|
||||||
|
$all = true;
|
||||||
|
} elseif ($arg == "--core") {
|
||||||
|
$core = true;
|
||||||
|
} elseif ($arg == "--plugins") {
|
||||||
|
$allplugins = true;
|
||||||
|
} elseif (substr($arg, 0, 9) == "--plugin=") {
|
||||||
|
$plugins[] = substr($arg, 9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($all || $core) {
|
||||||
|
echo "core...";
|
||||||
|
update_core(INSTALLDIR, 'statusnet');
|
||||||
|
echo " ok\n";
|
||||||
|
}
|
||||||
|
if ($all || $allplugins) {
|
||||||
|
$plugins = get_plugins(INSTALLDIR);
|
||||||
|
}
|
||||||
|
if ($plugins) {
|
||||||
|
foreach ($plugins as $plugin) {
|
||||||
|
echo "$plugin...";
|
||||||
|
if (update_plugin(INSTALLDIR, $plugin)) {
|
||||||
|
echo " ok\n";
|
||||||
|
} else {
|
||||||
|
echo " not localized\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
cd `dirname $0`
|
|
||||||
cd ..
|
|
||||||
xgettext \
|
|
||||||
--from-code=UTF-8 \
|
|
||||||
--default-domain=statusnet \
|
|
||||||
--output=locale/statusnet.po \
|
|
||||||
--language=PHP \
|
|
||||||
--keyword="pgettext:1c,2" \
|
|
||||||
--keyword="npgettext:1c,2,3" \
|
|
||||||
actions/*.php \
|
|
||||||
classes/*.php \
|
|
||||||
lib/*.php \
|
|
||||||
scripts/*.php
|
|
@ -112,7 +112,6 @@ border-style:solid;
|
|||||||
line-height:0;
|
line-height:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.form_settings input.remove {
|
.form_settings input.remove {
|
||||||
margin-left:11px;
|
margin-left:11px;
|
||||||
}
|
}
|
||||||
@ -246,7 +245,6 @@ margin-left:11px;
|
|||||||
width:auto;
|
width:auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
address {
|
address {
|
||||||
float:left;
|
float:left;
|
||||||
margin-bottom:18px;
|
margin-bottom:18px;
|
||||||
@ -672,8 +670,7 @@ display:block;
|
|||||||
text-align:left;
|
text-align:left;
|
||||||
width:100%;
|
width:100%;
|
||||||
}
|
}
|
||||||
.entity_actions a,
|
.entity_actions a {
|
||||||
.entity_remote_subscribe {
|
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
display:block;
|
display:block;
|
||||||
@ -688,7 +685,8 @@ border-radius:4px;
|
|||||||
.entity_actions a,
|
.entity_actions a,
|
||||||
.entity_actions input,
|
.entity_actions input,
|
||||||
.entity_actions p {
|
.entity_actions p {
|
||||||
border:0;
|
border-width:2px;
|
||||||
|
border-style:solid;
|
||||||
padding-left:23px;
|
padding-left:23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -697,19 +695,10 @@ padding-left:23px;
|
|||||||
padding:2px 4px 1px 26px;
|
padding:2px 4px 1px 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entity_remote_subscribe {
|
|
||||||
padding:4px;
|
|
||||||
border-width:2px;
|
|
||||||
border-style:solid;
|
|
||||||
border-radius:4px;
|
|
||||||
-moz-border-radius:4px;
|
|
||||||
-webkit-border-radius:4px;
|
|
||||||
}
|
|
||||||
.entity_actions .accept {
|
.entity_actions .accept {
|
||||||
margin-bottom:18px;
|
margin-bottom:18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.entity_send-a-message button {
|
.entity_send-a-message button {
|
||||||
position:absolute;
|
position:absolute;
|
||||||
top:3px;
|
top:3px;
|
||||||
|
@ -30,8 +30,7 @@ border-radius:4px;
|
|||||||
input, textarea, select, option {
|
input, textarea, select, option {
|
||||||
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||||
}
|
}
|
||||||
input, textarea, select,
|
input, textarea, select {
|
||||||
.entity_remote_subscribe {
|
|
||||||
border-color:#AAAAAA;
|
border-color:#AAAAAA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,15 +55,12 @@ background:none;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note {
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions .form_notice input.submit {
|
|
||||||
background-color:#9BB43E;
|
background-color:#9BB43E;
|
||||||
}
|
}
|
||||||
input.submit,
|
input.submit,
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note,
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions a,
|
.entity_actions a,
|
||||||
.entity_actions input,
|
.entity_actions input,
|
||||||
.entity_moderation p,
|
.entity_moderation p,
|
||||||
@ -82,16 +78,18 @@ background-color:transparent;
|
|||||||
input:focus, textarea:focus, select:focus,
|
input:focus, textarea:focus, select:focus,
|
||||||
.form_notice.warning #notice_data-text,
|
.form_notice.warning #notice_data-text,
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note {
|
||||||
.entity_remote_subscribe {
|
|
||||||
border-color:#9BB43E;
|
border-color:#9BB43E;
|
||||||
}
|
}
|
||||||
input.submit,
|
input.submit {
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions .form_notice input.submit {
|
|
||||||
color:#FFFFFF;
|
color:#FFFFFF;
|
||||||
}
|
}
|
||||||
input.submit {
|
.entity_actions input.submit {
|
||||||
|
border-color:transparent;
|
||||||
|
text-shadow:none;
|
||||||
|
}
|
||||||
|
input.submit,
|
||||||
|
.form_notice input.submit {
|
||||||
background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x;
|
background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x;
|
||||||
text-shadow:0 1px 0 #FFFFFF;
|
text-shadow:0 1px 0 #FFFFFF;
|
||||||
color:#000000;
|
color:#000000;
|
||||||
@ -109,9 +107,6 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
|||||||
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
||||||
text-shadow:none;
|
text-shadow:none;
|
||||||
}
|
}
|
||||||
.entity_actions input.submit {
|
|
||||||
text-shadow:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a,
|
a,
|
||||||
.form_settings input.form_action-primary,
|
.form_settings input.form_action-primary,
|
||||||
|
@ -30,8 +30,7 @@ border-radius:4px;
|
|||||||
input, textarea, select, option {
|
input, textarea, select, option {
|
||||||
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||||
}
|
}
|
||||||
input, textarea, select,
|
input, textarea, select {
|
||||||
.entity_remote_subscribe {
|
|
||||||
border-color:#AAAAAA;
|
border-color:#AAAAAA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,15 +55,12 @@ background:none;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note {
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions .form_notice input.submit {
|
|
||||||
background-color:#9BB43E;
|
background-color:#9BB43E;
|
||||||
}
|
}
|
||||||
input.submit,
|
input.submit,
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note,
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions a,
|
.entity_actions a,
|
||||||
.entity_actions input,
|
.entity_actions input,
|
||||||
.entity_moderation p,
|
.entity_moderation p,
|
||||||
@ -82,16 +78,18 @@ background-color:transparent;
|
|||||||
input:focus, textarea:focus, select:focus,
|
input:focus, textarea:focus, select:focus,
|
||||||
.form_notice.warning #notice_data-text,
|
.form_notice.warning #notice_data-text,
|
||||||
.form_notice.warning #notice_text-count,
|
.form_notice.warning #notice_text-count,
|
||||||
.form_settings .form_note,
|
.form_settings .form_note {
|
||||||
.entity_remote_subscribe {
|
|
||||||
border-color:#9BB43E;
|
border-color:#9BB43E;
|
||||||
}
|
}
|
||||||
input.submit,
|
input.submit {
|
||||||
.entity_remote_subscribe,
|
|
||||||
.entity_actions .form_notice input.submit {
|
|
||||||
color:#FFFFFF;
|
color:#FFFFFF;
|
||||||
}
|
}
|
||||||
input.submit {
|
.entity_actions input.submit {
|
||||||
|
border-color:transparent;
|
||||||
|
text-shadow:none;
|
||||||
|
}
|
||||||
|
input.submit,
|
||||||
|
.form_notice input.submit {
|
||||||
background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x;
|
background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x;
|
||||||
text-shadow:0 1px 0 #FFFFFF;
|
text-shadow:0 1px 0 #FFFFFF;
|
||||||
color:#000000;
|
color:#000000;
|
||||||
@ -109,9 +107,6 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
|||||||
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
|
||||||
text-shadow:none;
|
text-shadow:none;
|
||||||
}
|
}
|
||||||
.entity_actions input.submit {
|
|
||||||
text-shadow:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a,
|
a,
|
||||||
.form_settings input.form_action-primary,
|
.form_settings input.form_action-primary,
|
||||||
|
Loading…
Reference in New Issue
Block a user