code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Settings for OpenID
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Settings
 * @package   StatusNet
 * @author   Craig Andrews <candrews@integralblue.com>
 * @copyright 2008-2009 StatusNet, Inc.
 * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

if (!defined('STATUSNET')) {
    exit(1);
}

require_once INSTALLDIR.'/plugins/OpenID/openid.php';

/**
 * Settings for OpenID
 *
 * Lets users add, edit and delete OpenIDs from their account
 *
 * @category Settings
 * @package  StatusNet
 * @author   Craig Andrews <candrews@integralblue.com>
 * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class OpenidserverAction extends Action
{
    var $oserver;

    function prepare($args)
    {
        parent::prepare($args);
        $this->oserver = oid_server();
        return true;
    }

    function handle($args)
    {
        parent::handle($args);
        $request = $this->oserver->decodeRequest();
        if (in_array($request->mode, array('checkid_immediate',
            'checkid_setup'))) {
            $user = common_current_user();
            if(!$user){
                if($request->immediate){
                    //cannot prompt the user to login in immediate mode, so answer false
                    $response = $this->generateDenyResponse($request);
                }else{
                    // Go log in, and then come back.
                    //
                    // Note: 303 redirect rather than 307 to avoid
                    // prompting user for form resubmission if we
                    // were POSTed here.
                    common_set_returnto($_SERVER['REQUEST_URI']);
                    common_redirect(common_local_url('login'), 303);
                }
            }else if(common_profile_url($user->nickname) == $request->identity || $request->idSelect()){
                $user_openid_trustroot = User_openid_trustroot::pkeyGet(
                                                array('user_id'=>$user->id, 'trustroot'=>$request->trust_root));
                if(empty($user_openid_trustroot)){
                    if($request->immediate){
                        //cannot prompt the user to trust this trust root in immediate mode, so answer false
                        $response = $this->generateDenyResponse($request);
                    }else{
                        common_ensure_session();
                        $_SESSION['openid_trust_root'] = $request->trust_root;
                        $allowResponse = $this->generateAllowResponse($request, $user);
                        $this->oserver->encodeResponse($allowResponse); //sign the response
                        $denyResponse = $this->generateDenyResponse($request);
                        $this->oserver->encodeResponse($denyResponse); //sign the response
                        $_SESSION['openid_allow_url'] = $allowResponse->encodeToUrl();
                        $_SESSION['openid_deny_url'] = $denyResponse->encodeToUrl();

                        // Ask the user to trust this trust root...
                        //
                        // Note: 303 redirect rather than 307 to avoid
                        // prompting user for form resubmission if we
                        // were POSTed here.
                        common_redirect(common_local_url('openidtrust'), 303);
                    }
                }else{
                    //user has previously authorized this trust root
                    $response = $this->generateAllowResponse($request, $user);
                    //$response = $request->answer(true, null, common_profile_url($user->nickname));
                }
            } else if ($request->immediate) {
                $response = $this->generateDenyResponse($request);
            } else {
                //invalid
                // TRANS: OpenID plugin client error given trying to add an unauthorised OpenID to a user (403).
                // TRANS: %s is a request identity.
                $this->clientError(sprintf(_m('You are not authorized to use the identity %s.'),$request->identity),$code=403);
            }
        } else {
            $response = $this->oserver->handleRequest($request);
        }

        if($response){
            $response = $this->oserver->encodeResponse($response);
            if ($response->code != AUTH_OPENID_HTTP_OK) {
                header(sprintf("HTTP/1.1 %d ", $response->code),
                       true, $response->code);
            }

            if($response->headers){
                foreach ($response->headers as $k => $v) {
                    header("$k: $v");
                }
            }
            $this->raw($response->body);
        }else{
            // TRANS: OpenID plugin client error given when not getting a response for a given OpenID provider (500).
            $this->clientError(_m('Just an OpenID provider. Nothing to see here, move along...'),$code=500);
        }
    }

    function generateAllowResponse($request, $user){
        $response = $request->answer(true, null, common_profile_url($user->nickname));

        $profile = $user->getProfile();
        $sreg_data = array(
            'fullname' => $profile->fullname,
            'nickname' => $user->nickname,
            'email' => $user->email,
            'language' => $user->language,
            'timezone' => $user->timezone);
        $sreg_request = Auth_OpenID_SRegRequest::fromOpenIDRequest($request);
        $sreg_response = Auth_OpenID_SRegResponse::extractResponse(
                              $sreg_request, $sreg_data);
        $sreg_response->toMessage($response->fields);
        return $response;
    }

    function generateDenyResponse($request){
        $response = $request->answer(false);
        return $response;
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Settings for OpenID
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Settings
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2008-2009 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/
 */

if (!defined('STATUSNET')) {
    exit(1);
}

require_once INSTALLDIR.'/plugins/OpenID/openid.php';

