Merge branch '0.9.x' of gitorious.org:statusnet/mainline into 0.9.x
This commit is contained in:
commit
c038164c0f
53
README
53
README
@ -2,8 +2,8 @@
|
|||||||
README
|
README
|
||||||
------
|
------
|
||||||
|
|
||||||
StatusNet 0.9.2 ("King of Birds")
|
StatusNet 0.9.3 ("Half a World Away")
|
||||||
3 May 2010
|
29 June 2010
|
||||||
|
|
||||||
This is the README file for StatusNet, the Open Source microblogging
|
This is the README file for StatusNet, the Open Source microblogging
|
||||||
platform. It includes installation instructions, descriptions of
|
platform. It includes installation instructions, descriptions of
|
||||||
@ -77,40 +77,27 @@ for additional terms.
|
|||||||
New this version
|
New this version
|
||||||
================
|
================
|
||||||
|
|
||||||
This is a minor bug and feature release since version 0.9.1 released 28
|
This is a minor bug and feature release since version 0.9.2 released on
|
||||||
March 2010.
|
4 May 2010.
|
||||||
|
|
||||||
Because of fixes to OStatus bugs, it is highly recommended that all
|
For best compatibility with client software and site federation, and a lot of
|
||||||
public sites upgrade to the new version immediately.
|
bug fixes, it is highly recommended that all public sites upgrade to the new
|
||||||
|
version.
|
||||||
|
|
||||||
Notable changes this version:
|
Notable changes this version:
|
||||||
|
|
||||||
- Installer no longer fails with a PHP fatal error when trying to set up the
|
- Enhanced API output to aid StatusNet-specific clients
|
||||||
subscription to update@status.net
|
- Many updates to user interface translation from TranslateWiki
|
||||||
- Fixed email notifications for @-replies that come in via OStatus
|
- OStatus now works subscribing to SSL-protected sites by default
|
||||||
- OStatus related Fixes to the cloudy theme
|
- OpenID now works on PHP 5.3, supports closer site integration.
|
||||||
- Pass geo locations over Twitter bridge (will only be used if enabled on the
|
- Numerous API and FOAF output fixes.
|
||||||
Twitter side)
|
- Fixes to Facebook integration for FB API behavior changes
|
||||||
- scripts/showplugins.php - script to dump the list of activated plugins and
|
- PostgreSQL support updates
|
||||||
their settings
|
- Initial version of a custom theme uploader (disabled by default)
|
||||||
- scripts/fixup_blocks.php - script to finds any stray subscriptions in
|
- LDAP auth plugins cleanup
|
||||||
violation of blocks, and removes them
|
- Many other bugfixes
|
||||||
- Allow blocking someone who's not currently subscribed to you (prevents
|
|
||||||
seeing @-replies from them, or them subbing to you in future)
|
|
||||||
- Default 2-second timeout on Geonames web service lookups
|
|
||||||
- Improved localization for plugins
|
|
||||||
- New anti-spam measures: added nofollow rels to group members list,
|
|
||||||
subscribers list
|
|
||||||
- Shared cache key option for Geonames plugin (lets multi-instance sites
|
|
||||||
share their cached geoname lookups)
|
|
||||||
- Stability fixes to the TwitterStatusFetcher
|
|
||||||
- If user allows location sharing but turned off browser location use profile
|
|
||||||
location
|
|
||||||
- Improved group listing via the API
|
|
||||||
- Improved FOAF output
|
|
||||||
- Several other bugfixes
|
|
||||||
|
|
||||||
A full changelog is available at http://status.net/wiki/StatusNet_0.9.2.
|
A full changelog is available at http://status.net/wiki/StatusNet_0.9.3.
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
=============
|
=============
|
||||||
@ -121,8 +108,8 @@ run correctly.
|
|||||||
- PHP 5.2.3+. It may be possible to run this software on earlier
|
- PHP 5.2.3+. It may be possible to run this software on earlier
|
||||||
versions of PHP, but many of the functions used are only available
|
versions of PHP, but many of the functions used are only available
|
||||||
in PHP 5.2 or above. 5.2.6 or later is needed for XMPP background
|
in PHP 5.2 or above. 5.2.6 or later is needed for XMPP background
|
||||||
daemons on 64-bit platforms. PHP 5.3.x should work but is known
|
daemons on 64-bit platforms. PHP 5.3.x should work correctly in this
|
||||||
to cause some failures for OpenID.
|
release, but problems with some plugins are possible.
|
||||||
- MySQL 5.x. The StatusNet database is stored, by default, in a MySQL
|
- MySQL 5.x. The StatusNet database is stored, by default, in a MySQL
|
||||||
server. It has been primarily tested on 5.x servers, although it may
|
server. It has been primarily tested on 5.x servers, although it may
|
||||||
be possible to install on earlier (or later!) versions. The server
|
be possible to install on earlier (or later!) versions. The server
|
||||||
|
@ -75,7 +75,7 @@ class ApiAccountVerifyCredentialsAction extends ApiAuthAction
|
|||||||
|
|
||||||
if ($this->format == 'xml') {
|
if ($this->format == 'xml') {
|
||||||
$this->initDocument('xml');
|
$this->initDocument('xml');
|
||||||
$this->showTwitterXmlUser($twitter_user);
|
$this->showTwitterXmlUser($twitter_user, 'user', true);
|
||||||
$this->endDocument('xml');
|
$this->endDocument('xml');
|
||||||
} elseif ($this->format == 'json') {
|
} elseif ($this->format == 'json') {
|
||||||
$this->initDocument('json');
|
$this->initDocument('json');
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -65,7 +65,7 @@ class ApiBlockCreateAction extends ApiAuthAction
|
|||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$this->user = $this->auth_user;
|
$this->user = $this->auth_user;
|
||||||
$this->other = $this->getTargetUser($this->arg('id'));
|
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -64,7 +64,7 @@ class ApiBlockDestroyAction extends ApiAuthAction
|
|||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$this->user = $this->auth_user;
|
$this->user = $this->auth_user;
|
||||||
$this->other = $this->getTargetUser($this->arg('id'));
|
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
* @author Dan Moore <dan@moore.cx>
|
* @author Dan Moore <dan@moore.cx>
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -67,7 +67,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
|
|||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$this->user = $this->auth_user;
|
$this->user = $this->auth_user;
|
||||||
$this->other = $this->getTargetUser($id);
|
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -106,7 +106,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
|
|||||||
|
|
||||||
if (empty($this->other)) {
|
if (empty($this->other)) {
|
||||||
$this->clientError(
|
$this->clientError(
|
||||||
_('Could not follow user: User not found.'),
|
_('Could not follow user: profile not found.'),
|
||||||
403,
|
403,
|
||||||
$this->format
|
$this->format
|
||||||
);
|
);
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
* @author Dan Moore <dan@moore.cx>
|
* @author Dan Moore <dan@moore.cx>
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -67,7 +67,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
|
|||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$this->user = $this->auth_user;
|
$this->user = $this->auth_user;
|
||||||
$this->other = $this->getTargetUser($id);
|
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -125,8 +125,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
// throws an exception on error
|
// throws an exception on error
|
||||||
Subscription::cancel($this->user->getProfile(),
|
Subscription::cancel($this->user->getProfile(), $this->other);
|
||||||
$this->other->getProfile());
|
|
||||||
|
|
||||||
$this->initDocument($this->format);
|
$this->initDocument($this->format);
|
||||||
$this->showProfile($this->other, $this->format);
|
$this->showProfile($this->other, $this->format);
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
* @author Dan Moore <dan@moore.cx>
|
* @author Dan Moore <dan@moore.cx>
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -50,8 +50,8 @@ require_once INSTALLDIR . '/lib/apiprivateauth.php';
|
|||||||
|
|
||||||
class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
var $user_a = null;
|
var $profile_a = null;
|
||||||
var $user_b = null;
|
var $profile_b = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Take arguments for running
|
* Take arguments for running
|
||||||
@ -66,11 +66,8 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
|||||||
{
|
{
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$user_a_id = $this->trimmed('user_a');
|
$this->profile_a = $this->getTargetProfile($this->trimmed('user_a'));
|
||||||
$user_b_id = $this->trimmed('user_b');
|
$this->profile_b = $this->getTargetProfile($this->trimmed('user_b'));
|
||||||
|
|
||||||
$this->user_a = $this->getTargetUser($user_a_id);
|
|
||||||
$this->user_b = $this->getTargetUser($user_b_id);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -89,16 +86,16 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
|||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
|
|
||||||
if (empty($this->user_a) || empty($this->user_b)) {
|
if (empty($this->profile_a) || empty($this->profile_b)) {
|
||||||
$this->clientError(
|
$this->clientError(
|
||||||
_('Two user ids or screen_names must be supplied.'),
|
_('Two valid IDs or screen_names must be supplied.'),
|
||||||
400,
|
400,
|
||||||
$this->format
|
$this->format
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->user_a->isSubscribed($this->user_b);
|
$result = Subscription::exists($this->profile_a, $this->profile_b);
|
||||||
|
|
||||||
switch ($this->format) {
|
switch ($this->format) {
|
||||||
case 'xml':
|
case 'xml':
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
* @category Search
|
* @category Search
|
||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2008-2009 StatusNet, Inc.
|
* @copyright 2008-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action for outputting search results in Twitter compatible Atom
|
* Action for outputting search results in Twitter compatible Atom
|
||||||
* format.
|
* format.
|
||||||
@ -44,10 +46,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*
|
*
|
||||||
* @see ApiAction
|
* @see ApiPrivateAuthAction
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class TwitapisearchatomAction extends ApiAction
|
class ApiSearchAtomAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
|
|
||||||
var $cnt;
|
var $cnt;
|
||||||
@ -96,8 +98,11 @@ class TwitapisearchatomAction extends ApiAction
|
|||||||
|
|
||||||
function prepare($args)
|
function prepare($args)
|
||||||
{
|
{
|
||||||
|
common_debug("in apisearchatom prepare()");
|
||||||
|
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
|
|
||||||
$this->query = $this->trimmed('q');
|
$this->query = $this->trimmed('q');
|
||||||
$this->lang = $this->trimmed('lang');
|
$this->lang = $this->trimmed('lang');
|
||||||
$this->rpp = $this->trimmed('rpp');
|
$this->rpp = $this->trimmed('rpp');
|
||||||
@ -138,6 +143,7 @@ class TwitapisearchatomAction extends ApiAction
|
|||||||
function handle($args)
|
function handle($args)
|
||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($args);
|
||||||
|
common_debug("In apisearchatom handle()");
|
||||||
$this->showAtom();
|
$this->showAtom();
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,7 @@
|
|||||||
* @category Search
|
* @category Search
|
||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2008-2009 StatusNet, Inc.
|
* @copyright 2008-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -31,6 +31,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||||
require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
|
require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,7 +45,7 @@ require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
|
|||||||
* @see ApiAction
|
* @see ApiAction
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class TwitapisearchjsonAction extends ApiAction
|
class ApiSearchJSONAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
var $query;
|
var $query;
|
||||||
var $lang;
|
var $lang;
|
||||||
@ -64,6 +65,8 @@ class TwitapisearchjsonAction extends ApiAction
|
|||||||
|
|
||||||
function prepare($args)
|
function prepare($args)
|
||||||
{
|
{
|
||||||
|
common_debug("apisearchjson prepare()");
|
||||||
|
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$this->query = $this->trimmed('q');
|
$this->query = $this->trimmed('q');
|
@ -206,7 +206,8 @@ class ApiSubscriptionsAction extends ApiBareAuthAction
|
|||||||
{
|
{
|
||||||
switch ($this->format) {
|
switch ($this->format) {
|
||||||
case 'xml':
|
case 'xml':
|
||||||
$this->elementStart('users', array('type' => 'array'));
|
$this->elementStart('users', array('type' => 'array',
|
||||||
|
'xmlns:statusnet' => 'http://status.net/schema/api/1/'));
|
||||||
foreach ($this->profiles as $profile) {
|
foreach ($this->profiles as $profile) {
|
||||||
$this->showProfile(
|
$this->showProfile(
|
||||||
$profile,
|
$profile,
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
* @category Search
|
* @category Search
|
||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2008-2009 StatusNet, Inc.
|
* @copyright 2008-2010 StatusNet, Inc.
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the top ten queries that are currently trending
|
* Returns the top ten queries that are currently trending
|
||||||
*
|
*
|
||||||
@ -43,7 +45,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
* @see ApiAction
|
* @see ApiAction
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class TwitapitrendsAction extends ApiAction
|
class ApiTrendsAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
|
|
||||||
var $callback;
|
var $callback;
|
||||||
@ -82,7 +84,7 @@ class TwitapitrendsAction extends ApiAction
|
|||||||
*/
|
*/
|
||||||
function showTrends()
|
function showTrends()
|
||||||
{
|
{
|
||||||
$this->serverError(_('API method under construction.'), $code = 501);
|
$this->serverError(_('API method under construction.'), 501);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -430,14 +430,6 @@ class ShowgroupAction extends GroupDesignAction
|
|||||||
|
|
||||||
function showStatistics()
|
function showStatistics()
|
||||||
{
|
{
|
||||||
// XXX: WORM cache this
|
|
||||||
$members = $this->group->getMembers();
|
|
||||||
$members_count = 0;
|
|
||||||
/** $member->count() doesn't work. */
|
|
||||||
while ($members->fetch()) {
|
|
||||||
$members_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->elementStart('div', array('id' => 'entity_statistics',
|
$this->elementStart('div', array('id' => 'entity_statistics',
|
||||||
'class' => 'section'));
|
'class' => 'section'));
|
||||||
|
|
||||||
@ -451,7 +443,7 @@ class ShowgroupAction extends GroupDesignAction
|
|||||||
|
|
||||||
$this->elementStart('dl', 'entity_members');
|
$this->elementStart('dl', 'entity_members');
|
||||||
$this->element('dt', null, _('Members'));
|
$this->element('dt', null, _('Members'));
|
||||||
$this->element('dd', null, (is_int($members_count)) ? $members_count : '0');
|
$this->element('dd', null, $this->group->getMemberCount());
|
||||||
$this->elementEnd('dl');
|
$this->elementEnd('dl');
|
||||||
|
|
||||||
$this->elementEnd('div');
|
$this->elementEnd('div');
|
||||||
|
@ -302,6 +302,7 @@ class File extends Memcached_DataObject
|
|||||||
|
|
||||||
if(! isset($this->filename)){
|
if(! isset($this->filename)){
|
||||||
$notEnclosureMimeTypes = array(null,'text/html','application/xhtml+xml');
|
$notEnclosureMimeTypes = array(null,'text/html','application/xhtml+xml');
|
||||||
|
$mimetype = $this->mimetype;
|
||||||
if($mimetype != null){
|
if($mimetype != null){
|
||||||
$mimetype = strtolower($this->mimetype);
|
$mimetype = strtolower($this->mimetype);
|
||||||
}
|
}
|
||||||
|
@ -1192,7 +1192,7 @@ class Notice extends Memcached_DataObject
|
|||||||
'xmlns:media' => 'http://purl.org/syndication/atommedia',
|
'xmlns:media' => 'http://purl.org/syndication/atommedia',
|
||||||
'xmlns:poco' => 'http://portablecontacts.net/spec/1.0',
|
'xmlns:poco' => 'http://portablecontacts.net/spec/1.0',
|
||||||
'xmlns:ostatus' => 'http://ostatus.org/schema/1.0',
|
'xmlns:ostatus' => 'http://ostatus.org/schema/1.0',
|
||||||
'xmlns:statusnet' => 'http://status.net/ont/');
|
'xmlns:statusnet' => 'http://status.net/schema/api/1/');
|
||||||
} else {
|
} else {
|
||||||
$attrs = array();
|
$attrs = array();
|
||||||
}
|
}
|
||||||
@ -1227,7 +1227,7 @@ class Notice extends Memcached_DataObject
|
|||||||
$xs->element('title', null, common_xml_safe_str($this->content));
|
$xs->element('title', null, common_xml_safe_str($this->content));
|
||||||
|
|
||||||
if ($author) {
|
if ($author) {
|
||||||
$xs->raw($profile->asAtomAuthor());
|
$xs->raw($profile->asAtomAuthor($cur));
|
||||||
$xs->raw($profile->asActivityActor());
|
$xs->raw($profile->asActivityActor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1240,9 +1240,25 @@ class Notice extends Memcached_DataObject
|
|||||||
$xs->element('published', null, common_date_w3dtf($this->created));
|
$xs->element('published', null, common_date_w3dtf($this->created));
|
||||||
$xs->element('updated', null, common_date_w3dtf($this->created));
|
$xs->element('updated', null, common_date_w3dtf($this->created));
|
||||||
|
|
||||||
|
$source = null;
|
||||||
|
|
||||||
|
$ns = $this->getSource();
|
||||||
|
|
||||||
|
if ($ns) {
|
||||||
|
if (!empty($ns->name) && !empty($ns->url)) {
|
||||||
|
$source = '<a href="'
|
||||||
|
. htmlspecialchars($ns->url)
|
||||||
|
. '" rel="nofollow">'
|
||||||
|
. htmlspecialchars($ns->name)
|
||||||
|
. '</a>';
|
||||||
|
} else {
|
||||||
|
$source = $ns->code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$noticeInfoAttr = array(
|
$noticeInfoAttr = array(
|
||||||
'local_id' => $this->id, // local notice ID (useful to clients for ordering)
|
'local_id' => $this->id, // local notice ID (useful to clients for ordering)
|
||||||
'source' => $this->source, // the client name (source attribution)
|
'source' => $source, // the client name (source attribution)
|
||||||
);
|
);
|
||||||
|
|
||||||
$ns = $this->getSource();
|
$ns = $this->getSource();
|
||||||
@ -1254,8 +1270,8 @@ class Notice extends Memcached_DataObject
|
|||||||
|
|
||||||
if (!empty($cur)) {
|
if (!empty($cur)) {
|
||||||
$noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false";
|
$noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false";
|
||||||
$profile = $cur->getProfile();
|
$profile = $cur->getProfile();
|
||||||
$noticeInfoAttr['repeated'] = ($profile->hasRepeated($this->id)) ? "true" : "false";
|
$noticeInfoAttr['repeated'] = ($profile->hasRepeated($this->id)) ? "true" : "false";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($this->repeat_of)) {
|
if (!empty($this->repeat_of)) {
|
||||||
|
@ -849,15 +849,23 @@ class Profile extends Memcached_DataObject
|
|||||||
*
|
*
|
||||||
* Assumes that Atom has been previously set up as the base namespace.
|
* Assumes that Atom has been previously set up as the base namespace.
|
||||||
*
|
*
|
||||||
|
* @param Profile $cur the current authenticated user
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function asAtomAuthor()
|
function asAtomAuthor($cur = null)
|
||||||
{
|
{
|
||||||
$xs = new XMLStringer(true);
|
$xs = new XMLStringer(true);
|
||||||
|
|
||||||
$xs->elementStart('author');
|
$xs->elementStart('author');
|
||||||
$xs->element('name', null, $this->nickname);
|
$xs->element('name', null, $this->nickname);
|
||||||
$xs->element('uri', null, $this->getUri());
|
$xs->element('uri', null, $this->getUri());
|
||||||
|
if ($cur != null) {
|
||||||
|
$attrs = Array();
|
||||||
|
$attrs['following'] = $cur->isSubscribed($this) ? 'true' : 'false';
|
||||||
|
$attrs['blocking'] = $cur->hasBlocked($this) ? 'true' : 'false';
|
||||||
|
$xs->element('statusnet:profile_info', $attrs, null);
|
||||||
|
}
|
||||||
$xs->elementEnd('author');
|
$xs->elementEnd('author');
|
||||||
|
|
||||||
return $xs->getString();
|
return $xs->getString();
|
||||||
|
@ -64,4 +64,17 @@ class Queue_item extends Memcached_DataObject
|
|||||||
$qi = null;
|
$qi = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Release a claimed item.
|
||||||
|
*/
|
||||||
|
function releaseCLaim()
|
||||||
|
{
|
||||||
|
// DB_DataObject doesn't let us save nulls right now
|
||||||
|
$sql = sprintf("UPDATE queue_item SET claimed=NULL WHERE id=%d", $this->id);
|
||||||
|
$this->query($sql);
|
||||||
|
|
||||||
|
$this->claimed = null;
|
||||||
|
$this->encache();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,35 @@ class Status_network extends Safe_DataObject
|
|||||||
return parent::update($orig);
|
return parent::update($orig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DB_DataObject doesn't allow updating keys (even non-primary)
|
||||||
|
*/
|
||||||
|
function updateKeys(&$orig)
|
||||||
|
{
|
||||||
|
$this->_connect();
|
||||||
|
foreach (array('hostname', 'pathname') as $k) {
|
||||||
|
if (strcmp($this->$k, $orig->$k) != 0) {
|
||||||
|
$parts[] = $k . ' = ' . $this->_quote($this->$k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count($parts) == 0) {
|
||||||
|
// No changes
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$toupdate = implode(', ', $parts);
|
||||||
|
|
||||||
|
$table = common_database_tablename($this->tableName());
|
||||||
|
$qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
|
||||||
|
' WHERE nickname = ' . $this->_quote($this->nickname);
|
||||||
|
$orig->decache();
|
||||||
|
$result = $this->query($qry);
|
||||||
|
if ($result) {
|
||||||
|
$this->encache();
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
function delete()
|
function delete()
|
||||||
{
|
{
|
||||||
$this->decache(); # while we still have the values!
|
$this->decache(); # while we still have the values!
|
||||||
|
@ -154,6 +154,21 @@ class User_group extends Memcached_DataObject
|
|||||||
return $members;
|
return $members;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getMemberCount()
|
||||||
|
{
|
||||||
|
// XXX: WORM cache this
|
||||||
|
|
||||||
|
$members = $this->getMembers();
|
||||||
|
$member_count = 0;
|
||||||
|
|
||||||
|
/** $member->count() doesn't work. */
|
||||||
|
while ($members->fetch()) {
|
||||||
|
$member_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $member_count;
|
||||||
|
}
|
||||||
|
|
||||||
function getAdmins($offset=0, $limit=null)
|
function getAdmins($offset=0, $limit=null)
|
||||||
{
|
{
|
||||||
$qry =
|
$qry =
|
||||||
|
@ -51,6 +51,7 @@ VALUES
|
|||||||
('smob','SMOB','http://smob.sioc-project.org/', now()),
|
('smob','SMOB','http://smob.sioc-project.org/', now()),
|
||||||
('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()),
|
('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()),
|
||||||
('spaz','Spaz','http://funkatron.com/spaz', now()),
|
('spaz','Spaz','http://funkatron.com/spaz', now()),
|
||||||
|
('StatusNet Desktop', 'StatusNet Desktop', 'http://status.net/desktop', now()),
|
||||||
('tarpipe','tarpipe','http://tarpipe.com/', now()),
|
('tarpipe','tarpipe','http://tarpipe.com/', now()),
|
||||||
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
|
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
|
||||||
('tr.im','tr.im','http://tr.im/', now()),
|
('tr.im','tr.im','http://tr.im/', now()),
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
/**
|
/**
|
||||||
* The library version string
|
* The library version string
|
||||||
*/
|
*/
|
||||||
define('Auth_OpenID_VERSION', '2.1.3');
|
define('Auth_OpenID_VERSION', '2.2.2');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Require the fetcher code.
|
* Require the fetcher code.
|
||||||
@ -102,9 +102,7 @@ define('Auth_OpenID_digits',
|
|||||||
define('Auth_OpenID_punct',
|
define('Auth_OpenID_punct',
|
||||||
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
|
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
|
||||||
|
|
||||||
if (Auth_OpenID_getMathLib() === null) {
|
Auth_OpenID_include_init();
|
||||||
Auth_OpenID_setNoMathSupport();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The OpenID utility function class.
|
* The OpenID utility function class.
|
||||||
@ -120,7 +118,7 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function isFailure($thing)
|
static function isFailure($thing)
|
||||||
{
|
{
|
||||||
return is_a($thing, 'Auth_OpenID_FailureResponse');
|
return is_a($thing, 'Auth_OpenID_FailureResponse');
|
||||||
}
|
}
|
||||||
@ -139,9 +137,12 @@ class Auth_OpenID {
|
|||||||
* Returns an empty array if neither GET nor POST was used, or if
|
* Returns an empty array if neither GET nor POST was used, or if
|
||||||
* POST was used but php://input cannot be opened.
|
* POST was used but php://input cannot be opened.
|
||||||
*
|
*
|
||||||
|
* See background:
|
||||||
|
* http://lists.openidenabled.com/pipermail/dev/2007-March/000395.html
|
||||||
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function getQuery($query_str=null)
|
static function getQuery($query_str=null)
|
||||||
{
|
{
|
||||||
$data = array();
|
$data = array();
|
||||||
|
|
||||||
@ -177,7 +178,7 @@ class Auth_OpenID {
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
function params_from_string($str)
|
static function params_from_string($str)
|
||||||
{
|
{
|
||||||
$chunks = explode("&", $str);
|
$chunks = explode("&", $str);
|
||||||
|
|
||||||
@ -190,7 +191,7 @@ class Auth_OpenID {
|
|||||||
}
|
}
|
||||||
|
|
||||||
list($k, $v) = $parts;
|
list($k, $v) = $parts;
|
||||||
$data[$k] = urldecode($v);
|
$data[urldecode($k)] = urldecode($v);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
@ -203,7 +204,7 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function ensureDir($dir_name)
|
static function ensureDir($dir_name)
|
||||||
{
|
{
|
||||||
if (is_dir($dir_name) || @mkdir($dir_name)) {
|
if (is_dir($dir_name) || @mkdir($dir_name)) {
|
||||||
return true;
|
return true;
|
||||||
@ -225,7 +226,7 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function addPrefix($values, $prefix)
|
static function addPrefix($values, $prefix)
|
||||||
{
|
{
|
||||||
$new_values = array();
|
$new_values = array();
|
||||||
foreach ($values as $s) {
|
foreach ($values as $s) {
|
||||||
@ -241,7 +242,7 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function arrayGet($arr, $key, $fallback = null)
|
static function arrayGet($arr, $key, $fallback = null)
|
||||||
{
|
{
|
||||||
if (is_array($arr)) {
|
if (is_array($arr)) {
|
||||||
if (array_key_exists($key, $arr)) {
|
if (array_key_exists($key, $arr)) {
|
||||||
@ -261,7 +262,7 @@ class Auth_OpenID {
|
|||||||
/**
|
/**
|
||||||
* Replacement for PHP's broken parse_str.
|
* Replacement for PHP's broken parse_str.
|
||||||
*/
|
*/
|
||||||
function parse_str($query)
|
static function parse_str($query)
|
||||||
{
|
{
|
||||||
if ($query === null) {
|
if ($query === null) {
|
||||||
return null;
|
return null;
|
||||||
@ -278,7 +279,7 @@ class Auth_OpenID {
|
|||||||
}
|
}
|
||||||
|
|
||||||
list($key, $value) = $pair;
|
list($key, $value) = $pair;
|
||||||
$new_parts[$key] = urldecode($value);
|
$new_parts[urldecode($key)] = urldecode($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $new_parts;
|
return $new_parts;
|
||||||
@ -295,7 +296,7 @@ class Auth_OpenID {
|
|||||||
* pairs from $data into a URL query string
|
* pairs from $data into a URL query string
|
||||||
* (e.g. "username=bob&id=56").
|
* (e.g. "username=bob&id=56").
|
||||||
*/
|
*/
|
||||||
function httpBuildQuery($data)
|
static function httpBuildQuery($data)
|
||||||
{
|
{
|
||||||
$pairs = array();
|
$pairs = array();
|
||||||
foreach ($data as $key => $value) {
|
foreach ($data as $key => $value) {
|
||||||
@ -323,7 +324,7 @@ class Auth_OpenID {
|
|||||||
* @return string $url The original URL with the new parameters added.
|
* @return string $url The original URL with the new parameters added.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function appendArgs($url, $args)
|
static function appendArgs($url, $args)
|
||||||
{
|
{
|
||||||
if (count($args) == 0) {
|
if (count($args) == 0) {
|
||||||
return $url;
|
return $url;
|
||||||
@ -367,7 +368,7 @@ class Auth_OpenID {
|
|||||||
* @return string $url The URL resulting from assembling the
|
* @return string $url The URL resulting from assembling the
|
||||||
* specified components.
|
* specified components.
|
||||||
*/
|
*/
|
||||||
function urlunparse($scheme, $host, $port = null, $path = '/',
|
static function urlunparse($scheme, $host, $port = null, $path = '/',
|
||||||
$query = '', $fragment = '')
|
$query = '', $fragment = '')
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -412,7 +413,7 @@ class Auth_OpenID {
|
|||||||
* @return mixed $new_url The URL after normalization, or null if
|
* @return mixed $new_url The URL after normalization, or null if
|
||||||
* $url was malformed.
|
* $url was malformed.
|
||||||
*/
|
*/
|
||||||
function normalizeUrl($url)
|
static function normalizeUrl($url)
|
||||||
{
|
{
|
||||||
@$parsed = parse_url($url);
|
@$parsed = parse_url($url);
|
||||||
|
|
||||||
@ -443,7 +444,7 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function intval($value)
|
static function intval($value)
|
||||||
{
|
{
|
||||||
$re = "/^\\d+$/";
|
$re = "/^\\d+$/";
|
||||||
|
|
||||||
@ -461,7 +462,7 @@ class Auth_OpenID {
|
|||||||
* @param string $str The string of bytes to count.
|
* @param string $str The string of bytes to count.
|
||||||
* @return int The number of bytes in $str.
|
* @return int The number of bytes in $str.
|
||||||
*/
|
*/
|
||||||
function bytes($str)
|
static function bytes($str)
|
||||||
{
|
{
|
||||||
return strlen(bin2hex($str)) / 2;
|
return strlen(bin2hex($str)) / 2;
|
||||||
}
|
}
|
||||||
@ -470,7 +471,7 @@ class Auth_OpenID {
|
|||||||
* Get the bytes in a string independently of multibyte support
|
* Get the bytes in a string independently of multibyte support
|
||||||
* conditions.
|
* conditions.
|
||||||
*/
|
*/
|
||||||
function toBytes($str)
|
static function toBytes($str)
|
||||||
{
|
{
|
||||||
$hex = bin2hex($str);
|
$hex = bin2hex($str);
|
||||||
|
|
||||||
@ -486,7 +487,7 @@ class Auth_OpenID {
|
|||||||
return $b;
|
return $b;
|
||||||
}
|
}
|
||||||
|
|
||||||
function urldefrag($url)
|
static function urldefrag($url)
|
||||||
{
|
{
|
||||||
$parts = explode("#", $url, 2);
|
$parts = explode("#", $url, 2);
|
||||||
|
|
||||||
@ -497,7 +498,7 @@ class Auth_OpenID {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter($callback, &$sequence)
|
static function filter($callback, &$sequence)
|
||||||
{
|
{
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
@ -510,7 +511,7 @@ class Auth_OpenID {
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(&$dest, &$src)
|
static function update(&$dest, &$src)
|
||||||
{
|
{
|
||||||
foreach ($src as $k => $v) {
|
foreach ($src as $k => $v) {
|
||||||
$dest[$k] = $v;
|
$dest[$k] = $v;
|
||||||
@ -524,14 +525,14 @@ class Auth_OpenID {
|
|||||||
*
|
*
|
||||||
* @param string $format_string The sprintf format for the message
|
* @param string $format_string The sprintf format for the message
|
||||||
*/
|
*/
|
||||||
function log($format_string)
|
static function log($format_string)
|
||||||
{
|
{
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
$message = call_user_func_array('sprintf', $args);
|
$message = call_user_func_array('sprintf', $args);
|
||||||
error_log($message);
|
error_log($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
function autoSubmitHTML($form, $title="OpenId transaction in progress")
|
static function autoSubmitHTML($form, $title="OpenId transaction in progress")
|
||||||
{
|
{
|
||||||
return("<html>".
|
return("<html>".
|
||||||
"<head><title>".
|
"<head><title>".
|
||||||
@ -549,4 +550,14 @@ class Auth_OpenID {
|
|||||||
"</html>");
|
"</html>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
|
/*
|
||||||
|
* Function to run when this file is included.
|
||||||
|
* Abstracted to a function to make life easier
|
||||||
|
* for some PHP optimizers.
|
||||||
|
*/
|
||||||
|
function Auth_OpenID_include_init() {
|
||||||
|
if (Auth_OpenID_getMathLib() === null) {
|
||||||
|
Auth_OpenID_setNoMathSupport();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -38,7 +38,7 @@ class Auth_OpenID_AX {
|
|||||||
* @return bool true if $thing is an Auth_OpenID_AX_Error; false
|
* @return bool true if $thing is an Auth_OpenID_AX_Error; false
|
||||||
* if not.
|
* if not.
|
||||||
*/
|
*/
|
||||||
function isError($thing)
|
static function isError($thing)
|
||||||
{
|
{
|
||||||
return is_a($thing, 'Auth_OpenID_AX_Error');
|
return is_a($thing, 'Auth_OpenID_AX_Error');
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ class Auth_OpenID_AX_AttrInfo {
|
|||||||
* Construct an attribute information object. For parameter
|
* Construct an attribute information object. For parameter
|
||||||
* details, see the constructor.
|
* details, see the constructor.
|
||||||
*/
|
*/
|
||||||
function make($type_uri, $count=1, $required=false,
|
static function make($type_uri, $count=1, $required=false,
|
||||||
$alias=null)
|
$alias=null)
|
||||||
{
|
{
|
||||||
if ($alias !== null) {
|
if ($alias !== null) {
|
||||||
@ -235,7 +235,7 @@ class Auth_OpenID_AX_AttrInfo {
|
|||||||
* return null If an alias is present in the list of aliases but
|
* return null If an alias is present in the list of aliases but
|
||||||
* is not present in the namespace map.
|
* is not present in the namespace map.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_AX_toTypeURIs(&$namespace_map, $alias_list_s)
|
function Auth_OpenID_AX_toTypeURIs($namespace_map, $alias_list_s)
|
||||||
{
|
{
|
||||||
$uris = array();
|
$uris = array();
|
||||||
|
|
||||||
@ -386,7 +386,7 @@ class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
|
|||||||
* Auth_OpenID_AX_FetchRequest extracted from the request message if
|
* Auth_OpenID_AX_FetchRequest extracted from the request message if
|
||||||
* successful
|
* successful
|
||||||
*/
|
*/
|
||||||
function &fromOpenIDRequest($request)
|
static function fromOpenIDRequest($request)
|
||||||
{
|
{
|
||||||
$m = $request->message;
|
$m = $request->message;
|
||||||
$obj = new Auth_OpenID_AX_FetchRequest();
|
$obj = new Auth_OpenID_AX_FetchRequest();
|
||||||
@ -484,7 +484,7 @@ class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
|
|||||||
Auth_OpenID::arrayGet($ax_args, 'required'));
|
Auth_OpenID::arrayGet($ax_args, 'required'));
|
||||||
|
|
||||||
foreach ($required as $type_uri) {
|
foreach ($required as $type_uri) {
|
||||||
$attrib =& $this->requested_attributes[$type_uri];
|
$attrib = $this->requested_attributes[$type_uri];
|
||||||
$attrib->required = true;
|
$attrib->required = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,7 +587,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _getExtensionKVArgs(&$aliases)
|
function _getExtensionKVArgs($aliases)
|
||||||
{
|
{
|
||||||
if ($aliases === null) {
|
if ($aliases === null) {
|
||||||
$aliases = new Auth_OpenID_NamespaceMap();
|
$aliases = new Auth_OpenID_NamespaceMap();
|
||||||
@ -652,7 +652,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
|
|||||||
foreach ($aliases->iteritems() as $pair) {
|
foreach ($aliases->iteritems() as $pair) {
|
||||||
list($type_uri, $alias) = $pair;
|
list($type_uri, $alias) = $pair;
|
||||||
|
|
||||||
if (array_key_exists('count.' . $alias, $ax_args)) {
|
if (array_key_exists('count.' . $alias, $ax_args) && ($ax_args['count.' . $alias] !== Auth_OpenID_AX_UNLIMITED_VALUES)) {
|
||||||
|
|
||||||
$count_key = 'count.' . $alias;
|
$count_key = 'count.' . $alias;
|
||||||
$count_s = $ax_args[$count_key];
|
$count_s = $ax_args[$count_key];
|
||||||
@ -888,7 +888,7 @@ class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {
|
|||||||
$ax_args['update_url'] = $update_url;
|
$ax_args['update_url'] = $update_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
Auth_OpenID::update(&$ax_args, $kv_args);
|
Auth_OpenID::update($ax_args, $kv_args);
|
||||||
|
|
||||||
return $ax_args;
|
return $ax_args;
|
||||||
}
|
}
|
||||||
@ -922,7 +922,7 @@ class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {
|
|||||||
* @return $response A FetchResponse containing the data from the
|
* @return $response A FetchResponse containing the data from the
|
||||||
* OpenID message
|
* OpenID message
|
||||||
*/
|
*/
|
||||||
function fromSuccessResponse($success_response, $signed=true)
|
static function fromSuccessResponse($success_response, $signed=true)
|
||||||
{
|
{
|
||||||
$obj = new Auth_OpenID_AX_FetchResponse();
|
$obj = new Auth_OpenID_AX_FetchResponse();
|
||||||
if ($signed) {
|
if ($signed) {
|
||||||
@ -960,7 +960,7 @@ class Auth_OpenID_AX_StoreRequest extends Auth_OpenID_AX_KeyValueMessage {
|
|||||||
{
|
{
|
||||||
$ax_args = $this->_newArgs();
|
$ax_args = $this->_newArgs();
|
||||||
$kv_args = $this->_getExtensionKVArgs($aliases);
|
$kv_args = $this->_getExtensionKVArgs($aliases);
|
||||||
Auth_OpenID::update(&$ax_args, $kv_args);
|
Auth_OpenID::update($ax_args, $kv_args);
|
||||||
return $ax_args;
|
return $ax_args;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -980,7 +980,7 @@ class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {
|
|||||||
* Returns Auth_OpenID_AX_Error on error or an
|
* Returns Auth_OpenID_AX_Error on error or an
|
||||||
* Auth_OpenID_AX_StoreResponse object on success.
|
* Auth_OpenID_AX_StoreResponse object on success.
|
||||||
*/
|
*/
|
||||||
function &make($succeeded=true, $error_message=null)
|
function make($succeeded=true, $error_message=null)
|
||||||
{
|
{
|
||||||
if (($succeeded) && ($error_message !== null)) {
|
if (($succeeded) && ($error_message !== null)) {
|
||||||
return new Auth_OpenID_AX_Error('An error message may only be '.
|
return new Auth_OpenID_AX_Error('An error message may only be '.
|
||||||
@ -1020,4 +1020,3 @@ class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -94,7 +94,7 @@ class Auth_OpenID_Association {
|
|||||||
* @return association An {@link Auth_OpenID_Association}
|
* @return association An {@link Auth_OpenID_Association}
|
||||||
* instance.
|
* instance.
|
||||||
*/
|
*/
|
||||||
function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
|
static function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
|
||||||
{
|
{
|
||||||
$issued = time();
|
$issued = time();
|
||||||
$lifetime = $expires_in;
|
$lifetime = $expires_in;
|
||||||
@ -132,7 +132,7 @@ class Auth_OpenID_Association {
|
|||||||
$handle, $secret, $issued, $lifetime, $assoc_type)
|
$handle, $secret, $issued, $lifetime, $assoc_type)
|
||||||
{
|
{
|
||||||
if (!in_array($assoc_type,
|
if (!in_array($assoc_type,
|
||||||
Auth_OpenID_getSupportedAssociationTypes())) {
|
Auth_OpenID_getSupportedAssociationTypes(), true)) {
|
||||||
$fmt = 'Unsupported association type (%s)';
|
$fmt = 'Unsupported association type (%s)';
|
||||||
trigger_error(sprintf($fmt, $assoc_type), E_USER_ERROR);
|
trigger_error(sprintf($fmt, $assoc_type), E_USER_ERROR);
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ class Auth_OpenID_Association {
|
|||||||
* @param string $assoc_s Association as serialized by serialize()
|
* @param string $assoc_s Association as serialized by serialize()
|
||||||
* @return Auth_OpenID_Association $result instance of this class
|
* @return Auth_OpenID_Association $result instance of this class
|
||||||
*/
|
*/
|
||||||
function deserialize($class_name, $assoc_s)
|
static function deserialize($class_name, $assoc_s)
|
||||||
{
|
{
|
||||||
$pairs = Auth_OpenID_KVForm::toArray($assoc_s, $strict = true);
|
$pairs = Auth_OpenID_KVForm::toArray($assoc_s, $strict = true);
|
||||||
$keys = array();
|
$keys = array();
|
||||||
@ -327,7 +327,7 @@ class Auth_OpenID_Association {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _makePairs(&$message)
|
function _makePairs($message)
|
||||||
{
|
{
|
||||||
$signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
|
$signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
|
||||||
if (!$signed || Auth_OpenID::isFailure($signed)) {
|
if (!$signed || Auth_OpenID::isFailure($signed)) {
|
||||||
@ -352,7 +352,7 @@ class Auth_OpenID_Association {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function getMessageSignature(&$message)
|
function getMessageSignature($message)
|
||||||
{
|
{
|
||||||
$pairs = $this->_makePairs($message);
|
$pairs = $this->_makePairs($message);
|
||||||
return base64_encode($this->sign($pairs));
|
return base64_encode($this->sign($pairs));
|
||||||
@ -364,7 +364,7 @@ class Auth_OpenID_Association {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function checkMessageSignature(&$message)
|
function checkMessageSignature($message)
|
||||||
{
|
{
|
||||||
$sig = $message->getArg(Auth_OpenID_OPENID_NS,
|
$sig = $message->getArg(Auth_OpenID_OPENID_NS,
|
||||||
'sig');
|
'sig');
|
||||||
@ -469,18 +469,16 @@ function Auth_OpenID_getOnlyEncryptedOrder()
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function &Auth_OpenID_getDefaultNegotiator()
|
function Auth_OpenID_getDefaultNegotiator()
|
||||||
{
|
{
|
||||||
$x = new Auth_OpenID_SessionNegotiator(
|
return new Auth_OpenID_SessionNegotiator(
|
||||||
Auth_OpenID_getDefaultAssociationOrder());
|
Auth_OpenID_getDefaultAssociationOrder());
|
||||||
return $x;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function &Auth_OpenID_getEncryptedNegotiator()
|
function Auth_OpenID_getEncryptedNegotiator()
|
||||||
{
|
{
|
||||||
$x = new Auth_OpenID_SessionNegotiator(
|
return new Auth_OpenID_SessionNegotiator(
|
||||||
Auth_OpenID_getOnlyEncryptedOrder());
|
Auth_OpenID_getOnlyEncryptedOrder());
|
||||||
return $x;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -610,4 +608,3 @@ class Auth_OpenID_SessionNegotiator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -351,8 +351,7 @@ function Auth_OpenID_math_extensions()
|
|||||||
'class' => 'Auth_OpenID_GmpMathWrapper');
|
'class' => 'Auth_OpenID_GmpMathWrapper');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result[] = array(
|
$result[] = array('modules' => array('bcmath', 'php_bcmath'),
|
||||||
'modules' => array('bcmath', 'php_bcmath'),
|
|
||||||
'extension' => 'bcmath',
|
'extension' => 'bcmath',
|
||||||
'class' => 'Auth_OpenID_BcMathWrapper');
|
'class' => 'Auth_OpenID_BcMathWrapper');
|
||||||
|
|
||||||
@ -366,27 +365,9 @@ function Auth_OpenID_detectMathLibrary($exts)
|
|||||||
{
|
{
|
||||||
$loaded = false;
|
$loaded = false;
|
||||||
|
|
||||||
|
$hasDl = function_exists('dl');
|
||||||
foreach ($exts as $extension) {
|
foreach ($exts as $extension) {
|
||||||
// See if the extension specified is already loaded.
|
if (extension_loaded($extension['extension'])) {
|
||||||
if ($extension['extension'] &&
|
|
||||||
extension_loaded($extension['extension'])) {
|
|
||||||
$loaded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to load dynamic modules.
|
|
||||||
if (!$loaded) {
|
|
||||||
foreach ($extension['modules'] as $module) {
|
|
||||||
if (@dl($module . "." . PHP_SHLIB_SUFFIX)) {
|
|
||||||
$loaded = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the load succeeded, supply an instance of
|
|
||||||
// Auth_OpenID_MathWrapper which wraps the specified
|
|
||||||
// module's functionality.
|
|
||||||
if ($loaded) {
|
|
||||||
return $extension;
|
return $extension;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -405,7 +386,7 @@ function Auth_OpenID_detectMathLibrary($exts)
|
|||||||
* instance of a wrapper for that extension module. If no extension
|
* instance of a wrapper for that extension module. If no extension
|
||||||
* module is found, an instance of {@link Auth_OpenID_MathWrapper} is
|
* module is found, an instance of {@link Auth_OpenID_MathWrapper} is
|
||||||
* returned, which wraps the native PHP integer implementation. The
|
* returned, which wraps the native PHP integer implementation. The
|
||||||
* proper calling convention for this method is $lib =&
|
* proper calling convention for this method is $lib =
|
||||||
* Auth_OpenID_getMathLib().
|
* Auth_OpenID_getMathLib().
|
||||||
*
|
*
|
||||||
* This function checks for the existence of specific long number
|
* This function checks for the existence of specific long number
|
||||||
@ -416,7 +397,7 @@ function Auth_OpenID_detectMathLibrary($exts)
|
|||||||
*
|
*
|
||||||
* @package OpenID
|
* @package OpenID
|
||||||
*/
|
*/
|
||||||
function &Auth_OpenID_getMathLib()
|
function Auth_OpenID_getMathLib()
|
||||||
{
|
{
|
||||||
// The instance of Auth_OpenID_MathWrapper that we choose to
|
// The instance of Auth_OpenID_MathWrapper that we choose to
|
||||||
// supply will be stored here, so that subseqent calls to this
|
// supply will be stored here, so that subseqent calls to this
|
||||||
@ -468,4 +449,4 @@ function Auth_OpenID_noMathSupport()
|
|||||||
return defined('Auth_OpenID_NO_MATH_SUPPORT');
|
return defined('Auth_OpenID_NO_MATH_SUPPORT');
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -258,19 +258,19 @@ class Auth_OpenID_Consumer {
|
|||||||
* when creating the internal consumer object. This is used for
|
* when creating the internal consumer object. This is used for
|
||||||
* testing.
|
* testing.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_Consumer(&$store, $session = null,
|
function Auth_OpenID_Consumer($store, $session = null,
|
||||||
$consumer_cls = null)
|
$consumer_cls = null)
|
||||||
{
|
{
|
||||||
if ($session === null) {
|
if ($session === null) {
|
||||||
$session = new Auth_Yadis_PHPSession();
|
$session = new Auth_Yadis_PHPSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->session =& $session;
|
$this->session = $session;
|
||||||
|
|
||||||
if ($consumer_cls !== null) {
|
if ($consumer_cls !== null) {
|
||||||
$this->consumer =& new $consumer_cls($store);
|
$this->consumer = new $consumer_cls($store);
|
||||||
} else {
|
} else {
|
||||||
$this->consumer =& new Auth_OpenID_GenericConsumer($store);
|
$this->consumer = new Auth_OpenID_GenericConsumer($store);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_token_key = $this->session_key_prefix . $this->_token_suffix;
|
$this->_token_key = $this->session_key_prefix . $this->_token_suffix;
|
||||||
@ -281,7 +281,7 @@ class Auth_OpenID_Consumer {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function getDiscoveryObject(&$session, $openid_url,
|
function getDiscoveryObject($session, $openid_url,
|
||||||
$session_key_prefix)
|
$session_key_prefix)
|
||||||
{
|
{
|
||||||
return new Auth_Yadis_Discovery($session, $openid_url,
|
return new Auth_Yadis_Discovery($session, $openid_url,
|
||||||
@ -339,7 +339,7 @@ class Auth_OpenID_Consumer {
|
|||||||
$this->consumer->fetcher);
|
$this->consumer->fetcher);
|
||||||
|
|
||||||
// Reset the 'stale' attribute of the manager.
|
// Reset the 'stale' attribute of the manager.
|
||||||
$m =& $disco->getManager();
|
$m = $disco->getManager();
|
||||||
if ($m) {
|
if ($m) {
|
||||||
$m->stale = false;
|
$m->stale = false;
|
||||||
$disco->session->set($disco->session_key,
|
$disco->session->set($disco->session_key,
|
||||||
@ -370,7 +370,7 @@ class Auth_OpenID_Consumer {
|
|||||||
* @return Auth_OpenID_AuthRequest $auth_request An OpenID
|
* @return Auth_OpenID_AuthRequest $auth_request An OpenID
|
||||||
* authentication request object.
|
* authentication request object.
|
||||||
*/
|
*/
|
||||||
function &beginWithoutDiscovery($endpoint, $anonymous=false)
|
function beginWithoutDiscovery($endpoint, $anonymous=false)
|
||||||
{
|
{
|
||||||
$loader = new Auth_OpenID_ServiceEndpointLoader();
|
$loader = new Auth_OpenID_ServiceEndpointLoader();
|
||||||
$auth_req = $this->consumer->begin($endpoint);
|
$auth_req = $this->consumer->begin($endpoint);
|
||||||
@ -467,7 +467,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
|
|||||||
|
|
||||||
function getRequest()
|
function getRequest()
|
||||||
{
|
{
|
||||||
$math =& Auth_OpenID_getMathLib();
|
$math = Auth_OpenID_getMathLib();
|
||||||
|
|
||||||
$cpub = $math->longToBase64($this->dh->public);
|
$cpub = $math->longToBase64($this->dh->public);
|
||||||
|
|
||||||
@ -496,7 +496,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$math =& Auth_OpenID_getMathLib();
|
$math = Auth_OpenID_getMathLib();
|
||||||
|
|
||||||
$spub = $math->base64ToLong($response->getArg(Auth_OpenID_OPENID_NS,
|
$spub = $math->base64ToLong($response->getArg(Auth_OpenID_OPENID_NS,
|
||||||
'dh_server_public'));
|
'dh_server_public'));
|
||||||
@ -611,11 +611,11 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
* in the module description. The default value is False, which
|
* in the module description. The default value is False, which
|
||||||
* disables immediate mode.
|
* disables immediate mode.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_GenericConsumer(&$store)
|
function Auth_OpenID_GenericConsumer($store)
|
||||||
{
|
{
|
||||||
$this->store =& $store;
|
$this->store = $store;
|
||||||
$this->negotiator =& Auth_OpenID_getDefaultNegotiator();
|
$this->negotiator = Auth_OpenID_getDefaultNegotiator();
|
||||||
$this->_use_assocs = ($this->store ? true : false);
|
$this->_use_assocs = (is_null($this->store) ? false : true);
|
||||||
|
|
||||||
$this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
|
$this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
|
||||||
|
|
||||||
@ -665,14 +665,14 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
$method = Auth_OpenID::arrayGet($mode_methods, $mode,
|
$method = Auth_OpenID::arrayGet($mode_methods, $mode,
|
||||||
'_completeInvalid');
|
'_completeInvalid');
|
||||||
|
|
||||||
return call_user_func_array(array(&$this, $method),
|
return call_user_func_array(array($this, $method),
|
||||||
array($message, $endpoint, $return_to));
|
array($message, &$endpoint, $return_to));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _completeInvalid($message, &$endpoint, $unused)
|
function _completeInvalid($message, $endpoint, $unused)
|
||||||
{
|
{
|
||||||
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
|
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
|
||||||
'<No mode set>');
|
'<No mode set>');
|
||||||
@ -684,7 +684,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _complete_cancel($message, &$endpoint, $unused)
|
function _complete_cancel($message, $endpoint, $unused)
|
||||||
{
|
{
|
||||||
return new Auth_OpenID_CancelResponse($endpoint);
|
return new Auth_OpenID_CancelResponse($endpoint);
|
||||||
}
|
}
|
||||||
@ -692,7 +692,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _complete_error($message, &$endpoint, $unused)
|
function _complete_error($message, $endpoint, $unused)
|
||||||
{
|
{
|
||||||
$error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
|
$error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
|
||||||
$contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
|
$contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
|
||||||
@ -705,7 +705,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _complete_setup_needed($message, &$endpoint, $unused)
|
function _complete_setup_needed($message, $endpoint, $unused)
|
||||||
{
|
{
|
||||||
if (!$message->isOpenID2()) {
|
if (!$message->isOpenID2()) {
|
||||||
return $this->_completeInvalid($message, $endpoint);
|
return $this->_completeInvalid($message, $endpoint);
|
||||||
@ -719,7 +719,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _complete_id_res($message, &$endpoint, $return_to)
|
function _complete_id_res($message, $endpoint, $return_to)
|
||||||
{
|
{
|
||||||
$user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
|
$user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
|
||||||
'user_setup_url');
|
'user_setup_url');
|
||||||
@ -1181,7 +1181,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
// oidutil.log('Performing discovery on %s' % (claimed_id,))
|
// oidutil.log('Performing discovery on %s' % (claimed_id,))
|
||||||
list($unused, $services) = call_user_func($this->discoverMethod,
|
list($unused, $services) = call_user_func($this->discoverMethod,
|
||||||
$claimed_id,
|
$claimed_id,
|
||||||
$this->fetcher);
|
&$this->fetcher);
|
||||||
|
|
||||||
if (!$services) {
|
if (!$services) {
|
||||||
return new Auth_OpenID_FailureResponse(null,
|
return new Auth_OpenID_FailureResponse(null,
|
||||||
@ -1197,7 +1197,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _verifyDiscoveryServices($claimed_id,
|
function _verifyDiscoveryServices($claimed_id,
|
||||||
&$services, &$to_match_endpoints)
|
$services, $to_match_endpoints)
|
||||||
{
|
{
|
||||||
// Search the services resulting from discovery to find one
|
// Search the services resulting from discovery to find one
|
||||||
// that matches the information from the assertion
|
// that matches the information from the assertion
|
||||||
@ -1216,8 +1216,8 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new Auth_OpenID_FailureResponse(null,
|
return new Auth_OpenID_FailureResponse(null,
|
||||||
sprintf('No matching endpoint found after discovering %s',
|
sprintf('No matching endpoint found after discovering %s: %s',
|
||||||
$claimed_id));
|
$claimed_id, $result->message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1397,7 +1397,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _httpResponseToMessage($response, $server_url)
|
static function _httpResponseToMessage($response, $server_url)
|
||||||
{
|
{
|
||||||
// Should this function be named Message.fromHTTPResponse instead?
|
// Should this function be named Message.fromHTTPResponse instead?
|
||||||
$response_message = Auth_OpenID_Message::fromKVForm($response->body);
|
$response_message = Auth_OpenID_Message::fromKVForm($response->body);
|
||||||
@ -1461,7 +1461,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _extractSupportedAssociationType(&$server_error, &$endpoint,
|
function _extractSupportedAssociationType($server_error, $endpoint,
|
||||||
$assoc_type)
|
$assoc_type)
|
||||||
{
|
{
|
||||||
// Any error message whose code is not 'unsupported-type'
|
// Any error message whose code is not 'unsupported-type'
|
||||||
@ -1566,7 +1566,7 @@ class Auth_OpenID_GenericConsumer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _extractAssociation(&$assoc_response, &$assoc_session)
|
function _extractAssociation($assoc_response, $assoc_session)
|
||||||
{
|
{
|
||||||
// Extract the common fields from the response, raising an
|
// Extract the common fields from the response, raising an
|
||||||
// exception if they are not found
|
// exception if they are not found
|
||||||
@ -1748,10 +1748,10 @@ class Auth_OpenID_AuthRequest {
|
|||||||
* class. Instances of this class are created by the library when
|
* class. Instances of this class are created by the library when
|
||||||
* needed.
|
* needed.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_AuthRequest(&$endpoint, $assoc)
|
function Auth_OpenID_AuthRequest($endpoint, $assoc)
|
||||||
{
|
{
|
||||||
$this->assoc = $assoc;
|
$this->assoc = $assoc;
|
||||||
$this->endpoint =& $endpoint;
|
$this->endpoint = $endpoint;
|
||||||
$this->return_to_args = array();
|
$this->return_to_args = array();
|
||||||
$this->message = new Auth_OpenID_Message(
|
$this->message = new Auth_OpenID_Message(
|
||||||
$endpoint->preferredNamespace());
|
$endpoint->preferredNamespace());
|
||||||
@ -1764,7 +1764,7 @@ class Auth_OpenID_AuthRequest {
|
|||||||
* $extension_request: An object that implements the extension
|
* $extension_request: An object that implements the extension
|
||||||
* request interface for adding arguments to an OpenID message.
|
* request interface for adding arguments to an OpenID message.
|
||||||
*/
|
*/
|
||||||
function addExtension(&$extension_request)
|
function addExtension($extension_request)
|
||||||
{
|
{
|
||||||
$extension_request->toMessage($this->message);
|
$extension_request->toMessage($this->message);
|
||||||
}
|
}
|
||||||
@ -2089,7 +2089,7 @@ class Auth_OpenID_SuccessResponse extends Auth_OpenID_ConsumerResponse {
|
|||||||
|
|
||||||
foreach ($msg_args as $key => $value) {
|
foreach ($msg_args as $key => $value) {
|
||||||
if (!$this->isSigned($ns_uri, $key)) {
|
if (!$this->isSigned($ns_uri, $key)) {
|
||||||
return null;
|
unset($msg_args[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2167,7 +2167,7 @@ class Auth_OpenID_ServerErrorContainer {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function fromMessage($message)
|
static function fromMessage($message)
|
||||||
{
|
{
|
||||||
$error_text = $message->getArg(
|
$error_text = $message->getArg(
|
||||||
Auth_OpenID_OPENID_NS, 'error', '<no error message supplied>');
|
Auth_OpenID_OPENID_NS, 'error', '<no error message supplied>');
|
||||||
@ -2227,4 +2227,4 @@ class Auth_OpenID_SetupNeededResponse extends Auth_OpenID_ConsumerResponse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -37,7 +37,7 @@ class Auth_OpenID_CryptUtil {
|
|||||||
* @param int $num_bytes The length of the return value
|
* @param int $num_bytes The length of the return value
|
||||||
* @return string $bytes random bytes
|
* @return string $bytes random bytes
|
||||||
*/
|
*/
|
||||||
function getBytes($num_bytes)
|
static function getBytes($num_bytes)
|
||||||
{
|
{
|
||||||
static $f = null;
|
static $f = null;
|
||||||
$bytes = '';
|
$bytes = '';
|
||||||
@ -77,7 +77,7 @@ class Auth_OpenID_CryptUtil {
|
|||||||
* @return string $result A string of randomly-chosen characters
|
* @return string $result A string of randomly-chosen characters
|
||||||
* from $chrs
|
* from $chrs
|
||||||
*/
|
*/
|
||||||
function randomString($length, $population = null)
|
static function randomString($length, $population = null)
|
||||||
{
|
{
|
||||||
if ($population === null) {
|
if ($population === null) {
|
||||||
return Auth_OpenID_CryptUtil::getBytes($length);
|
return Auth_OpenID_CryptUtil::getBytes($length);
|
||||||
@ -106,4 +106,3 @@ class Auth_OpenID_CryptUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -128,4 +128,3 @@ class Auth_OpenID_DatabaseConnection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -51,9 +51,9 @@ class Auth_OpenID_DiffieHellman {
|
|||||||
$private = null, $lib = null)
|
$private = null, $lib = null)
|
||||||
{
|
{
|
||||||
if ($lib === null) {
|
if ($lib === null) {
|
||||||
$this->lib =& Auth_OpenID_getMathLib();
|
$this->lib = Auth_OpenID_getMathLib();
|
||||||
} else {
|
} else {
|
||||||
$this->lib =& $lib;
|
$this->lib = $lib;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mod === null) {
|
if ($mod === null) {
|
||||||
@ -110,4 +110,4 @@ class Auth_OpenID_DiffieHellman {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -28,8 +28,34 @@ function Auth_OpenID_getOpenIDTypeURIs()
|
|||||||
Auth_OpenID_TYPE_2_0,
|
Auth_OpenID_TYPE_2_0,
|
||||||
Auth_OpenID_TYPE_1_2,
|
Auth_OpenID_TYPE_1_2,
|
||||||
Auth_OpenID_TYPE_1_1,
|
Auth_OpenID_TYPE_1_1,
|
||||||
Auth_OpenID_TYPE_1_0,
|
Auth_OpenID_TYPE_1_0);
|
||||||
Auth_OpenID_RP_RETURN_TO_URL_TYPE);
|
}
|
||||||
|
|
||||||
|
function Auth_OpenID_getOpenIDConsumerTypeURIs()
|
||||||
|
{
|
||||||
|
return array(Auth_OpenID_RP_RETURN_TO_URL_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Provides a user-readable interpretation of a type uri.
|
||||||
|
* Useful for error messages.
|
||||||
|
*/
|
||||||
|
function Auth_OpenID_getOpenIDTypeName($type_uri) {
|
||||||
|
switch ($type_uri) {
|
||||||
|
case Auth_OpenID_TYPE_2_0_IDP:
|
||||||
|
return 'OpenID 2.0 IDP';
|
||||||
|
case Auth_OpenID_TYPE_2_0:
|
||||||
|
return 'OpenID 2.0';
|
||||||
|
case Auth_OpenID_TYPE_1_2:
|
||||||
|
return 'OpenID 1.2';
|
||||||
|
case Auth_OpenID_TYPE_1_1:
|
||||||
|
return 'OpenID 1.1';
|
||||||
|
case Auth_OpenID_TYPE_1_0:
|
||||||
|
return 'OpenID 1.0';
|
||||||
|
case Auth_OpenID_RP_RETURN_TO_URL_TYPE:
|
||||||
|
return 'OpenID relying party';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -124,7 +150,7 @@ class Auth_OpenID_ServiceEndpoint {
|
|||||||
return in_array(Auth_OpenID_TYPE_2_0_IDP, $this->type_uris);
|
return in_array(Auth_OpenID_TYPE_2_0_IDP, $this->type_uris);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromOPEndpointURL($op_endpoint_url)
|
static function fromOPEndpointURL($op_endpoint_url)
|
||||||
{
|
{
|
||||||
// Construct an OP-Identifier OpenIDServiceEndpoint object for
|
// Construct an OP-Identifier OpenIDServiceEndpoint object for
|
||||||
// a given OP Endpoint URL
|
// a given OP Endpoint URL
|
||||||
@ -171,15 +197,34 @@ class Auth_OpenID_ServiceEndpoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parse the given document as XRDS looking for OpenID consumer services.
|
||||||
|
*
|
||||||
|
* @return array of Auth_OpenID_ServiceEndpoint or null if the
|
||||||
|
* document cannot be parsed.
|
||||||
|
*/
|
||||||
|
function consumerFromXRDS($uri, $xrds_text)
|
||||||
|
{
|
||||||
|
$xrds =& Auth_Yadis_XRDS::parseXRDS($xrds_text);
|
||||||
|
|
||||||
|
if ($xrds) {
|
||||||
|
$yadis_services =
|
||||||
|
$xrds->services(array('filter_MatchesAnyOpenIDConsumerType'));
|
||||||
|
return Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse the given document as XRDS looking for OpenID services.
|
* Parse the given document as XRDS looking for OpenID services.
|
||||||
*
|
*
|
||||||
* @return array of Auth_OpenID_ServiceEndpoint or null if the
|
* @return array of Auth_OpenID_ServiceEndpoint or null if the
|
||||||
* document cannot be parsed.
|
* document cannot be parsed.
|
||||||
*/
|
*/
|
||||||
function fromXRDS($uri, $xrds_text)
|
static function fromXRDS($uri, $xrds_text)
|
||||||
{
|
{
|
||||||
$xrds =& Auth_Yadis_XRDS::parseXRDS($xrds_text);
|
$xrds = Auth_Yadis_XRDS::parseXRDS($xrds_text);
|
||||||
|
|
||||||
if ($xrds) {
|
if ($xrds) {
|
||||||
$yadis_services =
|
$yadis_services =
|
||||||
@ -197,7 +242,7 @@ class Auth_OpenID_ServiceEndpoint {
|
|||||||
* @return array of Auth_OpenID_ServiceEndpoint or null if
|
* @return array of Auth_OpenID_ServiceEndpoint or null if
|
||||||
* endpoints cannot be created.
|
* endpoints cannot be created.
|
||||||
*/
|
*/
|
||||||
function fromDiscoveryResult($discoveryResult)
|
static function fromDiscoveryResult($discoveryResult)
|
||||||
{
|
{
|
||||||
if ($discoveryResult->isXRDS()) {
|
if ($discoveryResult->isXRDS()) {
|
||||||
return Auth_OpenID_ServiceEndpoint::fromXRDS(
|
return Auth_OpenID_ServiceEndpoint::fromXRDS(
|
||||||
@ -210,7 +255,7 @@ class Auth_OpenID_ServiceEndpoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromHTML($uri, $html)
|
static function fromHTML($uri, $html)
|
||||||
{
|
{
|
||||||
$discovery_types = array(
|
$discovery_types = array(
|
||||||
array(Auth_OpenID_TYPE_2_0,
|
array(Auth_OpenID_TYPE_2_0,
|
||||||
@ -273,7 +318,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
|
|||||||
$service->parser->registerNamespace('xrd',
|
$service->parser->registerNamespace('xrd',
|
||||||
Auth_Yadis_XMLNS_XRD_2_0);
|
Auth_Yadis_XMLNS_XRD_2_0);
|
||||||
|
|
||||||
$parser =& $service->parser;
|
$parser = $service->parser;
|
||||||
|
|
||||||
$permitted_tags = array();
|
$permitted_tags = array();
|
||||||
|
|
||||||
@ -305,7 +350,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
|
|||||||
return $local_id;
|
return $local_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter_MatchesAnyOpenIDType(&$service)
|
function filter_MatchesAnyOpenIDType($service)
|
||||||
{
|
{
|
||||||
$uris = $service->getTypes();
|
$uris = $service->getTypes();
|
||||||
|
|
||||||
@ -318,6 +363,19 @@ function filter_MatchesAnyOpenIDType(&$service)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function filter_MatchesAnyOpenIDConsumerType(&$service)
|
||||||
|
{
|
||||||
|
$uris = $service->getTypes();
|
||||||
|
|
||||||
|
foreach ($uris as $uri) {
|
||||||
|
if (in_array($uri, Auth_OpenID_getOpenIDConsumerTypeURIs())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function Auth_OpenID_bestMatchingService($service, $preferred_types)
|
function Auth_OpenID_bestMatchingService($service, $preferred_types)
|
||||||
{
|
{
|
||||||
// Return the index of the first matching type, or something
|
// Return the index of the first matching type, or something
|
||||||
@ -415,7 +473,7 @@ function Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services)
|
|||||||
return $s;
|
return $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
function Auth_OpenID_discoverWithYadis($uri, $fetcher,
|
||||||
$endpoint_filter='Auth_OpenID_getOPOrUserServices',
|
$endpoint_filter='Auth_OpenID_getOPOrUserServices',
|
||||||
$discover_function=null)
|
$discover_function=null)
|
||||||
{
|
{
|
||||||
@ -433,12 +491,12 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
|||||||
$openid_services = array();
|
$openid_services = array();
|
||||||
|
|
||||||
$response = call_user_func_array($discover_function,
|
$response = call_user_func_array($discover_function,
|
||||||
array($uri, &$fetcher));
|
array($uri, $fetcher));
|
||||||
|
|
||||||
$yadis_url = $response->normalized_uri;
|
$yadis_url = $response->normalized_uri;
|
||||||
$yadis_services = array();
|
$yadis_services = array();
|
||||||
|
|
||||||
if ($response->isFailure()) {
|
if ($response->isFailure() && !$response->isXRDS()) {
|
||||||
return array($uri, array());
|
return array($uri, array());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,18 +518,18 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
$openid_services = call_user_func_array($endpoint_filter,
|
$openid_services = call_user_func_array($endpoint_filter,
|
||||||
array(&$openid_services));
|
array($openid_services));
|
||||||
|
|
||||||
return array($yadis_url, $openid_services);
|
return array($yadis_url, $openid_services);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_discoverURI($uri, &$fetcher)
|
function Auth_OpenID_discoverURI($uri, $fetcher)
|
||||||
{
|
{
|
||||||
$uri = Auth_OpenID::normalizeUrl($uri);
|
$uri = Auth_OpenID::normalizeUrl($uri);
|
||||||
return Auth_OpenID_discoverWithYadis($uri, $fetcher);
|
return Auth_OpenID_discoverWithYadis($uri, $fetcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
|
function Auth_OpenID_discoverWithoutYadis($uri, $fetcher)
|
||||||
{
|
{
|
||||||
$http_resp = @$fetcher->get($uri);
|
$http_resp = @$fetcher->get($uri);
|
||||||
|
|
||||||
@ -490,7 +548,7 @@ function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
|
|||||||
return array($identity_url, $openid_services);
|
return array($identity_url, $openid_services);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_discoverXRI($iname, &$fetcher)
|
function Auth_OpenID_discoverXRI($iname, $fetcher)
|
||||||
{
|
{
|
||||||
$resolver = new Auth_Yadis_ProxyResolver($fetcher);
|
$resolver = new Auth_Yadis_ProxyResolver($fetcher);
|
||||||
list($canonicalID, $yadis_services) =
|
list($canonicalID, $yadis_services) =
|
||||||
@ -513,7 +571,7 @@ function Auth_OpenID_discoverXRI($iname, &$fetcher)
|
|||||||
return array($iname, $openid_services);
|
return array($iname, $openid_services);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_discover($uri, &$fetcher)
|
function Auth_OpenID_discover($uri, $fetcher)
|
||||||
{
|
{
|
||||||
// If the fetcher (i.e., PHP) doesn't support SSL, we can't do
|
// If the fetcher (i.e., PHP) doesn't support SSL, we can't do
|
||||||
// discovery on an HTTPS URL.
|
// discovery on an HTTPS URL.
|
||||||
@ -545,4 +603,4 @@ function Auth_OpenID_discover($uri, &$fetcher)
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -97,4 +97,3 @@ class Auth_OpenID_DumbStore extends Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -39,7 +39,7 @@ class Auth_OpenID_Extension {
|
|||||||
*
|
*
|
||||||
* Returns the message with the extension arguments added.
|
* Returns the message with the extension arguments added.
|
||||||
*/
|
*/
|
||||||
function toMessage(&$message)
|
function toMessage($message)
|
||||||
{
|
{
|
||||||
$implicit = $message->isOpenID1();
|
$implicit = $message->isOpenID1();
|
||||||
$added = $message->namespaces->addAlias($this->ns_uri,
|
$added = $message->namespaces->addAlias($this->ns_uri,
|
||||||
@ -59,4 +59,3 @@ class Auth_OpenID_Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -367,7 +367,7 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
|
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
|
||||||
return False;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($server_url) {
|
if ($server_url) {
|
||||||
@ -519,7 +519,7 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _mkdtemp($dir)
|
static function _mkdtemp($dir)
|
||||||
{
|
{
|
||||||
foreach (range(0, 4) as $i) {
|
foreach (range(0, 4) as $i) {
|
||||||
$name = $dir . strval(DIRECTORY_SEPARATOR) . strval(getmypid()) .
|
$name = $dir . strval(DIRECTORY_SEPARATOR) . strval(getmypid()) .
|
||||||
@ -615,4 +615,4 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -96,4 +96,3 @@ if (function_exists('hash_hmac') &&
|
|||||||
define('Auth_OpenID_HMACSHA256_SUPPORTED', false);
|
define('Auth_OpenID_HMACSHA256_SUPPORTED', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -194,4 +194,3 @@ class Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
|
@ -26,7 +26,7 @@ class Auth_OpenID_KVForm {
|
|||||||
* @static
|
* @static
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function toArray($kvs, $strict=false)
|
static function toArray($kvs, $strict=false)
|
||||||
{
|
{
|
||||||
$lines = explode("\n", $kvs);
|
$lines = explode("\n", $kvs);
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ class Auth_OpenID_KVForm {
|
|||||||
* @static
|
* @static
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function fromArray($values)
|
static function fromArray($values)
|
||||||
{
|
{
|
||||||
if ($values === null) {
|
if ($values === null) {
|
||||||
return null;
|
return null;
|
||||||
@ -109,4 +109,3 @@ class Auth_OpenID_KVForm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -205,4 +205,3 @@ class Auth_OpenID_MemcachedStore extends Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -143,7 +143,7 @@ class Auth_OpenID_Mapping {
|
|||||||
* Returns true if $thing is an Auth_OpenID_Mapping object; false
|
* Returns true if $thing is an Auth_OpenID_Mapping object; false
|
||||||
* if not.
|
* if not.
|
||||||
*/
|
*/
|
||||||
function isA($thing)
|
static function isA($thing)
|
||||||
{
|
{
|
||||||
return (is_object($thing) &&
|
return (is_object($thing) &&
|
||||||
strtolower(get_class($thing)) == 'auth_openid_mapping');
|
strtolower(get_class($thing)) == 'auth_openid_mapping');
|
||||||
@ -442,7 +442,7 @@ class Auth_OpenID_Message {
|
|||||||
return $this->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS;
|
return $this->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromPostArgs($args)
|
static function fromPostArgs($args)
|
||||||
{
|
{
|
||||||
// Construct a Message containing a set of POST arguments
|
// Construct a Message containing a set of POST arguments
|
||||||
$obj = new Auth_OpenID_Message();
|
$obj = new Auth_OpenID_Message();
|
||||||
@ -477,7 +477,7 @@ class Auth_OpenID_Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromOpenIDArgs($openid_args)
|
static function fromOpenIDArgs($openid_args)
|
||||||
{
|
{
|
||||||
// Takes an array.
|
// Takes an array.
|
||||||
|
|
||||||
@ -594,7 +594,7 @@ class Auth_OpenID_Message {
|
|||||||
return $this->_openid_ns_uri;
|
return $this->_openid_ns_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromKVForm($kvform_string)
|
static function fromKVForm($kvform_string)
|
||||||
{
|
{
|
||||||
// Create a Message from a KVForm string
|
// Create a Message from a KVForm string
|
||||||
return Auth_OpenID_Message::fromOpenIDArgs(
|
return Auth_OpenID_Message::fromOpenIDArgs(
|
||||||
@ -917,4 +917,4 @@ class Auth_OpenID_Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -75,4 +75,3 @@ class Auth_OpenID_MySQLStore extends Auth_OpenID_SQLStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -106,4 +106,3 @@ function Auth_OpenID_mkNonce($when = null)
|
|||||||
return $time_str . $salt;
|
return $time_str . $salt;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -21,7 +21,7 @@ define('PAPE_AUTH_PHISHING_RESISTANT',
|
|||||||
'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant');
|
'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant');
|
||||||
|
|
||||||
define('PAPE_TIME_VALIDATOR',
|
define('PAPE_TIME_VALIDATOR',
|
||||||
'^[0-9]{4,4}-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$');
|
'/^[0-9]{4,4}-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$/');
|
||||||
/**
|
/**
|
||||||
* A Provider Authentication Policy request, sent from a relying party
|
* A Provider Authentication Policy request, sent from a relying party
|
||||||
* to a provider
|
* to a provider
|
||||||
@ -82,7 +82,7 @@ class Auth_OpenID_PAPE_Request extends Auth_OpenID_Extension {
|
|||||||
* Instantiate a Request object from the arguments in a checkid_*
|
* Instantiate a Request object from the arguments in a checkid_*
|
||||||
* OpenID message
|
* OpenID message
|
||||||
*/
|
*/
|
||||||
function fromOpenIDRequest($request)
|
static function fromOpenIDRequest($request)
|
||||||
{
|
{
|
||||||
$obj = new Auth_OpenID_PAPE_Request();
|
$obj = new Auth_OpenID_PAPE_Request();
|
||||||
$args = $request->message->getArgs(Auth_OpenID_PAPE_NS_URI);
|
$args = $request->message->getArgs(Auth_OpenID_PAPE_NS_URI);
|
||||||
@ -201,7 +201,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
|
|||||||
* @returns: A provider authentication policy response from the
|
* @returns: A provider authentication policy response from the
|
||||||
* data that was supplied with the id_res response.
|
* data that was supplied with the id_res response.
|
||||||
*/
|
*/
|
||||||
function fromSuccessResponse($success_response)
|
static function fromSuccessResponse($success_response)
|
||||||
{
|
{
|
||||||
$obj = new Auth_OpenID_PAPE_Response();
|
$obj = new Auth_OpenID_PAPE_Response();
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
|
|||||||
|
|
||||||
$auth_time = Auth_OpenID::arrayGet($args, 'auth_time');
|
$auth_time = Auth_OpenID::arrayGet($args, 'auth_time');
|
||||||
if ($auth_time !== null) {
|
if ($auth_time !== null) {
|
||||||
if (ereg(PAPE_TIME_VALIDATOR, $auth_time)) {
|
if (preg_match(PAPE_TIME_VALIDATOR, $auth_time)) {
|
||||||
$this->auth_time = $auth_time;
|
$this->auth_time = $auth_time;
|
||||||
} else if ($strict) {
|
} else if ($strict) {
|
||||||
return false;
|
return false;
|
||||||
@ -287,7 +287,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->auth_time !== null) {
|
if ($this->auth_time !== null) {
|
||||||
if (!ereg(PAPE_TIME_VALIDATOR, $this->auth_time)) {
|
if (!preg_match(PAPE_TIME_VALIDATOR, $this->auth_time)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,4 +298,3 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -101,7 +101,7 @@ class Auth_OpenID_Parse {
|
|||||||
* Starts with the tag name at a word boundary, where the tag name
|
* Starts with the tag name at a word boundary, where the tag name
|
||||||
* is not a namespace
|
* is not a namespace
|
||||||
*/
|
*/
|
||||||
var $_tag_expr = "<%s\b(?!:)([^>]*?)(?:\/>|>(.*?)(?:<\/?%s\s*>|\Z))";
|
var $_tag_expr = "<%s\b(?!:)([^>]*?)(?:\/>|>(.*)(?:<\/?%s\s*>|\Z))";
|
||||||
|
|
||||||
var $_attr_find = '\b(\w+)=("[^"]*"|\'[^\']*\'|[^\'"\s\/<>]+)';
|
var $_attr_find = '\b(\w+)=("[^"]*"|\'[^\']*\'|[^\'"\s\/<>]+)';
|
||||||
|
|
||||||
@ -215,11 +215,31 @@ class Auth_OpenID_Parse {
|
|||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function match($regexp, $text, &$match)
|
||||||
|
{
|
||||||
|
if (!is_callable('mb_ereg_search_init')) {
|
||||||
|
return preg_match($regexp, $text, $match);
|
||||||
|
}
|
||||||
|
|
||||||
|
$regexp = substr($regexp, 1, strlen($regexp) - 2 - strlen($this->_re_flags));
|
||||||
|
mb_ereg_search_init($text);
|
||||||
|
if (!mb_ereg_search($regexp)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
list($match) = mb_ereg_search_getregs();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find all link tags in a string representing a HTML document and
|
* Find all link tags in a string representing a HTML document and
|
||||||
* return a list of their attributes.
|
* return a list of their attributes.
|
||||||
*
|
*
|
||||||
|
* @todo This is quite ineffective and may fail with the default
|
||||||
|
* pcre.backtrack_limit of 100000 in PHP 5.2, if $html is big.
|
||||||
|
* It should rather use stripos (in PHP5) or strpos()+strtoupper()
|
||||||
|
* in PHP4 to manage this.
|
||||||
|
*
|
||||||
* @param string $html The text to parse
|
* @param string $html The text to parse
|
||||||
* @return array $list An array of arrays of attributes, one for each
|
* @return array $list An array of arrays of attributes, one for each
|
||||||
* link tag
|
* link tag
|
||||||
@ -244,18 +264,23 @@ class Auth_OpenID_Parse {
|
|||||||
$stripped = substr($stripped, $html_begin,
|
$stripped = substr($stripped, $html_begin,
|
||||||
$html_end - $html_begin);
|
$html_end - $html_begin);
|
||||||
|
|
||||||
|
// Workaround to prevent PREG_BACKTRACK_LIMIT_ERROR:
|
||||||
|
$old_btlimit = ini_set( 'pcre.backtrack_limit', -1 );
|
||||||
|
|
||||||
// Try to find the <HEAD> tag.
|
// Try to find the <HEAD> tag.
|
||||||
$head_re = $this->headFind();
|
$head_re = $this->headFind();
|
||||||
$head_matches = array();
|
$head_match = '';
|
||||||
if (!preg_match($head_re, $stripped, $head_matches)) {
|
if (!$this->match($head_re, $stripped, $head_match)) {
|
||||||
return array();
|
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||||
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$link_data = array();
|
$link_data = array();
|
||||||
$link_matches = array();
|
$link_matches = array();
|
||||||
|
|
||||||
if (!preg_match_all($this->_link_find, $head_matches[0],
|
if (!preg_match_all($this->_link_find, $head_match,
|
||||||
$link_matches)) {
|
$link_matches)) {
|
||||||
|
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,6 +298,7 @@ class Auth_OpenID_Parse {
|
|||||||
$link_data[] = $link_attrs;
|
$link_data[] = $link_attrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||||
return $link_data;
|
return $link_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,4 +375,3 @@ function Auth_OpenID_legacy_discover($html_text, $server_rel,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -110,4 +110,3 @@ class Auth_OpenID_PostgreSQLStore extends Auth_OpenID_SQLStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -13,16 +13,6 @@
|
|||||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache
|
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* Require the PEAR DB module because we'll need it for the SQL-based
|
|
||||||
* stores implemented here. We silence any errors from the inclusion
|
|
||||||
* because it might not be present, and a user of the SQL stores may
|
|
||||||
* supply an Auth_OpenID_DatabaseConnection instance that implements
|
|
||||||
* its own storage.
|
|
||||||
*/
|
|
||||||
global $__Auth_OpenID_PEAR_AVAILABLE;
|
|
||||||
$__Auth_OpenID_PEAR_AVAILABLE = @include_once 'DB.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
@ -89,8 +79,6 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
|||||||
$associations_table = null,
|
$associations_table = null,
|
||||||
$nonces_table = null)
|
$nonces_table = null)
|
||||||
{
|
{
|
||||||
global $__Auth_OpenID_PEAR_AVAILABLE;
|
|
||||||
|
|
||||||
$this->associations_table_name = "oid_associations";
|
$this->associations_table_name = "oid_associations";
|
||||||
$this->nonces_table_name = "oid_nonces";
|
$this->nonces_table_name = "oid_nonces";
|
||||||
|
|
||||||
@ -113,7 +101,7 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
|||||||
// constant, so only try to use it if PEAR is present. Note
|
// constant, so only try to use it if PEAR is present. Note
|
||||||
// that Auth_Openid_Databaseconnection instances need not
|
// that Auth_Openid_Databaseconnection instances need not
|
||||||
// implement ::setFetchMode for this reason.
|
// implement ::setFetchMode for this reason.
|
||||||
if ($__Auth_OpenID_PEAR_AVAILABLE) {
|
if (is_subclass_of($this->connection, 'db_common')) {
|
||||||
$this->connection->setFetchMode(DB_FETCHMODE_ASSOC);
|
$this->connection->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +470,7 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
|||||||
global $Auth_OpenID_SKEW;
|
global $Auth_OpenID_SKEW;
|
||||||
|
|
||||||
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
|
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
|
||||||
return False;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->_add_nonce($server_url, $timestamp, $salt);
|
return $this->_add_nonce($server_url, $timestamp, $salt);
|
||||||
@ -566,4 +554,4 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -68,4 +68,3 @@ class Auth_OpenID_SQLiteStore extends Auth_OpenID_SQLStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -94,7 +94,7 @@ Auth_OpenID_registerNamespaceAlias(Auth_OpenID_SREG_NS_URI_1_1, 'sreg');
|
|||||||
* $endpoint: The endpoint object as returned by OpenID discovery.
|
* $endpoint: The endpoint object as returned by OpenID discovery.
|
||||||
* returns whether an sreg type was advertised by the endpoint
|
* returns whether an sreg type was advertised by the endpoint
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_supportsSReg(&$endpoint)
|
function Auth_OpenID_supportsSReg($endpoint)
|
||||||
{
|
{
|
||||||
return ($endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_1) ||
|
return ($endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_1) ||
|
||||||
$endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_0));
|
$endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_0));
|
||||||
@ -122,7 +122,7 @@ class Auth_OpenID_SRegBase extends Auth_OpenID_Extension {
|
|||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _getSRegNS(&$message)
|
static function _getSRegNS($message)
|
||||||
{
|
{
|
||||||
$alias = null;
|
$alias = null;
|
||||||
$found_ns_uri = null;
|
$found_ns_uri = null;
|
||||||
@ -173,7 +173,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
|
|||||||
/**
|
/**
|
||||||
* Initialize an empty simple registration request.
|
* Initialize an empty simple registration request.
|
||||||
*/
|
*/
|
||||||
function build($required=null, $optional=null,
|
static function build($required=null, $optional=null,
|
||||||
$policy_url=null,
|
$policy_url=null,
|
||||||
$sreg_ns_uri=Auth_OpenID_SREG_NS_URI,
|
$sreg_ns_uri=Auth_OpenID_SREG_NS_URI,
|
||||||
$cls='Auth_OpenID_SRegRequest')
|
$cls='Auth_OpenID_SRegRequest')
|
||||||
@ -213,7 +213,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
|
|||||||
*
|
*
|
||||||
* Returns the newly created simple registration request
|
* Returns the newly created simple registration request
|
||||||
*/
|
*/
|
||||||
function fromOpenIDRequest($request, $cls='Auth_OpenID_SRegRequest')
|
static function fromOpenIDRequest($request, $cls='Auth_OpenID_SRegRequest')
|
||||||
{
|
{
|
||||||
|
|
||||||
$obj = call_user_func_array(array($cls, 'build'),
|
$obj = call_user_func_array(array($cls, 'build'),
|
||||||
@ -442,7 +442,7 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
|
|||||||
* string (unicode) value. For instance, the nickname should be
|
* string (unicode) value. For instance, the nickname should be
|
||||||
* stored under the key 'nickname'.
|
* stored under the key 'nickname'.
|
||||||
*/
|
*/
|
||||||
function extractResponse($request, $data)
|
static function extractResponse($request, $data)
|
||||||
{
|
{
|
||||||
$obj = new Auth_OpenID_SRegResponse();
|
$obj = new Auth_OpenID_SRegResponse();
|
||||||
$obj->ns_uri = $request->ns_uri;
|
$obj->ns_uri = $request->ns_uri;
|
||||||
@ -471,7 +471,7 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
|
|||||||
* Returns a simple registration response containing the data that
|
* Returns a simple registration response containing the data that
|
||||||
* was supplied with the C{id_res} response.
|
* was supplied with the C{id_res} response.
|
||||||
*/
|
*/
|
||||||
function fromSuccessResponse(&$success_response, $signed_only=true)
|
static function fromSuccessResponse($success_response, $signed_only=true)
|
||||||
{
|
{
|
||||||
global $Auth_OpenID_sreg_data_fields;
|
global $Auth_OpenID_sreg_data_fields;
|
||||||
|
|
||||||
@ -518,4 +518,4 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
* consumers to add extensions to their requests. For example, with
|
* consumers to add extensions to their requests. For example, with
|
||||||
* sites using the Simple Registration
|
* sites using the Simple Registration
|
||||||
* Extension
|
* Extension
|
||||||
* (http://www.openidenabled.com/openid/simple-registration-extension/),
|
* (http://openid.net/specs/openid-simple-registration-extension-1_0.html),
|
||||||
* a user can agree to have their nickname and e-mail address sent to
|
* a user can agree to have their nickname and e-mail address sent to
|
||||||
* a site when they sign up.
|
* a site when they sign up.
|
||||||
*
|
*
|
||||||
@ -365,7 +365,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
|
|||||||
$this->message = null;
|
$this->message = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromMessage($message, $server=null)
|
static function fromMessage($message, $server=null)
|
||||||
{
|
{
|
||||||
$required_keys = array('assoc_handle', 'sig', 'signed');
|
$required_keys = array('assoc_handle', 'sig', 'signed');
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function answer(&$signatory)
|
function answer($signatory)
|
||||||
{
|
{
|
||||||
$is_valid = $signatory->verify($this->assoc_handle, $this->signed);
|
$is_valid = $signatory->verify($this->assoc_handle, $this->signed);
|
||||||
|
|
||||||
@ -436,7 +436,7 @@ class Auth_OpenID_PlainTextServerSession {
|
|||||||
var $needs_math = false;
|
var $needs_math = false;
|
||||||
var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
|
var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
|
||||||
|
|
||||||
function fromMessage($unused_request)
|
static function fromMessage($unused_request)
|
||||||
{
|
{
|
||||||
return new Auth_OpenID_PlainTextServerSession();
|
return new Auth_OpenID_PlainTextServerSession();
|
||||||
}
|
}
|
||||||
@ -469,7 +469,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
|||||||
$this->consumer_pubkey = $consumer_pubkey;
|
$this->consumer_pubkey = $consumer_pubkey;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDH($message)
|
static function getDH($message)
|
||||||
{
|
{
|
||||||
$dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
|
$dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
|
||||||
$dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
|
$dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
|
||||||
@ -489,7 +489,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
|||||||
$missing);
|
$missing);
|
||||||
}
|
}
|
||||||
|
|
||||||
$lib =& Auth_OpenID_getMathLib();
|
$lib = Auth_OpenID_getMathLib();
|
||||||
|
|
||||||
if ($dh_modulus || $dh_gen) {
|
if ($dh_modulus || $dh_gen) {
|
||||||
$dh_modulus = $lib->base64ToLong($dh_modulus);
|
$dh_modulus = $lib->base64ToLong($dh_modulus);
|
||||||
@ -523,7 +523,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
|||||||
return array($dh, $consumer_pubkey);
|
return array($dh, $consumer_pubkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromMessage($message)
|
static function fromMessage($message)
|
||||||
{
|
{
|
||||||
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
||||||
|
|
||||||
@ -538,7 +538,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
|||||||
|
|
||||||
function answer($secret)
|
function answer($secret)
|
||||||
{
|
{
|
||||||
$lib =& Auth_OpenID_getMathLib();
|
$lib = Auth_OpenID_getMathLib();
|
||||||
$mac_key = $this->dh->xorSecret($this->consumer_pubkey, $secret,
|
$mac_key = $this->dh->xorSecret($this->consumer_pubkey, $secret,
|
||||||
$this->hash_func);
|
$this->hash_func);
|
||||||
return array(
|
return array(
|
||||||
@ -560,7 +560,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
|
|||||||
var $hash_func = 'Auth_OpenID_SHA256';
|
var $hash_func = 'Auth_OpenID_SHA256';
|
||||||
var $allowed_assoc_types = array('HMAC-SHA256');
|
var $allowed_assoc_types = array('HMAC-SHA256');
|
||||||
|
|
||||||
function fromMessage($message)
|
static function fromMessage($message)
|
||||||
{
|
{
|
||||||
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
||||||
|
|
||||||
@ -582,7 +582,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
|
|||||||
class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
||||||
var $mode = "associate";
|
var $mode = "associate";
|
||||||
|
|
||||||
function getSessionClasses()
|
static function getSessionClasses()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'no-encryption' => 'Auth_OpenID_PlainTextServerSession',
|
'no-encryption' => 'Auth_OpenID_PlainTextServerSession',
|
||||||
@ -590,14 +590,14 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
|||||||
'DH-SHA256' => 'Auth_OpenID_DiffieHellmanSHA256ServerSession');
|
'DH-SHA256' => 'Auth_OpenID_DiffieHellmanSHA256ServerSession');
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_OpenID_AssociateRequest(&$session, $assoc_type)
|
function Auth_OpenID_AssociateRequest($session, $assoc_type)
|
||||||
{
|
{
|
||||||
$this->session =& $session;
|
$this->session = $session;
|
||||||
$this->namespace = Auth_OpenID_OPENID2_NS;
|
$this->namespace = Auth_OpenID_OPENID2_NS;
|
||||||
$this->assoc_type = $assoc_type;
|
$this->assoc_type = $assoc_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromMessage($message, $server=null)
|
static function fromMessage($message, $server=null)
|
||||||
{
|
{
|
||||||
if ($message->isOpenID1()) {
|
if ($message->isOpenID1()) {
|
||||||
$session_type = $message->getArg(Auth_OpenID_OPENID_NS,
|
$session_type = $message->getArg(Auth_OpenID_OPENID_NS,
|
||||||
@ -696,7 +696,7 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
|||||||
'session_type',
|
'session_type',
|
||||||
$preferred_session_type);
|
$preferred_session_type);
|
||||||
}
|
}
|
||||||
|
$response->code = AUTH_OPENID_HTTP_ERROR;
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -734,7 +734,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
*/
|
*/
|
||||||
var $namespace;
|
var $namespace;
|
||||||
|
|
||||||
function make(&$message, $identity, $return_to, $trust_root = null,
|
static function make($message, $identity, $return_to, $trust_root = null,
|
||||||
$immediate = false, $assoc_handle = null, $server = null)
|
$immediate = false, $assoc_handle = null, $server = null)
|
||||||
{
|
{
|
||||||
if ($server === null) {
|
if ($server === null) {
|
||||||
@ -752,7 +752,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
$assoc_handle, $server);
|
$assoc_handle, $server);
|
||||||
|
|
||||||
$r->namespace = $message->getOpenIDNamespace();
|
$r->namespace = $message->getOpenIDNamespace();
|
||||||
$r->message =& $message;
|
$r->message = $message;
|
||||||
|
|
||||||
if (!$r->trustRootValid()) {
|
if (!$r->trustRootValid()) {
|
||||||
return new Auth_OpenID_UntrustedReturnURL($message,
|
return new Auth_OpenID_UntrustedReturnURL($message,
|
||||||
@ -778,7 +778,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
}
|
}
|
||||||
$this->return_to = $return_to;
|
$this->return_to = $return_to;
|
||||||
$this->trust_root = $trust_root;
|
$this->trust_root = $trust_root;
|
||||||
$this->server =& $server;
|
$this->server = $server;
|
||||||
|
|
||||||
if ($immediate) {
|
if ($immediate) {
|
||||||
$this->immediate = true;
|
$this->immediate = true;
|
||||||
@ -817,11 +817,12 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
*/
|
*/
|
||||||
function returnToVerified()
|
function returnToVerified()
|
||||||
{
|
{
|
||||||
|
$fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
|
||||||
return call_user_func_array($this->verifyReturnTo,
|
return call_user_func_array($this->verifyReturnTo,
|
||||||
array($this->trust_root, $this->return_to));
|
array($this->trust_root, $this->return_to, $fetcher));
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromMessage(&$message, $server)
|
static function fromMessage($message, $server)
|
||||||
{
|
{
|
||||||
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
|
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
|
||||||
$immediate = null;
|
$immediate = null;
|
||||||
@ -1097,7 +1098,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
in OpenID 1.x immediate mode.');
|
in OpenID 1.x immediate mode.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$setup_request =& new Auth_OpenID_CheckIDRequest(
|
$setup_request = new Auth_OpenID_CheckIDRequest(
|
||||||
$this->identity,
|
$this->identity,
|
||||||
$this->return_to,
|
$this->return_to,
|
||||||
$this->trust_root,
|
$this->trust_root,
|
||||||
@ -1183,9 +1184,9 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
|||||||
*/
|
*/
|
||||||
class Auth_OpenID_ServerResponse {
|
class Auth_OpenID_ServerResponse {
|
||||||
|
|
||||||
function Auth_OpenID_ServerResponse(&$request)
|
function Auth_OpenID_ServerResponse($request)
|
||||||
{
|
{
|
||||||
$this->request =& $request;
|
$this->request = $request;
|
||||||
$this->fields = new Auth_OpenID_Message($this->request->namespace);
|
$this->fields = new Auth_OpenID_Message($this->request->namespace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1310,10 +1311,10 @@ class Auth_OpenID_Signatory {
|
|||||||
/**
|
/**
|
||||||
* Create a new signatory using a given store.
|
* Create a new signatory using a given store.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_Signatory(&$store)
|
function Auth_OpenID_Signatory($store)
|
||||||
{
|
{
|
||||||
// assert store is not None
|
// assert store is not None
|
||||||
$this->store =& $store;
|
$this->store = $store;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1447,7 +1448,7 @@ class Auth_OpenID_Encoder {
|
|||||||
* Encode an {@link Auth_OpenID_ServerResponse} and return an
|
* Encode an {@link Auth_OpenID_ServerResponse} and return an
|
||||||
* {@link Auth_OpenID_WebResponse}.
|
* {@link Auth_OpenID_WebResponse}.
|
||||||
*/
|
*/
|
||||||
function encode(&$response)
|
function encode($response)
|
||||||
{
|
{
|
||||||
$cls = $this->responseFactory;
|
$cls = $this->responseFactory;
|
||||||
|
|
||||||
@ -1463,10 +1464,14 @@ class Auth_OpenID_Encoder {
|
|||||||
array('location' => $location));
|
array('location' => $location));
|
||||||
} else if ($encode_as == Auth_OpenID_ENCODE_HTML_FORM) {
|
} else if ($encode_as == Auth_OpenID_ENCODE_HTML_FORM) {
|
||||||
$wr = new $cls(AUTH_OPENID_HTTP_OK, array(),
|
$wr = new $cls(AUTH_OPENID_HTTP_OK, array(),
|
||||||
$response->toFormMarkup());
|
$response->toHTML());
|
||||||
} else {
|
} else {
|
||||||
return new Auth_OpenID_EncodingError($response);
|
return new Auth_OpenID_EncodingError($response);
|
||||||
}
|
}
|
||||||
|
/* Allow the response to carry a custom error code (ex: for Association errors) */
|
||||||
|
if(isset($response->code)) {
|
||||||
|
$wr->code = $response->code;
|
||||||
|
}
|
||||||
return $wr;
|
return $wr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1478,16 +1483,16 @@ class Auth_OpenID_Encoder {
|
|||||||
*/
|
*/
|
||||||
class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
|
class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
|
||||||
|
|
||||||
function Auth_OpenID_SigningEncoder(&$signatory)
|
function Auth_OpenID_SigningEncoder($signatory)
|
||||||
{
|
{
|
||||||
$this->signatory =& $signatory;
|
$this->signatory = $signatory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sign an {@link Auth_OpenID_ServerResponse} and return an
|
* Sign an {@link Auth_OpenID_ServerResponse} and return an
|
||||||
* {@link Auth_OpenID_WebResponse}.
|
* {@link Auth_OpenID_WebResponse}.
|
||||||
*/
|
*/
|
||||||
function encode(&$response)
|
function encode($response)
|
||||||
{
|
{
|
||||||
// the isinstance is a bit of a kludge... it means there isn't
|
// the isinstance is a bit of a kludge... it means there isn't
|
||||||
// really an adapter to make the interfaces quite match.
|
// really an adapter to make the interfaces quite match.
|
||||||
@ -1516,9 +1521,9 @@ class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
|
|||||||
*/
|
*/
|
||||||
class Auth_OpenID_Decoder {
|
class Auth_OpenID_Decoder {
|
||||||
|
|
||||||
function Auth_OpenID_Decoder(&$server)
|
function Auth_OpenID_Decoder($server)
|
||||||
{
|
{
|
||||||
$this->server =& $server;
|
$this->server = $server;
|
||||||
|
|
||||||
$this->handlers = array(
|
$this->handlers = array(
|
||||||
'checkid_setup' => 'Auth_OpenID_CheckIDRequest',
|
'checkid_setup' => 'Auth_OpenID_CheckIDRequest',
|
||||||
@ -1599,9 +1604,9 @@ class Auth_OpenID_Decoder {
|
|||||||
* @package OpenID
|
* @package OpenID
|
||||||
*/
|
*/
|
||||||
class Auth_OpenID_EncodingError {
|
class Auth_OpenID_EncodingError {
|
||||||
function Auth_OpenID_EncodingError(&$response)
|
function Auth_OpenID_EncodingError($response)
|
||||||
{
|
{
|
||||||
$this->response =& $response;
|
$this->response = $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1674,14 +1679,14 @@ class Auth_OpenID_UntrustedReturnURL extends Auth_OpenID_ServerError {
|
|||||||
* @package OpenID
|
* @package OpenID
|
||||||
*/
|
*/
|
||||||
class Auth_OpenID_Server {
|
class Auth_OpenID_Server {
|
||||||
function Auth_OpenID_Server(&$store, $op_endpoint=null)
|
function Auth_OpenID_Server($store, $op_endpoint=null)
|
||||||
{
|
{
|
||||||
$this->store =& $store;
|
$this->store = $store;
|
||||||
$this->signatory =& new Auth_OpenID_Signatory($this->store);
|
$this->signatory = new Auth_OpenID_Signatory($this->store);
|
||||||
$this->encoder =& new Auth_OpenID_SigningEncoder($this->signatory);
|
$this->encoder = new Auth_OpenID_SigningEncoder($this->signatory);
|
||||||
$this->decoder =& new Auth_OpenID_Decoder($this);
|
$this->decoder = new Auth_OpenID_Decoder($this);
|
||||||
$this->op_endpoint = $op_endpoint;
|
$this->op_endpoint = $op_endpoint;
|
||||||
$this->negotiator =& Auth_OpenID_getDefaultNegotiator();
|
$this->negotiator = Auth_OpenID_getDefaultNegotiator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1699,7 +1704,7 @@ class Auth_OpenID_Server {
|
|||||||
{
|
{
|
||||||
if (method_exists($this, "openid_" . $request->mode)) {
|
if (method_exists($this, "openid_" . $request->mode)) {
|
||||||
$handler = array($this, "openid_" . $request->mode);
|
$handler = array($this, "openid_" . $request->mode);
|
||||||
return call_user_func($handler, $request);
|
return call_user_func($handler, &$request);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -1707,7 +1712,7 @@ class Auth_OpenID_Server {
|
|||||||
/**
|
/**
|
||||||
* The callback for 'check_authentication' messages.
|
* The callback for 'check_authentication' messages.
|
||||||
*/
|
*/
|
||||||
function openid_check_authentication(&$request)
|
function openid_check_authentication($request)
|
||||||
{
|
{
|
||||||
return $request->answer($this->signatory);
|
return $request->answer($this->signatory);
|
||||||
}
|
}
|
||||||
@ -1715,7 +1720,7 @@ class Auth_OpenID_Server {
|
|||||||
/**
|
/**
|
||||||
* The callback for 'associate' messages.
|
* The callback for 'associate' messages.
|
||||||
*/
|
*/
|
||||||
function openid_associate(&$request)
|
function openid_associate($request)
|
||||||
{
|
{
|
||||||
$assoc_type = $request->assoc_type;
|
$assoc_type = $request->assoc_type;
|
||||||
$session_type = $request->session->session_type;
|
$session_type = $request->session->session_type;
|
||||||
@ -1738,7 +1743,7 @@ class Auth_OpenID_Server {
|
|||||||
* Encodes as response in the appropriate format suitable for
|
* Encodes as response in the appropriate format suitable for
|
||||||
* sending to the user agent.
|
* sending to the user agent.
|
||||||
*/
|
*/
|
||||||
function encodeResponse(&$response)
|
function encodeResponse($response)
|
||||||
{
|
{
|
||||||
return $this->encoder->encode($response);
|
return $this->encoder->encode($response);
|
||||||
}
|
}
|
||||||
@ -1757,4 +1762,4 @@ class Auth_OpenID_Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -34,4 +34,3 @@ class Auth_OpenID_ServerRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -58,7 +58,7 @@ class Auth_OpenID_TrustRoot {
|
|||||||
* @return The URL upon which relying party discovery should be
|
* @return The URL upon which relying party discovery should be
|
||||||
* run in order to verify the return_to URL
|
* run in order to verify the return_to URL
|
||||||
*/
|
*/
|
||||||
function buildDiscoveryURL($realm)
|
static function buildDiscoveryURL($realm)
|
||||||
{
|
{
|
||||||
$parsed = Auth_OpenID_TrustRoot::_parse($realm);
|
$parsed = Auth_OpenID_TrustRoot::_parse($realm);
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ class Auth_OpenID_TrustRoot {
|
|||||||
* @return mixed $parsed Either an associative array of trust root
|
* @return mixed $parsed Either an associative array of trust root
|
||||||
* parts or false if parsing failed.
|
* parts or false if parsing failed.
|
||||||
*/
|
*/
|
||||||
function _parse($trust_root)
|
static function _parse($trust_root)
|
||||||
{
|
{
|
||||||
$trust_root = Auth_OpenID_urinorm($trust_root);
|
$trust_root = Auth_OpenID_urinorm($trust_root);
|
||||||
if ($trust_root === null) {
|
if ($trust_root === null) {
|
||||||
@ -199,7 +199,7 @@ class Auth_OpenID_TrustRoot {
|
|||||||
* @param string $trust_root The trust root to check
|
* @param string $trust_root The trust root to check
|
||||||
* @return bool $sanity Whether the trust root looks OK
|
* @return bool $sanity Whether the trust root looks OK
|
||||||
*/
|
*/
|
||||||
function isSane($trust_root)
|
static function isSane($trust_root)
|
||||||
{
|
{
|
||||||
$parts = Auth_OpenID_TrustRoot::_parse($trust_root);
|
$parts = Auth_OpenID_TrustRoot::_parse($trust_root);
|
||||||
if ($parts === false) {
|
if ($parts === false) {
|
||||||
@ -269,7 +269,7 @@ class Auth_OpenID_TrustRoot {
|
|||||||
* @return bool $matches Whether the URL matches against the
|
* @return bool $matches Whether the URL matches against the
|
||||||
* trust root
|
* trust root
|
||||||
*/
|
*/
|
||||||
function match($trust_root, $url)
|
static function match($trust_root, $url)
|
||||||
{
|
{
|
||||||
$trust_root_parsed = Auth_OpenID_TrustRoot::_parse($trust_root);
|
$trust_root_parsed = Auth_OpenID_TrustRoot::_parse($trust_root);
|
||||||
$url_parsed = Auth_OpenID_TrustRoot::_parse($url);
|
$url_parsed = Auth_OpenID_TrustRoot::_parse($url);
|
||||||
@ -341,7 +341,7 @@ class Auth_OpenID_TrustRoot {
|
|||||||
* @returns: The endpoint URL or None if the endpoint is not a
|
* @returns: The endpoint URL or None if the endpoint is not a
|
||||||
* relying party endpoint.
|
* relying party endpoint.
|
||||||
*/
|
*/
|
||||||
function filter_extractReturnURL(&$endpoint)
|
function filter_extractReturnURL($endpoint)
|
||||||
{
|
{
|
||||||
if ($endpoint->matchTypes(array(Auth_OpenID_RP_RETURN_TO_URL_TYPE))) {
|
if ($endpoint->matchTypes(array(Auth_OpenID_RP_RETURN_TO_URL_TYPE))) {
|
||||||
return $endpoint;
|
return $endpoint;
|
||||||
@ -394,14 +394,14 @@ function Auth_OpenID_returnToMatches($allowed_return_to_urls, $return_to)
|
|||||||
* Given a relying party discovery URL return a list of return_to
|
* Given a relying party discovery URL return a list of return_to
|
||||||
* URLs.
|
* URLs.
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
|
function Auth_OpenID_getAllowedReturnURLs($relying_party_url, $fetcher,
|
||||||
$discover_function=null)
|
$discover_function=null)
|
||||||
{
|
{
|
||||||
if ($discover_function === null) {
|
if ($discover_function === null) {
|
||||||
$discover_function = array('Auth_Yadis_Yadis', 'discover');
|
$discover_function = array('Auth_Yadis_Yadis', 'discover');
|
||||||
}
|
}
|
||||||
|
|
||||||
$xrds_parse_cb = array('Auth_OpenID_ServiceEndpoint', 'fromXRDS');
|
$xrds_parse_cb = array('Auth_OpenID_ServiceEndpoint', 'consumerFromXRDS');
|
||||||
|
|
||||||
list($rp_url_after_redirects, $endpoints) =
|
list($rp_url_after_redirects, $endpoints) =
|
||||||
Auth_Yadis_getServiceEndpoints($relying_party_url, $xrds_parse_cb,
|
Auth_Yadis_getServiceEndpoints($relying_party_url, $xrds_parse_cb,
|
||||||
@ -413,7 +413,7 @@ function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
call_user_func_array($discover_function,
|
call_user_func_array($discover_function,
|
||||||
array($relying_party_url, $fetcher));
|
array($relying_party_url, &$fetcher));
|
||||||
|
|
||||||
$return_to_urls = array();
|
$return_to_urls = array();
|
||||||
$matching_endpoints = Auth_OpenID_extractReturnURL($endpoints);
|
$matching_endpoints = Auth_OpenID_extractReturnURL($endpoints);
|
||||||
@ -435,7 +435,7 @@ function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
|
|||||||
*
|
*
|
||||||
* @return true if the return_to URL is valid for the realm
|
* @return true if the return_to URL is valid for the realm
|
||||||
*/
|
*/
|
||||||
function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
|
function Auth_OpenID_verifyReturnTo($realm_str, $return_to, $fetcher,
|
||||||
$_vrfy='Auth_OpenID_getAllowedReturnURLs')
|
$_vrfy='Auth_OpenID_getAllowedReturnURLs')
|
||||||
{
|
{
|
||||||
$disco_url = Auth_OpenID_TrustRoot::buildDiscoveryURL($realm_str);
|
$disco_url = Auth_OpenID_TrustRoot::buildDiscoveryURL($realm_str);
|
||||||
@ -445,7 +445,7 @@ function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
$allowable_urls = call_user_func_array($_vrfy,
|
$allowable_urls = call_user_func_array($_vrfy,
|
||||||
array($disco_url, &$fetcher));
|
array($disco_url, $fetcher));
|
||||||
|
|
||||||
// The realm_str could not be parsed.
|
// The realm_str could not be parsed.
|
||||||
if ($allowable_urls === false) {
|
if ($allowable_urls === false) {
|
||||||
@ -459,4 +459,3 @@ function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -246,4 +246,4 @@ function Auth_OpenID_urinorm($uri)
|
|||||||
return $scheme . '://' . $authority . $path . $query . $fragment;
|
return $scheme . '://' . $authority . $path . $query . $fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -115,12 +115,40 @@ class Auth_Yadis_HTTPFetcher {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _findRedirect($headers)
|
function _findRedirect($headers, $url)
|
||||||
{
|
{
|
||||||
foreach ($headers as $line) {
|
foreach ($headers as $line) {
|
||||||
if (strpos(strtolower($line), "location: ") === 0) {
|
if (strpos(strtolower($line), "location: ") === 0) {
|
||||||
$parts = explode(" ", $line, 2);
|
$parts = explode(" ", $line, 2);
|
||||||
return $parts[1];
|
$loc = $parts[1];
|
||||||
|
$ppos = strpos($loc, "://");
|
||||||
|
if ($ppos === false || $ppos > strpos($loc, "/")) {
|
||||||
|
/* no host; add it */
|
||||||
|
$hpos = strpos($url, "://");
|
||||||
|
$prt = substr($url, 0, $hpos+3);
|
||||||
|
$url = substr($url, $hpos+3);
|
||||||
|
if (substr($loc, 0, 1) == "/") {
|
||||||
|
/* absolute path */
|
||||||
|
$fspos = strpos($url, "/");
|
||||||
|
if ($fspos) $loc = $prt.substr($url, 0, $fspos).$loc;
|
||||||
|
else $loc = $prt.$url.$loc;
|
||||||
|
} else {
|
||||||
|
/* relative path */
|
||||||
|
$pp = $prt;
|
||||||
|
while (1) {
|
||||||
|
$xpos = strpos($url, "/");
|
||||||
|
if ($xpos === false) break;
|
||||||
|
$apos = strpos($url, "?");
|
||||||
|
if ($apos !== false && $apos < $xpos) break;
|
||||||
|
$apos = strpos($url, "&");
|
||||||
|
if ($apos !== false && $apos < $xpos) break;
|
||||||
|
$pp .= substr($url, 0, $xpos+1);
|
||||||
|
$url = substr($url, $xpos+1);
|
||||||
|
}
|
||||||
|
$loc = $pp.$loc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $loc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -144,4 +172,3 @@ class Auth_Yadis_HTTPFetcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -387,11 +387,11 @@ class Auth_Yadis_Discovery {
|
|||||||
* @param string $session_key_suffix The optional session key
|
* @param string $session_key_suffix The optional session key
|
||||||
* suffix override.
|
* suffix override.
|
||||||
*/
|
*/
|
||||||
function Auth_Yadis_Discovery(&$session, $url,
|
function Auth_Yadis_Discovery($session, $url,
|
||||||
$session_key_suffix = null)
|
$session_key_suffix = null)
|
||||||
{
|
{
|
||||||
/// Initialize a discovery object
|
/// Initialize a discovery object
|
||||||
$this->session =& $session;
|
$this->session = $session;
|
||||||
$this->url = $url;
|
$this->url = $url;
|
||||||
if ($session_key_suffix === null) {
|
if ($session_key_suffix === null) {
|
||||||
$session_key_suffix = $this->DEFAULT_SUFFIX;
|
$session_key_suffix = $this->DEFAULT_SUFFIX;
|
||||||
@ -405,7 +405,7 @@ class Auth_Yadis_Discovery {
|
|||||||
* Return the next authentication service for the pair of
|
* Return the next authentication service for the pair of
|
||||||
* user_input and session. This function handles fallback.
|
* user_input and session. This function handles fallback.
|
||||||
*/
|
*/
|
||||||
function getNextService($discover_cb, &$fetcher)
|
function getNextService($discover_cb, $fetcher)
|
||||||
{
|
{
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
if (!$manager || (!$manager->services)) {
|
if (!$manager || (!$manager->services)) {
|
||||||
@ -413,7 +413,7 @@ class Auth_Yadis_Discovery {
|
|||||||
|
|
||||||
list($yadis_url, $services) = call_user_func($discover_cb,
|
list($yadis_url, $services) = call_user_func($discover_cb,
|
||||||
$this->url,
|
$this->url,
|
||||||
$fetcher);
|
&$fetcher);
|
||||||
|
|
||||||
$manager = $this->createManager($services, $yadis_url);
|
$manager = $this->createManager($services, $yadis_url);
|
||||||
}
|
}
|
||||||
@ -466,7 +466,7 @@ class Auth_Yadis_Discovery {
|
|||||||
* @param $force True if the manager should be returned regardless
|
* @param $force True if the manager should be returned regardless
|
||||||
* of whether it's a manager for $this->url.
|
* of whether it's a manager for $this->url.
|
||||||
*/
|
*/
|
||||||
function &getManager($force=false)
|
function getManager($force=false)
|
||||||
{
|
{
|
||||||
// Extract the YadisServiceManager for this object's URL and
|
// Extract the YadisServiceManager for this object's URL and
|
||||||
// suffix from the session.
|
// suffix from the session.
|
||||||
@ -481,16 +481,13 @@ class Auth_Yadis_Discovery {
|
|||||||
|
|
||||||
if ($manager && ($manager->forURL($this->url) || $force)) {
|
if ($manager && ($manager->forURL($this->url) || $force)) {
|
||||||
return $manager;
|
return $manager;
|
||||||
} else {
|
|
||||||
$unused = null;
|
|
||||||
return $unused;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function &createManager($services, $yadis_url = null)
|
function createManager($services, $yadis_url = null)
|
||||||
{
|
{
|
||||||
$key = $this->getSessionKey();
|
$key = $this->getSessionKey();
|
||||||
if ($this->getManager()) {
|
if ($this->getManager()) {
|
||||||
@ -504,10 +501,6 @@ class Auth_Yadis_Discovery {
|
|||||||
$this->session->set($this->session_key,
|
$this->session->set($this->session_key,
|
||||||
serialize($loader->toSession($manager)));
|
serialize($loader->toSession($manager)));
|
||||||
return $manager;
|
return $manager;
|
||||||
} else {
|
|
||||||
// Oh, PHP.
|
|
||||||
$unused = null;
|
|
||||||
return $unused;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -526,4 +519,3 @@ class Auth_Yadis_Discovery {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -56,4 +56,3 @@ function Auth_Yadis_startswith($s, $stuff)
|
|||||||
return strpos($s, $stuff) === 0;
|
return strpos($s, $stuff) === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -109,9 +109,9 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
curl_setopt($c, CURLOPT_WRITEFUNCTION,
|
curl_setopt($c, CURLOPT_WRITEFUNCTION,
|
||||||
array(&$this, "_writeData"));
|
array($this, "_writeData"));
|
||||||
curl_setopt($c, CURLOPT_HEADERFUNCTION,
|
curl_setopt($c, CURLOPT_HEADERFUNCTION,
|
||||||
array(&$this, "_writeHeader"));
|
array($this, "_writeHeader"));
|
||||||
|
|
||||||
if ($extra_headers) {
|
if ($extra_headers) {
|
||||||
curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers);
|
curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers);
|
||||||
@ -128,6 +128,10 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
curl_setopt($c, CURLOPT_TIMEOUT, $off);
|
curl_setopt($c, CURLOPT_TIMEOUT, $off);
|
||||||
curl_setopt($c, CURLOPT_URL, $url);
|
curl_setopt($c, CURLOPT_URL, $url);
|
||||||
|
|
||||||
|
if (defined('Auth_OpenID_VERIFY_HOST')) {
|
||||||
|
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
|
||||||
|
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
|
||||||
|
}
|
||||||
curl_exec($c);
|
curl_exec($c);
|
||||||
|
|
||||||
$code = curl_getinfo($c, CURLINFO_HTTP_CODE);
|
$code = curl_getinfo($c, CURLINFO_HTTP_CODE);
|
||||||
@ -142,12 +146,17 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($code, array(301, 302, 303, 307))) {
|
if (in_array($code, array(301, 302, 303, 307))) {
|
||||||
$url = $this->_findRedirect($headers);
|
$url = $this->_findRedirect($headers, $url);
|
||||||
$redir = true;
|
$redir = true;
|
||||||
} else {
|
} else {
|
||||||
$redir = false;
|
$redir = false;
|
||||||
curl_close($c);
|
curl_close($c);
|
||||||
|
|
||||||
|
if (defined('Auth_OpenID_VERIFY_HOST') &&
|
||||||
|
$this->isHTTPS($url)) {
|
||||||
|
Auth_OpenID::log('OpenID: Verified SSL host %s using '.
|
||||||
|
'curl/get', $url);
|
||||||
|
}
|
||||||
$new_headers = array();
|
$new_headers = array();
|
||||||
|
|
||||||
foreach ($headers as $header) {
|
foreach ($headers as $header) {
|
||||||
@ -190,7 +199,12 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
|
curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
|
||||||
curl_setopt($c, CURLOPT_URL, $url);
|
curl_setopt($c, CURLOPT_URL, $url);
|
||||||
curl_setopt($c, CURLOPT_WRITEFUNCTION,
|
curl_setopt($c, CURLOPT_WRITEFUNCTION,
|
||||||
array(&$this, "_writeData"));
|
array($this, "_writeData"));
|
||||||
|
|
||||||
|
if (defined('Auth_OpenID_VERIFY_HOST')) {
|
||||||
|
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
|
||||||
|
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
|
||||||
|
}
|
||||||
|
|
||||||
curl_exec($c);
|
curl_exec($c);
|
||||||
|
|
||||||
@ -198,9 +212,15 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
|
|
||||||
if (!$code) {
|
if (!$code) {
|
||||||
Auth_OpenID::log("Got no response code when fetching %s", $url);
|
Auth_OpenID::log("Got no response code when fetching %s", $url);
|
||||||
|
Auth_OpenID::log("CURL error (%s): %s",
|
||||||
|
curl_errno($c), curl_error($c));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined('Auth_OpenID_VERIFY_HOST') && $this->isHTTPS($url)) {
|
||||||
|
Auth_OpenID::log('OpenID: Verified SSL host %s using '.
|
||||||
|
'curl/post', $url);
|
||||||
|
}
|
||||||
$body = $this->data;
|
$body = $this->data;
|
||||||
|
|
||||||
curl_close($c);
|
curl_close($c);
|
||||||
@ -223,4 +243,3 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -256,4 +256,3 @@ class Auth_Yadis_ParseHTML {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -122,7 +122,7 @@ class Auth_Yadis_PlainHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
$code = $http_code[1];
|
$code = $http_code[1];
|
||||||
|
|
||||||
if (in_array($code, array('301', '302'))) {
|
if (in_array($code, array('301', '302'))) {
|
||||||
$url = $this->_findRedirect($headers);
|
$url = $this->_findRedirect($headers, $url);
|
||||||
$redir = true;
|
$redir = true;
|
||||||
} else {
|
} else {
|
||||||
$redir = false;
|
$redir = false;
|
||||||
@ -246,4 +246,3 @@ class Auth_Yadis_PlainHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -310,20 +310,16 @@ $__Auth_Yadis_defaultParser = null;
|
|||||||
* @param Auth_Yadis_XMLParser $parser An instance of a
|
* @param Auth_Yadis_XMLParser $parser An instance of a
|
||||||
* Auth_Yadis_XMLParser subclass.
|
* Auth_Yadis_XMLParser subclass.
|
||||||
*/
|
*/
|
||||||
function Auth_Yadis_setDefaultParser(&$parser)
|
function Auth_Yadis_setDefaultParser($parser)
|
||||||
{
|
{
|
||||||
global $__Auth_Yadis_defaultParser;
|
global $__Auth_Yadis_defaultParser;
|
||||||
$__Auth_Yadis_defaultParser =& $parser;
|
$__Auth_Yadis_defaultParser = $parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
function Auth_Yadis_getSupportedExtensions()
|
function Auth_Yadis_getSupportedExtensions()
|
||||||
{
|
{
|
||||||
return array(
|
return array('dom' => 'Auth_Yadis_dom',
|
||||||
'dom' => array('classname' => 'Auth_Yadis_dom',
|
'domxml' => 'Auth_Yadis_domxml');
|
||||||
'libname' => array('dom.so', 'dom.dll')),
|
|
||||||
'domxml' => array('classname' => 'Auth_Yadis_domxml',
|
|
||||||
'libname' => array('domxml.so', 'php_domxml.dll')),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -332,43 +328,25 @@ function Auth_Yadis_getSupportedExtensions()
|
|||||||
* Auth_Yadis_setDefaultParser has been called, the parser used in
|
* Auth_Yadis_setDefaultParser has been called, the parser used in
|
||||||
* that call will be returned instead.
|
* that call will be returned instead.
|
||||||
*/
|
*/
|
||||||
function &Auth_Yadis_getXMLParser()
|
function Auth_Yadis_getXMLParser()
|
||||||
{
|
{
|
||||||
global $__Auth_Yadis_defaultParser;
|
global $__Auth_Yadis_defaultParser;
|
||||||
|
|
||||||
if (isset($__Auth_Yadis_defaultParser)) {
|
if (isset($__Auth_Yadis_defaultParser)) {
|
||||||
return $__Auth_Yadis_defaultParser;
|
return $__Auth_Yadis_defaultParser;
|
||||||
}
|
}
|
||||||
|
|
||||||
$p = null;
|
foreach(Auth_Yadis_getSupportedExtensions() as $extension => $classname)
|
||||||
$classname = null;
|
{
|
||||||
|
if (extension_loaded($extension))
|
||||||
$extensions = Auth_Yadis_getSupportedExtensions();
|
{
|
||||||
|
$p = new $classname();
|
||||||
// Return a wrapper for the resident implementation, if any.
|
|
||||||
foreach ($extensions as $name => $params) {
|
|
||||||
if (!extension_loaded($name)) {
|
|
||||||
foreach ($params['libname'] as $libname) {
|
|
||||||
if (@dl($libname)) {
|
|
||||||
$classname = $params['classname'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$classname = $params['classname'];
|
|
||||||
}
|
|
||||||
if (isset($classname)) {
|
|
||||||
$p = new $classname();
|
|
||||||
return $p;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($p)) {
|
|
||||||
trigger_error('No XML parser was found', E_USER_ERROR);
|
|
||||||
} else {
|
|
||||||
Auth_Yadis_setDefaultParser($p);
|
Auth_Yadis_setDefaultParser($p);
|
||||||
|
return $p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $p;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -255,11 +255,11 @@ class Auth_Yadis_XRDS {
|
|||||||
* Instantiate a Auth_Yadis_XRDS object. Requires an XPath
|
* Instantiate a Auth_Yadis_XRDS object. Requires an XPath
|
||||||
* instance which has been used to parse a valid XRDS document.
|
* instance which has been used to parse a valid XRDS document.
|
||||||
*/
|
*/
|
||||||
function Auth_Yadis_XRDS(&$xmlParser, &$xrdNodes)
|
function Auth_Yadis_XRDS($xmlParser, $xrdNodes)
|
||||||
{
|
{
|
||||||
$this->parser =& $xmlParser;
|
$this->parser = $xmlParser;
|
||||||
$this->xrdNode = $xrdNodes[count($xrdNodes) - 1];
|
$this->xrdNode = $xrdNodes[count($xrdNodes) - 1];
|
||||||
$this->allXrdNodes =& $xrdNodes;
|
$this->allXrdNodes = $xrdNodes;
|
||||||
$this->serviceList = array();
|
$this->serviceList = array();
|
||||||
$this->_parse();
|
$this->_parse();
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ class Auth_Yadis_XRDS {
|
|||||||
* @return mixed $xrds An instance of Auth_Yadis_XRDS or null,
|
* @return mixed $xrds An instance of Auth_Yadis_XRDS or null,
|
||||||
* depending on the validity of $xml_string
|
* depending on the validity of $xml_string
|
||||||
*/
|
*/
|
||||||
function &parseXRDS($xml_string, $extra_ns_map = null)
|
static function parseXRDS($xml_string, $extra_ns_map = null)
|
||||||
{
|
{
|
||||||
$_null = null;
|
$_null = null;
|
||||||
|
|
||||||
@ -352,9 +352,9 @@ class Auth_Yadis_XRDS {
|
|||||||
$services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
|
$services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
|
||||||
|
|
||||||
foreach ($services as $node) {
|
foreach ($services as $node) {
|
||||||
$s =& new Auth_Yadis_Service();
|
$s = new Auth_Yadis_Service();
|
||||||
$s->element = $node;
|
$s->element = $node;
|
||||||
$s->parser =& $this->parser;
|
$s->parser = $this->parser;
|
||||||
|
|
||||||
$priority = $s->getPriority();
|
$priority = $s->getPriority();
|
||||||
|
|
||||||
@ -428,7 +428,8 @@ class Auth_Yadis_XRDS {
|
|||||||
$matches = 0;
|
$matches = 0;
|
||||||
|
|
||||||
foreach ($filters as $filter) {
|
foreach ($filters as $filter) {
|
||||||
if (call_user_func_array($filter, array($service))) {
|
|
||||||
|
if (call_user_func_array($filter, array(&$service))) {
|
||||||
$matches++;
|
$matches++;
|
||||||
|
|
||||||
if ($filter_mode == SERVICES_YADIS_MATCH_ANY) {
|
if ($filter_mode == SERVICES_YADIS_MATCH_ANY) {
|
||||||
@ -475,4 +476,3 @@ class Auth_Yadis_XRDS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -190,7 +190,7 @@ function Auth_Yadis_getCanonicalID($iname, $xrds)
|
|||||||
|
|
||||||
// Now nodes are in reverse order.
|
// Now nodes are in reverse order.
|
||||||
$xrd_list = array_reverse($xrds->allXrdNodes);
|
$xrd_list = array_reverse($xrds->allXrdNodes);
|
||||||
$parser =& $xrds->parser;
|
$parser = $xrds->parser;
|
||||||
$node = $xrd_list[0];
|
$node = $xrd_list[0];
|
||||||
|
|
||||||
$canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
|
$canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
|
||||||
@ -231,4 +231,4 @@ function Auth_Yadis_getCanonicalID($iname, $xrds)
|
|||||||
return $canonicalID;
|
return $canonicalID;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -8,9 +8,9 @@ require_once 'Auth/Yadis/XRDS.php';
|
|||||||
require_once 'Auth/Yadis/XRI.php';
|
require_once 'Auth/Yadis/XRI.php';
|
||||||
|
|
||||||
class Auth_Yadis_ProxyResolver {
|
class Auth_Yadis_ProxyResolver {
|
||||||
function Auth_Yadis_ProxyResolver(&$fetcher, $proxy_url = null)
|
function Auth_Yadis_ProxyResolver($fetcher, $proxy_url = null)
|
||||||
{
|
{
|
||||||
$this->fetcher =& $fetcher;
|
$this->fetcher = $fetcher;
|
||||||
$this->proxy_url = $proxy_url;
|
$this->proxy_url = $proxy_url;
|
||||||
if (!$this->proxy_url) {
|
if (!$this->proxy_url) {
|
||||||
$this->proxy_url = Auth_Yadis_getDefaultProxy();
|
$this->proxy_url = Auth_Yadis_getDefaultProxy();
|
||||||
@ -69,4 +69,4 @@ class Auth_Yadis_ProxyResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -105,7 +105,7 @@ class Auth_Yadis_DiscoveryResult {
|
|||||||
function usedYadisLocation()
|
function usedYadisLocation()
|
||||||
{
|
{
|
||||||
// Was the Yadis protocol's indirection used?
|
// Was the Yadis protocol's indirection used?
|
||||||
return $this->normalized_uri != $this->xrds_uri;
|
return ($this->xrds_uri && $this->normalized_uri != $this->xrds_uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isXRDS()
|
function isXRDS()
|
||||||
@ -141,7 +141,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
|
|||||||
}
|
}
|
||||||
|
|
||||||
$yadis_result = call_user_func_array($discover_func,
|
$yadis_result = call_user_func_array($discover_func,
|
||||||
array($input_url, $fetcher));
|
array($input_url, &$fetcher));
|
||||||
|
|
||||||
if ($yadis_result === null) {
|
if ($yadis_result === null) {
|
||||||
return array($input_url, array());
|
return array($input_url, array());
|
||||||
@ -196,7 +196,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
|
|||||||
* The filter functions (whose names appear in the array passed to
|
* The filter functions (whose names appear in the array passed to
|
||||||
* services()) take the following form:
|
* services()) take the following form:
|
||||||
*
|
*
|
||||||
* <pre> function myFilter(&$service) {
|
* <pre> function myFilter($service) {
|
||||||
* // Query $service object here. Return true if the service
|
* // Query $service object here. Return true if the service
|
||||||
* // matches your query; false if not.
|
* // matches your query; false if not.
|
||||||
* }</pre>
|
* }</pre>
|
||||||
@ -207,7 +207,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
|
|||||||
* this contrived example):
|
* this contrived example):
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* function URIMatcher(&$service) {
|
* function URIMatcher($service) {
|
||||||
* foreach ($service->getElements('xrd:URI') as $uri) {
|
* foreach ($service->getElements('xrd:URI') as $uri) {
|
||||||
* if (preg_match("/some_pattern/",
|
* if (preg_match("/some_pattern/",
|
||||||
* $service->parser->content($uri))) {
|
* $service->parser->content($uri))) {
|
||||||
@ -250,7 +250,7 @@ class Auth_Yadis_Yadis {
|
|||||||
* If Auth_Yadis_CURL_OVERRIDE is defined, this method will always
|
* If Auth_Yadis_CURL_OVERRIDE is defined, this method will always
|
||||||
* return a {@link Auth_Yadis_PlainHTTPFetcher}.
|
* return a {@link Auth_Yadis_PlainHTTPFetcher}.
|
||||||
*/
|
*/
|
||||||
function getHTTPFetcher($timeout = 20)
|
static function getHTTPFetcher($timeout = 20)
|
||||||
{
|
{
|
||||||
if (Auth_Yadis_Yadis::curlPresent() &&
|
if (Auth_Yadis_Yadis::curlPresent() &&
|
||||||
(!defined('Auth_Yadis_CURL_OVERRIDE'))) {
|
(!defined('Auth_Yadis_CURL_OVERRIDE'))) {
|
||||||
@ -261,7 +261,7 @@ class Auth_Yadis_Yadis {
|
|||||||
return $fetcher;
|
return $fetcher;
|
||||||
}
|
}
|
||||||
|
|
||||||
function curlPresent()
|
static function curlPresent()
|
||||||
{
|
{
|
||||||
return function_exists('curl_init');
|
return function_exists('curl_init');
|
||||||
}
|
}
|
||||||
@ -269,7 +269,7 @@ class Auth_Yadis_Yadis {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _getHeader($header_list, $names)
|
static function _getHeader($header_list, $names)
|
||||||
{
|
{
|
||||||
foreach ($header_list as $name => $value) {
|
foreach ($header_list as $name => $value) {
|
||||||
foreach ($names as $n) {
|
foreach ($names as $n) {
|
||||||
@ -285,7 +285,7 @@ class Auth_Yadis_Yadis {
|
|||||||
/**
|
/**
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _getContentType($content_type_header)
|
static function _getContentType($content_type_header)
|
||||||
{
|
{
|
||||||
if ($content_type_header) {
|
if ($content_type_header) {
|
||||||
$parts = explode(";", $content_type_header);
|
$parts = explode(";", $content_type_header);
|
||||||
@ -317,7 +317,7 @@ class Auth_Yadis_Yadis {
|
|||||||
* Auth_Yadis_Yadis, depending on whether the discovery
|
* Auth_Yadis_Yadis, depending on whether the discovery
|
||||||
* succeeded.
|
* succeeded.
|
||||||
*/
|
*/
|
||||||
function discover($uri, &$fetcher,
|
static function discover($uri, $fetcher,
|
||||||
$extra_ns_map = null, $timeout = 20)
|
$extra_ns_map = null, $timeout = 20)
|
||||||
{
|
{
|
||||||
$result = new Auth_Yadis_DiscoveryResult($uri);
|
$result = new Auth_Yadis_DiscoveryResult($uri);
|
||||||
@ -379,4 +379,4 @@ class Auth_Yadis_Yadis {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
@ -84,7 +84,7 @@ var SN = { // StatusNet
|
|||||||
form.find('#'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength);
|
form.find('#'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('body')[0].id != 'conversation' && window.location.hash.length === 0) {
|
if ($('body')[0].id != 'conversation' && window.location.hash.length === 0 && $(window).scrollTop() == 0) {
|
||||||
form.find('textarea').focus();
|
form.find('textarea').focus();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -271,11 +271,13 @@ class ApiAction extends Action
|
|||||||
|
|
||||||
// Is the requesting user following this user?
|
// Is the requesting user following this user?
|
||||||
$twitter_user['following'] = false;
|
$twitter_user['following'] = false;
|
||||||
|
$twitter_user['statusnet:blocking'] = false;
|
||||||
$twitter_user['notifications'] = false;
|
$twitter_user['notifications'] = false;
|
||||||
|
|
||||||
if (isset($this->auth_user)) {
|
if (isset($this->auth_user)) {
|
||||||
|
|
||||||
$twitter_user['following'] = $this->auth_user->isSubscribed($profile);
|
$twitter_user['following'] = $this->auth_user->isSubscribed($profile);
|
||||||
|
$twitter_user['statusnet:blocking'] = $this->auth_user->hasBlocked($profile);
|
||||||
|
|
||||||
// Notifications on?
|
// Notifications on?
|
||||||
$sub = Subscription::pkeyGet(array('subscriber' =>
|
$sub = Subscription::pkeyGet(array('subscriber' =>
|
||||||
@ -409,20 +411,32 @@ class ApiAction extends Action
|
|||||||
|
|
||||||
function twitterGroupArray($group)
|
function twitterGroupArray($group)
|
||||||
{
|
{
|
||||||
$twitter_group=array();
|
$twitter_group = array();
|
||||||
$twitter_group['id']=$group->id;
|
|
||||||
$twitter_group['url']=$group->permalink();
|
$twitter_group['id'] = $group->id;
|
||||||
$twitter_group['nickname']=$group->nickname;
|
$twitter_group['url'] = $group->permalink();
|
||||||
$twitter_group['fullname']=$group->fullname;
|
$twitter_group['nickname'] = $group->nickname;
|
||||||
$twitter_group['original_logo']=$group->original_logo;
|
$twitter_group['fullname'] = $group->fullname;
|
||||||
$twitter_group['homepage_logo']=$group->homepage_logo;
|
|
||||||
$twitter_group['stream_logo']=$group->stream_logo;
|
if (isset($this->auth_user)) {
|
||||||
$twitter_group['mini_logo']=$group->mini_logo;
|
$twitter_group['member'] = $this->auth_user->isMember($group);
|
||||||
$twitter_group['homepage']=$group->homepage;
|
$twitter_group['blocked'] = Group_block::isBlocked(
|
||||||
$twitter_group['description']=$group->description;
|
$group,
|
||||||
$twitter_group['location']=$group->location;
|
$this->auth_user->getProfile()
|
||||||
$twitter_group['created']=$this->dateTwitter($group->created);
|
);
|
||||||
$twitter_group['modified']=$this->dateTwitter($group->modified);
|
}
|
||||||
|
|
||||||
|
$twitter_group['member_count'] = $group->getMemberCount();
|
||||||
|
$twitter_group['original_logo'] = $group->original_logo;
|
||||||
|
$twitter_group['homepage_logo'] = $group->homepage_logo;
|
||||||
|
$twitter_group['stream_logo'] = $group->stream_logo;
|
||||||
|
$twitter_group['mini_logo'] = $group->mini_logo;
|
||||||
|
$twitter_group['homepage'] = $group->homepage;
|
||||||
|
$twitter_group['description'] = $group->description;
|
||||||
|
$twitter_group['location'] = $group->location;
|
||||||
|
$twitter_group['created'] = $this->dateTwitter($group->created);
|
||||||
|
$twitter_group['modified'] = $this->dateTwitter($group->modified);
|
||||||
|
|
||||||
return $twitter_group;
|
return $twitter_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1360,6 +1374,34 @@ class ApiAction extends Action
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTargetProfile($id)
|
||||||
|
{
|
||||||
|
if (empty($id)) {
|
||||||
|
|
||||||
|
// Twitter supports these other ways of passing the user ID
|
||||||
|
if (is_numeric($this->arg('id'))) {
|
||||||
|
return Profile::staticGet($this->arg('id'));
|
||||||
|
} else if ($this->arg('id')) {
|
||||||
|
$nickname = common_canonical_nickname($this->arg('id'));
|
||||||
|
return Profile::staticGet('nickname', $nickname);
|
||||||
|
} else if ($this->arg('user_id')) {
|
||||||
|
// This is to ensure that a non-numeric user_id still
|
||||||
|
// overrides screen_name even if it doesn't get used
|
||||||
|
if (is_numeric($this->arg('user_id'))) {
|
||||||
|
return Profile::staticGet('id', $this->arg('user_id'));
|
||||||
|
}
|
||||||
|
} else if ($this->arg('screen_name')) {
|
||||||
|
$nickname = common_canonical_nickname($this->arg('screen_name'));
|
||||||
|
return Profile::staticGet('nickname', $nickname);
|
||||||
|
}
|
||||||
|
} else if (is_numeric($id)) {
|
||||||
|
return Profile::staticGet($id);
|
||||||
|
} else {
|
||||||
|
$nickname = common_canonical_nickname($id);
|
||||||
|
return Profile::staticGet('nickname', $nickname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getTargetGroup($id)
|
function getTargetGroup($id)
|
||||||
{
|
{
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
|
@ -96,4 +96,23 @@ class AtomGroupNoticeFeed extends AtomNoticeFeed
|
|||||||
return $this->group;
|
return $this->group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initFeed()
|
||||||
|
{
|
||||||
|
parent::initFeed();
|
||||||
|
|
||||||
|
$attrs = array();
|
||||||
|
|
||||||
|
if (!empty($this->cur)) {
|
||||||
|
$attrs['member'] = $this->cur->isMember($this->group)
|
||||||
|
? 'true' : 'false';
|
||||||
|
$attrs['blocked'] = Group_block::isBlocked(
|
||||||
|
$this->group,
|
||||||
|
$this->cur->getProfile()
|
||||||
|
) ? 'true' : 'false';
|
||||||
|
}
|
||||||
|
|
||||||
|
$attrs['member_count'] = $this->group->getMemberCount();
|
||||||
|
|
||||||
|
$this->element('statusnet:group_info', $attrs, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ class AtomNoticeFeed extends Atom10Feed
|
|||||||
|
|
||||||
$this->addNamespace(
|
$this->addNamespace(
|
||||||
'statusnet',
|
'statusnet',
|
||||||
'http://status.net/ont/'
|
'http://status.net/schema/api/1/'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,8 +76,8 @@ class AvatarLink
|
|||||||
$alink = new AvatarLink();
|
$alink = new AvatarLink();
|
||||||
$alink->url = $filename;
|
$alink->url = $filename;
|
||||||
$alink->height = $size;
|
$alink->height = $size;
|
||||||
|
$alink->width = $size;
|
||||||
if (!empty($filename)) {
|
if (!empty($filename)) {
|
||||||
$alink->width = $size;
|
|
||||||
$alink->type = self::mediatype($filename);
|
$alink->type = self::mediatype($filename);
|
||||||
} else {
|
} else {
|
||||||
$alink->url = User_group::defaultLogo($size);
|
$alink->url = User_group::defaultLogo($size);
|
||||||
|
@ -22,10 +22,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
|||||||
//exit with 200 response, if this is checking fancy from the installer
|
//exit with 200 response, if this is checking fancy from the installer
|
||||||
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
|
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
|
||||||
|
|
||||||
define('STATUSNET_VERSION', '0.9.2');
|
define('STATUSNET_VERSION', '0.9.3');
|
||||||
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
|
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
|
||||||
|
|
||||||
define('STATUSNET_CODENAME', 'King of Birds');
|
define('STATUSNET_CODENAME', 'Half a World Away');
|
||||||
|
|
||||||
define('AVATAR_PROFILE_SIZE', 96);
|
define('AVATAR_PROFILE_SIZE', 96);
|
||||||
define('AVATAR_STREAM_SIZE', 48);
|
define('AVATAR_STREAM_SIZE', 48);
|
||||||
|
@ -135,9 +135,7 @@ class DBQueueManager extends QueueManager
|
|||||||
if (empty($qi->claimed)) {
|
if (empty($qi->claimed)) {
|
||||||
$this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item");
|
$this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item");
|
||||||
} else {
|
} else {
|
||||||
$orig = clone($qi);
|
$qi->releaseClaim();
|
||||||
$qi->claimed = null;
|
|
||||||
$qi->update($orig);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->stats('error', $queue);
|
$this->stats('error', $queue);
|
||||||
|
@ -180,7 +180,8 @@ class MediaFile
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name']);
|
$mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name'],
|
||||||
|
$_FILES[$param]['name']);
|
||||||
|
|
||||||
$filename = null;
|
$filename = null;
|
||||||
|
|
||||||
@ -241,19 +242,41 @@ class MediaFile
|
|||||||
return new MediaFile($user, $filename, $mimetype);
|
return new MediaFile($user, $filename, $mimetype);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function getUploadedFileType($f) {
|
/**
|
||||||
|
* Attempt to identify the content type of a given file.
|
||||||
|
*
|
||||||
|
* @param mixed $f file handle resource, or filesystem path as string
|
||||||
|
* @param string $originalFilename (optional) for extension-based detection
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* @fixme is this an internal or public method? It's called from GetFileAction
|
||||||
|
* @fixme this seems to tie a front-end error message in, kinda confusing
|
||||||
|
* @fixme this looks like it could return a PEAR_Error in some cases, if
|
||||||
|
* type can't be identified and $config['attachments']['supported'] is true
|
||||||
|
*
|
||||||
|
* @throws ClientException if type is known, but not supported for local uploads
|
||||||
|
*/
|
||||||
|
static function getUploadedFileType($f, $originalFilename=false) {
|
||||||
require_once 'MIME/Type.php';
|
require_once 'MIME/Type.php';
|
||||||
|
require_once 'MIME/Type/Extension.php';
|
||||||
|
$mte = new MIME_Type_Extension();
|
||||||
|
|
||||||
$cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd');
|
$cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd');
|
||||||
$cmd = common_config('attachments', 'filecommand');
|
$cmd = common_config('attachments', 'filecommand');
|
||||||
|
|
||||||
$filetype = null;
|
$filetype = null;
|
||||||
|
|
||||||
|
// If we couldn't get a clear type from the file extension,
|
||||||
|
// we'll go ahead and try checking the content. Content checks
|
||||||
|
// are unambiguous for most image files, but nearly useless
|
||||||
|
// for office document formats.
|
||||||
|
|
||||||
if (is_string($f)) {
|
if (is_string($f)) {
|
||||||
|
|
||||||
// assuming a filename
|
// assuming a filename
|
||||||
|
|
||||||
$filetype = MIME_Type::autoDetect($f);
|
$filetype = MIME_Type::autoDetect($f);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// assuming a filehandle
|
// assuming a filehandle
|
||||||
@ -262,7 +285,32 @@ class MediaFile
|
|||||||
$filetype = MIME_Type::autoDetect($stream['uri']);
|
$filetype = MIME_Type::autoDetect($stream['uri']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (common_config('attachments', 'supported') === true || in_array($filetype, common_config('attachments', 'supported'))) {
|
// The content-based sources for MIME_Type::autoDetect()
|
||||||
|
// are wildly unreliable for office-type documents. If we've
|
||||||
|
// gotten an unclear reponse back or just couldn't identify it,
|
||||||
|
// we'll try detecting a type from its extension...
|
||||||
|
$unclearTypes = array('application/octet-stream',
|
||||||
|
'application/vnd.ms-office',
|
||||||
|
'application/zip');
|
||||||
|
|
||||||
|
if ($originalFilename && (!$filetype || in_array($filetype, $unclearTypes))) {
|
||||||
|
$type = $mte->getMIMEType($originalFilename);
|
||||||
|
if (is_string($type)) {
|
||||||
|
$filetype = $type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$supported = common_config('attachments', 'supported');
|
||||||
|
if (is_array($supported)) {
|
||||||
|
// Normalize extensions to mime types
|
||||||
|
foreach ($supported as $i => $entry) {
|
||||||
|
if (strpos($entry, '/') === false) {
|
||||||
|
common_log(LOG_INFO, "sample.$entry");
|
||||||
|
$supported[$i] = $mte->getMIMEType("sample.$entry");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($supported === true || in_array($filetype, $supported)) {
|
||||||
return $filetype;
|
return $filetype;
|
||||||
}
|
}
|
||||||
$media = MIME_Type::getMedia($filetype);
|
$media = MIME_Type::getMedia($filetype);
|
||||||
|
@ -463,12 +463,14 @@ class NoticeListItem extends Widget
|
|||||||
$this->out->elementEnd('span');
|
$this->out->elementEnd('span');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param number $dec decimal degrees
|
||||||
|
* @return array split into 'deg', 'min', and 'sec'
|
||||||
|
*/
|
||||||
function decimalDegreesToDMS($dec)
|
function decimalDegreesToDMS($dec)
|
||||||
{
|
{
|
||||||
|
$deg = intval($dec);
|
||||||
$vars = explode(".",$dec);
|
$tempma = abs($dec) - abs($deg);
|
||||||
$deg = $vars[0];
|
|
||||||
$tempma = "0.".$vars[1];
|
|
||||||
|
|
||||||
$tempma = $tempma * 3600;
|
$tempma = $tempma * 3600;
|
||||||
$min = floor($tempma / 60);
|
$min = floor($tempma / 60);
|
||||||
|
@ -667,9 +667,9 @@ class Router
|
|||||||
);
|
);
|
||||||
|
|
||||||
// search
|
// search
|
||||||
$m->connect('api/search.atom', array('action' => 'twitapisearchatom'));
|
$m->connect('api/search.atom', array('action' => 'ApiSearchAtom'));
|
||||||
$m->connect('api/search.json', array('action' => 'twitapisearchjson'));
|
$m->connect('api/search.json', array('action' => 'ApiSearchJSON'));
|
||||||
$m->connect('api/trends.json', array('action' => 'twitapitrends'));
|
$m->connect('api/trends.json', array('action' => 'ApiTrends'));
|
||||||
|
|
||||||
$m->connect('api/oauth/request_token',
|
$m->connect('api/oauth/request_token',
|
||||||
array('action' => 'apioauthrequesttoken'));
|
array('action' => 'apioauthrequesttoken'));
|
||||||
|
@ -55,10 +55,10 @@ class ThemeUploader
|
|||||||
public static function fromUpload($name)
|
public static function fromUpload($name)
|
||||||
{
|
{
|
||||||
if (!isset($_FILES[$name]['error'])) {
|
if (!isset($_FILES[$name]['error'])) {
|
||||||
throw new ServerException(_("Theme upload missing or failed."));
|
throw new ServerException(_("The theme file is missing or the upload failed."));
|
||||||
}
|
}
|
||||||
if ($_FILES[$name]['error'] != UPLOAD_ERR_OK) {
|
if ($_FILES[$name]['error'] != UPLOAD_ERR_OK) {
|
||||||
throw new ServerException(_("Theme upload missing or failed."));
|
throw new ServerException(_("The theme file is missing or the upload failed."));
|
||||||
}
|
}
|
||||||
return new ThemeUploader($_FILES[$name]['tmp_name']);
|
return new ThemeUploader($_FILES[$name]['tmp_name']);
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:33+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:02:38+0000\n"
|
||||||
"Language-Team: Afrikaans\n"
|
"Language-Team: Afrikaans\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: af\n"
|
"X-Language-Code: af\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:37+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:02:42+0000\n"
|
||||||
"Language-Team: Arabic\n"
|
"Language-Team: Arabic\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ar\n"
|
"X-Language-Code: ar\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -11,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:44+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:02:48+0000\n"
|
||||||
"Language-Team: Egyptian Spoken Arabic\n"
|
"Language-Team: Egyptian Spoken Arabic\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: arz\n"
|
"X-Language-Code: arz\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:49+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:02:52+0000\n"
|
||||||
"Language-Team: Bulgarian\n"
|
"Language-Team: Bulgarian\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: bg\n"
|
"X-Language-Code: bg\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:54+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:02:56+0000\n"
|
||||||
"Language-Team: Dutch\n"
|
"Language-Team: Dutch\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: br\n"
|
"X-Language-Code: br\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -11,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:18:58+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:01+0000\n"
|
||||||
"Language-Team: Catalan\n"
|
"Language-Team: Catalan\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ca\n"
|
"X-Language-Code: ca\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1135,13 +1135,12 @@ msgid "Theme for the site."
|
|||||||
msgstr "Tema del lloc."
|
msgstr "Tema del lloc."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Tema del lloc"
|
msgstr "Tema personalitzat"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "Podeu pujar un tema personalitzat de l'StatusNet amb un arxiu ZIP."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1200,11 +1199,11 @@ msgstr "Enllaços"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avançat"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personalitzat"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6876,48 +6875,48 @@ msgstr "Cap"
|
|||||||
|
|
||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr "El servidor no pot gestionar la pujada de temes si no pot tractar ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Error del sistema en pujar el fitxer."
|
msgstr "La pujada del tema ha fallat o no hi és."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Error en actualitzar avatar."
|
msgstr "Ha fallat el desament del tema."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "El tema no és vàlid: l'estructura del directori no és correcta"
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"El tema pujat és massa gran; ha de tenir menys de %d bytes descomprimit."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "L'arxiu del tema no és vàlid: manca el fitxer de css / display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"El tema conté un fitxer o un nom de carpeta que no és vàlida. Feu servir "
|
||||||
|
"només lletres ASCII, dígits, caràcters de subratllat i el símbol de menys."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "El tema conté un tipus de fitxer «.%s», que no està permès."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "S'ha produït un error en actualitzar el perfil remot."
|
msgstr "S'ha produït un error en obrir l'arxiu del tema."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:03+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:06+0000\n"
|
||||||
"Language-Team: Czech\n"
|
"Language-Team: Czech\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: cs\n"
|
"X-Language-Code: cs\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Translation of StatusNet to German
|
# Translation of StatusNet to German
|
||||||
#
|
#
|
||||||
# Author@translatewiki.net: Bavatar
|
# Author@translatewiki.net: Bavatar
|
||||||
|
# Author@translatewiki.net: Brion
|
||||||
# Author@translatewiki.net: Lutzgh
|
# Author@translatewiki.net: Lutzgh
|
||||||
# Author@translatewiki.net: March
|
# Author@translatewiki.net: March
|
||||||
# Author@translatewiki.net: McDutchie
|
# Author@translatewiki.net: McDutchie
|
||||||
@ -17,11 +18,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:08+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:12+0000\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: de\n"
|
"X-Language-Code: de\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -706,7 +707,7 @@ msgstr "%1$s / Aktualisierungen erwähnen %2$s"
|
|||||||
#: actions/apitimelinementions.php:131
|
#: actions/apitimelinementions.php:131
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%1$s updates that reply to updates from %2$s / %3$s."
|
msgid "%1$s updates that reply to updates from %2$s / %3$s."
|
||||||
msgstr "Nachrichten von %1$, die auf Nachrichten von %2$ / %3$ antworten."
|
msgstr "Nachrichten von %1$s, die auf Nachrichten von %2$s / %3$s antworten."
|
||||||
|
|
||||||
#: actions/apitimelinepublic.php:197 actions/publicrss.php:103
|
#: actions/apitimelinepublic.php:197 actions/publicrss.php:103
|
||||||
#, php-format
|
#, php-format
|
||||||
@ -1208,11 +1209,11 @@ msgstr "Links"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Erweitert"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Eigene CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -2638,7 +2639,7 @@ msgstr "Profil-Einstellungen ansehen"
|
|||||||
|
|
||||||
#: actions/othersettings.php:123
|
#: actions/othersettings.php:123
|
||||||
msgid "Show or hide profile designs."
|
msgid "Show or hide profile designs."
|
||||||
msgstr "Prifil-Designs anzeigen oder verstecken."
|
msgstr "Profil-Designs anzeigen oder verstecken."
|
||||||
|
|
||||||
#: actions/othersettings.php:153
|
#: actions/othersettings.php:153
|
||||||
msgid "URL shortening service is too long (max 50 chars)."
|
msgid "URL shortening service is too long (max 50 chars)."
|
||||||
|
@ -11,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:12+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:17+0000\n"
|
||||||
"Language-Team: Greek\n"
|
"Language-Team: Greek\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: el\n"
|
"X-Language-Code: el\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -12,11 +12,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:18+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:21+0000\n"
|
||||||
"Language-Team: British English\n"
|
"Language-Team: British English\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: en-gb\n"
|
"X-Language-Code: en-gb\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Translation of StatusNet to Spanish
|
# Translation of StatusNet to Spanish
|
||||||
#
|
#
|
||||||
|
# Author@translatewiki.net: Brion
|
||||||
# Author@translatewiki.net: Crazymadlover
|
# Author@translatewiki.net: Crazymadlover
|
||||||
# Author@translatewiki.net: Locos epraix
|
# Author@translatewiki.net: Locos epraix
|
||||||
# Author@translatewiki.net: McDutchie
|
# Author@translatewiki.net: McDutchie
|
||||||
@ -15,11 +16,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:22+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:25+0000\n"
|
||||||
"Language-Team: Spanish\n"
|
"Language-Team: Spanish\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: es\n"
|
"X-Language-Code: es\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1135,13 +1136,12 @@ msgid "Theme for the site."
|
|||||||
msgstr "Tema para el sitio."
|
msgstr "Tema para el sitio."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Tema del sitio"
|
msgstr "Personalizar tema"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "Puedes subir un tema personalizado StatusNet como un archivo .ZIP."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1201,11 +1201,11 @@ msgstr "Vínculos"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avanzado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Personalizar CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -1640,7 +1640,7 @@ msgstr "Avisos favoritos de %s"
|
|||||||
#: actions/favoritesrss.php:115
|
#: actions/favoritesrss.php:115
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Updates favored by %1$s on %2$s!"
|
msgid "Updates favored by %1$s on %2$s!"
|
||||||
msgstr "¡Actualizaciones favorecidas por %1$ s en %2$s!"
|
msgstr "¡Actualizaciones favorecidas por %1$s en %2$s!"
|
||||||
|
|
||||||
#: actions/featured.php:69 lib/featureduserssection.php:87
|
#: actions/featured.php:69 lib/featureduserssection.php:87
|
||||||
#: lib/publicgroupnav.php:89
|
#: lib/publicgroupnav.php:89
|
||||||
@ -6885,48 +6885,48 @@ msgstr "Ninguno"
|
|||||||
|
|
||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr "Este servidor no puede manejar cargas de temas sin soporte ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Error del sistema subir el archivo"
|
msgstr "Sudida del tema perdido o errado."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Error al actualizar la imagen."
|
msgstr "Grabado de tema errado."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Tema inválido: mala estructura de directorio."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Tema subido es demasiado grande; debe ser menor que %d bytes sin comprimir."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Archivo de tema inválido: archivo perdido css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"El tema contiene archivo o nombre de carpeta inválido. Restrínjase a letras "
|
||||||
|
"ASCII, dígitos, carácter de subrayado, y signo menos."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "El tema contiene archivo de tipo '.%s', que no está permitido."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Error al actualizar el perfil remoto."
|
msgstr "Error al abrir archivo de tema."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Translation of StatusNet to Persian
|
# Translation of StatusNet to Persian
|
||||||
#
|
#
|
||||||
# Author@translatewiki.net: ArianHT
|
# Author@translatewiki.net: ArianHT
|
||||||
|
# Author@translatewiki.net: Brion
|
||||||
# Author@translatewiki.net: Choxos
|
# Author@translatewiki.net: Choxos
|
||||||
# Author@translatewiki.net: Everplays
|
# Author@translatewiki.net: Everplays
|
||||||
# Author@translatewiki.net: Narcissus
|
# Author@translatewiki.net: Narcissus
|
||||||
@ -12,7 +13,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:31+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:35+0000\n"
|
||||||
"Last-Translator: Ahmad Sufi Mahmudi\n"
|
"Last-Translator: Ahmad Sufi Mahmudi\n"
|
||||||
"Language-Team: Persian\n"
|
"Language-Team: Persian\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -21,7 +22,7 @@ msgstr ""
|
|||||||
"X-Language-Code: fa\n"
|
"X-Language-Code: fa\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
|
|
||||||
#. TRANS: Page title
|
#. TRANS: Page title
|
||||||
@ -197,7 +198,7 @@ msgstr "شما و دوستان"
|
|||||||
#: actions/apitimelinehome.php:122
|
#: actions/apitimelinehome.php:122
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Updates from %1$s and friends on %2$s!"
|
msgid "Updates from %1$s and friends on %2$s!"
|
||||||
msgstr "به روز رسانی از %1$ و دوستان در %2$"
|
msgstr "به روز رسانی از %1$s و دوستان در %2$s"
|
||||||
|
|
||||||
#: actions/apiaccountratelimitstatus.php:72
|
#: actions/apiaccountratelimitstatus.php:72
|
||||||
#: actions/apiaccountupdatedeliverydevice.php:94
|
#: actions/apiaccountupdatedeliverydevice.php:94
|
||||||
|
@ -11,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:27+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:30+0000\n"
|
||||||
"Language-Team: Finnish\n"
|
"Language-Team: Finnish\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: fi\n"
|
"X-Language-Code: fi\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -16,11 +16,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:36+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:40+0000\n"
|
||||||
"Language-Team: French\n"
|
"Language-Team: French\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: fr\n"
|
"X-Language-Code: fr\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1144,13 +1144,13 @@ msgid "Theme for the site."
|
|||||||
msgstr "Thème pour le site."
|
msgstr "Thème pour le site."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Thème du site"
|
msgstr "Thème personnalisé"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Vous pouvez importer un thème StatusNet personnalisé dans une archive .ZIP."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1210,11 +1210,11 @@ msgstr "Liens"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avancé"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personnalisé"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6919,47 +6919,50 @@ msgstr "Aucun"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le serveur ne peut pas gérer l’import de thèmes sans le support du format "
|
||||||
|
"ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Erreur système lors du transfert du fichier."
|
msgstr "Le thème est manquant ou son import a échoué."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "La mise à jour de l’avatar a échoué."
|
msgstr "L’enregistrement du thème a échoué."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Thème invalide : mauvaise arborescence."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le thème importé est trop volumineux. Non compressé, il doit occuper moins "
|
||||||
|
"de %d octets."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Archive de thème invalide : fichier css/display.css manquant"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le thème contient un nom de fichier ou de dossier invalide. Limitez-vous aux "
|
||||||
|
"lettres ASCII et aux chiffres, caractère de soulignement et signe moins."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "Le thème contient un fichier de type « .%s », qui n'est pas autorisé."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Erreur lors de la mise à jour du profil distant."
|
msgstr "Erreur lors de l’ouverture de l’archive du thème."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:40+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:45+0000\n"
|
||||||
"Language-Team: Irish\n"
|
"Language-Team: Irish\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ga\n"
|
"X-Language-Code: ga\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:45+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:49+0000\n"
|
||||||
"Language-Team: Galician\n"
|
"Language-Team: Galician\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: gl\n"
|
"X-Language-Code: gl\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1132,13 +1132,13 @@ msgid "Theme for the site."
|
|||||||
msgstr "Tema visual para o sitio."
|
msgstr "Tema visual para o sitio."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Tema visual do sitio"
|
msgstr "Tema visual personalizado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Pode cargar como arquivo .ZIP un tema visual personalizado para StatusNet"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1198,11 +1198,11 @@ msgstr "Ligazóns"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avanzado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personalizado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6878,47 +6878,50 @@ msgstr "Ningún"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O servidor non pode xestionar as cargas de temas visuais sen soporte para o "
|
||||||
|
"formato ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Houbo un erro no sistema ao cargar o ficheiro."
|
msgstr "Houbo un erro no sistema ao cargar o tema visual."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Non se puido actualizar o avatar."
|
msgstr "Non se puido gardar o tema visual."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Tema visual inválido: a estrutura do directorio é incorrecta"
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O tema visual cargado é grande de máis; o tamaño descomprimido non pode "
|
||||||
|
"superar os %d bytes."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Arquivo de tema visual inválido: falta o ficheiro css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O tema visual contén un ficheiro inválido ou nome de cartafol incorrecto. "
|
||||||
|
"Limíteo a letras ASCII, díxitos, barras baixas e signos menos."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "O tema visual contén o tipo de ficheiro \".%s\". Non está permitido."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Houbo un erro ao actualizar o perfil remoto."
|
msgstr "Houbo un erro ao abrir o arquivo do tema visual."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -8,11 +8,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:49+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:54+0000\n"
|
||||||
"Language-Team: Hebrew\n"
|
"Language-Team: Hebrew\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: he\n"
|
"X-Language-Code: he\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:19:54+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:03:58+0000\n"
|
||||||
"Language-Team: Dutch\n"
|
"Language-Team: Dutch\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: hsb\n"
|
"X-Language-Code: hsb\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1099,9 +1099,8 @@ msgid "Theme for the site."
|
|||||||
msgstr "Šat za sydło."
|
msgstr "Šat za sydło."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Šat sydła"
|
msgstr "Swójski šat"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
@ -1164,11 +1163,11 @@ msgstr "Wotkazy"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Rozšěrjeny"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Swójski CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -1423,7 +1422,7 @@ msgstr ""
|
|||||||
#. TRANS: Checkbox label in e-mail preferences form.
|
#. TRANS: Checkbox label in e-mail preferences form.
|
||||||
#: actions/emailsettings.php:193
|
#: actions/emailsettings.php:193
|
||||||
msgid "Send me email when someone sends me a private message."
|
msgid "Send me email when someone sends me a private message."
|
||||||
msgstr ""
|
msgstr "E-mejl pósłać, hdyž něchtó priwatnu powěsć sćele."
|
||||||
|
|
||||||
#. TRANS: Checkbox label in e-mail preferences form.
|
#. TRANS: Checkbox label in e-mail preferences form.
|
||||||
#: actions/emailsettings.php:199
|
#: actions/emailsettings.php:199
|
||||||
@ -1594,12 +1593,12 @@ msgstr ""
|
|||||||
#: actions/featured.php:69 lib/featureduserssection.php:87
|
#: actions/featured.php:69 lib/featureduserssection.php:87
|
||||||
#: lib/publicgroupnav.php:89
|
#: lib/publicgroupnav.php:89
|
||||||
msgid "Featured users"
|
msgid "Featured users"
|
||||||
msgstr ""
|
msgstr "Nazhonići wužiwarjo"
|
||||||
|
|
||||||
#: actions/featured.php:71
|
#: actions/featured.php:71
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Featured users, page %d"
|
msgid "Featured users, page %d"
|
||||||
msgstr ""
|
msgstr "Nazhonići wužiwarjo, strona %d"
|
||||||
|
|
||||||
#: actions/featured.php:99
|
#: actions/featured.php:99
|
||||||
#, php-format
|
#, php-format
|
||||||
@ -3053,7 +3052,7 @@ msgstr "Sy so identifikował. Zapodaj deleka nowe hesło. "
|
|||||||
|
|
||||||
#: actions/recoverpassword.php:188
|
#: actions/recoverpassword.php:188
|
||||||
msgid "Password recovery"
|
msgid "Password recovery"
|
||||||
msgstr ""
|
msgstr "Wobnowjenje hesła"
|
||||||
|
|
||||||
#: actions/recoverpassword.php:191
|
#: actions/recoverpassword.php:191
|
||||||
msgid "Nickname or email address"
|
msgid "Nickname or email address"
|
||||||
@ -3066,7 +3065,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: actions/recoverpassword.php:199 actions/recoverpassword.php:200
|
#: actions/recoverpassword.php:199 actions/recoverpassword.php:200
|
||||||
msgid "Recover"
|
msgid "Recover"
|
||||||
msgstr ""
|
msgstr "Wobnowić"
|
||||||
|
|
||||||
#: actions/recoverpassword.php:208
|
#: actions/recoverpassword.php:208
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
@ -3074,11 +3073,11 @@ msgstr "Hesło wróćo stajić"
|
|||||||
|
|
||||||
#: actions/recoverpassword.php:209
|
#: actions/recoverpassword.php:209
|
||||||
msgid "Recover password"
|
msgid "Recover password"
|
||||||
msgstr ""
|
msgstr "Hesło wobnowić"
|
||||||
|
|
||||||
#: actions/recoverpassword.php:210 actions/recoverpassword.php:335
|
#: actions/recoverpassword.php:210 actions/recoverpassword.php:335
|
||||||
msgid "Password recovery requested"
|
msgid "Password recovery requested"
|
||||||
msgstr ""
|
msgstr "Wobnowjenje hesła požadane"
|
||||||
|
|
||||||
#: actions/recoverpassword.php:213
|
#: actions/recoverpassword.php:213
|
||||||
msgid "Unknown action"
|
msgid "Unknown action"
|
||||||
@ -6439,16 +6438,14 @@ msgid "This server cannot handle theme uploads without ZIP support."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Systemowy zmylk při nahrawanju dataje."
|
msgstr "Nahraće šata faluje abo je so njeporadźiło."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Aktualizowanje awatara je so njeporadźiło."
|
msgstr "Składowanje šata je so njeporadźiło."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
@ -6475,9 +6472,8 @@ msgid "Theme contains file of type '.%s', which is not allowed."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Zmylk při aktualizaciji zdaleneho profila."
|
msgstr "Zmylk při wočinjenju šatoweho archiwa."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:00+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:03+0000\n"
|
||||||
"Language-Team: Interlingua\n"
|
"Language-Team: Interlingua\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ia\n"
|
"X-Language-Code: ia\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1129,13 +1129,14 @@ msgid "Theme for the site."
|
|||||||
msgstr "Le thema de apparentia pro le sito."
|
msgstr "Le thema de apparentia pro le sito."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Thema del sito"
|
msgstr "Apparentia personalisate"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Es possibile incargar un apparentia personalisate de StatusNet in un "
|
||||||
|
"archivo .ZIP."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1195,11 +1196,11 @@ msgstr "Ligamines"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avantiate"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personalisate"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -4613,7 +4614,7 @@ msgstr "Acceptar"
|
|||||||
#: actions/userauthorization.php:218 lib/subscribeform.php:115
|
#: actions/userauthorization.php:218 lib/subscribeform.php:115
|
||||||
#: lib/subscribeform.php:139
|
#: lib/subscribeform.php:139
|
||||||
msgid "Subscribe to this user"
|
msgid "Subscribe to this user"
|
||||||
msgstr "Subscriber me a iste usator"
|
msgstr "Subscriber a iste usator"
|
||||||
|
|
||||||
#: actions/userauthorization.php:219
|
#: actions/userauthorization.php:219
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
@ -6848,47 +6849,51 @@ msgstr "Nulle"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Iste servitor non pote manear le incargamento de apparentias sin supporto de "
|
||||||
|
"ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Error de systema durante le incargamento del file."
|
msgstr "Le file del apparentia manca o le incargamento ha fallite."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Actualisation del avatar fallite."
|
msgstr "Salveguarda del apparentia fallite."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Apparentia invalide: mal structura de directorios."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le apparentia incargate es troppo voluminose; debe occupar minus de %d bytes "
|
||||||
|
"in forma non comprimite."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Archivo de apparentia invalide: manca le file css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le apparentia contine un nomine de file o dossier invalide. Limita te a "
|
||||||
|
"litteras ASCII, digitos, sublineamento, e signo minus."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le apparentia contine un file del typo '.%s', le qual non es permittite."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Error durante le actualisation del profilo remote."
|
msgstr "Error durante le apertura del archivo del apparentia."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:07+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:07+0000\n"
|
||||||
"Language-Team: Icelandic\n"
|
"Language-Team: Icelandic\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: is\n"
|
"X-Language-Code: is\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Translation of StatusNet to Italian
|
# Translation of StatusNet to Italian
|
||||||
#
|
#
|
||||||
|
# Author@translatewiki.net: HalphaZ
|
||||||
# Author@translatewiki.net: Milocasagrande
|
# Author@translatewiki.net: Milocasagrande
|
||||||
# Author@translatewiki.net: Nemo bis
|
# Author@translatewiki.net: Nemo bis
|
||||||
# --
|
# --
|
||||||
@ -10,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:12+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:12+0000\n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: it\n"
|
"X-Language-Code: it\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1129,13 +1130,12 @@ msgid "Theme for the site."
|
|||||||
msgstr "Tema per questo sito."
|
msgstr "Tema per questo sito."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Tema del sito"
|
msgstr "Tema personalizzato"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "Puoi caricare un tema per StatusNet personalizzato come un file ZIP."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1195,11 +1195,11 @@ msgstr "Collegamenti"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avanzate"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personalizzato"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6854,47 +6854,48 @@ msgstr "Nessuno"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Questo server non è in grado di gestire caricamenti senza il supporto ZIP."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Errore di sistema nel caricare il file."
|
msgstr "Tema caricato mancante o caricamento non riuscito."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Aggiornamento dell'immagine non riuscito."
|
msgstr "Salvataggio del tema non riuscito."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Tema non valido: struttura directory non corretta."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Il tema caricato è troppo grande, deve essere meno di %d byte non compresso."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "File di tema non valido: manca il file css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Il tema contiene file non o nomi di cartelle non validi. Utilizzare "
|
||||||
|
"solamente caratteri ASCII, numeri, il trattino basso e il segno meno."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "Il tema contiene file di tipo \".%s\" che non sono supportati."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Errore nell'aggiornare il profilo remoto."
|
msgstr "Errore nell'aprire il file del tema."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Translation of StatusNet to Japanese
|
# Translation of StatusNet to Japanese
|
||||||
#
|
#
|
||||||
|
# Author@translatewiki.net: Brion
|
||||||
# Author@translatewiki.net: Fryed-peach
|
# Author@translatewiki.net: Fryed-peach
|
||||||
# Author@translatewiki.net: Sonoda
|
# Author@translatewiki.net: Sonoda
|
||||||
# Author@translatewiki.net: Whym
|
# Author@translatewiki.net: Whym
|
||||||
@ -11,11 +12,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:17+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:16+0000\n"
|
||||||
"Language-Team: Japanese\n"
|
"Language-Team: Japanese\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ja\n"
|
"X-Language-Code: ja\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -2578,7 +2579,7 @@ msgstr "つぶやきにはプロファイルはありません。"
|
|||||||
#: actions/oembed.php:87 actions/shownotice.php:175
|
#: actions/oembed.php:87 actions/shownotice.php:175
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%1$s's status on %2$s"
|
msgid "%1$s's status on %2$s"
|
||||||
msgstr "%2$s における %1$ のステータス"
|
msgstr "%2$s における %1$s のステータス"
|
||||||
|
|
||||||
#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png')
|
#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png')
|
||||||
#: actions/oembed.php:159
|
#: actions/oembed.php:159
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:22+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:21+0000\n"
|
||||||
"Language-Team: Korean\n"
|
"Language-Team: Korean\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: ko\n"
|
"X-Language-Code: ko\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:27+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:26+0000\n"
|
||||||
"Language-Team: Macedonian\n"
|
"Language-Team: Macedonian\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: mk\n"
|
"X-Language-Code: mk\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -29,7 +29,7 @@ msgstr "Пристап"
|
|||||||
#. TRANS: Page notice
|
#. TRANS: Page notice
|
||||||
#: actions/accessadminpanel.php:67
|
#: actions/accessadminpanel.php:67
|
||||||
msgid "Site access settings"
|
msgid "Site access settings"
|
||||||
msgstr "Нагодувања за пристап на веб-страницата"
|
msgstr "Нагодувања за пристап на мрежното место"
|
||||||
|
|
||||||
#. TRANS: Form legend for registration form.
|
#. TRANS: Form legend for registration form.
|
||||||
#: actions/accessadminpanel.php:161
|
#: actions/accessadminpanel.php:161
|
||||||
@ -40,8 +40,8 @@ msgstr "Регистрација"
|
|||||||
#: actions/accessadminpanel.php:165
|
#: actions/accessadminpanel.php:165
|
||||||
msgid "Prohibit anonymous users (not logged in) from viewing site?"
|
msgid "Prohibit anonymous users (not logged in) from viewing site?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Да им забранам на анонимните (ненајавени) корисници да ја гледаат веб-"
|
"Да им забранам на анонимните (ненајавени) корисници да го гледаат мрежното "
|
||||||
"страницата?"
|
"место?"
|
||||||
|
|
||||||
#. TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
#. TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
||||||
#: actions/accessadminpanel.php:167
|
#: actions/accessadminpanel.php:167
|
||||||
@ -1101,7 +1101,7 @@ msgstr "Изглед"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:74
|
#: actions/designadminpanel.php:74
|
||||||
msgid "Design settings for this StatusNet site."
|
msgid "Design settings for this StatusNet site."
|
||||||
msgstr "Нагодувања на изгледот на оваа StatusNet веб-страница."
|
msgstr "Нагодувања на изгледот на ова StatusNet-мрежно место."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:318
|
#: actions/designadminpanel.php:318
|
||||||
msgid "Invalid logo URL."
|
msgid "Invalid logo URL."
|
||||||
@ -1118,28 +1118,27 @@ msgstr "Промени лого"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:431
|
#: actions/designadminpanel.php:431
|
||||||
msgid "Site logo"
|
msgid "Site logo"
|
||||||
msgstr "Лого на веб-страницата"
|
msgstr "Лого на мрежното место"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:443
|
#: actions/designadminpanel.php:443
|
||||||
msgid "Change theme"
|
msgid "Change theme"
|
||||||
msgstr "Промени тема"
|
msgstr "Промени изглед"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:460
|
#: actions/designadminpanel.php:460
|
||||||
msgid "Site theme"
|
msgid "Site theme"
|
||||||
msgstr "Тема на веб-страницата"
|
msgstr "Изглед на мрежното место"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:461
|
#: actions/designadminpanel.php:461
|
||||||
msgid "Theme for the site."
|
msgid "Theme for the site."
|
||||||
msgstr "Тема за веб-страницата."
|
msgstr "Изглед за мрежното место."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Тема на веб-страницата"
|
msgstr "Прилагоден мотив"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "Можете да подигнете свој изглед за StatusNet како .ZIP архив."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1156,7 +1155,7 @@ msgid ""
|
|||||||
"You can upload a background image for the site. The maximum file size is %1"
|
"You can upload a background image for the site. The maximum file size is %1"
|
||||||
"$s."
|
"$s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Може да подигнете позадинска слика за оваа веб-страница. Максималната "
|
"Може да подигнете позадинска слика за ова мрежно место. Максималната "
|
||||||
"големина на податотеката е %1$s."
|
"големина на податотеката е %1$s."
|
||||||
|
|
||||||
#. TRANS: Used as radio button label to add a background image.
|
#. TRANS: Used as radio button label to add a background image.
|
||||||
@ -1199,11 +1198,11 @@ msgstr "Врски"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Напредно"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Прилагодено CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -1604,7 +1603,7 @@ msgstr "Популарни забелешки, стр. %d"
|
|||||||
|
|
||||||
#: actions/favorited.php:79
|
#: actions/favorited.php:79
|
||||||
msgid "The most popular notices on the site right now."
|
msgid "The most popular notices on the site right now."
|
||||||
msgstr "Моментално најпопуларни забелешки на веб-страницата."
|
msgstr "Моментално најпопуларни забелешки на мрежното место."
|
||||||
|
|
||||||
#: actions/favorited.php:150
|
#: actions/favorited.php:150
|
||||||
msgid "Favorite notices appear on this page but no one has favorited one yet."
|
msgid "Favorite notices appear on this page but no one has favorited one yet."
|
||||||
@ -1721,7 +1720,7 @@ msgstr "Оваа улога е резервирана и не може да се
|
|||||||
|
|
||||||
#: actions/grantrole.php:75
|
#: actions/grantrole.php:75
|
||||||
msgid "You cannot grant user roles on this site."
|
msgid "You cannot grant user roles on this site."
|
||||||
msgstr "Не можете да им доделувате улоги на корисниците на оваа веб-страница."
|
msgstr "Не можете да им доделувате улоги на корисниците на ова мрежно место."
|
||||||
|
|
||||||
#: actions/grantrole.php:82
|
#: actions/grantrole.php:82
|
||||||
msgid "User already has this role."
|
msgid "User already has this role."
|
||||||
@ -2180,15 +2179,15 @@ msgid ""
|
|||||||
"on the site. Thanks for growing the community!"
|
"on the site. Thanks for growing the community!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ќе добиете известување кога луѓето кои сте ги поканиле ќе ја прифатат "
|
"Ќе добиете известување кога луѓето кои сте ги поканиле ќе ја прифатат "
|
||||||
"поканата и ќе се регистрираат на веб-страницата. Ви благодариме за Вашата "
|
"поканата и ќе се регистрираат на мрежното место. Ви благодариме што ни "
|
||||||
"помош со проширувањето на заедницата!"
|
"помагате да ја прошириме заедницата!"
|
||||||
|
|
||||||
#: actions/invite.php:162
|
#: actions/invite.php:162
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use this form to invite your friends and colleagues to use this service."
|
"Use this form to invite your friends and colleagues to use this service."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Со овој обраец можете да поканите пријатели и колеги да ја користат веб-"
|
"Со овој обраец можете да поканите пријатели и колеги да го користат мрежното "
|
||||||
"страницата."
|
"место."
|
||||||
|
|
||||||
#: actions/invite.php:187
|
#: actions/invite.php:187
|
||||||
msgid "Email addresses"
|
msgid "Email addresses"
|
||||||
@ -2251,7 +2250,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%1$s Ве кани да се придружите на %2$s (%3$s).\n"
|
"%1$s Ве кани да се придружите на %2$s (%3$s).\n"
|
||||||
"\n"
|
"\n"
|
||||||
"%2$s е веб-страница за микроблогирање што ви овозможува да бидете во тек "
|
"%2$s е мрежно место за микроблогирање што ви овозможува да бидете во тек "
|
||||||
"луѓето што ги познавате и луѓето кои ве интересираат.\n"
|
"луѓето што ги познавате и луѓето кои ве интересираат.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Можете да објавувате и новости за Вас, Ваши размисли, и настани од Вашиот "
|
"Можете да објавувате и новости за Вас, Ваши размисли, и настани од Вашиот "
|
||||||
@ -2266,7 +2265,7 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"%5$s\n"
|
"%5$s\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Ако сакате да ја испробате оваа друштвена веб-страница, кликнете на врската "
|
"Ако сакате да ја испробате оваа друштвено мрежно место, кликнете на врската "
|
||||||
"подолу за да ја прифатите поканата.\n"
|
"подолу за да ја прифатите поканата.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"%6$s\n"
|
"%6$s\n"
|
||||||
@ -2489,8 +2488,8 @@ msgid ""
|
|||||||
"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
|
"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"А зошто не [регистрирате сметка](%%%%action.register%%%%) и станете првиот "
|
"А зошто не [регистрирате сметка](%%%%action.register%%%%) и станете првиот "
|
||||||
"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea="
|
"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea=%"
|
||||||
"%s)!"
|
"s)!"
|
||||||
|
|
||||||
#: actions/noticesearchrss.php:96
|
#: actions/noticesearchrss.php:96
|
||||||
#, php-format
|
#, php-format
|
||||||
@ -2759,7 +2758,7 @@ msgstr "Неважечки SSL-опслужувач. Дозволени се н
|
|||||||
|
|
||||||
#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
|
#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
|
||||||
msgid "Site"
|
msgid "Site"
|
||||||
msgstr "Веб-страница"
|
msgstr "Мреж. место"
|
||||||
|
|
||||||
#: actions/pathsadminpanel.php:238
|
#: actions/pathsadminpanel.php:238
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
@ -2775,7 +2774,7 @@ msgstr "Патека"
|
|||||||
|
|
||||||
#: actions/pathsadminpanel.php:242
|
#: actions/pathsadminpanel.php:242
|
||||||
msgid "Site path"
|
msgid "Site path"
|
||||||
msgstr "Патека на веб-страницата"
|
msgstr "Патека на мрежното место"
|
||||||
|
|
||||||
#: actions/pathsadminpanel.php:246
|
#: actions/pathsadminpanel.php:246
|
||||||
msgid "Path to locales"
|
msgid "Path to locales"
|
||||||
@ -2795,7 +2794,7 @@ msgstr "Да користам интересни (почитливи и повп
|
|||||||
|
|
||||||
#: actions/pathsadminpanel.php:259
|
#: actions/pathsadminpanel.php:259
|
||||||
msgid "Theme"
|
msgid "Theme"
|
||||||
msgstr "Тема"
|
msgstr "Изглед"
|
||||||
|
|
||||||
#: actions/pathsadminpanel.php:264
|
#: actions/pathsadminpanel.php:264
|
||||||
msgid "Theme server"
|
msgid "Theme server"
|
||||||
@ -2909,8 +2908,8 @@ msgstr "Неважечка содржина на забелешката."
|
|||||||
#, php-format
|
#, php-format
|
||||||
msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Лиценцата на забелешката „%1$s“ не е компатибилна со лиценцата на веб-"
|
"Лиценцата на забелешката „%1$s“ не е соодветна на лиценцата на мрежното "
|
||||||
"страницата „%2$s“."
|
"место „%2$s“."
|
||||||
|
|
||||||
#: actions/profilesettings.php:60
|
#: actions/profilesettings.php:60
|
||||||
msgid "Profile settings"
|
msgid "Profile settings"
|
||||||
@ -2945,7 +2944,7 @@ msgstr "Домашна страница"
|
|||||||
|
|
||||||
#: actions/profilesettings.php:117 actions/register.php:462
|
#: actions/profilesettings.php:117 actions/register.php:462
|
||||||
msgid "URL of your homepage, blog, or profile on another site"
|
msgid "URL of your homepage, blog, or profile on another site"
|
||||||
msgstr "URL на Вашата домашна страница, блог или профил на друга веб-страница."
|
msgstr "URL на Вашата домашна страница, блог или профил на друго мрежно место."
|
||||||
|
|
||||||
#: actions/profilesettings.php:122 actions/register.php:468
|
#: actions/profilesettings.php:122 actions/register.php:468
|
||||||
#, php-format
|
#, php-format
|
||||||
@ -3108,10 +3107,10 @@ msgid ""
|
|||||||
"tool. [Join now](%%action.register%%) to share notices about yourself with "
|
"tool. [Join now](%%action.register%%) to share notices about yourself with "
|
||||||
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
|
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ова е %%site.name%%, веб-страница за [микроблогирање](http://mk.wikipedia."
|
"Ова е %%site.name%%, мрежно место за [микроблогирање](http://mk.wikipedia."
|
||||||
"org/wiki/Микроблогирање) базирана на слободната програмска алатка [StatusNet]"
|
"org/wiki/Микроблогирање) заснована на слободната програмска алатка "
|
||||||
"(http://status.net/). [Зачленете се](%%action.register%%) за да си "
|
"[StatusNet](http://status.net/). [Зачленете се](%%action.register%%) за да "
|
||||||
"споделувате забелешки за себе со приајтелите, семејството и колегите! "
|
"си споделувате забелешки за себе со приајтелите, семејството и колегите! "
|
||||||
"([Прочитајте повеќе](%%doc.help%%))"
|
"([Прочитајте повеќе](%%doc.help%%))"
|
||||||
|
|
||||||
#: actions/public.php:247
|
#: actions/public.php:247
|
||||||
@ -3121,9 +3120,9 @@ msgid ""
|
|||||||
"blogging) service based on the Free Software [StatusNet](http://status.net/) "
|
"blogging) service based on the Free Software [StatusNet](http://status.net/) "
|
||||||
"tool."
|
"tool."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ова е %%site.name%%, веб-страница за [микроблогирање](http://mk.wikipedia."
|
"Ова е %%site.name%%, мрежно место за [микроблогирање](http://mk.wikipedia."
|
||||||
"org/wiki/Микроблогирање) базирана на слободната програмска алатка [StatusNet]"
|
"org/wiki/Микроблогирање) заснована на слободната програмска алатка "
|
||||||
"(http://status.net/)."
|
"[StatusNet](http://status.net/)."
|
||||||
|
|
||||||
#: actions/publictagcloud.php:57
|
#: actions/publictagcloud.php:57
|
||||||
msgid "Public tag cloud"
|
msgid "Public tag cloud"
|
||||||
@ -3432,10 +3431,10 @@ msgid ""
|
|||||||
"register%%) a new account. If you already have an account on a [compatible "
|
"register%%) a new account. If you already have an account on a [compatible "
|
||||||
"microblogging site](%%doc.openmublog%%), enter your profile URL below."
|
"microblogging site](%%doc.openmublog%%), enter your profile URL below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"За да се претплатите, може да се [најавите](%%action.login%%) или да "
|
"За да се претплатите, можете да се [најавите](%%action.login%%) или да "
|
||||||
"[регистрирате](%%action.register%%) нова сметка. Ако веќе имате сметка на "
|
"[регистрирате](%%action.register%%) нова сметка. Ако веќе имате сметка на "
|
||||||
"[компатибилна веб-страница за микроблогирање](%%doc.openmublog%%), внесете "
|
"[усогласиво мреж. место за микроблогирање](%%doc.openmublog%%), внесете го "
|
||||||
"го URL-то на Вашиот профил подолу."
|
"URL-то на Вашиот профил подолу."
|
||||||
|
|
||||||
#: actions/remotesubscribe.php:112
|
#: actions/remotesubscribe.php:112
|
||||||
msgid "Remote subscribe"
|
msgid "Remote subscribe"
|
||||||
@ -3459,7 +3458,7 @@ msgstr "URL на профилот"
|
|||||||
|
|
||||||
#: actions/remotesubscribe.php:134
|
#: actions/remotesubscribe.php:134
|
||||||
msgid "URL of your profile on another compatible microblogging service"
|
msgid "URL of your profile on another compatible microblogging service"
|
||||||
msgstr "URL на Вашиот профил на друга компатибилна служба за микроблогирање."
|
msgstr "URL на Вашиот профил на друга соодветна служба за микроблогирање."
|
||||||
|
|
||||||
#: actions/remotesubscribe.php:137 lib/subscribeform.php:139
|
#: actions/remotesubscribe.php:137 lib/subscribeform.php:139
|
||||||
#: lib/userprofile.php:406
|
#: lib/userprofile.php:406
|
||||||
@ -3568,7 +3567,7 @@ msgstr "Одговори на %1$s на %2$s!"
|
|||||||
|
|
||||||
#: actions/revokerole.php:75
|
#: actions/revokerole.php:75
|
||||||
msgid "You cannot revoke user roles on this site."
|
msgid "You cannot revoke user roles on this site."
|
||||||
msgstr "На оваа веб-страница не можете да одземате кориснички улоги."
|
msgstr "На ова мрежно место не можете да одземате кориснички улоги."
|
||||||
|
|
||||||
#: actions/revokerole.php:82
|
#: actions/revokerole.php:82
|
||||||
msgid "User doesn't have this role."
|
msgid "User doesn't have this role."
|
||||||
@ -3580,7 +3579,7 @@ msgstr "StatusNet"
|
|||||||
|
|
||||||
#: actions/sandbox.php:65 actions/unsandbox.php:65
|
#: actions/sandbox.php:65 actions/unsandbox.php:65
|
||||||
msgid "You cannot sandbox users on this site."
|
msgid "You cannot sandbox users on this site."
|
||||||
msgstr "Не можете да ставате корисници во песочен режим на оваа веб-страница."
|
msgstr "Не можете да ставате корисници во песочен режим на ова мрежно место."
|
||||||
|
|
||||||
#: actions/sandbox.php:72
|
#: actions/sandbox.php:72
|
||||||
msgid "User is already sandboxed."
|
msgid "User is already sandboxed."
|
||||||
@ -3594,7 +3593,7 @@ msgstr "Сесии"
|
|||||||
|
|
||||||
#: actions/sessionsadminpanel.php:65
|
#: actions/sessionsadminpanel.php:65
|
||||||
msgid "Session settings for this StatusNet site."
|
msgid "Session settings for this StatusNet site."
|
||||||
msgstr "Нагодувања на сесиите за оваа StatusNet веб-страница."
|
msgstr "Нагодувања на сесиите за оваа StatusNet-мрежно место."
|
||||||
|
|
||||||
#: actions/sessionsadminpanel.php:175
|
#: actions/sessionsadminpanel.php:175
|
||||||
msgid "Handle sessions"
|
msgid "Handle sessions"
|
||||||
@ -3615,7 +3614,7 @@ msgstr "Вклучи извод од поправка на грешки за с
|
|||||||
#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292
|
#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292
|
||||||
#: actions/useradminpanel.php:294
|
#: actions/useradminpanel.php:294
|
||||||
msgid "Save site settings"
|
msgid "Save site settings"
|
||||||
msgstr "Зачувај нагодувања на веб-страницата"
|
msgstr "Зачувај нагодувања на мреж. место"
|
||||||
|
|
||||||
#: actions/showapplication.php:82
|
#: actions/showapplication.php:82
|
||||||
msgid "You must be logged in to view an application."
|
msgid "You must be logged in to view an application."
|
||||||
@ -3839,8 +3838,8 @@ msgid ""
|
|||||||
"their life and interests. [Join now](%%%%action.register%%%%) to become part "
|
"their life and interests. [Join now](%%%%action.register%%%%) to become part "
|
||||||
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
|
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"**%s** е корисничка група на %%%%site.name%%%%, веб-страница за "
|
"**%s** е корисничка група на %%%%site.name%%%%, мрежно место за "
|
||||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на "
|
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заснована на "
|
||||||
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
||||||
"членови си разменуваат кратки пораки за нивниот живот и интереси. [Зачленете "
|
"членови си разменуваат кратки пораки за нивниот живот и интереси. [Зачленете "
|
||||||
"се](%%%%action.register%%%%) за да станете дел од оваа група и многу повеќе! "
|
"се](%%%%action.register%%%%) за да станете дел од оваа група и многу повеќе! "
|
||||||
@ -3854,8 +3853,8 @@ msgid ""
|
|||||||
"[StatusNet](http://status.net/) tool. Its members share short messages about "
|
"[StatusNet](http://status.net/) tool. Its members share short messages about "
|
||||||
"their life and interests. "
|
"their life and interests. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"**%s** е корисничка група на %%%%site.name%%%%, веб-страница за "
|
"**%s** е корисничка група на %%%%site.name%%%%, мрежно место за "
|
||||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на "
|
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заснована на "
|
||||||
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
||||||
"членови си разменуваат кратки пораки за нивниот живот и интереси. "
|
"членови си разменуваат кратки пораки за нивниот живот и интереси. "
|
||||||
|
|
||||||
@ -3950,8 +3949,8 @@ msgid ""
|
|||||||
"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
|
"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
|
||||||
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
|
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"**%s** има сметка на %%%%site.name%%%%, веб-страница за [микроблогирање]"
|
"**%s** има сметка на %%%%site.name%%%%, мрежно место за [микроблогирање]"
|
||||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
|
"(http://mk.wikipedia.org/wiki/Микроблогирање) заснована на слободната "
|
||||||
"програмска алатка [StatusNet](http://status.net/). [Зачленете се](%%%%action."
|
"програмска алатка [StatusNet](http://status.net/). [Зачленете се](%%%%action."
|
||||||
"register%%%%) за да можете да ги следите забелешките на **%s** и многу "
|
"register%%%%) за да можете да ги следите забелешките на **%s** и многу "
|
||||||
"повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))"
|
"повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))"
|
||||||
@ -3963,8 +3962,8 @@ msgid ""
|
|||||||
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
|
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
|
||||||
"[StatusNet](http://status.net/) tool. "
|
"[StatusNet](http://status.net/) tool. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"**%s** има сметка на %%%%site.name%%%%, веб-страница за [микроблогирање]"
|
"**%s** има сметка на %%%%site.name%%%%, мрежно место за [микроблогирање]"
|
||||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
|
"(http://mk.wikipedia.org/wiki/Микроблогирање) заснована на слободната "
|
||||||
"програмска алатка [StatusNet](http://status.net/). "
|
"програмска алатка [StatusNet](http://status.net/). "
|
||||||
|
|
||||||
#: actions/showstream.php:305
|
#: actions/showstream.php:305
|
||||||
@ -3974,7 +3973,7 @@ msgstr "Повторувања на %s"
|
|||||||
|
|
||||||
#: actions/silence.php:65 actions/unsilence.php:65
|
#: actions/silence.php:65 actions/unsilence.php:65
|
||||||
msgid "You cannot silence users on this site."
|
msgid "You cannot silence users on this site."
|
||||||
msgstr "Не можете да замолчувате корисници на оваа веб-страница."
|
msgstr "Не можете да замолчувате корисници на ова мрежно место."
|
||||||
|
|
||||||
#: actions/silence.php:72
|
#: actions/silence.php:72
|
||||||
msgid "User is already silenced."
|
msgid "User is already silenced."
|
||||||
@ -3982,11 +3981,11 @@ msgstr "Корисникот е веќе замолчен."
|
|||||||
|
|
||||||
#: actions/siteadminpanel.php:69
|
#: actions/siteadminpanel.php:69
|
||||||
msgid "Basic settings for this StatusNet site"
|
msgid "Basic settings for this StatusNet site"
|
||||||
msgstr "Основни поставки за оваа StatusNet веб-страница."
|
msgstr "Основни поставки за оваа StatusNet-мрежно место."
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:133
|
#: actions/siteadminpanel.php:133
|
||||||
msgid "Site name must have non-zero length."
|
msgid "Site name must have non-zero length."
|
||||||
msgstr "Должината на името на веб-страницата не може да изнесува нула."
|
msgstr "Должината на името на мрежното место не може да изнесува нула."
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:141
|
#: actions/siteadminpanel.php:141
|
||||||
msgid "You must have a valid contact email address."
|
msgid "You must have a valid contact email address."
|
||||||
@ -4011,11 +4010,11 @@ msgstr "Општи"
|
|||||||
|
|
||||||
#: actions/siteadminpanel.php:224
|
#: actions/siteadminpanel.php:224
|
||||||
msgid "Site name"
|
msgid "Site name"
|
||||||
msgstr "Име на веб-страницата"
|
msgstr "Име на мрежното место"
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:225
|
#: actions/siteadminpanel.php:225
|
||||||
msgid "The name of your site, like \"Yourcompany Microblog\""
|
msgid "The name of your site, like \"Yourcompany Microblog\""
|
||||||
msgstr "Името на Вашата веб-страница, како на пр. „Микроблог на Вашафирма“"
|
msgstr "Името на Вашето мрежно место, како на пр. „Микроблог на Вашафирма“"
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:229
|
#: actions/siteadminpanel.php:229
|
||||||
msgid "Brought by"
|
msgid "Brought by"
|
||||||
@ -4039,7 +4038,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: actions/siteadminpanel.php:239
|
#: actions/siteadminpanel.php:239
|
||||||
msgid "Contact email address for your site"
|
msgid "Contact email address for your site"
|
||||||
msgstr "Контактна е-пошта за Вашата веб-страница"
|
msgstr "Контактна е-пошта за Вашето мрежното место"
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:245
|
#: actions/siteadminpanel.php:245
|
||||||
msgid "Local"
|
msgid "Local"
|
||||||
@ -4051,7 +4050,7 @@ msgstr "Основна часовна зона"
|
|||||||
|
|
||||||
#: actions/siteadminpanel.php:257
|
#: actions/siteadminpanel.php:257
|
||||||
msgid "Default timezone for the site; usually UTC."
|
msgid "Default timezone for the site; usually UTC."
|
||||||
msgstr "Матична часовна зона за веб-страницата; обично UTC."
|
msgstr "Матична часовна зона за мрежното место; обично UTC."
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:262
|
#: actions/siteadminpanel.php:262
|
||||||
msgid "Default language"
|
msgid "Default language"
|
||||||
@ -4059,9 +4058,7 @@ msgstr "Основен јазик"
|
|||||||
|
|
||||||
#: actions/siteadminpanel.php:263
|
#: actions/siteadminpanel.php:263
|
||||||
msgid "Site language when autodetection from browser settings is not available"
|
msgid "Site language when autodetection from browser settings is not available"
|
||||||
msgstr ""
|
msgstr "Јазик на мрежното место ако прелистувачот не може да го препознае сам"
|
||||||
"Јазик на мрежното место (веб-страницата) ако прелистувачот не може да го "
|
|
||||||
"препознае сам"
|
|
||||||
|
|
||||||
#: actions/siteadminpanel.php:271
|
#: actions/siteadminpanel.php:271
|
||||||
msgid "Limits"
|
msgid "Limits"
|
||||||
@ -4091,24 +4088,24 @@ msgstr "Објава на страница"
|
|||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:67
|
#: actions/sitenoticeadminpanel.php:67
|
||||||
msgid "Edit site-wide message"
|
msgid "Edit site-wide message"
|
||||||
msgstr "Уреди објава за цела веб-страница"
|
msgstr "Уреди објава за цело мрежно место"
|
||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:103
|
#: actions/sitenoticeadminpanel.php:103
|
||||||
msgid "Unable to save site notice."
|
msgid "Unable to save site notice."
|
||||||
msgstr "Не можам да ја зачувам објавата за веб-страницата."
|
msgstr "Не можам да ја зачувам објавата за мрежното место."
|
||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:113
|
#: actions/sitenoticeadminpanel.php:113
|
||||||
msgid "Max length for the site-wide notice is 255 chars."
|
msgid "Max length for the site-wide notice is 255 chars."
|
||||||
msgstr "Објавата за цела веб-страница не треба да содржи повеќе од 255 знаци."
|
msgstr "Објавата за цело мрежно место не треба да содржи повеќе од 255 знаци."
|
||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:176
|
#: actions/sitenoticeadminpanel.php:176
|
||||||
msgid "Site notice text"
|
msgid "Site notice text"
|
||||||
msgstr "Текст на објавата за веб-страницата"
|
msgstr "Текст на објавата за мрежното место"
|
||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:178
|
#: actions/sitenoticeadminpanel.php:178
|
||||||
msgid "Site-wide notice text (255 chars max; HTML okay)"
|
msgid "Site-wide notice text (255 chars max; HTML okay)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Текст за главна објава по цела веб-страница (највеќе до 255 знаци; дозволено "
|
"Текст за главна објава по цело мрежно место (највеќе до 255 знаци; дозволено "
|
||||||
"и HTML)"
|
"и HTML)"
|
||||||
|
|
||||||
#: actions/sitenoticeadminpanel.php:198
|
#: actions/sitenoticeadminpanel.php:198
|
||||||
@ -4539,8 +4536,8 @@ msgstr "Претплатата е откажана"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Лиценцата на потокот на следачот „%1$s“ не е компатибилна со лиценцата на "
|
"Лиценцата на каналот на следачот „%1$s“ не е соодветна на лиценцата на "
|
||||||
"веб-страницата „%2$s“."
|
"мрежното место „%2$s“."
|
||||||
|
|
||||||
#. TRANS: User admin panel title
|
#. TRANS: User admin panel title
|
||||||
#: actions/useradminpanel.php:59
|
#: actions/useradminpanel.php:59
|
||||||
@ -4550,7 +4547,7 @@ msgstr "Корисник"
|
|||||||
|
|
||||||
#: actions/useradminpanel.php:70
|
#: actions/useradminpanel.php:70
|
||||||
msgid "User settings for this StatusNet site."
|
msgid "User settings for this StatusNet site."
|
||||||
msgstr "Кориснички нагодувања за оваа StatusNet веб-страница."
|
msgstr "Кориснички нагодувања за ова StatusNet-мрежно место."
|
||||||
|
|
||||||
#: actions/useradminpanel.php:149
|
#: actions/useradminpanel.php:149
|
||||||
msgid "Invalid bio limit. Must be numeric."
|
msgid "Invalid bio limit. Must be numeric."
|
||||||
@ -4661,7 +4658,7 @@ msgid ""
|
|||||||
"subscription. Your subscription token is:"
|
"subscription. Your subscription token is:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Претплатата е одобрена, но не е зададена обратна URL-адреса. Проверете ги "
|
"Претплатата е одобрена, но не е зададена обратна URL-адреса. Проверете ги "
|
||||||
"инструкциите на веб-страницата за да дознаете како се одобрува претплата. "
|
"инструкциите на мрежното место за да дознаете како се одобрува претплата. "
|
||||||
"Жетонот на Вашата претплата е:"
|
"Жетонот на Вашата претплата е:"
|
||||||
|
|
||||||
#: actions/userauthorization.php:266
|
#: actions/userauthorization.php:266
|
||||||
@ -4675,7 +4672,7 @@ msgid ""
|
|||||||
"subscription."
|
"subscription."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Претплатата е одбиена, но не е зададена обратна URL-адреса. Проверете ги "
|
"Претплатата е одбиена, но не е зададена обратна URL-адреса. Проверете ги "
|
||||||
"инструкциите на веб-страницата за да дознаете како се одбива претплата во "
|
"инструкциите на мрежното место за да дознаете како се одбива претплата во "
|
||||||
"потполност."
|
"потполност."
|
||||||
|
|
||||||
#: actions/userauthorization.php:303
|
#: actions/userauthorization.php:303
|
||||||
@ -4773,7 +4770,7 @@ msgid ""
|
|||||||
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
|
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
|
||||||
"Inc. and contributors."
|
"Inc. and contributors."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Оваа веб-страница работи на %1$s верзија %2$s, Авторски права 2008-2010 "
|
"Ова мрежно место работи на %1$s верзија %2$s, Авторски права 2008-2010 "
|
||||||
"StatusNet, Inc. и учесници."
|
"StatusNet, Inc. и учесници."
|
||||||
|
|
||||||
#: actions/version.php:163
|
#: actions/version.php:163
|
||||||
@ -4910,7 +4907,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: classes/Notice.php:272
|
#: classes/Notice.php:272
|
||||||
msgid "You are banned from posting notices on this site."
|
msgid "You are banned from posting notices on this site."
|
||||||
msgstr "Забрането Ви е да објавувате забелешки на оваа веб-страница."
|
msgstr "Забрането Ви е да објавувате забелешки на ова мрежно место."
|
||||||
|
|
||||||
#: classes/Notice.php:338 classes/Notice.php:364
|
#: classes/Notice.php:338 classes/Notice.php:364
|
||||||
msgid "Problem saving notice."
|
msgid "Problem saving notice."
|
||||||
@ -5061,7 +5058,7 @@ msgstr "Поврзи се"
|
|||||||
#: lib/action.php:458
|
#: lib/action.php:458
|
||||||
msgctxt "TOOLTIP"
|
msgctxt "TOOLTIP"
|
||||||
msgid "Change site configuration"
|
msgid "Change site configuration"
|
||||||
msgstr "Промена на поставките на веб-страницата"
|
msgstr "Промена на поставките на мрежното место"
|
||||||
|
|
||||||
#. TRANS: Main menu option when logged in and site admin for access to site configuration
|
#. TRANS: Main menu option when logged in and site admin for access to site configuration
|
||||||
#: lib/action.php:461
|
#: lib/action.php:461
|
||||||
@ -5143,7 +5140,7 @@ msgstr "Барај"
|
|||||||
#. TRANS: Menu item for site administration
|
#. TRANS: Menu item for site administration
|
||||||
#: lib/action.php:525 lib/adminpanelaction.php:400
|
#: lib/action.php:525 lib/adminpanelaction.php:400
|
||||||
msgid "Site notice"
|
msgid "Site notice"
|
||||||
msgstr "Напомена за веб-страницата"
|
msgstr "Напомена за мрежното место"
|
||||||
|
|
||||||
#. TRANS: DT element for local views block. String is hidden in default CSS.
|
#. TRANS: DT element for local views block. String is hidden in default CSS.
|
||||||
#: lib/action.php:592
|
#: lib/action.php:592
|
||||||
@ -5235,7 +5232,7 @@ msgstr ""
|
|||||||
#. TRANS: DT element for StatusNet site content license.
|
#. TRANS: DT element for StatusNet site content license.
|
||||||
#: lib/action.php:850
|
#: lib/action.php:850
|
||||||
msgid "Site content license"
|
msgid "Site content license"
|
||||||
msgstr "Лиценца на содржините на веб-страницата"
|
msgstr "Лиценца на содржините на мрежното место"
|
||||||
|
|
||||||
#. TRANS: Content license displayed when license is set to 'private'.
|
#. TRANS: Content license displayed when license is set to 'private'.
|
||||||
#. TRANS: %1$s is the site name.
|
#. TRANS: %1$s is the site name.
|
||||||
@ -5303,7 +5300,7 @@ msgstr "Сè уште не е достапна обработката на вм
|
|||||||
#. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights.
|
#. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights.
|
||||||
#: lib/adminpanelaction.php:98
|
#: lib/adminpanelaction.php:98
|
||||||
msgid "You cannot make changes to this site."
|
msgid "You cannot make changes to this site."
|
||||||
msgstr "Не можете да ја менувате оваа веб-страница."
|
msgstr "Не можете да врште измени на ова мрежно место."
|
||||||
|
|
||||||
#. TRANS: Client error message throw when a certain panel's settings cannot be changed.
|
#. TRANS: Client error message throw when a certain panel's settings cannot be changed.
|
||||||
#: lib/adminpanelaction.php:110
|
#: lib/adminpanelaction.php:110
|
||||||
@ -5329,13 +5326,13 @@ msgstr "Не можам да ги избришам нагодувањата за
|
|||||||
#. TRANS: Menu item title/tooltip
|
#. TRANS: Menu item title/tooltip
|
||||||
#: lib/adminpanelaction.php:350
|
#: lib/adminpanelaction.php:350
|
||||||
msgid "Basic site configuration"
|
msgid "Basic site configuration"
|
||||||
msgstr "Основни нагодувања на веб-страницата"
|
msgstr "Основни нагодувања на мрежното место"
|
||||||
|
|
||||||
#. TRANS: Menu item for site administration
|
#. TRANS: Menu item for site administration
|
||||||
#: lib/adminpanelaction.php:352
|
#: lib/adminpanelaction.php:352
|
||||||
msgctxt "MENU"
|
msgctxt "MENU"
|
||||||
msgid "Site"
|
msgid "Site"
|
||||||
msgstr "Веб-страница"
|
msgstr "Мреж. место"
|
||||||
|
|
||||||
#. TRANS: Menu item title/tooltip
|
#. TRANS: Menu item title/tooltip
|
||||||
#: lib/adminpanelaction.php:358
|
#: lib/adminpanelaction.php:358
|
||||||
@ -5376,7 +5373,7 @@ msgstr "Конфигурација на сесиите"
|
|||||||
#. TRANS: Menu item title/tooltip
|
#. TRANS: Menu item title/tooltip
|
||||||
#: lib/adminpanelaction.php:398
|
#: lib/adminpanelaction.php:398
|
||||||
msgid "Edit site notice"
|
msgid "Edit site notice"
|
||||||
msgstr "Уреди објава за веб-страницата"
|
msgstr "Уреди објава за мрежното место"
|
||||||
|
|
||||||
#. TRANS: Menu item title/tooltip
|
#. TRANS: Menu item title/tooltip
|
||||||
#: lib/adminpanelaction.php:406
|
#: lib/adminpanelaction.php:406
|
||||||
@ -6792,7 +6789,7 @@ msgstr "Стави го корисников во песочен режим"
|
|||||||
|
|
||||||
#: lib/searchaction.php:120
|
#: lib/searchaction.php:120
|
||||||
msgid "Search site"
|
msgid "Search site"
|
||||||
msgstr "Пребарај по веб-страницата"
|
msgstr "Пребарај по мрежното место"
|
||||||
|
|
||||||
#: lib/searchaction.php:126
|
#: lib/searchaction.php:126
|
||||||
msgid "Keyword(s)"
|
msgid "Keyword(s)"
|
||||||
@ -6812,7 +6809,7 @@ msgstr "Луѓе"
|
|||||||
|
|
||||||
#: lib/searchgroupnav.php:81
|
#: lib/searchgroupnav.php:81
|
||||||
msgid "Find people on this site"
|
msgid "Find people on this site"
|
||||||
msgstr "Пронајдете луѓе на оваа веб-страница"
|
msgstr "Пронајдете луѓе на ова мрежно место"
|
||||||
|
|
||||||
#: lib/searchgroupnav.php:83
|
#: lib/searchgroupnav.php:83
|
||||||
msgid "Find content of notices"
|
msgid "Find content of notices"
|
||||||
@ -6820,7 +6817,7 @@ msgstr "Пронајдете содржини на забелешките"
|
|||||||
|
|
||||||
#: lib/searchgroupnav.php:85
|
#: lib/searchgroupnav.php:85
|
||||||
msgid "Find groups on this site"
|
msgid "Find groups on this site"
|
||||||
msgstr "Пронајдете групи на оваа веб-страница"
|
msgstr "Пронајдете групи на ова мрежно место"
|
||||||
|
|
||||||
#: lib/section.php:89
|
#: lib/section.php:89
|
||||||
msgid "Untitled section"
|
msgid "Untitled section"
|
||||||
@ -6879,47 +6876,48 @@ msgstr "Без ознаки"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Опслужувачот не може да се справи со подигања на изгледи без ZIP-поддршка."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Системска грешка при подигањето на податотеката."
|
msgstr "Подигањето на мотивот недостасува или не успеа."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Подновата на аватарот не успеа."
|
msgstr "Зачувувањето на мотивот не успеа."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Неважечки изглед: лош состав на папката."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Подигнатиот изглед е преголем; мора да биде помал од %d бајти (незбиен)."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Неважечки архив за изглеедот: недостасува податотеката css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Изгледот содржи неважечки назив на податотека или папка. Дозволени се само "
|
||||||
|
"ASCII-букви, бројки, долна црта и знак за минус."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "Изгледот содржи податотека од типот „.%s“, која не е дозволена."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Грешка во подновувањето на далечинскиот профил."
|
msgstr "Грешка при отворањето на архивот за мотив."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -10,11 +10,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:35+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:30+0000\n"
|
||||||
"Language-Team: Norwegian (bokmål)\n"
|
"Language-Team: Norwegian (bokmål)\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: no\n"
|
"X-Language-Code: no\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -11,11 +11,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:48+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:39+0000\n"
|
||||||
"Language-Team: Dutch\n"
|
"Language-Team: Dutch\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: nl\n"
|
"X-Language-Code: nl\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1143,13 +1143,12 @@ msgid "Theme for the site."
|
|||||||
msgstr "Mogelijke vormgevingen voor deze website."
|
msgstr "Mogelijke vormgevingen voor deze website."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Vormgeving website"
|
msgstr "Aangepaste vormgeving"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "U kunt een vormgeving voor StatusNet uploaden als ZIP-archief."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1209,11 +1208,11 @@ msgstr "Verwijzingen"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Uitgebreid"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Aangepaste CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6928,48 +6927,54 @@ msgstr "Geen"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Deze server kan niet overweg met uploads van vormgevingsbestanden zonder ZIP-"
|
||||||
|
"ondersteuning."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Er is een systeemfout opgetreden tijdens het uploaden van het bestand."
|
msgstr "Het uploaden van het bestand met de vormgeving is mislukt."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Het bijwerken van de avatar is mislukt."
|
msgstr "Het opslaan van de vormgeving is mislukt."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Ongeldige vormgeving: de mappenstructuur is onjuist."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"De toegevoegde vormgeving is te groot. Deze moet uitgepakt kleiner zijn dan %"
|
||||||
|
"d bytes."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ongeldig bestand met vormgeving: het bestand display.css is niet aanwezig"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"De vormgeving bevat een ongeldige bestandsnaam of mapnaam. Gebruik alleen "
|
||||||
|
"maar ASCII-letters, getallen, liggende streepjes en het minteken."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"De vormgeving bevat een bestand van het type \".%s\". Dit is niet toegestaan."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Er is een fout opgetreden tijdens het bijwerken van het profiel op afstand."
|
"Er is een fout opgetreden tijdens het openen van het archiefbestand met de "
|
||||||
|
"vormgeving."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -9,11 +9,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:43+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:35+0000\n"
|
||||||
"Language-Team: Norwegian Nynorsk\n"
|
"Language-Team: Norwegian Nynorsk\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: nn\n"
|
"X-Language-Code: nn\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
|
@ -12,7 +12,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:52+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:44+0000\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <pl@li.org>\n"
|
"Language-Team: Polish <pl@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -20,7 +20,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
"|| n%100>=20) ? 1 : 2);\n"
|
"|| n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: pl\n"
|
"X-Language-Code: pl\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1128,13 +1128,12 @@ msgid "Theme for the site."
|
|||||||
msgstr "Motyw witryny."
|
msgstr "Motyw witryny."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Motyw witryny"
|
msgstr "Własny motyw"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr "Można wysłać własny motyw witryny StatusNet jako archiwum zip."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1192,11 +1191,11 @@ msgstr "Odnośniki"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Zaawansowane"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "Własny plik CSS"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
@ -6848,47 +6847,49 @@ msgstr "Brak"
|
|||||||
#: lib/themeuploader.php:50
|
#: lib/themeuploader.php:50
|
||||||
msgid "This server cannot handle theme uploads without ZIP support."
|
msgid "This server cannot handle theme uploads without ZIP support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ten serwer nie może obsługiwać wysyłania motywu bez obsługi archiwów zip."
|
||||||
|
|
||||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||||
#, fuzzy
|
|
||||||
msgid "Theme upload missing or failed."
|
msgid "Theme upload missing or failed."
|
||||||
msgstr "Błąd systemu podczas wysyłania pliku."
|
msgstr "Brak wysłania motywu lub nie powiodło się."
|
||||||
|
|
||||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||||
#, fuzzy
|
|
||||||
msgid "Failed saving theme."
|
msgid "Failed saving theme."
|
||||||
msgstr "Zaktualizowanie awatara nie powiodło się."
|
msgstr "Zapisanie motywu nie powiodło się."
|
||||||
|
|
||||||
#: lib/themeuploader.php:139
|
#: lib/themeuploader.php:139
|
||||||
msgid "Invalid theme: bad directory structure."
|
msgid "Invalid theme: bad directory structure."
|
||||||
msgstr ""
|
msgstr "Nieprawidłowy motyw: błędna struktura katalogów."
|
||||||
|
|
||||||
#: lib/themeuploader.php:166
|
#: lib/themeuploader.php:166
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wysłany motyw jest za duży, musi być mniejszy niż %d bajtów po "
|
||||||
|
"zdekompresowaniu."
|
||||||
|
|
||||||
#: lib/themeuploader.php:178
|
#: lib/themeuploader.php:178
|
||||||
msgid "Invalid theme archive: missing file css/display.css"
|
msgid "Invalid theme archive: missing file css/display.css"
|
||||||
msgstr ""
|
msgstr "Nieprawidłowe archiwum motywu: brak pliku css/display.css"
|
||||||
|
|
||||||
#: lib/themeuploader.php:205
|
#: lib/themeuploader.php:205
|
||||||
msgid ""
|
msgid ""
|
||||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||||
"digits, underscore, and minus sign."
|
"digits, underscore, and minus sign."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Motyw zawiera nieprawidłowy plik lub nazwę katalogu. Należy używać tylko "
|
||||||
|
"liter, cyfr, podkreślników i znaku minus z zestawu ASCII."
|
||||||
|
|
||||||
#: lib/themeuploader.php:216
|
#: lib/themeuploader.php:216
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||||
msgstr ""
|
msgstr "Motyw zawiera plik typu \\\".%s\\\", który nie jest dozwolony."
|
||||||
|
|
||||||
#: lib/themeuploader.php:234
|
#: lib/themeuploader.php:234
|
||||||
#, fuzzy
|
|
||||||
msgid "Error opening theme archive."
|
msgid "Error opening theme archive."
|
||||||
msgstr "Błąd podczas aktualizowania zdalnego profilu."
|
msgstr "Błąd podczas otwierania archiwum motywu."
|
||||||
|
|
||||||
#: lib/topposterssection.php:74
|
#: lib/topposterssection.php:74
|
||||||
msgid "Top posters"
|
msgid "Top posters"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Translation of StatusNet to Portuguese
|
# Translation of StatusNet to Portuguese
|
||||||
#
|
#
|
||||||
# Author@translatewiki.net: Gallaecio
|
# Author@translatewiki.net: Gallaecio
|
||||||
|
# Author@translatewiki.net: Giro720
|
||||||
# Author@translatewiki.net: Hamilton Abreu
|
# Author@translatewiki.net: Hamilton Abreu
|
||||||
# Author@translatewiki.net: Ipublicis
|
# Author@translatewiki.net: Ipublicis
|
||||||
# --
|
# --
|
||||||
@ -11,11 +12,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:20:57+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:48+0000\n"
|
||||||
"Language-Team: Portuguese\n"
|
"Language-Team: Portuguese\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: pt\n"
|
"X-Language-Code: pt\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1183,7 +1184,7 @@ msgstr "Texto"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:626 lib/designsettings.php:230
|
#: actions/designadminpanel.php:626 lib/designsettings.php:230
|
||||||
msgid "Links"
|
msgid "Links"
|
||||||
msgstr "Ligações"
|
msgstr "Links"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
@ -6683,7 +6684,7 @@ msgstr "Todos os subscritores"
|
|||||||
|
|
||||||
#: lib/profileaction.php:191
|
#: lib/profileaction.php:191
|
||||||
msgid "User ID"
|
msgid "User ID"
|
||||||
msgstr "ID do utilizador"
|
msgstr "Número de identificação"
|
||||||
|
|
||||||
#: lib/profileaction.php:196
|
#: lib/profileaction.php:196
|
||||||
msgid "Member since"
|
msgid "Member since"
|
||||||
|
@ -13,11 +13,11 @@ msgstr ""
|
|||||||
"Project-Id-Version: StatusNet\n"
|
"Project-Id-Version: StatusNet\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
"POT-Creation-Date: 2010-06-16 22:18+0000\n"
|
||||||
"PO-Revision-Date: 2010-06-16 22:21:01+0000\n"
|
"PO-Revision-Date: 2010-06-21 18:04:52+0000\n"
|
||||||
"Language-Team: Brazilian Portuguese\n"
|
"Language-Team: Brazilian Portuguese\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: MediaWiki 1.17alpha (r68131); Translate extension (2010-06-12)\n"
|
"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
|
||||||
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
|
||||||
"X-Language-Code: pt-br\n"
|
"X-Language-Code: pt-br\n"
|
||||||
"X-Message-Group: out-statusnet\n"
|
"X-Message-Group: out-statusnet\n"
|
||||||
@ -1136,13 +1136,14 @@ msgid "Theme for the site."
|
|||||||
msgstr "Tema para o site."
|
msgstr "Tema para o site."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:467
|
#: actions/designadminpanel.php:467
|
||||||
#, fuzzy
|
|
||||||
msgid "Custom theme"
|
msgid "Custom theme"
|
||||||
msgstr "Tema do site"
|
msgstr "Tema personalizado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:471
|
#: actions/designadminpanel.php:471
|
||||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Você pode enviar um tema personalizado para o StatusNet, na forma de um "
|
||||||
|
"arquivo .zip."
|
||||||
|
|
||||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||||
msgid "Change background image"
|
msgid "Change background image"
|
||||||
@ -1202,11 +1203,11 @@ msgstr "Links"
|
|||||||
|
|
||||||
#: actions/designadminpanel.php:651
|
#: actions/designadminpanel.php:651
|
||||||
msgid "Advanced"
|
msgid "Advanced"
|
||||||
msgstr ""
|
msgstr "Avançado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:655
|
#: actions/designadminpanel.php:655
|
||||||
msgid "Custom CSS"
|
msgid "Custom CSS"
|
||||||
msgstr ""
|
msgstr "CSS personalizado"
|
||||||
|
|
||||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||||
msgid "Use defaults"
|
msgid "Use defaults"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user