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
|
||||
------
|
||||
|
||||
StatusNet 0.9.2 ("King of Birds")
|
||||
3 May 2010
|
||||
StatusNet 0.9.3 ("Half a World Away")
|
||||
29 June 2010
|
||||
|
||||
This is the README file for StatusNet, the Open Source microblogging
|
||||
platform. It includes installation instructions, descriptions of
|
||||
@ -77,40 +77,27 @@ for additional terms.
|
||||
New this version
|
||||
================
|
||||
|
||||
This is a minor bug and feature release since version 0.9.1 released 28
|
||||
March 2010.
|
||||
This is a minor bug and feature release since version 0.9.2 released on
|
||||
4 May 2010.
|
||||
|
||||
Because of fixes to OStatus bugs, it is highly recommended that all
|
||||
public sites upgrade to the new version immediately.
|
||||
For best compatibility with client software and site federation, and a lot of
|
||||
bug fixes, it is highly recommended that all public sites upgrade to the new
|
||||
version.
|
||||
|
||||
Notable changes this version:
|
||||
|
||||
- Installer no longer fails with a PHP fatal error when trying to set up the
|
||||
subscription to update@status.net
|
||||
- Fixed email notifications for @-replies that come in via OStatus
|
||||
- OStatus related Fixes to the cloudy theme
|
||||
- Pass geo locations over Twitter bridge (will only be used if enabled on the
|
||||
Twitter side)
|
||||
- scripts/showplugins.php - script to dump the list of activated plugins and
|
||||
their settings
|
||||
- scripts/fixup_blocks.php - script to finds any stray subscriptions in
|
||||
violation of blocks, and removes them
|
||||
- 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
|
||||
- Enhanced API output to aid StatusNet-specific clients
|
||||
- Many updates to user interface translation from TranslateWiki
|
||||
- OStatus now works subscribing to SSL-protected sites by default
|
||||
- OpenID now works on PHP 5.3, supports closer site integration.
|
||||
- Numerous API and FOAF output fixes.
|
||||
- Fixes to Facebook integration for FB API behavior changes
|
||||
- PostgreSQL support updates
|
||||
- Initial version of a custom theme uploader (disabled by default)
|
||||
- LDAP auth plugins cleanup
|
||||
- Many 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
|
||||
=============
|
||||
@ -121,8 +108,8 @@ run correctly.
|
||||
- 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
|
||||
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
|
||||
to cause some failures for OpenID.
|
||||
daemons on 64-bit platforms. PHP 5.3.x should work correctly in this
|
||||
release, but problems with some plugins are possible.
|
||||
- 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
|
||||
be possible to install on earlier (or later!) versions. The server
|
||||
|
@ -75,7 +75,7 @@ class ApiAccountVerifyCredentialsAction extends ApiAuthAction
|
||||
|
||||
if ($this->format == 'xml') {
|
||||
$this->initDocument('xml');
|
||||
$this->showTwitterXmlUser($twitter_user);
|
||||
$this->showTwitterXmlUser($twitter_user, 'user', true);
|
||||
$this->endDocument('xml');
|
||||
} elseif ($this->format == 'json') {
|
||||
$this->initDocument('json');
|
||||
|
@ -23,7 +23,7 @@
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -65,7 +65,7 @@ class ApiBlockCreateAction extends ApiAuthAction
|
||||
parent::prepare($args);
|
||||
|
||||
$this->user = $this->auth_user;
|
||||
$this->other = $this->getTargetUser($this->arg('id'));
|
||||
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -64,7 +64,7 @@ class ApiBlockDestroyAction extends ApiAuthAction
|
||||
parent::prepare($args);
|
||||
|
||||
$this->user = $this->auth_user;
|
||||
$this->other = $this->getTargetUser($this->arg('id'));
|
||||
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
* @author Dan Moore <dan@moore.cx>
|
||||
* @author Evan Prodromou <evan@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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -67,7 +67,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
|
||||
parent::prepare($args);
|
||||
|
||||
$this->user = $this->auth_user;
|
||||
$this->other = $this->getTargetUser($id);
|
||||
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -106,7 +106,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
|
||||
|
||||
if (empty($this->other)) {
|
||||
$this->clientError(
|
||||
_('Could not follow user: User not found.'),
|
||||
_('Could not follow user: profile not found.'),
|
||||
403,
|
||||
$this->format
|
||||
);
|
||||
|
@ -24,7 +24,7 @@
|
||||
* @author Dan Moore <dan@moore.cx>
|
||||
* @author Evan Prodromou <evan@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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -67,7 +67,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
|
||||
parent::prepare($args);
|
||||
|
||||
$this->user = $this->auth_user;
|
||||
$this->other = $this->getTargetUser($id);
|
||||
$this->other = $this->getTargetProfile($this->arg('id'));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -125,8 +125,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
|
||||
}
|
||||
|
||||
// throws an exception on error
|
||||
Subscription::cancel($this->user->getProfile(),
|
||||
$this->other->getProfile());
|
||||
Subscription::cancel($this->user->getProfile(), $this->other);
|
||||
|
||||
$this->initDocument($this->format);
|
||||
$this->showProfile($this->other, $this->format);
|
||||
|
@ -24,7 +24,7 @@
|
||||
* @author Dan Moore <dan@moore.cx>
|
||||
* @author Evan Prodromou <evan@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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -50,8 +50,8 @@ require_once INSTALLDIR . '/lib/apiprivateauth.php';
|
||||
|
||||
class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
||||
{
|
||||
var $user_a = null;
|
||||
var $user_b = null;
|
||||
var $profile_a = null;
|
||||
var $profile_b = null;
|
||||
|
||||
/**
|
||||
* Take arguments for running
|
||||
@ -66,11 +66,8 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
||||
{
|
||||
parent::prepare($args);
|
||||
|
||||
$user_a_id = $this->trimmed('user_a');
|
||||
$user_b_id = $this->trimmed('user_b');
|
||||
|
||||
$this->user_a = $this->getTargetUser($user_a_id);
|
||||
$this->user_b = $this->getTargetUser($user_b_id);
|
||||
$this->profile_a = $this->getTargetProfile($this->trimmed('user_a'));
|
||||
$this->profile_b = $this->getTargetProfile($this->trimmed('user_b'));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -89,16 +86,16 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
|
||||
{
|
||||
parent::handle($args);
|
||||
|
||||
if (empty($this->user_a) || empty($this->user_b)) {
|
||||
if (empty($this->profile_a) || empty($this->profile_b)) {
|
||||
$this->clientError(
|
||||
_('Two user ids or screen_names must be supplied.'),
|
||||
_('Two valid IDs or screen_names must be supplied.'),
|
||||
400,
|
||||
$this->format
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $this->user_a->isSubscribed($this->user_b);
|
||||
$result = Subscription::exists($this->profile_a, $this->profile_b);
|
||||
|
||||
switch ($this->format) {
|
||||
case 'xml':
|
||||
|
@ -22,7 +22,7 @@
|
||||
* @category Search
|
||||
* @package StatusNet
|
||||
* @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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||
|
||||
/**
|
||||
* Action for outputting search results in Twitter compatible Atom
|
||||
* 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
|
||||
* @link http://status.net/
|
||||
*
|
||||
* @see ApiAction
|
||||
* @see ApiPrivateAuthAction
|
||||
*/
|
||||
|
||||
class TwitapisearchatomAction extends ApiAction
|
||||
class ApiSearchAtomAction extends ApiPrivateAuthAction
|
||||
{
|
||||
|
||||
var $cnt;
|
||||
@ -96,8 +98,11 @@ class TwitapisearchatomAction extends ApiAction
|
||||
|
||||
function prepare($args)
|
||||
{
|
||||
common_debug("in apisearchatom prepare()");
|
||||
|
||||
parent::prepare($args);
|
||||
|
||||
|
||||
$this->query = $this->trimmed('q');
|
||||
$this->lang = $this->trimmed('lang');
|
||||
$this->rpp = $this->trimmed('rpp');
|
||||
@ -138,6 +143,7 @@ class TwitapisearchatomAction extends ApiAction
|
||||
function handle($args)
|
||||
{
|
||||
parent::handle($args);
|
||||
common_debug("In apisearchatom handle()");
|
||||
$this->showAtom();
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
* @category Search
|
||||
* @package StatusNet
|
||||
* @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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -31,6 +31,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||
require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
|
||||
|
||||
/**
|
||||
@ -44,7 +45,7 @@ require_once INSTALLDIR.'/lib/jsonsearchresultslist.php';
|
||||
* @see ApiAction
|
||||
*/
|
||||
|
||||
class TwitapisearchjsonAction extends ApiAction
|
||||
class ApiSearchJSONAction extends ApiPrivateAuthAction
|
||||
{
|
||||
var $query;
|
||||
var $lang;
|
||||
@ -64,6 +65,8 @@ class TwitapisearchjsonAction extends ApiAction
|
||||
|
||||
function prepare($args)
|
||||
{
|
||||
common_debug("apisearchjson prepare()");
|
||||
|
||||
parent::prepare($args);
|
||||
|
||||
$this->query = $this->trimmed('q');
|
@ -206,7 +206,8 @@ class ApiSubscriptionsAction extends ApiBareAuthAction
|
||||
{
|
||||
switch ($this->format) {
|
||||
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) {
|
||||
$this->showProfile(
|
||||
$profile,
|
||||
|
@ -22,7 +22,7 @@
|
||||
* @category Search
|
||||
* @package StatusNet
|
||||
* @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
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/apiprivateauth.php';
|
||||
|
||||
/**
|
||||
* Returns the top ten queries that are currently trending
|
||||
*
|
||||
@ -43,7 +45,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
* @see ApiAction
|
||||
*/
|
||||
|
||||
class TwitapitrendsAction extends ApiAction
|
||||
class ApiTrendsAction extends ApiPrivateAuthAction
|
||||
{
|
||||
|
||||
var $callback;
|
||||
@ -82,7 +84,7 @@ class TwitapitrendsAction extends ApiAction
|
||||
*/
|
||||
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()
|
||||
{
|
||||
// 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',
|
||||
'class' => 'section'));
|
||||
|
||||
@ -451,7 +443,7 @@ class ShowgroupAction extends GroupDesignAction
|
||||
|
||||
$this->elementStart('dl', 'entity_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('div');
|
||||
|
@ -302,6 +302,7 @@ class File extends Memcached_DataObject
|
||||
|
||||
if(! isset($this->filename)){
|
||||
$notEnclosureMimeTypes = array(null,'text/html','application/xhtml+xml');
|
||||
$mimetype = $this->mimetype;
|
||||
if($mimetype != null){
|
||||
$mimetype = strtolower($this->mimetype);
|
||||
}
|
||||
|
@ -1192,7 +1192,7 @@ class Notice extends Memcached_DataObject
|
||||
'xmlns:media' => 'http://purl.org/syndication/atommedia',
|
||||
'xmlns:poco' => 'http://portablecontacts.net/spec/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 {
|
||||
$attrs = array();
|
||||
}
|
||||
@ -1227,7 +1227,7 @@ class Notice extends Memcached_DataObject
|
||||
$xs->element('title', null, common_xml_safe_str($this->content));
|
||||
|
||||
if ($author) {
|
||||
$xs->raw($profile->asAtomAuthor());
|
||||
$xs->raw($profile->asAtomAuthor($cur));
|
||||
$xs->raw($profile->asActivityActor());
|
||||
}
|
||||
|
||||
@ -1240,9 +1240,25 @@ class Notice extends Memcached_DataObject
|
||||
$xs->element('published', 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(
|
||||
'local_id' => $this->id, // local notice ID (useful to clients for ordering)
|
||||
'source' => $this->source, // the client name (source attribution)
|
||||
'local_id' => $this->id, // local notice ID (useful to clients for ordering)
|
||||
'source' => $source, // the client name (source attribution)
|
||||
);
|
||||
|
||||
$ns = $this->getSource();
|
||||
@ -1254,8 +1270,8 @@ class Notice extends Memcached_DataObject
|
||||
|
||||
if (!empty($cur)) {
|
||||
$noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false";
|
||||
$profile = $cur->getProfile();
|
||||
$noticeInfoAttr['repeated'] = ($profile->hasRepeated($this->id)) ? "true" : "false";
|
||||
$profile = $cur->getProfile();
|
||||
$noticeInfoAttr['repeated'] = ($profile->hasRepeated($this->id)) ? "true" : "false";
|
||||
}
|
||||
|
||||
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.
|
||||
*
|
||||
* @param Profile $cur the current authenticated user
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function asAtomAuthor()
|
||||
function asAtomAuthor($cur = null)
|
||||
{
|
||||
$xs = new XMLStringer(true);
|
||||
|
||||
$xs->elementStart('author');
|
||||
$xs->element('name', null, $this->nickname);
|
||||
$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');
|
||||
|
||||
return $xs->getString();
|
||||
|
@ -64,4 +64,17 @@ class Queue_item extends Memcached_DataObject
|
||||
$qi = 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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()
|
||||
{
|
||||
$this->decache(); # while we still have the values!
|
||||
|
@ -154,6 +154,21 @@ class User_group extends Memcached_DataObject
|
||||
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)
|
||||
{
|
||||
$qry =
|
||||
|
@ -51,6 +51,7 @@ VALUES
|
||||
('smob','SMOB','http://smob.sioc-project.org/', now()),
|
||||
('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()),
|
||||
('spaz','Spaz','http://funkatron.com/spaz', now()),
|
||||
('StatusNet Desktop', 'StatusNet Desktop', 'http://status.net/desktop', now()),
|
||||
('tarpipe','tarpipe','http://tarpipe.com/', now()),
|
||||
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
|
||||
('tr.im','tr.im','http://tr.im/', now()),
|
||||
|
@ -20,7 +20,7 @@
|
||||
/**
|
||||
* The library version string
|
||||
*/
|
||||
define('Auth_OpenID_VERSION', '2.1.3');
|
||||
define('Auth_OpenID_VERSION', '2.2.2');
|
||||
|
||||
/**
|
||||
* Require the fetcher code.
|
||||
@ -102,9 +102,7 @@ define('Auth_OpenID_digits',
|
||||
define('Auth_OpenID_punct',
|
||||
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
|
||||
|
||||
if (Auth_OpenID_getMathLib() === null) {
|
||||
Auth_OpenID_setNoMathSupport();
|
||||
}
|
||||
Auth_OpenID_include_init();
|
||||
|
||||
/**
|
||||
* The OpenID utility function class.
|
||||
@ -120,7 +118,7 @@ class Auth_OpenID {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function isFailure($thing)
|
||||
static function isFailure($thing)
|
||||
{
|
||||
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
|
||||
* POST was used but php://input cannot be opened.
|
||||
*
|
||||
* See background:
|
||||
* http://lists.openidenabled.com/pipermail/dev/2007-March/000395.html
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function getQuery($query_str=null)
|
||||
static function getQuery($query_str=null)
|
||||
{
|
||||
$data = array();
|
||||
|
||||
@ -177,7 +178,7 @@ class Auth_OpenID {
|
||||
return $data;
|
||||
}
|
||||
|
||||
function params_from_string($str)
|
||||
static function params_from_string($str)
|
||||
{
|
||||
$chunks = explode("&", $str);
|
||||
|
||||
@ -190,7 +191,7 @@ class Auth_OpenID {
|
||||
}
|
||||
|
||||
list($k, $v) = $parts;
|
||||
$data[$k] = urldecode($v);
|
||||
$data[urldecode($k)] = urldecode($v);
|
||||
}
|
||||
|
||||
return $data;
|
||||
@ -203,7 +204,7 @@ class Auth_OpenID {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function ensureDir($dir_name)
|
||||
static function ensureDir($dir_name)
|
||||
{
|
||||
if (is_dir($dir_name) || @mkdir($dir_name)) {
|
||||
return true;
|
||||
@ -225,7 +226,7 @@ class Auth_OpenID {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function addPrefix($values, $prefix)
|
||||
static function addPrefix($values, $prefix)
|
||||
{
|
||||
$new_values = array();
|
||||
foreach ($values as $s) {
|
||||
@ -241,7 +242,7 @@ class Auth_OpenID {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function arrayGet($arr, $key, $fallback = null)
|
||||
static function arrayGet($arr, $key, $fallback = null)
|
||||
{
|
||||
if (is_array($arr)) {
|
||||
if (array_key_exists($key, $arr)) {
|
||||
@ -261,7 +262,7 @@ class Auth_OpenID {
|
||||
/**
|
||||
* Replacement for PHP's broken parse_str.
|
||||
*/
|
||||
function parse_str($query)
|
||||
static function parse_str($query)
|
||||
{
|
||||
if ($query === null) {
|
||||
return null;
|
||||
@ -278,7 +279,7 @@ class Auth_OpenID {
|
||||
}
|
||||
|
||||
list($key, $value) = $pair;
|
||||
$new_parts[$key] = urldecode($value);
|
||||
$new_parts[urldecode($key)] = urldecode($value);
|
||||
}
|
||||
|
||||
return $new_parts;
|
||||
@ -295,7 +296,7 @@ class Auth_OpenID {
|
||||
* pairs from $data into a URL query string
|
||||
* (e.g. "username=bob&id=56").
|
||||
*/
|
||||
function httpBuildQuery($data)
|
||||
static function httpBuildQuery($data)
|
||||
{
|
||||
$pairs = array();
|
||||
foreach ($data as $key => $value) {
|
||||
@ -323,7 +324,7 @@ class Auth_OpenID {
|
||||
* @return string $url The original URL with the new parameters added.
|
||||
*
|
||||
*/
|
||||
function appendArgs($url, $args)
|
||||
static function appendArgs($url, $args)
|
||||
{
|
||||
if (count($args) == 0) {
|
||||
return $url;
|
||||
@ -367,7 +368,7 @@ class Auth_OpenID {
|
||||
* @return string $url The URL resulting from assembling the
|
||||
* specified components.
|
||||
*/
|
||||
function urlunparse($scheme, $host, $port = null, $path = '/',
|
||||
static function urlunparse($scheme, $host, $port = null, $path = '/',
|
||||
$query = '', $fragment = '')
|
||||
{
|
||||
|
||||
@ -412,7 +413,7 @@ class Auth_OpenID {
|
||||
* @return mixed $new_url The URL after normalization, or null if
|
||||
* $url was malformed.
|
||||
*/
|
||||
function normalizeUrl($url)
|
||||
static function normalizeUrl($url)
|
||||
{
|
||||
@$parsed = parse_url($url);
|
||||
|
||||
@ -443,7 +444,7 @@ class Auth_OpenID {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function intval($value)
|
||||
static function intval($value)
|
||||
{
|
||||
$re = "/^\\d+$/";
|
||||
|
||||
@ -461,7 +462,7 @@ class Auth_OpenID {
|
||||
* @param string $str The string of bytes to count.
|
||||
* @return int The number of bytes in $str.
|
||||
*/
|
||||
function bytes($str)
|
||||
static function bytes($str)
|
||||
{
|
||||
return strlen(bin2hex($str)) / 2;
|
||||
}
|
||||
@ -470,7 +471,7 @@ class Auth_OpenID {
|
||||
* Get the bytes in a string independently of multibyte support
|
||||
* conditions.
|
||||
*/
|
||||
function toBytes($str)
|
||||
static function toBytes($str)
|
||||
{
|
||||
$hex = bin2hex($str);
|
||||
|
||||
@ -486,7 +487,7 @@ class Auth_OpenID {
|
||||
return $b;
|
||||
}
|
||||
|
||||
function urldefrag($url)
|
||||
static function urldefrag($url)
|
||||
{
|
||||
$parts = explode("#", $url, 2);
|
||||
|
||||
@ -497,7 +498,7 @@ class Auth_OpenID {
|
||||
}
|
||||
}
|
||||
|
||||
function filter($callback, &$sequence)
|
||||
static function filter($callback, &$sequence)
|
||||
{
|
||||
$result = array();
|
||||
|
||||
@ -510,7 +511,7 @@ class Auth_OpenID {
|
||||
return $result;
|
||||
}
|
||||
|
||||
function update(&$dest, &$src)
|
||||
static function update(&$dest, &$src)
|
||||
{
|
||||
foreach ($src as $k => $v) {
|
||||
$dest[$k] = $v;
|
||||
@ -524,14 +525,14 @@ class Auth_OpenID {
|
||||
*
|
||||
* @param string $format_string The sprintf format for the message
|
||||
*/
|
||||
function log($format_string)
|
||||
static function log($format_string)
|
||||
{
|
||||
$args = func_get_args();
|
||||
$message = call_user_func_array('sprintf', $args);
|
||||
error_log($message);
|
||||
}
|
||||
|
||||
function autoSubmitHTML($form, $title="OpenId transaction in progress")
|
||||
static function autoSubmitHTML($form, $title="OpenId transaction in progress")
|
||||
{
|
||||
return("<html>".
|
||||
"<head><title>".
|
||||
@ -549,4 +550,14 @@ class Auth_OpenID {
|
||||
"</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
|
||||
* if not.
|
||||
*/
|
||||
function isError($thing)
|
||||
static function isError($thing)
|
||||
{
|
||||
return is_a($thing, 'Auth_OpenID_AX_Error');
|
||||
}
|
||||
@ -191,7 +191,7 @@ class Auth_OpenID_AX_AttrInfo {
|
||||
* Construct an attribute information object. For parameter
|
||||
* details, see the constructor.
|
||||
*/
|
||||
function make($type_uri, $count=1, $required=false,
|
||||
static function make($type_uri, $count=1, $required=false,
|
||||
$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
|
||||
* 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();
|
||||
|
||||
@ -386,7 +386,7 @@ class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
|
||||
* Auth_OpenID_AX_FetchRequest extracted from the request message if
|
||||
* successful
|
||||
*/
|
||||
function &fromOpenIDRequest($request)
|
||||
static function fromOpenIDRequest($request)
|
||||
{
|
||||
$m = $request->message;
|
||||
$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'));
|
||||
|
||||
foreach ($required as $type_uri) {
|
||||
$attrib =& $this->requested_attributes[$type_uri];
|
||||
$attrib = $this->requested_attributes[$type_uri];
|
||||
$attrib->required = true;
|
||||
}
|
||||
|
||||
@ -587,7 +587,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _getExtensionKVArgs(&$aliases)
|
||||
function _getExtensionKVArgs($aliases)
|
||||
{
|
||||
if ($aliases === null) {
|
||||
$aliases = new Auth_OpenID_NamespaceMap();
|
||||
@ -652,7 +652,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
|
||||
foreach ($aliases->iteritems() as $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_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;
|
||||
}
|
||||
|
||||
Auth_OpenID::update(&$ax_args, $kv_args);
|
||||
Auth_OpenID::update($ax_args, $kv_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
|
||||
* OpenID message
|
||||
*/
|
||||
function fromSuccessResponse($success_response, $signed=true)
|
||||
static function fromSuccessResponse($success_response, $signed=true)
|
||||
{
|
||||
$obj = new Auth_OpenID_AX_FetchResponse();
|
||||
if ($signed) {
|
||||
@ -960,7 +960,7 @@ class Auth_OpenID_AX_StoreRequest extends Auth_OpenID_AX_KeyValueMessage {
|
||||
{
|
||||
$ax_args = $this->_newArgs();
|
||||
$kv_args = $this->_getExtensionKVArgs($aliases);
|
||||
Auth_OpenID::update(&$ax_args, $kv_args);
|
||||
Auth_OpenID::update($ax_args, $kv_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
|
||||
* 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)) {
|
||||
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}
|
||||
* instance.
|
||||
*/
|
||||
function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
|
||||
static function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
|
||||
{
|
||||
$issued = time();
|
||||
$lifetime = $expires_in;
|
||||
@ -132,7 +132,7 @@ class Auth_OpenID_Association {
|
||||
$handle, $secret, $issued, $lifetime, $assoc_type)
|
||||
{
|
||||
if (!in_array($assoc_type,
|
||||
Auth_OpenID_getSupportedAssociationTypes())) {
|
||||
Auth_OpenID_getSupportedAssociationTypes(), true)) {
|
||||
$fmt = 'Unsupported association type (%s)';
|
||||
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()
|
||||
* @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);
|
||||
$keys = array();
|
||||
@ -327,7 +327,7 @@ class Auth_OpenID_Association {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _makePairs(&$message)
|
||||
function _makePairs($message)
|
||||
{
|
||||
$signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
|
||||
if (!$signed || Auth_OpenID::isFailure($signed)) {
|
||||
@ -352,7 +352,7 @@ class Auth_OpenID_Association {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function getMessageSignature(&$message)
|
||||
function getMessageSignature($message)
|
||||
{
|
||||
$pairs = $this->_makePairs($message);
|
||||
return base64_encode($this->sign($pairs));
|
||||
@ -364,7 +364,7 @@ class Auth_OpenID_Association {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function checkMessageSignature(&$message)
|
||||
function checkMessageSignature($message)
|
||||
{
|
||||
$sig = $message->getArg(Auth_OpenID_OPENID_NS,
|
||||
'sig');
|
||||
@ -469,18 +469,16 @@ function Auth_OpenID_getOnlyEncryptedOrder()
|
||||
return $result;
|
||||
}
|
||||
|
||||
function &Auth_OpenID_getDefaultNegotiator()
|
||||
function Auth_OpenID_getDefaultNegotiator()
|
||||
{
|
||||
$x = new Auth_OpenID_SessionNegotiator(
|
||||
return new Auth_OpenID_SessionNegotiator(
|
||||
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());
|
||||
return $x;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -610,4 +608,3 @@ class Auth_OpenID_SessionNegotiator {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -351,8 +351,7 @@ function Auth_OpenID_math_extensions()
|
||||
'class' => 'Auth_OpenID_GmpMathWrapper');
|
||||
}
|
||||
|
||||
$result[] = array(
|
||||
'modules' => array('bcmath', 'php_bcmath'),
|
||||
$result[] = array('modules' => array('bcmath', 'php_bcmath'),
|
||||
'extension' => 'bcmath',
|
||||
'class' => 'Auth_OpenID_BcMathWrapper');
|
||||
|
||||
@ -366,27 +365,9 @@ function Auth_OpenID_detectMathLibrary($exts)
|
||||
{
|
||||
$loaded = false;
|
||||
|
||||
$hasDl = function_exists('dl');
|
||||
foreach ($exts as $extension) {
|
||||
// See if the extension specified is already loaded.
|
||||
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) {
|
||||
if (extension_loaded($extension['extension'])) {
|
||||
return $extension;
|
||||
}
|
||||
}
|
||||
@ -405,7 +386,7 @@ function Auth_OpenID_detectMathLibrary($exts)
|
||||
* instance of a wrapper for that extension module. If no extension
|
||||
* module is found, an instance of {@link Auth_OpenID_MathWrapper} is
|
||||
* 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().
|
||||
*
|
||||
* This function checks for the existence of specific long number
|
||||
@ -416,7 +397,7 @@ function Auth_OpenID_detectMathLibrary($exts)
|
||||
*
|
||||
* @package OpenID
|
||||
*/
|
||||
function &Auth_OpenID_getMathLib()
|
||||
function Auth_OpenID_getMathLib()
|
||||
{
|
||||
// The instance of Auth_OpenID_MathWrapper that we choose to
|
||||
// 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');
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
@ -258,19 +258,19 @@ class Auth_OpenID_Consumer {
|
||||
* when creating the internal consumer object. This is used for
|
||||
* testing.
|
||||
*/
|
||||
function Auth_OpenID_Consumer(&$store, $session = null,
|
||||
function Auth_OpenID_Consumer($store, $session = null,
|
||||
$consumer_cls = null)
|
||||
{
|
||||
if ($session === null) {
|
||||
$session = new Auth_Yadis_PHPSession();
|
||||
}
|
||||
|
||||
$this->session =& $session;
|
||||
$this->session = $session;
|
||||
|
||||
if ($consumer_cls !== null) {
|
||||
$this->consumer =& new $consumer_cls($store);
|
||||
$this->consumer = new $consumer_cls($store);
|
||||
} 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;
|
||||
@ -281,7 +281,7 @@ class Auth_OpenID_Consumer {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function getDiscoveryObject(&$session, $openid_url,
|
||||
function getDiscoveryObject($session, $openid_url,
|
||||
$session_key_prefix)
|
||||
{
|
||||
return new Auth_Yadis_Discovery($session, $openid_url,
|
||||
@ -339,7 +339,7 @@ class Auth_OpenID_Consumer {
|
||||
$this->consumer->fetcher);
|
||||
|
||||
// Reset the 'stale' attribute of the manager.
|
||||
$m =& $disco->getManager();
|
||||
$m = $disco->getManager();
|
||||
if ($m) {
|
||||
$m->stale = false;
|
||||
$disco->session->set($disco->session_key,
|
||||
@ -370,7 +370,7 @@ class Auth_OpenID_Consumer {
|
||||
* @return Auth_OpenID_AuthRequest $auth_request An OpenID
|
||||
* authentication request object.
|
||||
*/
|
||||
function &beginWithoutDiscovery($endpoint, $anonymous=false)
|
||||
function beginWithoutDiscovery($endpoint, $anonymous=false)
|
||||
{
|
||||
$loader = new Auth_OpenID_ServiceEndpointLoader();
|
||||
$auth_req = $this->consumer->begin($endpoint);
|
||||
@ -467,7 +467,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
|
||||
|
||||
function getRequest()
|
||||
{
|
||||
$math =& Auth_OpenID_getMathLib();
|
||||
$math = Auth_OpenID_getMathLib();
|
||||
|
||||
$cpub = $math->longToBase64($this->dh->public);
|
||||
|
||||
@ -496,7 +496,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
|
||||
return null;
|
||||
}
|
||||
|
||||
$math =& Auth_OpenID_getMathLib();
|
||||
$math = Auth_OpenID_getMathLib();
|
||||
|
||||
$spub = $math->base64ToLong($response->getArg(Auth_OpenID_OPENID_NS,
|
||||
'dh_server_public'));
|
||||
@ -611,11 +611,11 @@ class Auth_OpenID_GenericConsumer {
|
||||
* in the module description. The default value is False, which
|
||||
* disables immediate mode.
|
||||
*/
|
||||
function Auth_OpenID_GenericConsumer(&$store)
|
||||
function Auth_OpenID_GenericConsumer($store)
|
||||
{
|
||||
$this->store =& $store;
|
||||
$this->negotiator =& Auth_OpenID_getDefaultNegotiator();
|
||||
$this->_use_assocs = ($this->store ? true : false);
|
||||
$this->store = $store;
|
||||
$this->negotiator = Auth_OpenID_getDefaultNegotiator();
|
||||
$this->_use_assocs = (is_null($this->store) ? false : true);
|
||||
|
||||
$this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
|
||||
|
||||
@ -665,14 +665,14 @@ class Auth_OpenID_GenericConsumer {
|
||||
$method = Auth_OpenID::arrayGet($mode_methods, $mode,
|
||||
'_completeInvalid');
|
||||
|
||||
return call_user_func_array(array(&$this, $method),
|
||||
array($message, $endpoint, $return_to));
|
||||
return call_user_func_array(array($this, $method),
|
||||
array($message, &$endpoint, $return_to));
|
||||
}
|
||||
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _completeInvalid($message, &$endpoint, $unused)
|
||||
function _completeInvalid($message, $endpoint, $unused)
|
||||
{
|
||||
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
|
||||
'<No mode set>');
|
||||
@ -684,7 +684,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _complete_cancel($message, &$endpoint, $unused)
|
||||
function _complete_cancel($message, $endpoint, $unused)
|
||||
{
|
||||
return new Auth_OpenID_CancelResponse($endpoint);
|
||||
}
|
||||
@ -692,7 +692,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _complete_error($message, &$endpoint, $unused)
|
||||
function _complete_error($message, $endpoint, $unused)
|
||||
{
|
||||
$error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
|
||||
$contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
|
||||
@ -705,7 +705,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _complete_setup_needed($message, &$endpoint, $unused)
|
||||
function _complete_setup_needed($message, $endpoint, $unused)
|
||||
{
|
||||
if (!$message->isOpenID2()) {
|
||||
return $this->_completeInvalid($message, $endpoint);
|
||||
@ -719,7 +719,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
/**
|
||||
* @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');
|
||||
@ -1181,7 +1181,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
// oidutil.log('Performing discovery on %s' % (claimed_id,))
|
||||
list($unused, $services) = call_user_func($this->discoverMethod,
|
||||
$claimed_id,
|
||||
$this->fetcher);
|
||||
&$this->fetcher);
|
||||
|
||||
if (!$services) {
|
||||
return new Auth_OpenID_FailureResponse(null,
|
||||
@ -1197,7 +1197,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
* @access private
|
||||
*/
|
||||
function _verifyDiscoveryServices($claimed_id,
|
||||
&$services, &$to_match_endpoints)
|
||||
$services, $to_match_endpoints)
|
||||
{
|
||||
// Search the services resulting from discovery to find one
|
||||
// that matches the information from the assertion
|
||||
@ -1216,8 +1216,8 @@ class Auth_OpenID_GenericConsumer {
|
||||
}
|
||||
|
||||
return new Auth_OpenID_FailureResponse(null,
|
||||
sprintf('No matching endpoint found after discovering %s',
|
||||
$claimed_id));
|
||||
sprintf('No matching endpoint found after discovering %s: %s',
|
||||
$claimed_id, $result->message));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1397,7 +1397,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _httpResponseToMessage($response, $server_url)
|
||||
static function _httpResponseToMessage($response, $server_url)
|
||||
{
|
||||
// Should this function be named Message.fromHTTPResponse instead?
|
||||
$response_message = Auth_OpenID_Message::fromKVForm($response->body);
|
||||
@ -1461,7 +1461,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _extractSupportedAssociationType(&$server_error, &$endpoint,
|
||||
function _extractSupportedAssociationType($server_error, $endpoint,
|
||||
$assoc_type)
|
||||
{
|
||||
// Any error message whose code is not 'unsupported-type'
|
||||
@ -1566,7 +1566,7 @@ class Auth_OpenID_GenericConsumer {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _extractAssociation(&$assoc_response, &$assoc_session)
|
||||
function _extractAssociation($assoc_response, $assoc_session)
|
||||
{
|
||||
// Extract the common fields from the response, raising an
|
||||
// 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
|
||||
* needed.
|
||||
*/
|
||||
function Auth_OpenID_AuthRequest(&$endpoint, $assoc)
|
||||
function Auth_OpenID_AuthRequest($endpoint, $assoc)
|
||||
{
|
||||
$this->assoc = $assoc;
|
||||
$this->endpoint =& $endpoint;
|
||||
$this->endpoint = $endpoint;
|
||||
$this->return_to_args = array();
|
||||
$this->message = new Auth_OpenID_Message(
|
||||
$endpoint->preferredNamespace());
|
||||
@ -1764,7 +1764,7 @@ class Auth_OpenID_AuthRequest {
|
||||
* $extension_request: An object that implements the extension
|
||||
* request interface for adding arguments to an OpenID message.
|
||||
*/
|
||||
function addExtension(&$extension_request)
|
||||
function addExtension($extension_request)
|
||||
{
|
||||
$extension_request->toMessage($this->message);
|
||||
}
|
||||
@ -2089,7 +2089,7 @@ class Auth_OpenID_SuccessResponse extends Auth_OpenID_ConsumerResponse {
|
||||
|
||||
foreach ($msg_args as $key => $value) {
|
||||
if (!$this->isSigned($ns_uri, $key)) {
|
||||
return null;
|
||||
unset($msg_args[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2167,7 +2167,7 @@ class Auth_OpenID_ServerErrorContainer {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function fromMessage($message)
|
||||
static function fromMessage($message)
|
||||
{
|
||||
$error_text = $message->getArg(
|
||||
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
|
||||
* @return string $bytes random bytes
|
||||
*/
|
||||
function getBytes($num_bytes)
|
||||
static function getBytes($num_bytes)
|
||||
{
|
||||
static $f = null;
|
||||
$bytes = '';
|
||||
@ -77,7 +77,7 @@ class Auth_OpenID_CryptUtil {
|
||||
* @return string $result A string of randomly-chosen characters
|
||||
* from $chrs
|
||||
*/
|
||||
function randomString($length, $population = null)
|
||||
static function randomString($length, $population = null)
|
||||
{
|
||||
if ($population === null) {
|
||||
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)
|
||||
{
|
||||
if ($lib === null) {
|
||||
$this->lib =& Auth_OpenID_getMathLib();
|
||||
$this->lib = Auth_OpenID_getMathLib();
|
||||
} else {
|
||||
$this->lib =& $lib;
|
||||
$this->lib = $lib;
|
||||
}
|
||||
|
||||
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_1_2,
|
||||
Auth_OpenID_TYPE_1_1,
|
||||
Auth_OpenID_TYPE_1_0,
|
||||
Auth_OpenID_RP_RETURN_TO_URL_TYPE);
|
||||
Auth_OpenID_TYPE_1_0);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
function fromOPEndpointURL($op_endpoint_url)
|
||||
static function fromOPEndpointURL($op_endpoint_url)
|
||||
{
|
||||
// Construct an OP-Identifier OpenIDServiceEndpoint object for
|
||||
// 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.
|
||||
*
|
||||
* @return array of Auth_OpenID_ServiceEndpoint or null if the
|
||||
* 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) {
|
||||
$yadis_services =
|
||||
@ -197,7 +242,7 @@ class Auth_OpenID_ServiceEndpoint {
|
||||
* @return array of Auth_OpenID_ServiceEndpoint or null if
|
||||
* endpoints cannot be created.
|
||||
*/
|
||||
function fromDiscoveryResult($discoveryResult)
|
||||
static function fromDiscoveryResult($discoveryResult)
|
||||
{
|
||||
if ($discoveryResult->isXRDS()) {
|
||||
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(
|
||||
array(Auth_OpenID_TYPE_2_0,
|
||||
@ -273,7 +318,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
|
||||
$service->parser->registerNamespace('xrd',
|
||||
Auth_Yadis_XMLNS_XRD_2_0);
|
||||
|
||||
$parser =& $service->parser;
|
||||
$parser = $service->parser;
|
||||
|
||||
$permitted_tags = array();
|
||||
|
||||
@ -305,7 +350,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
|
||||
return $local_id;
|
||||
}
|
||||
|
||||
function filter_MatchesAnyOpenIDType(&$service)
|
||||
function filter_MatchesAnyOpenIDType($service)
|
||||
{
|
||||
$uris = $service->getTypes();
|
||||
|
||||
@ -318,6 +363,19 @@ function filter_MatchesAnyOpenIDType(&$service)
|
||||
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)
|
||||
{
|
||||
// Return the index of the first matching type, or something
|
||||
@ -415,7 +473,7 @@ function Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services)
|
||||
return $s;
|
||||
}
|
||||
|
||||
function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
||||
function Auth_OpenID_discoverWithYadis($uri, $fetcher,
|
||||
$endpoint_filter='Auth_OpenID_getOPOrUserServices',
|
||||
$discover_function=null)
|
||||
{
|
||||
@ -433,12 +491,12 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
||||
$openid_services = array();
|
||||
|
||||
$response = call_user_func_array($discover_function,
|
||||
array($uri, &$fetcher));
|
||||
array($uri, $fetcher));
|
||||
|
||||
$yadis_url = $response->normalized_uri;
|
||||
$yadis_services = array();
|
||||
|
||||
if ($response->isFailure()) {
|
||||
if ($response->isFailure() && !$response->isXRDS()) {
|
||||
return array($uri, array());
|
||||
}
|
||||
|
||||
@ -460,18 +518,18 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
|
||||
}
|
||||
|
||||
$openid_services = call_user_func_array($endpoint_filter,
|
||||
array(&$openid_services));
|
||||
array($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);
|
||||
return Auth_OpenID_discoverWithYadis($uri, $fetcher);
|
||||
}
|
||||
|
||||
function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
|
||||
function Auth_OpenID_discoverWithoutYadis($uri, $fetcher)
|
||||
{
|
||||
$http_resp = @$fetcher->get($uri);
|
||||
|
||||
@ -490,7 +548,7 @@ function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
|
||||
return array($identity_url, $openid_services);
|
||||
}
|
||||
|
||||
function Auth_OpenID_discoverXRI($iname, &$fetcher)
|
||||
function Auth_OpenID_discoverXRI($iname, $fetcher)
|
||||
{
|
||||
$resolver = new Auth_Yadis_ProxyResolver($fetcher);
|
||||
list($canonicalID, $yadis_services) =
|
||||
@ -513,7 +571,7 @@ function Auth_OpenID_discoverXRI($iname, &$fetcher)
|
||||
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
|
||||
// discovery on an HTTPS URL.
|
||||
@ -545,4 +603,4 @@ function Auth_OpenID_discover($uri, &$fetcher)
|
||||
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.
|
||||
*/
|
||||
function toMessage(&$message)
|
||||
function toMessage($message)
|
||||
{
|
||||
$implicit = $message->isOpenID1();
|
||||
$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 ) {
|
||||
return False;
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($server_url) {
|
||||
@ -519,7 +519,7 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _mkdtemp($dir)
|
||||
static function _mkdtemp($dir)
|
||||
{
|
||||
foreach (range(0, 4) as $i) {
|
||||
$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);
|
||||
}
|
||||
|
||||
?>
|
@ -194,4 +194,3 @@ class Auth_OpenID_OpenIDStore {
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
@ -26,7 +26,7 @@ class Auth_OpenID_KVForm {
|
||||
* @static
|
||||
* @access private
|
||||
*/
|
||||
function toArray($kvs, $strict=false)
|
||||
static function toArray($kvs, $strict=false)
|
||||
{
|
||||
$lines = explode("\n", $kvs);
|
||||
|
||||
@ -78,7 +78,7 @@ class Auth_OpenID_KVForm {
|
||||
* @static
|
||||
* @access private
|
||||
*/
|
||||
function fromArray($values)
|
||||
static function fromArray($values)
|
||||
{
|
||||
if ($values === 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
|
||||
* if not.
|
||||
*/
|
||||
function isA($thing)
|
||||
static function isA($thing)
|
||||
{
|
||||
return (is_object($thing) &&
|
||||
strtolower(get_class($thing)) == 'auth_openid_mapping');
|
||||
@ -442,7 +442,7 @@ class Auth_OpenID_Message {
|
||||
return $this->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS;
|
||||
}
|
||||
|
||||
function fromPostArgs($args)
|
||||
static function fromPostArgs($args)
|
||||
{
|
||||
// Construct a Message containing a set of POST arguments
|
||||
$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.
|
||||
|
||||
@ -594,7 +594,7 @@ class Auth_OpenID_Message {
|
||||
return $this->_openid_ns_uri;
|
||||
}
|
||||
|
||||
function fromKVForm($kvform_string)
|
||||
static function fromKVForm($kvform_string)
|
||||
{
|
||||
// Create a Message from a KVForm string
|
||||
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;
|
||||
}
|
||||
|
||||
?>
|
@ -21,7 +21,7 @@ define('PAPE_AUTH_PHISHING_RESISTANT',
|
||||
'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant');
|
||||
|
||||
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
|
||||
* 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_*
|
||||
* OpenID message
|
||||
*/
|
||||
function fromOpenIDRequest($request)
|
||||
static function fromOpenIDRequest($request)
|
||||
{
|
||||
$obj = new Auth_OpenID_PAPE_Request();
|
||||
$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
|
||||
* data that was supplied with the id_res response.
|
||||
*/
|
||||
function fromSuccessResponse($success_response)
|
||||
static function fromSuccessResponse($success_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');
|
||||
if ($auth_time !== null) {
|
||||
if (ereg(PAPE_TIME_VALIDATOR, $auth_time)) {
|
||||
if (preg_match(PAPE_TIME_VALIDATOR, $auth_time)) {
|
||||
$this->auth_time = $auth_time;
|
||||
} else if ($strict) {
|
||||
return false;
|
||||
@ -287,7 +287,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
|
||||
}
|
||||
|
||||
if ($this->auth_time !== null) {
|
||||
if (!ereg(PAPE_TIME_VALIDATOR, $this->auth_time)) {
|
||||
if (!preg_match(PAPE_TIME_VALIDATOR, $this->auth_time)) {
|
||||
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
|
||||
* 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\/<>]+)';
|
||||
|
||||
@ -215,11 +215,31 @@ class Auth_OpenID_Parse {
|
||||
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
|
||||
* 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
|
||||
* @return array $list An array of arrays of attributes, one for each
|
||||
* link tag
|
||||
@ -244,18 +264,23 @@ class Auth_OpenID_Parse {
|
||||
$stripped = substr($stripped, $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.
|
||||
$head_re = $this->headFind();
|
||||
$head_matches = array();
|
||||
if (!preg_match($head_re, $stripped, $head_matches)) {
|
||||
return array();
|
||||
$head_match = '';
|
||||
if (!$this->match($head_re, $stripped, $head_match)) {
|
||||
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||
return array();
|
||||
}
|
||||
|
||||
$link_data = 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)) {
|
||||
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||
return array();
|
||||
}
|
||||
|
||||
@ -273,6 +298,7 @@ class Auth_OpenID_Parse {
|
||||
$link_data[] = $link_attrs;
|
||||
}
|
||||
|
||||
ini_set( 'pcre.backtrack_limit', $old_btlimit );
|
||||
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
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
@ -89,8 +79,6 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
||||
$associations_table = null,
|
||||
$nonces_table = null)
|
||||
{
|
||||
global $__Auth_OpenID_PEAR_AVAILABLE;
|
||||
|
||||
$this->associations_table_name = "oid_associations";
|
||||
$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
|
||||
// that Auth_Openid_Databaseconnection instances need not
|
||||
// implement ::setFetchMode for this reason.
|
||||
if ($__Auth_OpenID_PEAR_AVAILABLE) {
|
||||
if (is_subclass_of($this->connection, 'db_common')) {
|
||||
$this->connection->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||
}
|
||||
|
||||
@ -482,7 +470,7 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
|
||||
global $Auth_OpenID_SKEW;
|
||||
|
||||
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
|
||||
return False;
|
||||
return false;
|
||||
}
|
||||
|
||||
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.
|
||||
* 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) ||
|
||||
$endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_0));
|
||||
@ -122,7 +122,7 @@ class Auth_OpenID_SRegBase extends Auth_OpenID_Extension {
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _getSRegNS(&$message)
|
||||
static function _getSRegNS($message)
|
||||
{
|
||||
$alias = null;
|
||||
$found_ns_uri = null;
|
||||
@ -173,7 +173,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
|
||||
/**
|
||||
* Initialize an empty simple registration request.
|
||||
*/
|
||||
function build($required=null, $optional=null,
|
||||
static function build($required=null, $optional=null,
|
||||
$policy_url=null,
|
||||
$sreg_ns_uri=Auth_OpenID_SREG_NS_URI,
|
||||
$cls='Auth_OpenID_SRegRequest')
|
||||
@ -213,7 +213,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
|
||||
*
|
||||
* 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'),
|
||||
@ -442,7 +442,7 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
|
||||
* string (unicode) value. For instance, the nickname should be
|
||||
* stored under the key 'nickname'.
|
||||
*/
|
||||
function extractResponse($request, $data)
|
||||
static function extractResponse($request, $data)
|
||||
{
|
||||
$obj = new Auth_OpenID_SRegResponse();
|
||||
$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
|
||||
* 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;
|
||||
|
||||
@ -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
|
||||
* sites using the Simple Registration
|
||||
* 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 site when they sign up.
|
||||
*
|
||||
@ -365,7 +365,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
|
||||
$this->message = null;
|
||||
}
|
||||
|
||||
function fromMessage($message, $server=null)
|
||||
static function fromMessage($message, $server=null)
|
||||
{
|
||||
$required_keys = array('assoc_handle', 'sig', 'signed');
|
||||
|
||||
@ -396,7 +396,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
|
||||
return $result;
|
||||
}
|
||||
|
||||
function answer(&$signatory)
|
||||
function answer($signatory)
|
||||
{
|
||||
$is_valid = $signatory->verify($this->assoc_handle, $this->signed);
|
||||
|
||||
@ -436,7 +436,7 @@ class Auth_OpenID_PlainTextServerSession {
|
||||
var $needs_math = false;
|
||||
var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
|
||||
|
||||
function fromMessage($unused_request)
|
||||
static function fromMessage($unused_request)
|
||||
{
|
||||
return new Auth_OpenID_PlainTextServerSession();
|
||||
}
|
||||
@ -469,7 +469,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
||||
$this->consumer_pubkey = $consumer_pubkey;
|
||||
}
|
||||
|
||||
function getDH($message)
|
||||
static function getDH($message)
|
||||
{
|
||||
$dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
|
||||
$dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
|
||||
@ -489,7 +489,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
||||
$missing);
|
||||
}
|
||||
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$lib = Auth_OpenID_getMathLib();
|
||||
|
||||
if ($dh_modulus || $dh_gen) {
|
||||
$dh_modulus = $lib->base64ToLong($dh_modulus);
|
||||
@ -523,7 +523,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
||||
return array($dh, $consumer_pubkey);
|
||||
}
|
||||
|
||||
function fromMessage($message)
|
||||
static function fromMessage($message)
|
||||
{
|
||||
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
||||
|
||||
@ -538,7 +538,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
|
||||
|
||||
function answer($secret)
|
||||
{
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$lib = Auth_OpenID_getMathLib();
|
||||
$mac_key = $this->dh->xorSecret($this->consumer_pubkey, $secret,
|
||||
$this->hash_func);
|
||||
return array(
|
||||
@ -560,7 +560,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
|
||||
var $hash_func = 'Auth_OpenID_SHA256';
|
||||
var $allowed_assoc_types = array('HMAC-SHA256');
|
||||
|
||||
function fromMessage($message)
|
||||
static function fromMessage($message)
|
||||
{
|
||||
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
|
||||
|
||||
@ -582,7 +582,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
|
||||
class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
||||
var $mode = "associate";
|
||||
|
||||
function getSessionClasses()
|
||||
static function getSessionClasses()
|
||||
{
|
||||
return array(
|
||||
'no-encryption' => 'Auth_OpenID_PlainTextServerSession',
|
||||
@ -590,14 +590,14 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
||||
'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->assoc_type = $assoc_type;
|
||||
}
|
||||
|
||||
function fromMessage($message, $server=null)
|
||||
static function fromMessage($message, $server=null)
|
||||
{
|
||||
if ($message->isOpenID1()) {
|
||||
$session_type = $message->getArg(Auth_OpenID_OPENID_NS,
|
||||
@ -696,7 +696,7 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
|
||||
'session_type',
|
||||
$preferred_session_type);
|
||||
}
|
||||
|
||||
$response->code = AUTH_OPENID_HTTP_ERROR;
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
@ -734,7 +734,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
*/
|
||||
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)
|
||||
{
|
||||
if ($server === null) {
|
||||
@ -752,7 +752,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
$assoc_handle, $server);
|
||||
|
||||
$r->namespace = $message->getOpenIDNamespace();
|
||||
$r->message =& $message;
|
||||
$r->message = $message;
|
||||
|
||||
if (!$r->trustRootValid()) {
|
||||
return new Auth_OpenID_UntrustedReturnURL($message,
|
||||
@ -778,7 +778,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
}
|
||||
$this->return_to = $return_to;
|
||||
$this->trust_root = $trust_root;
|
||||
$this->server =& $server;
|
||||
$this->server = $server;
|
||||
|
||||
if ($immediate) {
|
||||
$this->immediate = true;
|
||||
@ -817,11 +817,12 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
*/
|
||||
function returnToVerified()
|
||||
{
|
||||
$fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
|
||||
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');
|
||||
$immediate = null;
|
||||
@ -1097,7 +1098,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
in OpenID 1.x immediate mode.');
|
||||
}
|
||||
|
||||
$setup_request =& new Auth_OpenID_CheckIDRequest(
|
||||
$setup_request = new Auth_OpenID_CheckIDRequest(
|
||||
$this->identity,
|
||||
$this->return_to,
|
||||
$this->trust_root,
|
||||
@ -1183,9 +1184,9 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
@ -1310,10 +1311,10 @@ class Auth_OpenID_Signatory {
|
||||
/**
|
||||
* Create a new signatory using a given store.
|
||||
*/
|
||||
function Auth_OpenID_Signatory(&$store)
|
||||
function Auth_OpenID_Signatory($store)
|
||||
{
|
||||
// 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
|
||||
* {@link Auth_OpenID_WebResponse}.
|
||||
*/
|
||||
function encode(&$response)
|
||||
function encode($response)
|
||||
{
|
||||
$cls = $this->responseFactory;
|
||||
|
||||
@ -1463,10 +1464,14 @@ class Auth_OpenID_Encoder {
|
||||
array('location' => $location));
|
||||
} else if ($encode_as == Auth_OpenID_ENCODE_HTML_FORM) {
|
||||
$wr = new $cls(AUTH_OPENID_HTTP_OK, array(),
|
||||
$response->toFormMarkup());
|
||||
$response->toHTML());
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -1478,16 +1483,16 @@ class 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
|
||||
* {@link Auth_OpenID_WebResponse}.
|
||||
*/
|
||||
function encode(&$response)
|
||||
function encode($response)
|
||||
{
|
||||
// the isinstance is a bit of a kludge... it means there isn't
|
||||
// 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 {
|
||||
|
||||
function Auth_OpenID_Decoder(&$server)
|
||||
function Auth_OpenID_Decoder($server)
|
||||
{
|
||||
$this->server =& $server;
|
||||
$this->server = $server;
|
||||
|
||||
$this->handlers = array(
|
||||
'checkid_setup' => 'Auth_OpenID_CheckIDRequest',
|
||||
@ -1599,9 +1604,9 @@ class Auth_OpenID_Decoder {
|
||||
* @package OpenID
|
||||
*/
|
||||
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
|
||||
*/
|
||||
class Auth_OpenID_Server {
|
||||
function Auth_OpenID_Server(&$store, $op_endpoint=null)
|
||||
function Auth_OpenID_Server($store, $op_endpoint=null)
|
||||
{
|
||||
$this->store =& $store;
|
||||
$this->signatory =& new Auth_OpenID_Signatory($this->store);
|
||||
$this->encoder =& new Auth_OpenID_SigningEncoder($this->signatory);
|
||||
$this->decoder =& new Auth_OpenID_Decoder($this);
|
||||
$this->store = $store;
|
||||
$this->signatory = new Auth_OpenID_Signatory($this->store);
|
||||
$this->encoder = new Auth_OpenID_SigningEncoder($this->signatory);
|
||||
$this->decoder = new Auth_OpenID_Decoder($this);
|
||||
$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)) {
|
||||
$handler = array($this, "openid_" . $request->mode);
|
||||
return call_user_func($handler, $request);
|
||||
return call_user_func($handler, &$request);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -1707,7 +1712,7 @@ class Auth_OpenID_Server {
|
||||
/**
|
||||
* The callback for 'check_authentication' messages.
|
||||
*/
|
||||
function openid_check_authentication(&$request)
|
||||
function openid_check_authentication($request)
|
||||
{
|
||||
return $request->answer($this->signatory);
|
||||
}
|
||||
@ -1715,7 +1720,7 @@ class Auth_OpenID_Server {
|
||||
/**
|
||||
* The callback for 'associate' messages.
|
||||
*/
|
||||
function openid_associate(&$request)
|
||||
function openid_associate($request)
|
||||
{
|
||||
$assoc_type = $request->assoc_type;
|
||||
$session_type = $request->session->session_type;
|
||||
@ -1738,7 +1743,7 @@ class Auth_OpenID_Server {
|
||||
* Encodes as response in the appropriate format suitable for
|
||||
* sending to the user agent.
|
||||
*/
|
||||
function encodeResponse(&$response)
|
||||
function encodeResponse($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
|
||||
* run in order to verify the return_to URL
|
||||
*/
|
||||
function buildDiscoveryURL($realm)
|
||||
static function buildDiscoveryURL($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
|
||||
* parts or false if parsing failed.
|
||||
*/
|
||||
function _parse($trust_root)
|
||||
static function _parse($trust_root)
|
||||
{
|
||||
$trust_root = Auth_OpenID_urinorm($trust_root);
|
||||
if ($trust_root === null) {
|
||||
@ -199,7 +199,7 @@ class Auth_OpenID_TrustRoot {
|
||||
* @param string $trust_root The trust root to check
|
||||
* @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);
|
||||
if ($parts === false) {
|
||||
@ -269,7 +269,7 @@ class Auth_OpenID_TrustRoot {
|
||||
* @return bool $matches Whether the URL matches against the
|
||||
* trust root
|
||||
*/
|
||||
function match($trust_root, $url)
|
||||
static function match($trust_root, $url)
|
||||
{
|
||||
$trust_root_parsed = Auth_OpenID_TrustRoot::_parse($trust_root);
|
||||
$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
|
||||
* relying party endpoint.
|
||||
*/
|
||||
function filter_extractReturnURL(&$endpoint)
|
||||
function filter_extractReturnURL($endpoint)
|
||||
{
|
||||
if ($endpoint->matchTypes(array(Auth_OpenID_RP_RETURN_TO_URL_TYPE))) {
|
||||
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
|
||||
* URLs.
|
||||
*/
|
||||
function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
|
||||
function Auth_OpenID_getAllowedReturnURLs($relying_party_url, $fetcher,
|
||||
$discover_function=null)
|
||||
{
|
||||
if ($discover_function === null) {
|
||||
$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) =
|
||||
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,
|
||||
array($relying_party_url, $fetcher));
|
||||
array($relying_party_url, &$fetcher));
|
||||
|
||||
$return_to_urls = array();
|
||||
$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
|
||||
*/
|
||||
function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
|
||||
function Auth_OpenID_verifyReturnTo($realm_str, $return_to, $fetcher,
|
||||
$_vrfy='Auth_OpenID_getAllowedReturnURLs')
|
||||
{
|
||||
$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,
|
||||
array($disco_url, &$fetcher));
|
||||
array($disco_url, $fetcher));
|
||||
|
||||
// The realm_str could not be parsed.
|
||||
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;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
@ -115,12 +115,40 @@ class Auth_Yadis_HTTPFetcher {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _findRedirect($headers)
|
||||
function _findRedirect($headers, $url)
|
||||
{
|
||||
foreach ($headers as $line) {
|
||||
if (strpos(strtolower($line), "location: ") === 0) {
|
||||
$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;
|
||||
@ -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
|
||||
* suffix override.
|
||||
*/
|
||||
function Auth_Yadis_Discovery(&$session, $url,
|
||||
function Auth_Yadis_Discovery($session, $url,
|
||||
$session_key_suffix = null)
|
||||
{
|
||||
/// Initialize a discovery object
|
||||
$this->session =& $session;
|
||||
$this->session = $session;
|
||||
$this->url = $url;
|
||||
if ($session_key_suffix === null) {
|
||||
$session_key_suffix = $this->DEFAULT_SUFFIX;
|
||||
@ -405,7 +405,7 @@ class Auth_Yadis_Discovery {
|
||||
* Return the next authentication service for the pair of
|
||||
* user_input and session. This function handles fallback.
|
||||
*/
|
||||
function getNextService($discover_cb, &$fetcher)
|
||||
function getNextService($discover_cb, $fetcher)
|
||||
{
|
||||
$manager = $this->getManager();
|
||||
if (!$manager || (!$manager->services)) {
|
||||
@ -413,7 +413,7 @@ class Auth_Yadis_Discovery {
|
||||
|
||||
list($yadis_url, $services) = call_user_func($discover_cb,
|
||||
$this->url,
|
||||
$fetcher);
|
||||
&$fetcher);
|
||||
|
||||
$manager = $this->createManager($services, $yadis_url);
|
||||
}
|
||||
@ -466,7 +466,7 @@ class Auth_Yadis_Discovery {
|
||||
* @param $force True if the manager should be returned regardless
|
||||
* 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
|
||||
// suffix from the session.
|
||||
@ -481,16 +481,13 @@ class Auth_Yadis_Discovery {
|
||||
|
||||
if ($manager && ($manager->forURL($this->url) || $force)) {
|
||||
return $manager;
|
||||
} else {
|
||||
$unused = null;
|
||||
return $unused;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function &createManager($services, $yadis_url = null)
|
||||
function createManager($services, $yadis_url = null)
|
||||
{
|
||||
$key = $this->getSessionKey();
|
||||
if ($this->getManager()) {
|
||||
@ -504,10 +501,6 @@ class Auth_Yadis_Discovery {
|
||||
$this->session->set($this->session_key,
|
||||
serialize($loader->toSession($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;
|
||||
}
|
||||
|
||||
?>
|
@ -109,9 +109,9 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
||||
}
|
||||
|
||||
curl_setopt($c, CURLOPT_WRITEFUNCTION,
|
||||
array(&$this, "_writeData"));
|
||||
array($this, "_writeData"));
|
||||
curl_setopt($c, CURLOPT_HEADERFUNCTION,
|
||||
array(&$this, "_writeHeader"));
|
||||
array($this, "_writeHeader"));
|
||||
|
||||
if ($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_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);
|
||||
|
||||
$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))) {
|
||||
$url = $this->_findRedirect($headers);
|
||||
$url = $this->_findRedirect($headers, $url);
|
||||
$redir = true;
|
||||
} else {
|
||||
$redir = false;
|
||||
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();
|
||||
|
||||
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_URL, $url);
|
||||
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);
|
||||
|
||||
@ -198,9 +212,15 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
|
||||
|
||||
if (!$code) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (defined('Auth_OpenID_VERIFY_HOST') && $this->isHTTPS($url)) {
|
||||
Auth_OpenID::log('OpenID: Verified SSL host %s using '.
|
||||
'curl/post', $url);
|
||||
}
|
||||
$body = $this->data;
|
||||
|
||||
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];
|
||||
|
||||
if (in_array($code, array('301', '302'))) {
|
||||
$url = $this->_findRedirect($headers);
|
||||
$url = $this->_findRedirect($headers, $url);
|
||||
$redir = true;
|
||||
} else {
|
||||
$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
|
||||
* Auth_Yadis_XMLParser subclass.
|
||||
*/
|
||||
function Auth_Yadis_setDefaultParser(&$parser)
|
||||
function Auth_Yadis_setDefaultParser($parser)
|
||||
{
|
||||
global $__Auth_Yadis_defaultParser;
|
||||
$__Auth_Yadis_defaultParser =& $parser;
|
||||
$__Auth_Yadis_defaultParser = $parser;
|
||||
}
|
||||
|
||||
function Auth_Yadis_getSupportedExtensions()
|
||||
{
|
||||
return array(
|
||||
'dom' => array('classname' => 'Auth_Yadis_dom',
|
||||
'libname' => array('dom.so', 'dom.dll')),
|
||||
'domxml' => array('classname' => 'Auth_Yadis_domxml',
|
||||
'libname' => array('domxml.so', 'php_domxml.dll')),
|
||||
);
|
||||
return array('dom' => 'Auth_Yadis_dom',
|
||||
'domxml' => 'Auth_Yadis_domxml');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -332,43 +328,25 @@ function Auth_Yadis_getSupportedExtensions()
|
||||
* Auth_Yadis_setDefaultParser has been called, the parser used in
|
||||
* that call will be returned instead.
|
||||
*/
|
||||
function &Auth_Yadis_getXMLParser()
|
||||
function Auth_Yadis_getXMLParser()
|
||||
{
|
||||
global $__Auth_Yadis_defaultParser;
|
||||
|
||||
|
||||
if (isset($__Auth_Yadis_defaultParser)) {
|
||||
return $__Auth_Yadis_defaultParser;
|
||||
}
|
||||
|
||||
$p = null;
|
||||
$classname = null;
|
||||
|
||||
$extensions = Auth_Yadis_getSupportedExtensions();
|
||||
|
||||
// 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 {
|
||||
|
||||
foreach(Auth_Yadis_getSupportedExtensions() as $extension => $classname)
|
||||
{
|
||||
if (extension_loaded($extension))
|
||||
{
|
||||
$p = new $classname();
|
||||
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
|
||||
* 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->allXrdNodes =& $xrdNodes;
|
||||
$this->allXrdNodes = $xrdNodes;
|
||||
$this->serviceList = array();
|
||||
$this->_parse();
|
||||
}
|
||||
@ -273,7 +273,7 @@ class Auth_Yadis_XRDS {
|
||||
* @return mixed $xrds An instance of Auth_Yadis_XRDS or null,
|
||||
* 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;
|
||||
|
||||
@ -352,9 +352,9 @@ class Auth_Yadis_XRDS {
|
||||
$services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
|
||||
|
||||
foreach ($services as $node) {
|
||||
$s =& new Auth_Yadis_Service();
|
||||
$s = new Auth_Yadis_Service();
|
||||
$s->element = $node;
|
||||
$s->parser =& $this->parser;
|
||||
$s->parser = $this->parser;
|
||||
|
||||
$priority = $s->getPriority();
|
||||
|
||||
@ -428,7 +428,8 @@ class Auth_Yadis_XRDS {
|
||||
$matches = 0;
|
||||
|
||||
foreach ($filters as $filter) {
|
||||
if (call_user_func_array($filter, array($service))) {
|
||||
|
||||
if (call_user_func_array($filter, array(&$service))) {
|
||||
$matches++;
|
||||
|
||||
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.
|
||||
$xrd_list = array_reverse($xrds->allXrdNodes);
|
||||
$parser =& $xrds->parser;
|
||||
$parser = $xrds->parser;
|
||||
$node = $xrd_list[0];
|
||||
|
||||
$canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
|
||||
@ -231,4 +231,4 @@ function Auth_Yadis_getCanonicalID($iname, $xrds)
|
||||
return $canonicalID;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
@ -8,9 +8,9 @@ require_once 'Auth/Yadis/XRDS.php';
|
||||
require_once 'Auth/Yadis/XRI.php';
|
||||
|
||||
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;
|
||||
if (!$this->proxy_url) {
|
||||
$this->proxy_url = Auth_Yadis_getDefaultProxy();
|
||||
@ -69,4 +69,4 @@ class Auth_Yadis_ProxyResolver {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
@ -105,7 +105,7 @@ class Auth_Yadis_DiscoveryResult {
|
||||
function usedYadisLocation()
|
||||
{
|
||||
// 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()
|
||||
@ -141,7 +141,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
|
||||
}
|
||||
|
||||
$yadis_result = call_user_func_array($discover_func,
|
||||
array($input_url, $fetcher));
|
||||
array($input_url, &$fetcher));
|
||||
|
||||
if ($yadis_result === null) {
|
||||
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
|
||||
* services()) take the following form:
|
||||
*
|
||||
* <pre> function myFilter(&$service) {
|
||||
* <pre> function myFilter($service) {
|
||||
* // Query $service object here. Return true if the service
|
||||
* // matches your query; false if not.
|
||||
* }</pre>
|
||||
@ -207,7 +207,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
|
||||
* this contrived example):
|
||||
*
|
||||
* <pre>
|
||||
* function URIMatcher(&$service) {
|
||||
* function URIMatcher($service) {
|
||||
* foreach ($service->getElements('xrd:URI') as $uri) {
|
||||
* if (preg_match("/some_pattern/",
|
||||
* $service->parser->content($uri))) {
|
||||
@ -250,7 +250,7 @@ class Auth_Yadis_Yadis {
|
||||
* If Auth_Yadis_CURL_OVERRIDE is defined, this method will always
|
||||
* return a {@link Auth_Yadis_PlainHTTPFetcher}.
|
||||
*/
|
||||
function getHTTPFetcher($timeout = 20)
|
||||
static function getHTTPFetcher($timeout = 20)
|
||||
{
|
||||
if (Auth_Yadis_Yadis::curlPresent() &&
|
||||
(!defined('Auth_Yadis_CURL_OVERRIDE'))) {
|
||||
@ -261,7 +261,7 @@ class Auth_Yadis_Yadis {
|
||||
return $fetcher;
|
||||
}
|
||||
|
||||
function curlPresent()
|
||||
static function curlPresent()
|
||||
{
|
||||
return function_exists('curl_init');
|
||||
}
|
||||
@ -269,7 +269,7 @@ class Auth_Yadis_Yadis {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _getHeader($header_list, $names)
|
||||
static function _getHeader($header_list, $names)
|
||||
{
|
||||
foreach ($header_list as $name => $value) {
|
||||
foreach ($names as $n) {
|
||||
@ -285,7 +285,7 @@ class Auth_Yadis_Yadis {
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _getContentType($content_type_header)
|
||||
static function _getContentType($content_type_header)
|
||||
{
|
||||
if ($content_type_header) {
|
||||
$parts = explode(";", $content_type_header);
|
||||
@ -317,7 +317,7 @@ class Auth_Yadis_Yadis {
|
||||
* Auth_Yadis_Yadis, depending on whether the discovery
|
||||
* succeeded.
|
||||
*/
|
||||
function discover($uri, &$fetcher,
|
||||
static function discover($uri, $fetcher,
|
||||
$extra_ns_map = null, $timeout = 20)
|
||||
{
|
||||
$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);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
},
|
||||
|
@ -271,11 +271,13 @@ class ApiAction extends Action
|
||||
|
||||
// Is the requesting user following this user?
|
||||
$twitter_user['following'] = false;
|
||||
$twitter_user['statusnet:blocking'] = false;
|
||||
$twitter_user['notifications'] = false;
|
||||
|
||||
if (isset($this->auth_user)) {
|
||||
|
||||
$twitter_user['following'] = $this->auth_user->isSubscribed($profile);
|
||||
$twitter_user['statusnet:blocking'] = $this->auth_user->hasBlocked($profile);
|
||||
|
||||
// Notifications on?
|
||||
$sub = Subscription::pkeyGet(array('subscriber' =>
|
||||
@ -409,20 +411,32 @@ class ApiAction extends Action
|
||||
|
||||
function twitterGroupArray($group)
|
||||
{
|
||||
$twitter_group=array();
|
||||
$twitter_group['id']=$group->id;
|
||||
$twitter_group['url']=$group->permalink();
|
||||
$twitter_group['nickname']=$group->nickname;
|
||||
$twitter_group['fullname']=$group->fullname;
|
||||
$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);
|
||||
$twitter_group = array();
|
||||
|
||||
$twitter_group['id'] = $group->id;
|
||||
$twitter_group['url'] = $group->permalink();
|
||||
$twitter_group['nickname'] = $group->nickname;
|
||||
$twitter_group['fullname'] = $group->fullname;
|
||||
|
||||
if (isset($this->auth_user)) {
|
||||
$twitter_group['member'] = $this->auth_user->isMember($group);
|
||||
$twitter_group['blocked'] = Group_block::isBlocked(
|
||||
$group,
|
||||
$this->auth_user->getProfile()
|
||||
);
|
||||
}
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
if (empty($id)) {
|
||||
|
@ -96,4 +96,23 @@ class AtomGroupNoticeFeed extends AtomNoticeFeed
|
||||
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(
|
||||
'statusnet',
|
||||
'http://status.net/ont/'
|
||||
'http://status.net/schema/api/1/'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -76,8 +76,8 @@ class AvatarLink
|
||||
$alink = new AvatarLink();
|
||||
$alink->url = $filename;
|
||||
$alink->height = $size;
|
||||
$alink->width = $size;
|
||||
if (!empty($filename)) {
|
||||
$alink->width = $size;
|
||||
$alink->type = self::mediatype($filename);
|
||||
} else {
|
||||
$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
|
||||
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('STATUSNET_CODENAME', 'King of Birds');
|
||||
define('STATUSNET_CODENAME', 'Half a World Away');
|
||||
|
||||
define('AVATAR_PROFILE_SIZE', 96);
|
||||
define('AVATAR_STREAM_SIZE', 48);
|
||||
|
@ -135,9 +135,7 @@ class DBQueueManager extends QueueManager
|
||||
if (empty($qi->claimed)) {
|
||||
$this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item");
|
||||
} else {
|
||||
$orig = clone($qi);
|
||||
$qi->claimed = null;
|
||||
$qi->update($orig);
|
||||
$qi->releaseClaim();
|
||||
}
|
||||
|
||||
$this->stats('error', $queue);
|
||||
|
@ -180,7 +180,8 @@ class MediaFile
|
||||
return;
|
||||
}
|
||||
|
||||
$mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name']);
|
||||
$mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name'],
|
||||
$_FILES[$param]['name']);
|
||||
|
||||
$filename = null;
|
||||
|
||||
@ -241,19 +242,41 @@ class MediaFile
|
||||
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/Extension.php';
|
||||
$mte = new MIME_Type_Extension();
|
||||
|
||||
$cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd');
|
||||
$cmd = common_config('attachments', 'filecommand');
|
||||
|
||||
$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)) {
|
||||
|
||||
// assuming a filename
|
||||
|
||||
$filetype = MIME_Type::autoDetect($f);
|
||||
|
||||
} else {
|
||||
|
||||
// assuming a filehandle
|
||||
@ -262,7 +285,32 @@ class MediaFile
|
||||
$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;
|
||||
}
|
||||
$media = MIME_Type::getMedia($filetype);
|
||||
|
@ -463,12 +463,14 @@ class NoticeListItem extends Widget
|
||||
$this->out->elementEnd('span');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param number $dec decimal degrees
|
||||
* @return array split into 'deg', 'min', and 'sec'
|
||||
*/
|
||||
function decimalDegreesToDMS($dec)
|
||||
{
|
||||
|
||||
$vars = explode(".",$dec);
|
||||
$deg = $vars[0];
|
||||
$tempma = "0.".$vars[1];
|
||||
$deg = intval($dec);
|
||||
$tempma = abs($dec) - abs($deg);
|
||||
|
||||
$tempma = $tempma * 3600;
|
||||
$min = floor($tempma / 60);
|
||||
|
@ -667,9 +667,9 @@ class Router
|
||||
);
|
||||
|
||||
// search
|
||||
$m->connect('api/search.atom', array('action' => 'twitapisearchatom'));
|
||||
$m->connect('api/search.json', array('action' => 'twitapisearchjson'));
|
||||
$m->connect('api/trends.json', array('action' => 'twitapitrends'));
|
||||
$m->connect('api/search.atom', array('action' => 'ApiSearchAtom'));
|
||||
$m->connect('api/search.json', array('action' => 'ApiSearchJSON'));
|
||||
$m->connect('api/trends.json', array('action' => 'ApiTrends'));
|
||||
|
||||
$m->connect('api/oauth/request_token',
|
||||
array('action' => 'apioauthrequesttoken'));
|
||||
|
@ -55,10 +55,10 @@ class ThemeUploader
|
||||
public static function fromUpload($name)
|
||||
{
|
||||
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) {
|
||||
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']);
|
||||
}
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: af\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ar\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -11,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: arz\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: bg\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: br\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -11,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ca\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1135,13 +1135,12 @@ msgid "Theme for the site."
|
||||
msgstr "Tema del lloc."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Tema del lloc"
|
||||
msgstr "Tema personalitzat"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
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
|
||||
msgid "Change background image"
|
||||
@ -1200,11 +1199,11 @@ msgstr "Enllaços"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avançat"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personalitzat"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6876,48 +6875,48 @@ msgstr "Cap"
|
||||
|
||||
#: lib/themeuploader.php:50
|
||||
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
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Error en actualitzar avatar."
|
||||
msgstr "Ha fallat el desament del tema."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
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
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"El tema pujat és massa gran; ha de tenir menys de %d bytes descomprimit."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Top posters"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: cs\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Translation of StatusNet to German
|
||||
#
|
||||
# Author@translatewiki.net: Bavatar
|
||||
# Author@translatewiki.net: Brion
|
||||
# Author@translatewiki.net: Lutzgh
|
||||
# Author@translatewiki.net: March
|
||||
# Author@translatewiki.net: McDutchie
|
||||
@ -17,11 +18,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: de\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -706,7 +707,7 @@ msgstr "%1$s / Aktualisierungen erwähnen %2$s"
|
||||
#: actions/apitimelinementions.php:131
|
||||
#, php-format
|
||||
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
|
||||
#, php-format
|
||||
@ -1208,11 +1209,11 @@ msgstr "Links"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Erweitert"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Eigene CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -2638,7 +2639,7 @@ msgstr "Profil-Einstellungen ansehen"
|
||||
|
||||
#: actions/othersettings.php:123
|
||||
msgid "Show or hide profile designs."
|
||||
msgstr "Prifil-Designs anzeigen oder verstecken."
|
||||
msgstr "Profil-Designs anzeigen oder verstecken."
|
||||
|
||||
#: actions/othersettings.php:153
|
||||
msgid "URL shortening service is too long (max 50 chars)."
|
||||
|
@ -11,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: el\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -12,11 +12,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: en-gb\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Translation of StatusNet to Spanish
|
||||
#
|
||||
# Author@translatewiki.net: Brion
|
||||
# Author@translatewiki.net: Crazymadlover
|
||||
# Author@translatewiki.net: Locos epraix
|
||||
# Author@translatewiki.net: McDutchie
|
||||
@ -15,11 +16,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: es\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1135,13 +1136,12 @@ msgid "Theme for the site."
|
||||
msgstr "Tema para el sitio."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Tema del sitio"
|
||||
msgstr "Personalizar tema"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
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
|
||||
msgid "Change background image"
|
||||
@ -1201,11 +1201,11 @@ msgstr "Vínculos"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avanzado"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Personalizar CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -1640,7 +1640,7 @@ msgstr "Avisos favoritos de %s"
|
||||
#: actions/favoritesrss.php:115
|
||||
#, php-format
|
||||
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
|
||||
#: lib/publicgroupnav.php:89
|
||||
@ -6885,48 +6885,48 @@ msgstr "Ninguno"
|
||||
|
||||
#: lib/themeuploader.php:50
|
||||
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
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Error al actualizar la imagen."
|
||||
msgstr "Grabado de tema errado."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Tema inválido: mala estructura de directorio."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Tema subido es demasiado grande; debe ser menor que %d bytes sin comprimir."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
msgstr "Error al actualizar el perfil remoto."
|
||||
msgstr "Error al abrir archivo de tema."
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Translation of StatusNet to Persian
|
||||
#
|
||||
# Author@translatewiki.net: ArianHT
|
||||
# Author@translatewiki.net: Brion
|
||||
# Author@translatewiki.net: Choxos
|
||||
# Author@translatewiki.net: Everplays
|
||||
# Author@translatewiki.net: Narcissus
|
||||
@ -12,7 +13,7 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Language-Team: Persian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -21,7 +22,7 @@ msgstr ""
|
||||
"X-Language-Code: fa\n"
|
||||
"X-Message-Group: out-statusnet\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"
|
||||
|
||||
#. TRANS: Page title
|
||||
@ -197,7 +198,7 @@ msgstr "شما و دوستان"
|
||||
#: actions/apitimelinehome.php:122
|
||||
#, php-format
|
||||
msgid "Updates from %1$s and friends on %2$s!"
|
||||
msgstr "به روز رسانی از %1$ و دوستان در %2$"
|
||||
msgstr "به روز رسانی از %1$s و دوستان در %2$s"
|
||||
|
||||
#: actions/apiaccountratelimitstatus.php:72
|
||||
#: actions/apiaccountupdatedeliverydevice.php:94
|
||||
|
@ -11,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: fi\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -16,11 +16,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: fr\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1144,13 +1144,13 @@ msgid "Theme for the site."
|
||||
msgstr "Thème pour le site."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Thème du site"
|
||||
msgstr "Thème personnalisé"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
msgstr ""
|
||||
"Vous pouvez importer un thème StatusNet personnalisé dans une archive .ZIP."
|
||||
|
||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||
msgid "Change background image"
|
||||
@ -1210,11 +1210,11 @@ msgstr "Liens"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avancé"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personnalisé"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6919,47 +6919,50 @@ msgstr "Aucun"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
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
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Thème invalide : mauvaise arborescence."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Le thème importé est trop volumineux. Non compressé, il doit occuper moins "
|
||||
"de %d octets."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Top posters"
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ga\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: gl\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1132,13 +1132,13 @@ msgid "Theme for the site."
|
||||
msgstr "Tema visual para o sitio."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Tema visual do sitio"
|
||||
msgstr "Tema visual personalizado"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
msgstr ""
|
||||
"Pode cargar como arquivo .ZIP un tema visual personalizado para StatusNet"
|
||||
|
||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||
msgid "Change background image"
|
||||
@ -1198,11 +1198,11 @@ msgstr "Ligazóns"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avanzado"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personalizado"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6878,47 +6878,50 @@ msgstr "Ningún"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
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
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Non se puido actualizar o avatar."
|
||||
msgstr "Non se puido gardar o tema visual."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Tema visual inválido: a estrutura do directorio é incorrecta"
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"O tema visual cargado é grande de máis; o tamaño descomprimido non pode "
|
||||
"superar os %d bytes."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Top posters"
|
||||
|
@ -8,11 +8,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: he\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: hsb\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1099,9 +1099,8 @@ msgid "Theme for the site."
|
||||
msgstr "Šat za sydło."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Šat sydła"
|
||||
msgstr "Swójski šat"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
@ -1164,11 +1163,11 @@ msgstr "Wotkazy"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Rozšěrjeny"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Swójski CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -1423,7 +1422,7 @@ msgstr ""
|
||||
#. TRANS: Checkbox label in e-mail preferences form.
|
||||
#: actions/emailsettings.php:193
|
||||
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.
|
||||
#: actions/emailsettings.php:199
|
||||
@ -1594,12 +1593,12 @@ msgstr ""
|
||||
#: actions/featured.php:69 lib/featureduserssection.php:87
|
||||
#: lib/publicgroupnav.php:89
|
||||
msgid "Featured users"
|
||||
msgstr ""
|
||||
msgstr "Nazhonići wužiwarjo"
|
||||
|
||||
#: actions/featured.php:71
|
||||
#, php-format
|
||||
msgid "Featured users, page %d"
|
||||
msgstr ""
|
||||
msgstr "Nazhonići wužiwarjo, strona %d"
|
||||
|
||||
#: actions/featured.php:99
|
||||
#, php-format
|
||||
@ -3053,7 +3052,7 @@ msgstr "Sy so identifikował. Zapodaj deleka nowe hesło. "
|
||||
|
||||
#: actions/recoverpassword.php:188
|
||||
msgid "Password recovery"
|
||||
msgstr ""
|
||||
msgstr "Wobnowjenje hesła"
|
||||
|
||||
#: actions/recoverpassword.php:191
|
||||
msgid "Nickname or email address"
|
||||
@ -3066,7 +3065,7 @@ msgstr ""
|
||||
|
||||
#: actions/recoverpassword.php:199 actions/recoverpassword.php:200
|
||||
msgid "Recover"
|
||||
msgstr ""
|
||||
msgstr "Wobnowić"
|
||||
|
||||
#: actions/recoverpassword.php:208
|
||||
msgid "Reset password"
|
||||
@ -3074,11 +3073,11 @@ msgstr "Hesło wróćo stajić"
|
||||
|
||||
#: actions/recoverpassword.php:209
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
msgstr "Hesło wobnowić"
|
||||
|
||||
#: actions/recoverpassword.php:210 actions/recoverpassword.php:335
|
||||
msgid "Password recovery requested"
|
||||
msgstr ""
|
||||
msgstr "Wobnowjenje hesła požadane"
|
||||
|
||||
#: actions/recoverpassword.php:213
|
||||
msgid "Unknown action"
|
||||
@ -6439,16 +6438,14 @@ msgid "This server cannot handle theme uploads without ZIP support."
|
||||
msgstr ""
|
||||
|
||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
@ -6475,9 +6472,8 @@ msgid "Theme contains file of type '.%s', which is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/themeuploader.php:234
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
msgstr "Zmylk při aktualizaciji zdaleneho profila."
|
||||
msgstr "Zmylk při wočinjenju šatoweho archiwa."
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ia\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1129,13 +1129,14 @@ msgid "Theme for the site."
|
||||
msgstr "Le thema de apparentia pro le sito."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Thema del sito"
|
||||
msgstr "Apparentia personalisate"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
msgstr ""
|
||||
"Es possibile incargar un apparentia personalisate de StatusNet in un "
|
||||
"archivo .ZIP."
|
||||
|
||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||
msgid "Change background image"
|
||||
@ -1195,11 +1196,11 @@ msgstr "Ligamines"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avantiate"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personalisate"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -4613,7 +4614,7 @@ msgstr "Acceptar"
|
||||
#: actions/userauthorization.php:218 lib/subscribeform.php:115
|
||||
#: lib/subscribeform.php:139
|
||||
msgid "Subscribe to this user"
|
||||
msgstr "Subscriber me a iste usator"
|
||||
msgstr "Subscriber a iste usator"
|
||||
|
||||
#: actions/userauthorization.php:219
|
||||
msgid "Reject"
|
||||
@ -6848,47 +6849,51 @@ msgstr "Nulle"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
msgstr ""
|
||||
"Iste servitor non pote manear le incargamento de apparentias sin supporto de "
|
||||
"ZIP."
|
||||
|
||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Actualisation del avatar fallite."
|
||||
msgstr "Salveguarda del apparentia fallite."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Apparentia invalide: mal structura de directorios."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Le apparentia incargate es troppo voluminose; debe occupar minus de %d bytes "
|
||||
"in forma non comprimite."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||
msgstr ""
|
||||
"Le apparentia contine un file del typo '.%s', le qual non es permittite."
|
||||
|
||||
#: lib/themeuploader.php:234
|
||||
#, fuzzy
|
||||
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
|
||||
msgid "Top posters"
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: is\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Translation of StatusNet to Italian
|
||||
#
|
||||
# Author@translatewiki.net: HalphaZ
|
||||
# Author@translatewiki.net: Milocasagrande
|
||||
# Author@translatewiki.net: Nemo bis
|
||||
# --
|
||||
@ -10,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: it\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1129,13 +1130,12 @@ msgid "Theme for the site."
|
||||
msgstr "Tema per questo sito."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Tema del sito"
|
||||
msgstr "Tema personalizzato"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
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
|
||||
msgid "Change background image"
|
||||
@ -1195,11 +1195,11 @@ msgstr "Collegamenti"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avanzate"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personalizzato"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6854,47 +6854,48 @@ msgstr "Nessuno"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
msgstr ""
|
||||
"Questo server non è in grado di gestire caricamenti senza il supporto ZIP."
|
||||
|
||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Aggiornamento dell'immagine non riuscito."
|
||||
msgstr "Salvataggio del tema non riuscito."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Tema non valido: struttura directory non corretta."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Il tema caricato è troppo grande, deve essere meno di %d byte non compresso."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
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
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
msgstr "Errore nell'aggiornare il profilo remoto."
|
||||
msgstr "Errore nell'aprire il file del tema."
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Translation of StatusNet to Japanese
|
||||
#
|
||||
# Author@translatewiki.net: Brion
|
||||
# Author@translatewiki.net: Fryed-peach
|
||||
# Author@translatewiki.net: Sonoda
|
||||
# Author@translatewiki.net: Whym
|
||||
@ -11,11 +12,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ja\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -2578,7 +2579,7 @@ msgstr "つぶやきにはプロファイルはありません。"
|
||||
#: actions/oembed.php:87 actions/shownotice.php:175
|
||||
#, php-format
|
||||
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')
|
||||
#: actions/oembed.php:159
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: ko\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: mk\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -29,7 +29,7 @@ msgstr "Пристап"
|
||||
#. TRANS: Page notice
|
||||
#: actions/accessadminpanel.php:67
|
||||
msgid "Site access settings"
|
||||
msgstr "Нагодувања за пристап на веб-страницата"
|
||||
msgstr "Нагодувања за пристап на мрежното место"
|
||||
|
||||
#. TRANS: Form legend for registration form.
|
||||
#: actions/accessadminpanel.php:161
|
||||
@ -40,8 +40,8 @@ msgstr "Регистрација"
|
||||
#: actions/accessadminpanel.php:165
|
||||
msgid "Prohibit anonymous users (not logged in) from viewing site?"
|
||||
msgstr ""
|
||||
"Да им забранам на анонимните (ненајавени) корисници да ја гледаат веб-"
|
||||
"страницата?"
|
||||
"Да им забранам на анонимните (ненајавени) корисници да го гледаат мрежното "
|
||||
"место?"
|
||||
|
||||
#. TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
||||
#: actions/accessadminpanel.php:167
|
||||
@ -1101,7 +1101,7 @@ msgstr "Изглед"
|
||||
|
||||
#: actions/designadminpanel.php:74
|
||||
msgid "Design settings for this StatusNet site."
|
||||
msgstr "Нагодувања на изгледот на оваа StatusNet веб-страница."
|
||||
msgstr "Нагодувања на изгледот на ова StatusNet-мрежно место."
|
||||
|
||||
#: actions/designadminpanel.php:318
|
||||
msgid "Invalid logo URL."
|
||||
@ -1118,28 +1118,27 @@ msgstr "Промени лого"
|
||||
|
||||
#: actions/designadminpanel.php:431
|
||||
msgid "Site logo"
|
||||
msgstr "Лого на веб-страницата"
|
||||
msgstr "Лого на мрежното место"
|
||||
|
||||
#: actions/designadminpanel.php:443
|
||||
msgid "Change theme"
|
||||
msgstr "Промени тема"
|
||||
msgstr "Промени изглед"
|
||||
|
||||
#: actions/designadminpanel.php:460
|
||||
msgid "Site theme"
|
||||
msgstr "Тема на веб-страницата"
|
||||
msgstr "Изглед на мрежното место"
|
||||
|
||||
#: actions/designadminpanel.php:461
|
||||
msgid "Theme for the site."
|
||||
msgstr "Тема за веб-страницата."
|
||||
msgstr "Изглед за мрежното место."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Тема на веб-страницата"
|
||||
msgstr "Прилагоден мотив"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
msgstr ""
|
||||
msgstr "Можете да подигнете свој изглед за StatusNet како .ZIP архив."
|
||||
|
||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||
msgid "Change background image"
|
||||
@ -1156,7 +1155,7 @@ msgid ""
|
||||
"You can upload a background image for the site. The maximum file size is %1"
|
||||
"$s."
|
||||
msgstr ""
|
||||
"Може да подигнете позадинска слика за оваа веб-страница. Максималната "
|
||||
"Може да подигнете позадинска слика за ова мрежно место. Максималната "
|
||||
"големина на податотеката е %1$s."
|
||||
|
||||
#. TRANS: Used as radio button label to add a background image.
|
||||
@ -1199,11 +1198,11 @@ msgstr "Врски"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Напредно"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Прилагодено CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -1604,7 +1603,7 @@ msgstr "Популарни забелешки, стр. %d"
|
||||
|
||||
#: actions/favorited.php:79
|
||||
msgid "The most popular notices on the site right now."
|
||||
msgstr "Моментално најпопуларни забелешки на веб-страницата."
|
||||
msgstr "Моментално најпопуларни забелешки на мрежното место."
|
||||
|
||||
#: actions/favorited.php:150
|
||||
msgid "Favorite notices appear on this page but no one has favorited one yet."
|
||||
@ -1721,7 +1720,7 @@ msgstr "Оваа улога е резервирана и не може да се
|
||||
|
||||
#: actions/grantrole.php:75
|
||||
msgid "You cannot grant user roles on this site."
|
||||
msgstr "Не можете да им доделувате улоги на корисниците на оваа веб-страница."
|
||||
msgstr "Не можете да им доделувате улоги на корисниците на ова мрежно место."
|
||||
|
||||
#: actions/grantrole.php:82
|
||||
msgid "User already has this role."
|
||||
@ -2180,15 +2179,15 @@ msgid ""
|
||||
"on the site. Thanks for growing the community!"
|
||||
msgstr ""
|
||||
"Ќе добиете известување кога луѓето кои сте ги поканиле ќе ја прифатат "
|
||||
"поканата и ќе се регистрираат на веб-страницата. Ви благодариме за Вашата "
|
||||
"помош со проширувањето на заедницата!"
|
||||
"поканата и ќе се регистрираат на мрежното место. Ви благодариме што ни "
|
||||
"помагате да ја прошириме заедницата!"
|
||||
|
||||
#: actions/invite.php:162
|
||||
msgid ""
|
||||
"Use this form to invite your friends and colleagues to use this service."
|
||||
msgstr ""
|
||||
"Со овој обраец можете да поканите пријатели и колеги да ја користат веб-"
|
||||
"страницата."
|
||||
"Со овој обраец можете да поканите пријатели и колеги да го користат мрежното "
|
||||
"место."
|
||||
|
||||
#: actions/invite.php:187
|
||||
msgid "Email addresses"
|
||||
@ -2251,7 +2250,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"%1$s Ве кани да се придружите на %2$s (%3$s).\n"
|
||||
"\n"
|
||||
"%2$s е веб-страница за микроблогирање што ви овозможува да бидете во тек "
|
||||
"%2$s е мрежно место за микроблогирање што ви овозможува да бидете во тек "
|
||||
"луѓето што ги познавате и луѓето кои ве интересираат.\n"
|
||||
"\n"
|
||||
"Можете да објавувате и новости за Вас, Ваши размисли, и настани од Вашиот "
|
||||
@ -2266,7 +2265,7 @@ msgstr ""
|
||||
"\n"
|
||||
"%5$s\n"
|
||||
"\n"
|
||||
"Ако сакате да ја испробате оваа друштвена веб-страница, кликнете на врската "
|
||||
"Ако сакате да ја испробате оваа друштвено мрежно место, кликнете на врската "
|
||||
"подолу за да ја прифатите поканата.\n"
|
||||
"\n"
|
||||
"%6$s\n"
|
||||
@ -2489,8 +2488,8 @@ msgid ""
|
||||
"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
|
||||
msgstr ""
|
||||
"А зошто не [регистрирате сметка](%%%%action.register%%%%) и станете првиот "
|
||||
"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea="
|
||||
"%s)!"
|
||||
"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea=%"
|
||||
"s)!"
|
||||
|
||||
#: actions/noticesearchrss.php:96
|
||||
#, php-format
|
||||
@ -2759,7 +2758,7 @@ msgstr "Неважечки SSL-опслужувач. Дозволени се н
|
||||
|
||||
#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
|
||||
msgid "Site"
|
||||
msgstr "Веб-страница"
|
||||
msgstr "Мреж. место"
|
||||
|
||||
#: actions/pathsadminpanel.php:238
|
||||
msgid "Server"
|
||||
@ -2775,7 +2774,7 @@ msgstr "Патека"
|
||||
|
||||
#: actions/pathsadminpanel.php:242
|
||||
msgid "Site path"
|
||||
msgstr "Патека на веб-страницата"
|
||||
msgstr "Патека на мрежното место"
|
||||
|
||||
#: actions/pathsadminpanel.php:246
|
||||
msgid "Path to locales"
|
||||
@ -2795,7 +2794,7 @@ msgstr "Да користам интересни (почитливи и повп
|
||||
|
||||
#: actions/pathsadminpanel.php:259
|
||||
msgid "Theme"
|
||||
msgstr "Тема"
|
||||
msgstr "Изглед"
|
||||
|
||||
#: actions/pathsadminpanel.php:264
|
||||
msgid "Theme server"
|
||||
@ -2909,8 +2908,8 @@ msgstr "Неважечка содржина на забелешката."
|
||||
#, php-format
|
||||
msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
||||
msgstr ""
|
||||
"Лиценцата на забелешката „%1$s“ не е компатибилна со лиценцата на веб-"
|
||||
"страницата „%2$s“."
|
||||
"Лиценцата на забелешката „%1$s“ не е соодветна на лиценцата на мрежното "
|
||||
"место „%2$s“."
|
||||
|
||||
#: actions/profilesettings.php:60
|
||||
msgid "Profile settings"
|
||||
@ -2945,7 +2944,7 @@ msgstr "Домашна страница"
|
||||
|
||||
#: actions/profilesettings.php:117 actions/register.php:462
|
||||
msgid "URL of your homepage, blog, or profile on another site"
|
||||
msgstr "URL на Вашата домашна страница, блог или профил на друга веб-страница."
|
||||
msgstr "URL на Вашата домашна страница, блог или профил на друго мрежно место."
|
||||
|
||||
#: actions/profilesettings.php:122 actions/register.php:468
|
||||
#, php-format
|
||||
@ -3108,10 +3107,10 @@ msgid ""
|
||||
"tool. [Join now](%%action.register%%) to share notices about yourself with "
|
||||
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
|
||||
msgstr ""
|
||||
"Ова е %%site.name%%, веб-страница за [микроблогирање](http://mk.wikipedia."
|
||||
"org/wiki/Микроблогирање) базирана на слободната програмска алатка [StatusNet]"
|
||||
"(http://status.net/). [Зачленете се](%%action.register%%) за да си "
|
||||
"споделувате забелешки за себе со приајтелите, семејството и колегите! "
|
||||
"Ова е %%site.name%%, мрежно место за [микроблогирање](http://mk.wikipedia."
|
||||
"org/wiki/Микроблогирање) заснована на слободната програмска алатка "
|
||||
"[StatusNet](http://status.net/). [Зачленете се](%%action.register%%) за да "
|
||||
"си споделувате забелешки за себе со приајтелите, семејството и колегите! "
|
||||
"([Прочитајте повеќе](%%doc.help%%))"
|
||||
|
||||
#: actions/public.php:247
|
||||
@ -3121,9 +3120,9 @@ msgid ""
|
||||
"blogging) service based on the Free Software [StatusNet](http://status.net/) "
|
||||
"tool."
|
||||
msgstr ""
|
||||
"Ова е %%site.name%%, веб-страница за [микроблогирање](http://mk.wikipedia."
|
||||
"org/wiki/Микроблогирање) базирана на слободната програмска алатка [StatusNet]"
|
||||
"(http://status.net/)."
|
||||
"Ова е %%site.name%%, мрежно место за [микроблогирање](http://mk.wikipedia."
|
||||
"org/wiki/Микроблогирање) заснована на слободната програмска алатка "
|
||||
"[StatusNet](http://status.net/)."
|
||||
|
||||
#: actions/publictagcloud.php:57
|
||||
msgid "Public tag cloud"
|
||||
@ -3432,10 +3431,10 @@ msgid ""
|
||||
"register%%) a new account. If you already have an account on a [compatible "
|
||||
"microblogging site](%%doc.openmublog%%), enter your profile URL below."
|
||||
msgstr ""
|
||||
"За да се претплатите, може да се [најавите](%%action.login%%) или да "
|
||||
"За да се претплатите, можете да се [најавите](%%action.login%%) или да "
|
||||
"[регистрирате](%%action.register%%) нова сметка. Ако веќе имате сметка на "
|
||||
"[компатибилна веб-страница за микроблогирање](%%doc.openmublog%%), внесете "
|
||||
"го URL-то на Вашиот профил подолу."
|
||||
"[усогласиво мреж. место за микроблогирање](%%doc.openmublog%%), внесете го "
|
||||
"URL-то на Вашиот профил подолу."
|
||||
|
||||
#: actions/remotesubscribe.php:112
|
||||
msgid "Remote subscribe"
|
||||
@ -3459,7 +3458,7 @@ msgstr "URL на профилот"
|
||||
|
||||
#: actions/remotesubscribe.php:134
|
||||
msgid "URL of your profile on another compatible microblogging service"
|
||||
msgstr "URL на Вашиот профил на друга компатибилна служба за микроблогирање."
|
||||
msgstr "URL на Вашиот профил на друга соодветна служба за микроблогирање."
|
||||
|
||||
#: actions/remotesubscribe.php:137 lib/subscribeform.php:139
|
||||
#: lib/userprofile.php:406
|
||||
@ -3568,7 +3567,7 @@ msgstr "Одговори на %1$s на %2$s!"
|
||||
|
||||
#: actions/revokerole.php:75
|
||||
msgid "You cannot revoke user roles on this site."
|
||||
msgstr "На оваа веб-страница не можете да одземате кориснички улоги."
|
||||
msgstr "На ова мрежно место не можете да одземате кориснички улоги."
|
||||
|
||||
#: actions/revokerole.php:82
|
||||
msgid "User doesn't have this role."
|
||||
@ -3580,7 +3579,7 @@ msgstr "StatusNet"
|
||||
|
||||
#: actions/sandbox.php:65 actions/unsandbox.php:65
|
||||
msgid "You cannot sandbox users on this site."
|
||||
msgstr "Не можете да ставате корисници во песочен режим на оваа веб-страница."
|
||||
msgstr "Не можете да ставате корисници во песочен режим на ова мрежно место."
|
||||
|
||||
#: actions/sandbox.php:72
|
||||
msgid "User is already sandboxed."
|
||||
@ -3594,7 +3593,7 @@ msgstr "Сесии"
|
||||
|
||||
#: actions/sessionsadminpanel.php:65
|
||||
msgid "Session settings for this StatusNet site."
|
||||
msgstr "Нагодувања на сесиите за оваа StatusNet веб-страница."
|
||||
msgstr "Нагодувања на сесиите за оваа StatusNet-мрежно место."
|
||||
|
||||
#: actions/sessionsadminpanel.php:175
|
||||
msgid "Handle sessions"
|
||||
@ -3615,7 +3614,7 @@ msgstr "Вклучи извод од поправка на грешки за с
|
||||
#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292
|
||||
#: actions/useradminpanel.php:294
|
||||
msgid "Save site settings"
|
||||
msgstr "Зачувај нагодувања на веб-страницата"
|
||||
msgstr "Зачувај нагодувања на мреж. место"
|
||||
|
||||
#: actions/showapplication.php:82
|
||||
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 "
|
||||
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
|
||||
msgstr ""
|
||||
"**%s** е корисничка група на %%%%site.name%%%%, веб-страница за "
|
||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на "
|
||||
"**%s** е корисничка група на %%%%site.name%%%%, мрежно место за "
|
||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заснована на "
|
||||
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
||||
"членови си разменуваат кратки пораки за нивниот живот и интереси. [Зачленете "
|
||||
"се](%%%%action.register%%%%) за да станете дел од оваа група и многу повеќе! "
|
||||
@ -3854,8 +3853,8 @@ msgid ""
|
||||
"[StatusNet](http://status.net/) tool. Its members share short messages about "
|
||||
"their life and interests. "
|
||||
msgstr ""
|
||||
"**%s** е корисничка група на %%%%site.name%%%%, веб-страница за "
|
||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на "
|
||||
"**%s** е корисничка група на %%%%site.name%%%%, мрежно место за "
|
||||
"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заснована на "
|
||||
"слободната програмска алатка [StatusNet](http://status.net/). Нејзините "
|
||||
"членови си разменуваат кратки пораки за нивниот живот и интереси. "
|
||||
|
||||
@ -3950,8 +3949,8 @@ msgid ""
|
||||
"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
|
||||
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
|
||||
msgstr ""
|
||||
"**%s** има сметка на %%%%site.name%%%%, веб-страница за [микроблогирање]"
|
||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
|
||||
"**%s** има сметка на %%%%site.name%%%%, мрежно место за [микроблогирање]"
|
||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) заснована на слободната "
|
||||
"програмска алатка [StatusNet](http://status.net/). [Зачленете се](%%%%action."
|
||||
"register%%%%) за да можете да ги следите забелешките на **%s** и многу "
|
||||
"повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))"
|
||||
@ -3963,8 +3962,8 @@ msgid ""
|
||||
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
|
||||
"[StatusNet](http://status.net/) tool. "
|
||||
msgstr ""
|
||||
"**%s** има сметка на %%%%site.name%%%%, веб-страница за [микроблогирање]"
|
||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
|
||||
"**%s** има сметка на %%%%site.name%%%%, мрежно место за [микроблогирање]"
|
||||
"(http://mk.wikipedia.org/wiki/Микроблогирање) заснована на слободната "
|
||||
"програмска алатка [StatusNet](http://status.net/). "
|
||||
|
||||
#: actions/showstream.php:305
|
||||
@ -3974,7 +3973,7 @@ msgstr "Повторувања на %s"
|
||||
|
||||
#: actions/silence.php:65 actions/unsilence.php:65
|
||||
msgid "You cannot silence users on this site."
|
||||
msgstr "Не можете да замолчувате корисници на оваа веб-страница."
|
||||
msgstr "Не можете да замолчувате корисници на ова мрежно место."
|
||||
|
||||
#: actions/silence.php:72
|
||||
msgid "User is already silenced."
|
||||
@ -3982,11 +3981,11 @@ msgstr "Корисникот е веќе замолчен."
|
||||
|
||||
#: actions/siteadminpanel.php:69
|
||||
msgid "Basic settings for this StatusNet site"
|
||||
msgstr "Основни поставки за оваа StatusNet веб-страница."
|
||||
msgstr "Основни поставки за оваа StatusNet-мрежно место."
|
||||
|
||||
#: actions/siteadminpanel.php:133
|
||||
msgid "Site name must have non-zero length."
|
||||
msgstr "Должината на името на веб-страницата не може да изнесува нула."
|
||||
msgstr "Должината на името на мрежното место не може да изнесува нула."
|
||||
|
||||
#: actions/siteadminpanel.php:141
|
||||
msgid "You must have a valid contact email address."
|
||||
@ -4011,11 +4010,11 @@ msgstr "Општи"
|
||||
|
||||
#: actions/siteadminpanel.php:224
|
||||
msgid "Site name"
|
||||
msgstr "Име на веб-страницата"
|
||||
msgstr "Име на мрежното место"
|
||||
|
||||
#: actions/siteadminpanel.php:225
|
||||
msgid "The name of your site, like \"Yourcompany Microblog\""
|
||||
msgstr "Името на Вашата веб-страница, како на пр. „Микроблог на Вашафирма“"
|
||||
msgstr "Името на Вашето мрежно место, како на пр. „Микроблог на Вашафирма“"
|
||||
|
||||
#: actions/siteadminpanel.php:229
|
||||
msgid "Brought by"
|
||||
@ -4039,7 +4038,7 @@ msgstr ""
|
||||
|
||||
#: actions/siteadminpanel.php:239
|
||||
msgid "Contact email address for your site"
|
||||
msgstr "Контактна е-пошта за Вашата веб-страница"
|
||||
msgstr "Контактна е-пошта за Вашето мрежното место"
|
||||
|
||||
#: actions/siteadminpanel.php:245
|
||||
msgid "Local"
|
||||
@ -4051,7 +4050,7 @@ msgstr "Основна часовна зона"
|
||||
|
||||
#: actions/siteadminpanel.php:257
|
||||
msgid "Default timezone for the site; usually UTC."
|
||||
msgstr "Матична часовна зона за веб-страницата; обично UTC."
|
||||
msgstr "Матична часовна зона за мрежното место; обично UTC."
|
||||
|
||||
#: actions/siteadminpanel.php:262
|
||||
msgid "Default language"
|
||||
@ -4059,9 +4058,7 @@ msgstr "Основен јазик"
|
||||
|
||||
#: actions/siteadminpanel.php:263
|
||||
msgid "Site language when autodetection from browser settings is not available"
|
||||
msgstr ""
|
||||
"Јазик на мрежното место (веб-страницата) ако прелистувачот не може да го "
|
||||
"препознае сам"
|
||||
msgstr "Јазик на мрежното место ако прелистувачот не може да го препознае сам"
|
||||
|
||||
#: actions/siteadminpanel.php:271
|
||||
msgid "Limits"
|
||||
@ -4091,24 +4088,24 @@ msgstr "Објава на страница"
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:67
|
||||
msgid "Edit site-wide message"
|
||||
msgstr "Уреди објава за цела веб-страница"
|
||||
msgstr "Уреди објава за цело мрежно место"
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:103
|
||||
msgid "Unable to save site notice."
|
||||
msgstr "Не можам да ја зачувам објавата за веб-страницата."
|
||||
msgstr "Не можам да ја зачувам објавата за мрежното место."
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:113
|
||||
msgid "Max length for the site-wide notice is 255 chars."
|
||||
msgstr "Објавата за цела веб-страница не треба да содржи повеќе од 255 знаци."
|
||||
msgstr "Објавата за цело мрежно место не треба да содржи повеќе од 255 знаци."
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:176
|
||||
msgid "Site notice text"
|
||||
msgstr "Текст на објавата за веб-страницата"
|
||||
msgstr "Текст на објавата за мрежното место"
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:178
|
||||
msgid "Site-wide notice text (255 chars max; HTML okay)"
|
||||
msgstr ""
|
||||
"Текст за главна објава по цела веб-страница (највеќе до 255 знаци; дозволено "
|
||||
"Текст за главна објава по цело мрежно место (највеќе до 255 знаци; дозволено "
|
||||
"и HTML)"
|
||||
|
||||
#: actions/sitenoticeadminpanel.php:198
|
||||
@ -4539,8 +4536,8 @@ msgstr "Претплатата е откажана"
|
||||
msgid ""
|
||||
"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
|
||||
msgstr ""
|
||||
"Лиценцата на потокот на следачот „%1$s“ не е компатибилна со лиценцата на "
|
||||
"веб-страницата „%2$s“."
|
||||
"Лиценцата на каналот на следачот „%1$s“ не е соодветна на лиценцата на "
|
||||
"мрежното место „%2$s“."
|
||||
|
||||
#. TRANS: User admin panel title
|
||||
#: actions/useradminpanel.php:59
|
||||
@ -4550,7 +4547,7 @@ msgstr "Корисник"
|
||||
|
||||
#: actions/useradminpanel.php:70
|
||||
msgid "User settings for this StatusNet site."
|
||||
msgstr "Кориснички нагодувања за оваа StatusNet веб-страница."
|
||||
msgstr "Кориснички нагодувања за ова StatusNet-мрежно место."
|
||||
|
||||
#: actions/useradminpanel.php:149
|
||||
msgid "Invalid bio limit. Must be numeric."
|
||||
@ -4661,7 +4658,7 @@ msgid ""
|
||||
"subscription. Your subscription token is:"
|
||||
msgstr ""
|
||||
"Претплатата е одобрена, но не е зададена обратна URL-адреса. Проверете ги "
|
||||
"инструкциите на веб-страницата за да дознаете како се одобрува претплата. "
|
||||
"инструкциите на мрежното место за да дознаете како се одобрува претплата. "
|
||||
"Жетонот на Вашата претплата е:"
|
||||
|
||||
#: actions/userauthorization.php:266
|
||||
@ -4675,7 +4672,7 @@ msgid ""
|
||||
"subscription."
|
||||
msgstr ""
|
||||
"Претплатата е одбиена, но не е зададена обратна URL-адреса. Проверете ги "
|
||||
"инструкциите на веб-страницата за да дознаете како се одбива претплата во "
|
||||
"инструкциите на мрежното место за да дознаете како се одбива претплата во "
|
||||
"потполност."
|
||||
|
||||
#: actions/userauthorization.php:303
|
||||
@ -4773,7 +4770,7 @@ msgid ""
|
||||
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
|
||||
"Inc. and contributors."
|
||||
msgstr ""
|
||||
"Оваа веб-страница работи на %1$s верзија %2$s, Авторски права 2008-2010 "
|
||||
"Ова мрежно место работи на %1$s верзија %2$s, Авторски права 2008-2010 "
|
||||
"StatusNet, Inc. и учесници."
|
||||
|
||||
#: actions/version.php:163
|
||||
@ -4910,7 +4907,7 @@ msgstr ""
|
||||
|
||||
#: classes/Notice.php:272
|
||||
msgid "You are banned from posting notices on this site."
|
||||
msgstr "Забрането Ви е да објавувате забелешки на оваа веб-страница."
|
||||
msgstr "Забрането Ви е да објавувате забелешки на ова мрежно место."
|
||||
|
||||
#: classes/Notice.php:338 classes/Notice.php:364
|
||||
msgid "Problem saving notice."
|
||||
@ -5061,7 +5058,7 @@ msgstr "Поврзи се"
|
||||
#: lib/action.php:458
|
||||
msgctxt "TOOLTIP"
|
||||
msgid "Change site configuration"
|
||||
msgstr "Промена на поставките на веб-страницата"
|
||||
msgstr "Промена на поставките на мрежното место"
|
||||
|
||||
#. TRANS: Main menu option when logged in and site admin for access to site configuration
|
||||
#: lib/action.php:461
|
||||
@ -5143,7 +5140,7 @@ msgstr "Барај"
|
||||
#. TRANS: Menu item for site administration
|
||||
#: lib/action.php:525 lib/adminpanelaction.php:400
|
||||
msgid "Site notice"
|
||||
msgstr "Напомена за веб-страницата"
|
||||
msgstr "Напомена за мрежното место"
|
||||
|
||||
#. TRANS: DT element for local views block. String is hidden in default CSS.
|
||||
#: lib/action.php:592
|
||||
@ -5235,7 +5232,7 @@ msgstr ""
|
||||
#. TRANS: DT element for StatusNet site content license.
|
||||
#: lib/action.php:850
|
||||
msgid "Site content license"
|
||||
msgstr "Лиценца на содржините на веб-страницата"
|
||||
msgstr "Лиценца на содржините на мрежното место"
|
||||
|
||||
#. TRANS: Content license displayed when license is set to 'private'.
|
||||
#. 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.
|
||||
#: lib/adminpanelaction.php:98
|
||||
msgid "You cannot make changes to this site."
|
||||
msgstr "Не можете да ја менувате оваа веб-страница."
|
||||
msgstr "Не можете да врште измени на ова мрежно место."
|
||||
|
||||
#. TRANS: Client error message throw when a certain panel's settings cannot be changed.
|
||||
#: lib/adminpanelaction.php:110
|
||||
@ -5329,13 +5326,13 @@ msgstr "Не можам да ги избришам нагодувањата за
|
||||
#. TRANS: Menu item title/tooltip
|
||||
#: lib/adminpanelaction.php:350
|
||||
msgid "Basic site configuration"
|
||||
msgstr "Основни нагодувања на веб-страницата"
|
||||
msgstr "Основни нагодувања на мрежното место"
|
||||
|
||||
#. TRANS: Menu item for site administration
|
||||
#: lib/adminpanelaction.php:352
|
||||
msgctxt "MENU"
|
||||
msgid "Site"
|
||||
msgstr "Веб-страница"
|
||||
msgstr "Мреж. место"
|
||||
|
||||
#. TRANS: Menu item title/tooltip
|
||||
#: lib/adminpanelaction.php:358
|
||||
@ -5376,7 +5373,7 @@ msgstr "Конфигурација на сесиите"
|
||||
#. TRANS: Menu item title/tooltip
|
||||
#: lib/adminpanelaction.php:398
|
||||
msgid "Edit site notice"
|
||||
msgstr "Уреди објава за веб-страницата"
|
||||
msgstr "Уреди објава за мрежното место"
|
||||
|
||||
#. TRANS: Menu item title/tooltip
|
||||
#: lib/adminpanelaction.php:406
|
||||
@ -6792,7 +6789,7 @@ msgstr "Стави го корисников во песочен режим"
|
||||
|
||||
#: lib/searchaction.php:120
|
||||
msgid "Search site"
|
||||
msgstr "Пребарај по веб-страницата"
|
||||
msgstr "Пребарај по мрежното место"
|
||||
|
||||
#: lib/searchaction.php:126
|
||||
msgid "Keyword(s)"
|
||||
@ -6812,7 +6809,7 @@ msgstr "Луѓе"
|
||||
|
||||
#: lib/searchgroupnav.php:81
|
||||
msgid "Find people on this site"
|
||||
msgstr "Пронајдете луѓе на оваа веб-страница"
|
||||
msgstr "Пронајдете луѓе на ова мрежно место"
|
||||
|
||||
#: lib/searchgroupnav.php:83
|
||||
msgid "Find content of notices"
|
||||
@ -6820,7 +6817,7 @@ msgstr "Пронајдете содржини на забелешките"
|
||||
|
||||
#: lib/searchgroupnav.php:85
|
||||
msgid "Find groups on this site"
|
||||
msgstr "Пронајдете групи на оваа веб-страница"
|
||||
msgstr "Пронајдете групи на ова мрежно место"
|
||||
|
||||
#: lib/section.php:89
|
||||
msgid "Untitled section"
|
||||
@ -6879,47 +6876,48 @@ msgstr "Без ознаки"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
msgstr ""
|
||||
"Опслужувачот не може да се справи со подигања на изгледи без ZIP-поддршка."
|
||||
|
||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||
#, fuzzy
|
||||
msgid "Theme upload missing or failed."
|
||||
msgstr "Системска грешка при подигањето на податотеката."
|
||||
msgstr "Подигањето на мотивот недостасува или не успеа."
|
||||
|
||||
#: lib/themeuploader.php:91 lib/themeuploader.php:102
|
||||
#: lib/themeuploader.php:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Подновата на аватарот не успеа."
|
||||
msgstr "Зачувувањето на мотивот не успеа."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Неважечки изглед: лош состав на папката."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Подигнатиот изглед е преголем; мора да биде помал од %d бајти (незбиен)."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
msgid "Invalid theme archive: missing file css/display.css"
|
||||
msgstr ""
|
||||
msgstr "Неважечки архив за изглеедот: недостасува податотеката css/display.css"
|
||||
|
||||
#: lib/themeuploader.php:205
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
msgstr ""
|
||||
"Изгледот содржи неважечки назив на податотека или папка. Дозволени се само "
|
||||
"ASCII-букви, бројки, долна црта и знак за минус."
|
||||
|
||||
#: lib/themeuploader.php:216
|
||||
#, php-format
|
||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||
msgstr ""
|
||||
msgstr "Изгледот содржи податотека од типот „.%s“, која не е дозволена."
|
||||
|
||||
#: lib/themeuploader.php:234
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
msgstr "Грешка во подновувањето на далечинскиот профил."
|
||||
msgstr "Грешка при отворањето на архивот за мотив."
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
|
@ -10,11 +10,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: no\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -11,11 +11,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: nl\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1143,13 +1143,12 @@ msgid "Theme for the site."
|
||||
msgstr "Mogelijke vormgevingen voor deze website."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Vormgeving website"
|
||||
msgstr "Aangepaste vormgeving"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
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
|
||||
msgid "Change background image"
|
||||
@ -1209,11 +1208,11 @@ msgstr "Verwijzingen"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Uitgebreid"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Aangepaste CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6928,48 +6927,54 @@ msgstr "Geen"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
msgstr ""
|
||||
"Deze server kan niet overweg met uploads van vormgevingsbestanden zonder ZIP-"
|
||||
"ondersteuning."
|
||||
|
||||
#: lib/themeuploader.php:58 lib/themeuploader.php:61
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Het bijwerken van de avatar is mislukt."
|
||||
msgstr "Het opslaan van de vormgeving is mislukt."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Ongeldige vormgeving: de mappenstructuur is onjuist."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"De toegevoegde vormgeving is te groot. Deze moet uitgepakt kleiner zijn dan %"
|
||||
"d bytes."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
msgid "Invalid theme archive: missing file css/display.css"
|
||||
msgstr ""
|
||||
"Ongeldig bestand met vormgeving: het bestand display.css is niet aanwezig"
|
||||
|
||||
#: lib/themeuploader.php:205
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
msgstr ""
|
||||
"De vormgeving bevat een ongeldige bestandsnaam of mapnaam. Gebruik alleen "
|
||||
"maar ASCII-letters, getallen, liggende streepjes en het minteken."
|
||||
|
||||
#: lib/themeuploader.php:216
|
||||
#, php-format
|
||||
msgid "Theme contains file of type '.%s', which is not allowed."
|
||||
msgstr ""
|
||||
"De vormgeving bevat een bestand van het type \".%s\". Dit is niet toegestaan."
|
||||
|
||||
#: lib/themeuploader.php:234
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
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
|
||||
msgid "Top posters"
|
||||
|
@ -9,11 +9,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: nn\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
|
@ -12,7 +12,7 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| 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-Language-Code: pl\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1128,13 +1128,12 @@ msgid "Theme for the site."
|
||||
msgstr "Motyw witryny."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Motyw witryny"
|
||||
msgstr "Własny motyw"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
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
|
||||
msgid "Change background image"
|
||||
@ -1192,11 +1191,11 @@ msgstr "Odnośniki"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Zaawansowane"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Własny plik CSS"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
msgid "Use defaults"
|
||||
@ -6848,47 +6847,49 @@ msgstr "Brak"
|
||||
#: lib/themeuploader.php:50
|
||||
msgid "This server cannot handle theme uploads without ZIP support."
|
||||
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
|
||||
#, fuzzy
|
||||
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:253 lib/themeuploader.php:257
|
||||
#: lib/themeuploader.php:265 lib/themeuploader.php:272
|
||||
#, fuzzy
|
||||
msgid "Failed saving theme."
|
||||
msgstr "Zaktualizowanie awatara nie powiodło się."
|
||||
msgstr "Zapisanie motywu nie powiodło się."
|
||||
|
||||
#: lib/themeuploader.php:139
|
||||
msgid "Invalid theme: bad directory structure."
|
||||
msgstr ""
|
||||
msgstr "Nieprawidłowy motyw: błędna struktura katalogów."
|
||||
|
||||
#: lib/themeuploader.php:166
|
||||
#, php-format
|
||||
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
|
||||
msgstr ""
|
||||
"Wysłany motyw jest za duży, musi być mniejszy niż %d bajtów po "
|
||||
"zdekompresowaniu."
|
||||
|
||||
#: lib/themeuploader.php:178
|
||||
msgid "Invalid theme archive: missing file css/display.css"
|
||||
msgstr ""
|
||||
msgstr "Nieprawidłowe archiwum motywu: brak pliku css/display.css"
|
||||
|
||||
#: lib/themeuploader.php:205
|
||||
msgid ""
|
||||
"Theme contains invalid file or folder name. Stick with ASCII letters, "
|
||||
"digits, underscore, and minus sign."
|
||||
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
|
||||
#, php-format
|
||||
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
|
||||
#, fuzzy
|
||||
msgid "Error opening theme archive."
|
||||
msgstr "Błąd podczas aktualizowania zdalnego profilu."
|
||||
msgstr "Błąd podczas otwierania archiwum motywu."
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Translation of StatusNet to Portuguese
|
||||
#
|
||||
# Author@translatewiki.net: Gallaecio
|
||||
# Author@translatewiki.net: Giro720
|
||||
# Author@translatewiki.net: Hamilton Abreu
|
||||
# Author@translatewiki.net: Ipublicis
|
||||
# --
|
||||
@ -11,11 +12,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: pt\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1183,7 +1184,7 @@ msgstr "Texto"
|
||||
|
||||
#: actions/designadminpanel.php:626 lib/designsettings.php:230
|
||||
msgid "Links"
|
||||
msgstr "Ligações"
|
||||
msgstr "Links"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
@ -6683,7 +6684,7 @@ msgstr "Todos os subscritores"
|
||||
|
||||
#: lib/profileaction.php:191
|
||||
msgid "User ID"
|
||||
msgstr "ID do utilizador"
|
||||
msgstr "Número de identificação"
|
||||
|
||||
#: lib/profileaction.php:196
|
||||
msgid "Member since"
|
||||
|
@ -13,11 +13,11 @@ msgstr ""
|
||||
"Project-Id-Version: StatusNet\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Content-Type: text/plain; charset=UTF-8\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-Language-Code: pt-br\n"
|
||||
"X-Message-Group: out-statusnet\n"
|
||||
@ -1136,13 +1136,14 @@ msgid "Theme for the site."
|
||||
msgstr "Tema para o site."
|
||||
|
||||
#: actions/designadminpanel.php:467
|
||||
#, fuzzy
|
||||
msgid "Custom theme"
|
||||
msgstr "Tema do site"
|
||||
msgstr "Tema personalizado"
|
||||
|
||||
#: actions/designadminpanel.php:471
|
||||
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
|
||||
msgstr ""
|
||||
"Você pode enviar um tema personalizado para o StatusNet, na forma de um "
|
||||
"arquivo .zip."
|
||||
|
||||
#: actions/designadminpanel.php:486 lib/designsettings.php:101
|
||||
msgid "Change background image"
|
||||
@ -1202,11 +1203,11 @@ msgstr "Links"
|
||||
|
||||
#: actions/designadminpanel.php:651
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avançado"
|
||||
|
||||
#: actions/designadminpanel.php:655
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
msgstr "CSS personalizado"
|
||||
|
||||
#: actions/designadminpanel.php:676 lib/designsettings.php:247
|
||||
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