/**
 * Settings for OpenID
 *
 * Lets users add, edit and delete OpenIDs from their account
 *
 * @category Settings
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class OpenidsettingsAction extends SettingsAction
{
    /**
     * Title of the page
     *
     * @return string Page title
     */
    function title()
    {
        // TRANS: Title of OpenID settings page for a user.
        return _m('TITLE','OpenID settings');
    }

    /**
     * Instructions for use
     *
     * @return string Instructions for use
     */
    function getInstructions()
    {
        // TRANS: Form instructions for OpenID settings.
        // TRANS: This message contains Markdown links in the form [description](link).
        return _m('[OpenID](%%doc.openid%%) lets you log into many sites ' .
                 'with the same user account. '.
                 'Manage your associated OpenIDs from here.');
    }

    function showScripts()
    {
        parent::showScripts();
        $this->autofocus('openid_url');
    }

    /**
     * Show the form for OpenID management
     *
     * We have one form with a few different submit buttons to do different things.
     *
     * @return void
     */
    function showContent()
    {
        $user = common_current_user();

        if (!common_config('openid', 'trusted_provider')) {
            $this->elementStart('form', array('method' => 'post',
                                              'id' => 'form_settings_openid_add',
                                              'class' => 'form_settings',
                                              'action' =>
                                              common_local_url('openidsettings')));
            $this->elementStart('fieldset', array('id' => 'settings_openid_add'));

            // TRANS: Fieldset legend.
            $this->element('legend', null, _m('LEGEND','Add OpenID'));
            $this->hidden('token', common_session_token());
            $this->element('p', 'form_guide',
                           // TRANS: Form guide.
                           _m('If you want to add an OpenID to your account, ' .
                             'enter it in the box below and click "Add".'));
            $this->elementStart('ul', 'form_data');
            $this->elementStart('li');
            $this->element('label', array('for' => 'openid_url'),
                           // TRANS: Field label.
                           _m('OpenID URL'));
            $this->element('input', array('name' => 'openid_url',
                                          'type' => 'text',
                                          'id' => 'openid_url'));
            $this->elementEnd('li');
            $this->elementEnd('ul');
            $this->element('input', array('type' => 'submit',
                                          'id' => 'settings_openid_add_action-submit',
                                          'name' => 'add',
                                          'class' => 'submit',
                                          // TRANS: Button text for adding an OpenID URL.
                                          'value' => _m('BUTTON','Add')));
            $this->elementEnd('fieldset');
            $this->elementEnd('form');
        }
        $oid = new User_openid();

        $oid->user_id = $user->id;

        $cnt = $oid->find();

        if ($cnt > 0) {
            // TRANS: Header on OpenID settings page.
            $this->element('h2', null, _m('HEADER','Remove OpenID'));

            if ($cnt == 1 && !$user->password) {

                $this->element('p', 'form_guide',
                               // TRANS: Form guide.
                               _m('Removing your only OpenID '.
                                 'would make it impossible to log in! ' .
                                 'If you need to remove it, '.
                                 'add another OpenID first.'));

                if ($oid->fetch()) {
                    $this->elementStart('p');
                    $this->element('a', array('href' => $oid->canonical),
                                   $oid->display);
                    $this->elementEnd('p');
                }

            } else {

                $this->element('p', 'form_guide',
                               // TRANS: Form guide.
                               _m('You can remove an OpenID from your account '.
                                 'by clicking the button marked "Remove".'));
                $idx = 0;

                while ($oid->fetch()) {
                    $this->elementStart('form',
                                        array('method' => 'POST',
                                              'id' => 'form_settings_openid_delete' . $idx,
                                              'class' => 'form_settings',
                                              'action' =>
                                              common_local_url('openidsettings')));
                    $this->elementStart('fieldset');
                    $this->hidden('token', common_session_token());
                    $this->element('a', array('href' => $oid->canonical),
                                   $oid->display);
                    $this->element('input', array('type' => 'hidden',
                                                  'id' => 'openid_url'.$idx,
                                                  'name' => 'openid_url',
                                                  'value' => $oid->canonical));
                    $this->element('input', array('type' => 'submit',
                                                  'id' => 'remove'.$idx,
                                                  'name' => 'remove',
                                                  'class' => 'submit remove',
                                                  // TRANS: Button text to remove an OpenID.
                                                  'value' => _m('BUTTON','Remove')));
                    $this->elementEnd('fieldset');
                    $this->elementEnd('form');
                    $idx++;
                }
            }
        }

        $this->elementStart('form', array('method' => 'post',
                                          'id' => 'form_settings_openid_trustroots',
                                          'class' => 'form_settings',
                                          'action' =>
                                          common_local_url('openidsettings')));
        $this->elementStart('fieldset', array('id' => 'settings_openid_trustroots'));
        // TRANS: Fieldset legend.
        $this->element('legend', null, _m('OpenID Trusted Sites'));
        $this->hidden('token', common_session_token());
        $this->element('p', 'form_guide',
                       // TRANS: Form guide.
                       _m('The following sites are allowed to access your ' .
                       'identity and log you in. You can remove a site from ' .
                       'this list to deny it access to your OpenID.'));
        $this->elementStart('ul', 'form_data');
        $user_openid_trustroot = new User_openid_trustroot();
        $user_openid_trustroot->user_id=$user->id;
        if($user_openid_trustroot->find()) {
            while($user_openid_trustroot->fetch()) {
                $this->elementStart('li');
                $this->element('input', array('name' => 'openid_trustroot[]',
                                              'type' => 'checkbox',
                                              'class' => 'checkbox',
                                              'value' => $user_openid_trustroot->trustroot,
                                              'id' => 'openid_trustroot_' . crc32($user_openid_trustroot->trustroot)));
                $this->element('label', array('class'=>'checkbox', 'for' => 'openid_trustroot_' . crc32($user_openid_trustroot->trustroot)),
                               $user_openid_trustroot->trustroot);
                $this->elementEnd('li');
            }
        }
        $this->elementEnd('ul');
        $this->element('input', array('type' => 'submit',
                                      'id' => 'settings_openid_trustroots_action-submit',
                                      'name' => 'remove_trustroots',
                                      'class' => 'submit',
                                      // TRANS: Button text to remove an OpenID trustroot.
                                      'value' => _m('BUTTON','Remove')));
        $this->elementEnd('fieldset');

        $prefs = User_openid_prefs::getKV('user_id', $user->id);

        $this->elementStart('fieldset');
        $this->element('legend', null, _m('LEGEND','Preferences'));
        $this->elementStart('ul', 'form_data');
        $this->checkBox('hide_profile_link', "Hide OpenID links from my profile", !empty($prefs) && $prefs->hide_profile_link);
        $this->element('input', array('type' => 'submit',
                                      'id' => 'settings_openid_prefs_save',
                                      'name' => 'save_prefs',
                                      'class' => 'submit',
                                      // TRANS: Button text to save OpenID prefs
                                      'value' => _m('BUTTON','Save')));
        $this->elementEnd('ul');
        $this->elementEnd('fieldset');

        $this->elementEnd('form');
    }

    /**
     * Handle a POST request
     *
     * Muxes to different sub-functions based on which button was pushed
     *
     * @return void
     */
    function handlePost()
    {
        // CSRF protection
        $token = $this->trimmed('token');
        if (!$token || $token != common_session_token()) {
            // TRANS: Client error displayed when the session token does not match or is not given.
            $this->showForm(_m('There was a problem with your session token. '.
                              'Try again, please.'));
            return;
        }

        if ($this->arg('add')) {
            if (common_config('openid', 'trusted_provider')) {
                // TRANS: Form validation error if no OpenID providers can be added.
                $this->showForm(_m('Cannot add new providers.'));
            } else {
                $result = oid_authenticate($this->trimmed('openid_url'),
                                           'finishaddopenid');
                if (is_string($result)) { // error message
                    $this->showForm($result);
                }
            }
        } else if ($this->arg('remove')) {
            $this->removeOpenid();
        } else if($this->arg('remove_trustroots')) {
            $this->removeTrustroots();
        } else if($this->arg('save_prefs')) {
            $this->savePrefs();
        } else {
            // TRANS: Unexpected form validation error.
            $this->showForm(_m('Something weird happened.'));
        }
    }

    /**
     * Handles a request to remove OpenID trustroots from the user's account
     *
     * Validates input and, if everything is OK, deletes the trustroots.
     * Reloads the form with a success or error notification.
     *
     * @return void
     */
    function removeTrustroots()
    {
        $user = common_current_user();
        $trustroots = $this->arg('openid_trustroot');
        if($trustroots) {
            foreach($trustroots as $trustroot) {
                $user_openid_trustroot = User_openid_trustroot::pkeyGet(
                                                array('user_id'=>$user->id, 'trustroot'=>$trustroot));
                if($user_openid_trustroot) {
                    $user_openid_trustroot->delete();
                } else {
                    // TRANS: Form validation error when trying to remove a non-existing trustroot.
                    $this->showForm(_m('No such OpenID trustroot.'));
                    return;
                }
            }
            // TRANS: Success message after removing trustroots.
            $this->showForm(_m('Trustroots removed.'), true);
        } else {
            $this->showForm();
        }
        return;
    }

    /**
     * Handles a request to remove an OpenID from the user's account
     *
     * Validates input and, if everything is OK, deletes the OpenID.
     * Reloads the form with a success or error notification.
     *
     * @return void
     */
    function removeOpenid()
    {
        $openid_url = $this->trimmed('openid_url');

        $oid = User_openid::getKV('canonical', $openid_url);

        if (!$oid) {
            // TRANS: Form validation error for a non-existing OpenID.
            $this->showForm(_m('No such OpenID.'));
            return;
        }
        $cur = common_current_user();
        if (!$cur || $oid->user_id != $cur->id) {
            // TRANS: Form validation error if OpenID is connected to another user.
            $this->showForm(_m('That OpenID does not belong to you.'));
            return;
        }
        $oid->delete();
        // TRANS: Success message after removing an OpenID.
        $this->showForm(_m('OpenID removed.'), true);
        return;
    }

    /**
     * Handles a request to save preferences
     *
     * Validates input and, if everything is OK, deletes the OpenID.
     * Reloads the form with a success or error notification.
     *
     * @return void
     */
    function savePrefs()
    {
        $cur = common_current_user();

        if (empty($cur)) {
            throw new ClientException(_("Not logged in."));
        }

        $orig  = null;
        $prefs = User_openid_prefs::getKV('user_id', $cur->id);

        if (empty($prefs)) {
            $prefs          = new User_openid_prefs();
            $prefs->user_id = $cur->id;
            $prefs->created = common_sql_now();
        } else {
            $orig = clone($prefs);
        }

        $prefs->hide_profile_link = $this->boolean('hide_profile_link');

        if (empty($orig)) {
            $prefs->insert();
        } else {
            $prefs->update($orig);
        }

        $this->showForm(_m('OpenID preferences saved.'), true);
        return;
    }
}

license: mit


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2008, 2009, StatusNet, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

if (!defined('STATUSNET')) {
    exit(1);
}

require_once INSTALLDIR.'/plugins/OpenID/openid.php';

class OpenidtrustAction extends Action
{
    var $trust_root;
    var $allowUrl;
    var $denyUrl;
    var $user;

    /**
     * Is this a read-only action?
     *
     * @return boolean false
     */
    function isReadOnly($args)
    {
        return false;
    }

    /**
     * Title of the page
     *
     * @return string title of the page
     */
    function title()
    {
        // TRANS: Title for identity verification page.
        return _m('OpenID Identity Verification');
    }

    function prepare($args)
    {
        parent::prepare($args);
        common_ensure_session();
        $this->user = common_current_user();
        if(empty($this->user)){
            /* Go log in, and then come back. */
            common_set_returnto($_SERVER['REQUEST_URI']);
            common_redirect(common_local_url('login'));
        }
        $this->trust_root = $_SESSION['openid_trust_root'];
        $this->allowUrl = $_SESSION['openid_allow_url'];
        $this->denyUrl = $_SESSION['openid_deny_url'];
        if(empty($this->trust_root) || empty($this->allowUrl) || empty($this->denyUrl)){
            // TRANS: Client error when visiting page directly.
            $this->clientError(_m('This page should only be reached during OpenID processing, not directly.'));
        }
        return true;
    }

    function handle($args)
    {
        parent::handle($args);
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            $this->handleSubmit();
        }else{
            $this->showPage();
        }
    }

    function handleSubmit()
    {
        global $_PEAR;

        unset($_SESSION['openid_trust_root']);
        unset($_SESSION['openid_allow_url']);
        unset($_SESSION['openid_deny_url']);
        if($this->arg('allow'))
        {
            //save to database
            $user_openid_trustroot = new User_openid_trustroot();
            $user_openid_trustroot->user_id = $this->user->id;
            $user_openid_trustroot->trustroot = $this->trust_root;
            $user_openid_trustroot->created = common_sql_now();
            if (!$user_openid_trustroot->insert()) {
                $err = &$_PEAR->getStaticProperty('DB_DataObject','lastError');
            }
            common_redirect($this->allowUrl, $code=302);
        }else{
            common_redirect($this->denyUrl, $code=302);
        }
    }

    /**
     * Show page notice
     *
     * Display a notice for how to use the page, or the
     * error if it exists.
     *
     * @return void
     */
    function showPageNotice()
    {
        // TRANS: Page notice. %s is a trustroot name.
        $this->element('p',null,sprintf(_m('%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.'),$this->trust_root));
    }

    /**
     * Core of the display code
     *
     * Shows the login form.
     *
     * @return void
     */
    function showContent()
    {
        $this->elementStart('form', array('method' => 'post',
                                   'id' => 'form_openidtrust',
                                   'class' => 'form_settings',
                                   'action' => common_local_url('openidtrust')));
        $this->elementStart('fieldset');
        // TRANS: Button text to continue OpenID identity verification.
        $this->submit('allow', _m('BUTTON','Continue'));
        // TRANS: Button text to cancel OpenID identity verification.
        $this->submit('deny', _m('BUTTON','Cancel'));

        $this->elementEnd('fieldset');
        $this->elementEnd('form');
    }
}


code:
<?php
/**
 * Table Definition for user_openid
 */

if (!defined('STATUSNET')) {
    exit(1);
}

class User_openid extends Managed_DataObject
{
    ###START_AUTOCODE
    /* the code below is auto generated do not remove the above tag */

    public $__table = 'user_openid';                     // table name
    public $canonical;                       // varchar(255)  primary_key not_null
    public $display;                         // varchar(255)  unique_key not_null
    public $user_id;                         // int(4)   not_null
    public $created;                         // datetime()   not_null
    public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP

    /* the code above is auto generated do not remove the tag below */
    ###END_AUTOCODE

    public static function schemaDef()
    {
        return array(
            'fields' => array(
                'canonical' => array('type' => 'varchar', 'not null' => true, 'length' => 255, 'description' => 'OpenID canonical string'),
                'display' => array('type' => 'varchar', 'not null' => true, 'length' => 255, 'description' => 'OpenID display string'),
                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'User ID for OpenID owner'),
                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
            ),
            'primary key' => array('canonical'),
            'unique keys' => array(
                'user_openid_display_key' => array('display'),
            ),
            'indexes' => array(
                'user_openid_user_id_idx' => array('user_id'),
            ),
            'foreign keys' => array(
                'user_openid_user_id_fkey' => array('user', array('user_id' => 'id')),
            ),
        );
    }

    static function hasOpenID($user_id)
    {
        $oid = new User_openid();

        $oid->user_id = $user_id;

        $cnt = $oid->find();

        return ($cnt > 0);
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2012, StatusNet, Inc.
 *
 * User_openid_prefs.php
 *
 * PHP version 5
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  OpenID
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2012 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

if (!defined('STATUSNET')) {
    exit(1);
}

/**
 * Store preferences for OpenID use in StatusNet
 *
 * @category OpenID
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
 * @link     http://status.net/
 *
 * @see      DB_DataObject
 */

class User_openid_prefs extends Managed_DataObject
{
    public $__table = 'user_openid_prefs'; // table name

    public $user_id;            // The User with the prefs
    public $hide_profile_link;  // Hide the link on the profile block?
    public $created;            // datetime
    public $modified;           // datetime

    /**
     * The One True Thingy that must be defined and declared.
     */

    public static function schemaDef()
    {
        return array(
                     'description' => 'Per-user preferences for OpenID display',
                     'fields' => array('user_id' => array('type' => 'integer',
                                                          'not null' => true,
                                                          'description' => 'User whose prefs we are saving'),
                                       'hide_profile_link' => array('type' => 'int',
                                                                    'not null' => true,
                                                                    'default' => 0,
                                                                    'description' => 'Whether to hide profile links from profile block'),
                                       'created' => array('type' => 'datetime',
                                                          'not null' => true,
                                                          'description' => 'date this record was created'),
                                       'modified' => array('type' => 'datetime',
                                                           'not null' => true,
                                                           'description' => 'date this record was modified'),
                                       ),
                     'primary key' => array('user_id'),
                     'foreign keys' => array('user_openid_prefs_user_id_fkey' => array('user', array('user_id' => 'id')),
                                             ),
                     'indexes' => array(),
                     );
    }
}


code:
<?php
/**
 * Table Definition for user_openid_trustroot
 */

if (!defined('STATUSNET')) {
    exit(1);
}

class User_openid_trustroot extends Managed_DataObject
{
    ###START_AUTOCODE
    /* the code below is auto generated do not remove the above tag */

    public $__table = 'user_openid_trustroot';                     // table name
    public $trustroot;                         // varchar(255) primary_key not_null
    public $user_id;                         // int(4)  primary_key not_null
    public $created;                         // datetime()   not_null
    public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP

    /* the code above is auto generated do not remove the tag below */
    ###END_AUTOCODE

    public static function schemaDef()
    {
        return array(
            'fields' => array(
                'trustroot' => array('type' => 'varchar', 'not null' => true, 'length' => 255, 'description' => 'OpenID trustroot string'),
                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'User ID for OpenID trustroot owner'),
                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
            ),
            'primary key' => array('trustroot', 'user_id'),
        );
    }
}


code:
%%site.name%% supports the [OpenID](http://openid.net/) standard for single signon between Web sites. OpenID lets you log into many different Web sites without using a different password for each. (See [Wikipedia's OpenID article](http://en.wikipedia.org/wiki/OpenID) for more information.)

If you already have an account on %%site.name%%, you can [login](%%action.login%%) with your username and password as usual.
To use OpenID in the future, you can [add an OpenID to your account](%%action.openidsettings%%) after you have logged in normally.

There are many [Public OpenID providers](http://wiki.openid.net/OpenID-Providers), and you may already have an OpenID-enabled account on another service.

* On wikis: If you have an account on an OpenID-enabled wiki, like [Wikitravel](http://wikitravel.org/), [wikiHow](http://www.wikihow.com/), [Vinismo](http://vinismo.com/), [AboutUs](http://aboutus.org/) or [Keiki](http://kei.ki/), you can log in to %%site.name%% by entering the **full URL** of your user page on that other wiki in the box above. For example, *http://kei.ki/en/User:Evan*.
* [Yahoo!](http://openid.yahoo.com/) : If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID in the box above. Yahoo! OpenID URLs have the form *https://me.yahoo.com/yourusername*.
* [AOL](http://dev.aol.com/aol-and-63-million-openids) : If you have an account with [AOL](http://www.aol.com/), like an [AIM](http://www.aim.com/) account, you can log in to %%site.name%% by entering your AOL-provided OpenID in the box above. AOL OpenID URLs have the form *http://openid.aol.com/yourusername*. Your username should be all lowercase, no spaces.
* [Blogger](http://bloggerindraft.blogspot.com/2008/01/new-feature-blogger-as-openid-provider.html), [Wordpress.com](http://faq.wordpress.com/2007/03/06/what-is-openid/), [LiveJournal](http://www.livejournal.com/openid/about.bml), [Vox](http://bradfitz.vox.com/library/post/openid-for-vox.html) : If you have a blog on any of these services, enter your blog URL in the box above. For example, *http://yourusername.blogspot.com/*, *http://yourusername.wordpress.com/*, *http://yourusername.livejournal.com/*, or *http://yourusername.vox.com/*.

Additionally, once you have an account on %%site.name%%, you can use your profile's URL (https://%%site.server%%/yourusername) as an OpenID elsewhere as well.

path: plugins/OpenID/doc-src/openid


code:
team-extension.php
    Support for Launchpad's OpenID Teams extension
    Maintainer: Canonical
    Source: https://code.edge.launchpad.net/wordpress-teams-integration
            r27 2010-04-27
    License: AGPLv3

path: plugins/OpenID/extlib/README


code:
<?php
/*
 *  Wordpress Teams plugin
 *  Copyright (C) 2009-2010 Canonical Ltd.
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Affero General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * Provides an example OpenID extension to query user team/group membership
 *
 * This code is based on code supplied with the openid library for simple
 * registration data.
 */

/**
 * Require the Message implementation.
 */
require_once 'Auth/OpenID/Message.php';
require_once 'Auth/OpenID/Extension.php';

/**
 * The team/group extension base class
 */
class Auth_OpenID_TeamsExtension extends Auth_OpenID_Extension {
  var $ns_uri = 'http://ns.launchpad.net/2007/openid-teams';
  var $ns_alias = 'lp';
  var $request_field = 'query_membership';
  var $response_field = 'is_member';

  /**
   * Get the string arguments that should be added to an OpenID
   * message for this extension.
   */
  function getExtensionArgs() {
    $args = array();

    if ($this->_teams) {
      $args[$this->request_field] = implode(',', $this->_teams);
    }

    return $args;
  }

  /**
   * Add the arguments from this extension to the provided message.
   *
   * Returns the message with the extension arguments added.
   */
  function toMessage(&$message) {
    if ($message->namespaces->addAlias($this->ns_uri, $this->ns_alias) === null) {
      if ($message->namespaces->getAlias($this->ns_uri) != $this->ns_alias) {
        return null;
      }
    }

    $message->updateArgs($this->ns_uri, $this->getExtensionArgs());
    return $message;
  }

  /**
   * Extract the team/group namespace URI from the given OpenID message.
   * Handles OpenID 1 and 2.
   *
   * $message: The OpenID message from which to parse team/group data.
   * This may be a request or response message.
   *
   * Returns the sreg namespace URI for the supplied message.
   *
   * @access private
   */
  function _getExtensionNS(&$message) {
    $alias = null;
    $found_ns_uri = null;

    // See if there exists an alias for the namespace
    $alias = $message->namespaces->getAlias($this->ns_uri);

    if ($alias !== null) {
      $found_ns_uri = $this->ns_uri;
    }

    if ($alias === null) {
      // There is no alias for this extension, so try to add one.
      $found_ns_uri = Auth_OpenID_TYPE_1_0;

      if ($message->namespaces->addAlias($this->ns_uri, $this->ns_alias) === null) {
        // An alias for the string 'lp' already exists, but
        // it's defined for something other than team/group membership
        return null;
      }
    }

    return $found_ns_uri;
  }
}

/**
 * The team/group extension request class
 */
class Auth_OpenID_TeamsRequest extends Auth_OpenID_TeamsExtension {
  function __init($teams) {
    if (!is_array($teams)) {
      if (!empty($teams)) {
        $teams = explode(',', $teams);
      } else {
        $teams = Array();
      }
    }

    $this->_teams = $teams;
  }

  function Auth_OpenID_TeamsRequest($teams) {
    $this->__init($teams);
  }
}

/**
 * The team/group extension response class
 */
class Auth_OpenID_TeamsResponse extends Auth_OpenID_TeamsExtension {
  var $_teams = array();

  function __init(&$resp, $signed_only=true) {
    $this->ns_uri = $this->_getExtensionNS($resp->message);

    if ($signed_only) {
      $args = $resp->getSignedNS($this->ns_uri);
    } else {
      $args = $resp->message->getArgs($this->ns_uri);
    }

    if ($args === null) {
      return null;
    }

    // An OpenID 2.0 response will handle the namespaces
    if (in_array($this->response_field, array_keys($args)) && !empty($args[$this->response_field])) {
      $this->_teams = explode(',', $args[$this->response_field]);
    }

    // Piggybacking on a 1.x request, however, won't so the field name will
    // be different
    elseif (in_array($this->ns_alias.'.'.$this->response_field, array_keys($args)) && !empty($args[$this->ns_alias.'.'.$this->response_field])) {
      $this->_teams = explode(',', $args[$this->ns_alias.'.'.$this->response_field]);
    }
  }

  function Auth_OpenID_TeamsResponse(&$resp, $signed_only=true) {
    $this->__init($resp, $signed_only);
  }

  /**
   * Get the array of teams the user is a member of
   *
   * @return array
   */
  function getTeams() {
    return $this->_teams;
  }
}

?>


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#. TRANS: Title for identity verification page.
#: openidtrust.php:51
msgid "OpenID Identity Verification"
msgstr ""

#. TRANS: Client error when visiting page directly.
#: openidtrust.php:70
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr ""

#. TRANS: Page notice. %s is a trustroot name.
#: openidtrust.php:118
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity "
"and login without creating a new password."
msgstr ""

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID authentication first.
#: openidtrust.php:136 OpenIDPlugin.php:695
msgctxt "BUTTON"
msgid "Continue"
msgstr ""

#. TRANS: Button text to cancel OpenID identity verification.
#: openidtrust.php:138
msgctxt "BUTTON"
msgid "Cancel"
msgstr ""

#. TRANS: Client exception thrown when an action is not available.
#: OpenIDPlugin.php:139
msgid "Unavailable action."
msgstr ""

#. TRANS: Tooltip for main menu option "Login"
#: OpenIDPlugin.php:219
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr ""

#. TRANS: Main menu option when not logged in to log in
#: OpenIDPlugin.php:222
msgctxt "MENU"
msgid "Login"
msgstr ""

#. TRANS: Tooltip for main menu option "Help"
#: OpenIDPlugin.php:227
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr ""

#. TRANS: Main menu option for help on the StatusNet site
#: OpenIDPlugin.php:230
msgctxt "MENU"
msgid "Help"
msgstr ""

#. TRANS: Tooltip for main menu option "Search"
#: OpenIDPlugin.php:236
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr ""

#. TRANS: Main menu option when logged in or when the StatusNet instance is not private
#: OpenIDPlugin.php:239
msgctxt "MENU"
msgid "Search"
msgstr ""

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
#: OpenIDPlugin.php:296 OpenIDPlugin.php:332 OpenIDPlugin.php:542
#: OpenIDPlugin.php:637
msgctxt "MENU"
msgid "OpenID"
msgstr ""

#. TRANS: OpenID plugin tooltip for logon menu item.
#: OpenIDPlugin.php:298
msgid "Login or register with OpenID."
msgstr ""

#. TRANS: OpenID plugin tooltip for user settings menu item.
#: OpenIDPlugin.php:334
msgid "Add or remove OpenIDs."
msgstr ""

#. TRANS: Page notice for logged in users to try and get them to add an OpenID account to their StatusNet account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#: OpenIDPlugin.php:484
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? [Add an OpenID to your account](%%"
"action.openidsettings%%)!"
msgstr ""

#. TRANS: Page notice for anonymous users to try and get them to register with an OpenID account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#: OpenIDPlugin.php:489
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID registration](%%"
"action.openidlogin%%)!)"
msgstr ""

#. TRANS: Page notice on the login page to try and get them to log on with an OpenID account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#: OpenIDPlugin.php:497
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID login](%%action."
"openidlogin%%)!)"
msgstr ""

#. TRANS: Tooltip for OpenID configuration menu item.
#: OpenIDPlugin.php:639
msgid "OpenID configuration."
msgstr ""

#. TRANS: Plugin description.
#: OpenIDPlugin.php:685
msgid "Use OpenID to login to the site."
msgstr ""

#. TRANS: OpenID plugin logon form legend.
#: OpenIDPlugin.php:712 openidlogin.php:132
msgctxt "LEGEND"
msgid "OpenID login"
msgstr ""

#. TRANS: Field label.
#: OpenIDPlugin.php:720
msgid "OpenID provider"
msgstr ""

#. TRANS: Form guide.
#: OpenIDPlugin.php:729 openidlogin.php:149
msgid "Enter your username."
msgstr ""

#. TRANS: Form guide.
#: OpenIDPlugin.php:731 openidlogin.php:151
msgid "You will be sent to the provider's site for authentication."
msgstr ""

#. TRANS: OpenID plugin logon form field label.
#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
#: OpenIDPlugin.php:735 openidsettings.php:110 openidlogin.php:155
msgid "OpenID URL"
msgstr ""

#. TRANS: OpenID plugin logon form field instructions.
#. TRANS: OpenID plugin logon form field title.
#: OpenIDPlugin.php:738 openidlogin.php:158
msgid "Your OpenID URL."
msgstr ""

#. TRANS: Client error message trying to log on with OpenID while already logged on.
#: finishopenidlogin.php:37 openidlogin.php:33
msgid "Already logged in."
msgstr ""

#. TRANS: Message given when there is a problem with the user's session token.
#. TRANS: Client error displayed when the session token does not match or is not given.
#: finishopenidlogin.php:42 openidsettings.php:241
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given if user does not agree with the site's license.
#: finishopenidlogin.php:48
msgid "You cannot register if you do not agree to the license."
msgstr ""

#. TRANS: Messag given on an unknown error.
#: finishopenidlogin.php:57
msgid "An unknown error has occured."
msgstr ""

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#: finishopenidlogin.php:73
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
#: finishopenidlogin.php:80
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr ""

#. TRANS: Fieldset legend.
#: finishopenidlogin.php:118
msgid "Create new account"
msgstr ""

#. TRANS: Form guide.
#: finishopenidlogin.php:121
msgid "Create a new user with this nickname."
msgstr ""

#. TRANS: Field label.
#: finishopenidlogin.php:129
msgid "New nickname"
msgstr ""

#. TRANS: Field title.
#: finishopenidlogin.php:132
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr ""

#. TRANS: Field label.
#: finishopenidlogin.php:136
msgid "Email"
msgstr ""

#. TRANS: Field title.
#: finishopenidlogin.php:138
msgid "Used only for updates, announcements, and password recovery."
msgstr ""

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#: finishopenidlogin.php:155
#, php-format
msgid ""
"My text and files are available under %s except this private data: password, "
"email address, IM address, and phone number."
msgstr ""

#. TRANS: Button label in form in which to create a new user on the site for an OpenID.
#: finishopenidlogin.php:168
msgctxt "BUTTON"
msgid "Create"
msgstr ""

#. TRANS: Used as form legend for form in which to connect an OpenID to an existing user on the site.
#: finishopenidlogin.php:182
msgid "Connect existing account"
msgstr ""

#. TRANS: User instructions for form in which to connect an OpenID to an existing user on the site.
#: finishopenidlogin.php:185
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
#: finishopenidlogin.php:189
msgid "Existing nickname"
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
#: finishopenidlogin.php:193
msgid "Password"
msgstr ""

#. TRANS: Button text in form in which to connect an OpenID to an existing user on the site.
#: finishopenidlogin.php:197
msgctxt "BUTTON"
msgid "Connect"
msgstr ""

#. TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled.
#: finishopenidlogin.php:243 finishaddopenid.php:87
msgid "OpenID authentication cancelled."
msgstr ""

#. TRANS: OpenID authentication failed; display the error message. %s is the error message.
#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#: finishopenidlogin.php:247 finishaddopenid.php:92
#, php-format
msgid "OpenID authentication failed: %s."
msgstr ""

#. TRANS: Message displayed when OpenID authentication is aborted.
#. TRANS: OpenID authentication error.
#: finishopenidlogin.php:268 finishaddopenid.php:109
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided.
#: finishopenidlogin.php:324 finishopenidlogin.php:334
msgid "Registration not allowed."
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid.
#: finishopenidlogin.php:342
msgid "Not a valid invitation code."
msgstr ""

#. TRANS: OpenID plugin message. The entered new user name is blacklisted.
#: finishopenidlogin.php:356
msgid "Nickname not allowed."
msgstr ""

#. TRANS: OpenID plugin message. The entered new user name is already used.
#: finishopenidlogin.php:362
msgid "Nickname already in use. Try another one."
msgstr ""

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
#: finishopenidlogin.php:370 finishopenidlogin.php:456
msgid "Stored OpenID not found."
msgstr ""

#. TRANS: OpenID plugin server error.
#: finishopenidlogin.php:380
msgid "Creating new account for OpenID that already has a user."
msgstr ""

#. TRANS: OpenID plugin message.
#: finishopenidlogin.php:444
msgid "Invalid username or password."
msgstr ""

#. TRANS: OpenID plugin server error. The user or user profile could not be saved.
#: finishopenidlogin.php:464
msgid "Error connecting user to OpenID."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:137
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
#: openid.php:149
msgid "Not a valid OpenID."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request fails.
#. TRANS: %s is the failure message.
#: openid.php:154
#, php-format
msgid "OpenID failure: %s."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected.
#. TRANS: %s is the failure message.
#: openid.php:204
#, php-format
msgid "Could not redirect to server: %s."
msgstr ""

#. TRANS: OpenID plugin user instructions.
#: openid.php:243
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:279
msgid "Error saving the profile."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:291
msgid "Error saving the user."
msgstr ""

#. TRANS: OpenID plugin client exception (403).
#: openid.php:321
msgid "Unauthorized URL used for OpenID login."
msgstr ""

#. TRANS: Title
#: openid.php:369
msgid "OpenID Login Submission"
msgstr ""

#. TRANS: OpenID plugin message used while requesting authorization user's OpenID login provider.
#: openid.php:380
msgid "Requesting authorization from your login provider..."
msgstr ""

#. TRANS: OpenID plugin message. User instruction while requesting authorization user's OpenID login provider.
#: openid.php:384
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr ""

#. TRANS: Title for OpenID bridge administration page.
#: openidadminpanel.php:53
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr ""

#. TRANS: Page instructions.
#: openidadminpanel.php:64
msgid "OpenID settings"
msgstr ""

#. TRANS: Client error displayed when OpenID provider URL is too long.
#: openidadminpanel.php:145
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr ""

#. TRANS: Client error displayed when Launchpad team name is too long.
#: openidadminpanel.php:152
msgid "Invalid team name. Maximum length is 255 characters."
msgstr ""

#. TRANS: Fieldset legend.
#: openidadminpanel.php:206
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr ""

#. TRANS: Form guide.
#: openidadminpanel.php:209
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
#: openidadminpanel.php:218
msgid "Provider URL"
msgstr ""

#. TRANS: Field title.
#: openidadminpanel.php:220
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
#: openidadminpanel.php:228
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
#: openidadminpanel.php:231
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
#: openidadminpanel.php:240
msgid "Required team"
msgstr ""

#. TRANS: Field title.
#: openidadminpanel.php:242
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
#: openidadminpanel.php:255
msgctxt "LEGEND"
msgid "Options"
msgstr ""

#. TRANS: Checkbox label.
#: openidadminpanel.php:263
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
#: openidadminpanel.php:266
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button text to save OpenID settings.
#: openidadminpanel.php:284
msgctxt "BUTTON"
msgid "Save"
msgstr ""

#. TRANS: Button title to save OpenID settings.
#: openidadminpanel.php:286
msgid "Save OpenID settings."
msgstr ""

#. TRANS: Error message displayed when trying to perform an action that requires a logged in user.
#: finishaddopenid.php:66
msgid "Not logged in."
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already connected to them.
#: finishaddopenid.php:120
msgid "You already have this OpenID!"
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already used by another user.
#: finishaddopenid.php:123
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
#: finishaddopenid.php:136
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in StatusNet.
#: finishaddopenid.php:143
msgid "Error updating profile."
msgstr ""

#. TRANS: Title after getting the status of the OpenID authorisation request.
#: finishaddopenid.php:183
msgid "OpenID Login"
msgstr ""

#. TRANS: Title of OpenID settings page for a user.
#: openidsettings.php:57
msgctxt "TITLE"
msgid "OpenID settings"
msgstr ""

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form [description](link).
#: openidsettings.php:69
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""

#. TRANS: Fieldset legend.
#: openidsettings.php:100
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr ""

#. TRANS: Form guide.
#: openidsettings.php:104
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""

#. TRANS: Button text for adding an OpenID URL.
#: openidsettings.php:121
msgctxt "BUTTON"
msgid "Add"
msgstr ""

#. TRANS: Header on OpenID settings page.
#: openidsettings.php:133
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr ""

#. TRANS: Form guide.
#: openidsettings.php:139
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to "
"remove it, add another OpenID first."
msgstr ""

#. TRANS: Form guide.
#: openidsettings.php:155
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr ""

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
#: openidsettings.php:179 openidsettings.php:223
msgctxt "BUTTON"
msgid "Remove"
msgstr ""

#. TRANS: Fieldset legend.
#: openidsettings.php:194
msgid "OpenID Trusted Sites"
msgstr ""

#. TRANS: Form guide.
#: openidsettings.php:198
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""

#. TRANS: Form validation error if no OpenID providers can be added.
#: openidsettings.php:249
msgid "Cannot add new providers."
msgstr ""

#. TRANS: Unexpected form validation error.
#: openidsettings.php:263
msgid "Something weird happened."
msgstr ""

#. TRANS: Form validation error when trying to remove a non-existing trustroot.
#: openidsettings.php:287
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
#: openidsettings.php:292
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
#: openidsettings.php:315
msgid "No such OpenID."
msgstr ""

#. TRANS: Form validation error if OpenID is connected to another user.
#: openidsettings.php:321
msgid "That OpenID does not belong to you."
msgstr ""

#. TRANS: Success message after removing an OpenID.
#: openidsettings.php:326
msgid "OpenID removed."
msgstr ""

#. TRANS: OpenID plugin client error given trying to add an unauthorised OpenID to a user (403).
#. TRANS: %s is a request identity.
#: openidserver.php:117
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr ""

#. TRANS: OpenID plugin client error given when not getting a response for a given OpenID provider (500).
#: openidserver.php:138
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr ""

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: openidlogin.php:74
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: openidlogin.php:80
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr ""

#. TRANS: OpenID plugin message. Title.
#: openidlogin.php:114
msgctxt "TITLE"
msgid "OpenID Login"
msgstr ""

#. TRANS: Field label.
#: openidlogin.php:140
msgctxt "LABEL"
msgid "OpenID provider"
msgstr ""

#. TRANS: OpenID plugin logon form checkbox label for setting to put the OpenID information in a cookie.
#: openidlogin.php:163
msgid "Remember me"
msgstr ""

#. TRANS: OpenID plugin logon form field title.
#: openidlogin.php:165
msgid "Automatically login in the future; not for shared computers!"
msgstr ""

#. TRANS: OpenID plugin logon form button label to start logon with the data provided in the logon form.
#: openidlogin.php:170
msgctxt "BUTTON"
msgid "Login"
msgstr ""


code:
# Translation of StatusNet - OpenID to Arabic (العربية)
# Exported from translatewiki.net
#
# Author: Majid Al-Dharrab
# Author: OsamaK
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - OpenID\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:09:24+0000\n"
"Language-Team: Arabic <https://translatewiki.net/wiki/Portal:ar>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-10-10 14:11:22+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ar\n"
"X-Message-Group: #out-statusnet-plugin-openid\n"
"Plural-Forms: nplurals=6; plural=(n == 0) ? 0 : ( (n == 1) ? 1 : ( (n == "
"2) ? 2 : ( (n%100 >= 3 && n%100 <= 10) ? 3 : ( (n%100 >= 11 && n%100 <= "
"99) ? 4 : 5 ) ) ) );\n"

#. TRANS: Title for identity verification page.
msgid "OpenID Identity Verification"
msgstr "التحقق من الهوية المفتوحة"

#. TRANS: Client error when visiting page directly.
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr "يجب الوصول إلى هذه الصفحة أثناء معالجة الهوية المفتوحة وليس مباشرة."

#. TRANS: Page notice. %s is a trustroot name.
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity "
"and login without creating a new password."
msgstr ""
"طلب %s التحقق من هويتك. انقر استمر لتؤكد هويتك وتدخل دون إنشاء كلمة سر جديدة."

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID authentication first.
msgctxt "BUTTON"
msgid "Continue"
msgstr "استمر"

#. TRANS: Button text to cancel OpenID identity verification.
msgctxt "BUTTON"
msgid "Cancel"
msgstr "ألغِ"

#. TRANS: Client exception thrown when an action is not available.
msgid "Unavailable action."
msgstr ""

#. TRANS: Tooltip for main menu option "Login"
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr "لُج إلى الموقع."

#. TRANS: Main menu option when not logged in to log in
msgctxt "MENU"
msgid "Login"
msgstr "لُج"

#. TRANS: Tooltip for main menu option "Help"
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr "ساعدني!"

#. TRANS: Main menu option for help on the StatusNet site
msgctxt "MENU"
msgid "Help"
msgstr "مساعدة"

#. TRANS: Tooltip for main menu option "Search"
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr "ابحث عن أشخاص أو نصوص."

#. TRANS: Main menu option when logged in or when the StatusNet instance is not private
msgctxt "MENU"
msgid "Search"
msgstr "بحث"

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
msgctxt "MENU"
msgid "OpenID"
msgstr "هوية مفتوحة"

#. TRANS: OpenID plugin tooltip for logon menu item.
msgid "Login or register with OpenID."
msgstr "لُج أو سجّل بهوية مفتوحة."

#. TRANS: OpenID plugin tooltip for user settings menu item.
msgid "Add or remove OpenIDs."
msgstr "أضف أو احذف هويات مفتوحة."

#. TRANS: Page notice for logged in users to try and get them to add an OpenID account to their StatusNet account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? [Add an OpenID to your account](%%"
"action.openidsettings%%)!"
msgstr ""
"(ألديك [هوية مفتوحة](http://openid.net/)؟ [أضف هوية مفتوحة إلى حسابك](%%"
"action.openidsettings%%)!"

#. TRANS: Page notice for anonymous users to try and get them to register with an OpenID account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID registration](%%"
"action.openidlogin%%)!)"
msgstr ""
"(ألديك [هوية مفتوحة](http://openid.net/)؟ جرب [التسجيل بالهوية المفتوحة](%%"
"action.openidlogin%%)!)"

#. TRANS: Page notice on the login page to try and get them to log on with an OpenID account.
#. TRANS: This message contains Markdown links in the form (description)[link].
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID login](%%action."
"openidlogin%%)!)"
msgstr ""
"(ألديك [هوية مفتوحة](http://openid.net/)؟ جرب [الولوج بالهوية المفتوحة](%%"
"action.openidlogin%%)!)"

#. TRANS: Tooltip for OpenID configuration menu item.
msgid "OpenID configuration."
msgstr "ضبط الهوية المفتوحة."

#. TRANS: Plugin description.
msgid "Use OpenID to login to the site."
msgstr "استخدام هوية مفتوحة للدخول للموقع."

#. TRANS: OpenID plugin logon form legend.
msgctxt "LEGEND"
msgid "OpenID login"
msgstr "ولوج الهوية المفتوحة"

#. TRANS: Field label.
msgid "OpenID provider"
msgstr "مزود هوية مفتوحة"

#. TRANS: Form guide.
msgid "Enter your username."
msgstr "أدخل اسم مستخدمك."

#. TRANS: Form guide.
msgid "You will be sent to the provider's site for authentication."
msgstr "سوف تُرسل إلى موقع المزود من أجل الاستيثاق."

#. TRANS: OpenID plugin logon form field label.
#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
msgid "OpenID URL"
msgstr "مسار الهوية المفتوحة"

#. TRANS: OpenID plugin logon form field instructions.
#. TRANS: OpenID plugin logon form field title.
msgid "Your OpenID URL."
msgstr "مسار هويتك المفتوحة."

#. TRANS: Client error message trying to log on with OpenID while already logged on.
msgid "Already logged in."
msgstr "داخل فعلا."

#. TRANS: Message given when there is a problem with the user's session token.
#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given if user does not agree with the site's license.
msgid "You cannot register if you do not agree to the license."
msgstr "لا يمكن أن تسجل ما لم توافق على الرخصة."

#. TRANS: Messag given on an unknown error.
msgid "An unknown error has occured."
msgstr "حدث خطأ غير معروف."

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr "إعداد حساب هوية مفتوحة"

#. TRANS: Fieldset legend.
msgid "Create new account"
msgstr "أنشئ حسابًا جديدًا"

#. TRANS: Form guide.
msgid "Create a new user with this nickname."
msgstr "أنشئ مستخدمًا جديدًا بهذا الاسم المستعار."

#. TRANS: Field label.
msgid "New nickname"
msgstr "الاسم المستعار الجديد"

#. TRANS: Field title.
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr "1-64 حرفًا إنجليزيًا أو رقمًا، بدون نقاط أو مسافات."

#. TRANS: Field label.
msgid "Email"
msgstr "البريد الإلكتروني"

#. TRANS: Field title.
msgid "Used only for updates, announcements, and password recovery."
msgstr "لا يُستخدم إلا للإبلاغ عن المستجدات والتعميمات ولاستعادة كلمة السر."

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#, php-format
msgid ""
"My text and files are available under %s except this private data: password, "
"email address, IM address, and phone number."
msgstr ""
"تخضع نصوصي وملفاتي ل%s إلا البيانات الخاصة التالية: كلمة السر وعنوان البريد "
"الإلكتروني وعنوان المراسلة الفورية ورقم الهاتف."

#. TRANS: Button label in form in which to create a new user on the site for an OpenID.
msgctxt "BUTTON"
msgid "Create"
msgstr "أنشئ"

#. TRANS: Used as form legend for form in which to connect an OpenID to an existing user on the site.
msgid "Connect existing account"
msgstr "اربط الحساب الموجود"

#. TRANS: User instructions for form in which to connect an OpenID to an existing user on the site.
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""
"إذا كان لديك حساب فعلا، لج باسم مستخدمك وكلمة سرك لتربطه بهويتك المفتوحة."

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
msgid "Existing nickname"
msgstr "الاسم المستعار الموجود"

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
msgid "Password"
msgstr "كلمة السر"

#. TRANS: Button text in form in which to connect an OpenID to an existing user on the site.
msgctxt "BUTTON"
msgid "Connect"
msgstr "اربط"

#. TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled.
msgid "OpenID authentication cancelled."
msgstr "ألغي استيثاق الهوية المفتوحة"

#. TRANS: OpenID authentication failed; display the error message. %s is the error message.
#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#, php-format
msgid "OpenID authentication failed: %s."
msgstr "فشل استيثاق الهوية المفتوحة: %s."

#. TRANS: Message displayed when OpenID authentication is aborted.
#. TRANS: OpenID authentication error.
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr "أجهض استيثاق الهوية المفتوحة: لا يسمح لك بدخول هذا الموقع."

#. TRANS: OpenID plugin message. No new user registration is allowed on the site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided.
msgid "Registration not allowed."
msgstr "لا يسمح بالتسجيل."

#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid.
msgid "Not a valid invitation code."
msgstr "رمز الدعوة غير صالح."

#. TRANS: OpenID plugin message. The entered new user name is blacklisted.
msgid "Nickname not allowed."
msgstr "لا يسمح بهذا الاسم المستعار."

#. TRANS: OpenID plugin message. The entered new user name is already used.
msgid "Nickname already in use. Try another one."
msgstr "الاسم المستعار مستخدم بالفعل. جرّب اسمًا آخرًا."

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
msgid "Stored OpenID not found."
msgstr "لم يُعثر على الهوية المفتوحة المخزنة."

#. TRANS: OpenID plugin server error.
msgid "Creating new account for OpenID that already has a user."
msgstr "إنشاء حساب جديد لهوية مفتوحة يملكها أحد المستخدمين بالفعل."

#. TRANS: OpenID plugin message.
msgid "Invalid username or password."
msgstr "اسم مستخدم أو كلمة سر غير صالحة."

#. TRANS: OpenID plugin server error. The user or user profile could not be saved.
msgid "Error connecting user to OpenID."
msgstr "خطأ في ربط المستخدم بالهوية المفتوحة."

#. TRANS: OpenID plugin server error.
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
msgid "Not a valid OpenID."
msgstr "ليست هوية مفتوحة صحيحة."

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request fails.
#. TRANS: %s is the failure message.
#, php-format
msgid "OpenID failure: %s."
msgstr "فشلت الهوية المفتوحة: %s."

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected.
#. TRANS: %s is the failure message.
#, php-format
msgid "Could not redirect to server: %s."
msgstr "تعذر التحويل للخادوم: %s."

#. TRANS: OpenID plugin user instructions.
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""
"يفترض أن يُرسِل هذا النموذج نفسه تلقائيًا. إذا لم يحدث ذلك فانقر زر أرسل لتذهب "
"إلى مزود هويتك المفتوحة."

#. TRANS: OpenID plugin server error.
msgid "Error saving the profile."
msgstr "خطأ أثناء حفظ الملف."

#. TRANS: OpenID plugin server error.
msgid "Error saving the user."
msgstr "خطأ في حفظ المستخدم."

#. TRANS: OpenID plugin client exception (403).
msgid "Unauthorized URL used for OpenID login."
msgstr "أُستخدِم مسار غير مصرح به للولوج بالهوية المفتوحة."

#. TRANS: Title
msgid "OpenID Login Submission"
msgstr "إرسال ولوج الهوية المفتوحة"

#. TRANS: OpenID plugin message used while requesting authorization user's OpenID login provider.
msgid "Requesting authorization from your login provider..."
msgstr "طلب التصريح من مزود الولوج..."

#. TRANS: OpenID plugin message. User instruction while requesting authorization user's OpenID login provider.
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr "إذا لم تُحوّل إلى مزود الولوج خلال ثوانٍ قليلة، حاول نقر الزر أدناه."

#. TRANS: Title for OpenID bridge administration page.
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr "إعدادات الهوية المفتوحة"

#. TRANS: Page instructions.
msgid "OpenID settings"
msgstr "إعدادات الهوية المفتوحة"

#. TRANS: Client error displayed when OpenID provider URL is too long.
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr "مسار المزود غير صالح. أقصى طول 255 حرف."

#. TRANS: Client error displayed when Launchpad team name is too long.
msgid "Invalid team name. Maximum length is 255 characters."
msgstr "اسم فريق غير صالح. أقصى طول 255 حرف."

#. TRANS: Fieldset legend.
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr "مزود موثوق"

#. TRANS: Form guide.
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
msgid "Provider URL"
msgstr "مسار المزود"

#. TRANS: Field title.
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
msgid "Required team"
msgstr ""

#. TRANS: Field title.
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
msgctxt "LEGEND"
msgid "Options"
msgstr "خيارات"

#. TRANS: Checkbox label.
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button text to save OpenID settings.
msgctxt "BUTTON"
msgid "Save"
msgstr "احفظ"

#. TRANS: Button title to save OpenID settings.
msgid "Save OpenID settings."
msgstr "إعدادات الهوية المفتوحة."

#. TRANS: Error message displayed when trying to perform an action that requires a logged in user.
msgid "Not logged in."
msgstr "لست والجًا."

#. TRANS: Message in case a user tries to add an OpenID that is already connected to them.
msgid "You already have this OpenID!"
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already used by another user.
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in StatusNet.
msgid "Error updating profile."
msgstr "خطأ أثناء تحديث الملف الشخصي."

#. TRANS: Title after getting the status of the OpenID authorisation request.
msgid "OpenID Login"
msgstr "ولوج الهوية المفتوحة"

#. TRANS: Title of OpenID settings page for a user.
msgctxt "TITLE"
msgid "OpenID settings"
msgstr "إعدادات الهوية المفتوحة"

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form [description](link).
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""
"تمكنك [الهوية المفتوحة](%%doc.openid%%) من الولوج إلى مواقع كثيرة بنفس حساب "
"المستخدم. أدر هوياتك المفتوحة هنا."

#. TRANS: Fieldset legend.
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr "إضافة هوية مفتوحة"

#. TRANS: Form guide.
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""
"إذا أردت إضافة هوية مفتوحة إلى حسابك، أدخلها إلى الصندوق أدناه وانقر \"أضف\"."

#. TRANS: Button text for adding an OpenID URL.
msgctxt "BUTTON"
msgid "Add"
msgstr "أضف"

#. TRANS: Header on OpenID settings page.
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr "إزالة هوية مفتوحة"

#. TRANS: Form guide.
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to "
"remove it, add another OpenID first."
msgstr ""
"إن حذف هويتك المفتوحة الوحيدة سيجعل من المستحيل الولوج! إذا أردت إضافة هذه "
"فأضف هوية مفتوحة أخرى أولا."

#. TRANS: Form guide.
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr "يمكنك إزالة هوية مفتوحة من حسابك بنفر الزر المُعلّم \"أزل\"."

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
msgctxt "BUTTON"
msgid "Remove"
msgstr "أزل"

#. TRANS: Fieldset legend.
msgid "OpenID Trusted Sites"
msgstr "مواقع الهوية المفتوحة الموثوقة"

#. TRANS: Form guide.
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""
"يسمح للمواقع التالية بالوصول إلى هويتك والولوج بها. يمكنك إزالة موقع من "
"القائمة لمنعه من الوصول إلى هويتك المفتوحة."

#. TRANS: Form validation error if no OpenID providers can be added.
msgid "Cannot add new providers."
msgstr "تعذرت إضافة مزودين جدد."

#. TRANS: Unexpected form validation error.
msgid "Something weird happened."
msgstr "حدث شيء غريب."

#. TRANS: Form validation error when trying to remove a non-existing trustroot.
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
msgid "No such OpenID."
msgstr "الهوية المفتوحة المقصودة غير موجودة."

#. TRANS: Form validation error if OpenID is connected to another user.
msgid "That OpenID does not belong to you."
msgstr "تلك الهوية المفتوحة ليست لك."

#. TRANS: Success message after removing an OpenID.
msgid "OpenID removed."
msgstr "أزيلت الهوية المفتوحة."

#. TRANS: OpenID plugin client error given trying to add an unauthorised OpenID to a user (403).
#. TRANS: %s is a request identity.
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr "ليس مصرحًا لك باستخدام الهوية %s."

#. TRANS: OpenID plugin client error given when not getting a response for a given OpenID provider (500).
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr "مزود هوية مفتوحة لا أكثر. لا شيء يمكن أن تراه هنا، واصل..."

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""
"لأسباب أمنية، الرجاء إعادة الولوج ب[هويتك المفتوحة](%%doc.openid%%) قبل "
"تغيير إعداداتك."

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr "لُج بحساب [هوية مفتوحة](%%doc.openid%%)"

#. TRANS: OpenID plugin message. Title.
msgctxt "TITLE"
msgid "OpenID Login"
msgstr "ولوج الهوية المفتوحة"

#. TRANS: Field label.
msgctxt "LABEL"
msgid "OpenID provider"
msgstr "مزود الهوية المفتوحة"

#. TRANS: OpenID plugin logon form checkbox label for setting to put the OpenID information in a cookie.
msgid "Remember me"
msgstr "تذكرني"

#. TRANS: OpenID plugin logon form field title.
msgid "Automatically login in the future; not for shared computers!"
msgstr "لُج تلقائيًا في المستقبل؛ هذا الخيار ليس مُعدًا للحواسيب المشتركة!"

#. TRANS: OpenID plugin logon form button label to start logon with the data provided in the logon form.
msgctxt "BUTTON"
msgid "Login"
msgstr "لُج"


code:
# Translation of StatusNet - OpenID to Breton (Brezhoneg)
# Exported from translatewiki.net
#
# Author: Y-M D
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - OpenID\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-05 20:48+0000\n"
"PO-Revision-Date: 2011-05-05 20:50:26+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-04-27 13:28:47+0000\n"
"X-Generator: MediaWiki 1.18alpha (r87509); Translate extension (2011-04-26)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-openid\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Title for identity verification page.
msgid "OpenID Identity Verification"
msgstr ""

#. TRANS: Client error when visiting page directly.
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr ""

#. TRANS: Page notice. %s is a trustroot name.
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity "
"and login without creating a new password."
msgstr ""

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID authentication first.
msgctxt "BUTTON"
msgid "Continue"
msgstr "Kenderc'hel"

#. TRANS: Button text to cancel OpenID identity verification.
#, fuzzy
msgctxt "BUTTON"
msgid "Cancel"
msgstr "Nullañ"

#. TRANS: Tooltip for main menu option "Login"
#, fuzzy
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr "Kevreañ d'al lec'hienn"

#. TRANS: Main menu option when not logged in to log in
msgctxt "MENU"
msgid "Login"
msgstr "Kevreañ"

#. TRANS: Tooltip for main menu option "Help"
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr "Sikour din !"

#. TRANS: Main menu option for help on the StatusNet site
msgctxt "MENU"
msgid "Help"
msgstr "Skoazell"

#. TRANS: Tooltip for main menu option "Search"
#, fuzzy
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr "Klask tud pe un tamm testenn"

#. TRANS: Main menu option when logged in or when the StatusNet instance is not private
msgctxt "MENU"
msgid "Search"
msgstr "Klask"

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
msgctxt "MENU"
msgid "OpenID"
msgstr "OpenID"

#. TRANS: OpenID plugin tooltip for logon menu item.
msgid "Login or register with OpenID."
msgstr ""

#. TRANS: OpenID plugin tooltip for user settings menu item.
#, fuzzy
msgid "Add or remove OpenIDs."
msgstr "Dilemel OpenID"

#. TRANS: Item on help page. This message contains Markdown links in the form [description](link).
#, php-format
msgid ""
"* [OpenID](%%doc.openid%%) - What OpenID is and how to use it with this "
"service."
msgstr ""

#. TRANS: Tooltip for OpenID configuration menu item.
#, fuzzy
msgid "OpenID configuration."
msgstr "Kefluniadur OpenID"

#. TRANS: Plugin description.
msgid "Use OpenID to login to the site."
msgstr ""

#. TRANS: OpenID plugin logon form legend.
#, fuzzy
msgctxt "LEGEND"
msgid "OpenID login"
msgstr "Kefluniadur OpenID"

#. TRANS: Field label.
msgid "OpenID provider"
msgstr ""

#. TRANS: Form guide.
msgid "Enter your username."
msgstr "Ebarzhit hoc'h anv implijer"

#. TRANS: Form guide.
msgid "You will be sent to the provider's site for authentication."
msgstr ""

#. TRANS: OpenID plugin logon form field label.
#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
msgid "OpenID URL"
msgstr "URL OpenID"

#. TRANS: OpenID plugin logon form field instructions.
#. TRANS: OpenID plugin logon form field title.
#, fuzzy
msgid "Your OpenID URL."
msgstr "URL OpenID"

#. TRANS: Client error message trying to log on with OpenID while already logged on.
msgid "Already logged in."
msgstr "Kevreet oc'h dija."

#. TRANS: Message given when there is a problem with the user's session token.
#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given if user does not agree with the site's license.
#, fuzzy
msgid "You cannot register if you do not agree to the license."
msgstr ""
"Rankout a rit bezañ a-du gant termenoù an aotre-implijout evit krouiñ ur "
"gont."

#. TRANS: Messag given on an unknown error.
msgid "An unknown error has occured."
msgstr "Ur gudenn dizanv a zo bet."

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr ""

#. TRANS: Fieldset legend.
msgid "Create new account"
msgstr "Krouiñ ur gont nevez"

#. TRANS: Form guide.
msgid "Create a new user with this nickname."
msgstr "Krouiñ un implijer nevez gant al lesanv-se."

#. TRANS: Field label.
msgid "New nickname"
msgstr "Lesanv nevez"

#. TRANS: Field title.
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr ""

#. TRANS: Field label.
msgid "Email"
msgstr ""

#. TRANS: Field title.
msgid "Used only for updates, announcements, and password recovery."
msgstr ""

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#, php-format
msgid ""
"My text and files are available under %s except this private data: password, "
"email address, IM address, and phone number."
msgstr ""

#. TRANS: Button label in form in which to create a new user on the site for an OpenID.
msgctxt "BUTTON"
msgid "Create"
msgstr "Krouiñ"

#. TRANS: Used as form legend for form in which to connect an OpenID to an existing user on the site.
msgid "Connect existing account"
msgstr ""

#. TRANS: User instructions for form in which to connect an OpenID to an existing user on the site.
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
msgid "Existing nickname"
msgstr "Lesanv a zo dioutañ"

#. TRANS: Field label in form in which to connect an OpenID to an existing user on the site.
msgid "Password"
msgstr "Ger-tremen"

#. TRANS: Button text in form in which to connect an OpenID to an existing user on the site.
msgctxt "BUTTON"
msgid "Connect"
msgstr "Kevreañ"

#. TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled.
msgid "OpenID authentication cancelled."
msgstr ""

#. TRANS: OpenID authentication failed; display the error message. %s is the error message.
#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#, php-format
msgid "OpenID authentication failed: %s."
msgstr ""

#. TRANS: Message displayed when OpenID authentication is aborted.
#. TRANS: OpenID authentication error.
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided.
msgid "Registration not allowed."
msgstr "N'eo ket aotreet krouiñ kontoù."

#. TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid.
msgid "Not a valid invitation code."
msgstr "N'eo ket reizh ar c'hod pedadenn."

#. TRANS: OpenID plugin message. The entered new user name is blacklisted.
msgid "Nickname not allowed."
msgstr "Lesanv nann-aotreet."

#. TRANS: OpenID plugin message. The entered new user name is already used.
msgid "Nickname already in use. Try another one."
msgstr "Implijet eo dija al lesanv-se. Klaskit unan all."

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
msgid "Stored OpenID not found."
msgstr ""

#. TRANS: OpenID plugin server error.
msgid "Creating new account for OpenID that already has a user."
msgstr ""

#. TRANS: OpenID plugin message.
msgid "Invalid username or password."
msgstr ""

#. TRANS: OpenID plugin server error. The user or user profile could not be saved.
msgid "Error connecting user to OpenID."
msgstr ""

#. TRANS: OpenID plugin server error.
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
msgid "Not a valid OpenID."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request fails.
#. TRANS: %s is the failure message.
#, php-format
msgid "OpenID failure: %s."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected.
#. TRANS: %s is the failure message.
#, php-format
msgid "Could not redirect to server: %s."
msgstr ""

#. TRANS: OpenID plugin user instructions.
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""

#. TRANS: OpenID plugin server error.
msgid "Error saving the profile."
msgstr "Ur fazi 'zo bet pa veze enrollet ar profil."

#. TRANS: OpenID plugin server error.
msgid "Error saving the user."
msgstr "Ur fazi 'zo bet pa veze enrollet an implijer."

#. TRANS: OpenID plugin client exception (403).
msgid "Unauthorized URL used for OpenID login."
msgstr ""

#. TRANS: Title
msgid "OpenID Login Submission"
msgstr ""

#. TRANS: OpenID plugin message used while requesting authorization user's OpenID login provider.
msgid "Requesting authorization from your login provider..."
msgstr ""

#. TRANS: OpenID plugin message. User instruction while requesting authorization user's OpenID login provider.
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr ""

#. TRANS: Title for OpenID bridge administration page.
#, fuzzy
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr "Arventenn OpenID"

#. TRANS: Page instructions.
msgid "OpenID settings"
msgstr "Arventenn OpenID"

#. TRANS: Client error displayed when OpenID provider URL is too long.
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr ""

#. TRANS: Client error displayed when Launchpad team name is too long.
msgid "Invalid team name. Maximum length is 255 characters."
msgstr ""

#. TRANS: Fieldset legend.
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr ""

#. TRANS: Form guide.
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
msgid "Provider URL"
msgstr ""

#. TRANS: Field title.
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
msgid "Required team"
msgstr "Skipailh ret"

#. TRANS: Field title.
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
#, fuzzy
msgctxt "LEGEND"
msgid "Options"
msgstr "Dibarzhioù"

#. TRANS: Checkbox label.
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button text to save OpenID settings.
msgctxt "BUTTON"
msgid "Save"
msgstr ""

#. TRANS: Button title to save OpenID settings.
#, fuzzy
msgid "Save OpenID settings."
msgstr "Arventenn OpenID"

#. TRANS: Error message displayed when trying to perform an action that requires a logged in user.
msgid "Not logged in."
msgstr "Nann-kevreet."

#. TRANS: Message in case a user tries to add an OpenID that is already connected to them.
msgid "You already have this OpenID!"
msgstr "Kevreet oc'h dija gant an OpenID-se !"

#. TRANS: Message in case a user tries to add an OpenID that is already used by another user.
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in StatusNet.
#, fuzzy
msgid "Error updating profile."
msgstr "Ur fazi 'zo bet pa veze enrollet ar profil."

#. TRANS: Title after getting the status of the OpenID authorisation request.
msgid "OpenID Login"
msgstr ""

#. TRANS: Title of OpenID settings page for a user.
#, fuzzy
msgctxt "TITLE"
msgid "OpenID settings"
msgstr "Arventenn OpenID"

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form [description](link).
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""

#. TRANS: Fieldset legend.
#, fuzzy
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr "Ouzhpennañ OpenID"

#. TRANS: Form guide.
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""

#. TRANS: Button text for adding an OpenID URL.
#, fuzzy
msgctxt "BUTTON"
msgid "Add"
msgstr "Ouzhpennañ"

#. TRANS: Header on OpenID settings page.
#, fuzzy
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr "Dilemel OpenID"

#. TRANS: Form guide.
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to "
"remove it, add another OpenID first."
msgstr ""

#. TRANS: Form guide.
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr ""

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
#, fuzzy
msgctxt "BUTTON"
msgid "Remove"
msgstr "Dilemel"

#. TRANS: Fieldset legend.
msgid "OpenID Trusted Sites"
msgstr ""

#. TRANS: Form guide.
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""

#. TRANS: Form validation error if no OpenID providers can be added.
#, fuzzy
msgid "Cannot add new providers."
msgstr "Dibosupl eo ouzhpennañ pourvezerien nevez."

#. TRANS: Unexpected form validation error.
msgid "Something weird happened."
msgstr ""

#. TRANS: Form validation error when trying to remove a non-existing trustroot.
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
msgid "No such OpenID."
msgstr "N'eus ket eus ar gont OpenID."

#. TRANS: Form validation error if OpenID is connected to another user.
msgid "That OpenID does not belong to you."
msgstr ""

#. TRANS: Success message after removing an OpenID.
msgid "OpenID removed."
msgstr "Kont OpenID dilamet."

#. TRANS: OpenID plugin client error given trying to add an unauthorised OpenID to a user (403).
#. TRANS: %s is a request identity.
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr ""

#. TRANS: OpenID plugin client error given when not getting a response for a given OpenID provider (500).
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr ""

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr "Kevreañ gant ur gont [OpenID](%%doc.openid%%)."

#. TRANS: OpenID plugin message. Title.
#, fuzzy
msgctxt "TITLE"
msgid "OpenID Login"
msgstr "URL OpenID"

#, fuzzy
msgctxt "LABEL"
msgid "OpenID provider"
msgstr "Kont OpenID dilamet."

#. TRANS: OpenID plugin logon form checkbox label for setting to put the OpenID information in a cookie.
msgid "Remember me"
msgstr "Derc'hel soñj ac'hanon"

#. TRANS: OpenID plugin logon form field title.
msgid "Automatically login in the future; not for shared computers!"
msgstr ""

#. TRANS: OpenID plugin logon form button label to start logon with the data provided in the logon form.
msgctxt "BUTTON"
msgid "Login"
msgstr "Kevreañ"

#~ msgid "Continue"
#~ msgstr "Kenderc'hel"

#~ msgid "OpenID"
#~ msgstr "OpenID"