Cómo crear un usuario en GlotPress

GlotPress es un herramienta web open-source de traducción desarrollada por WordPress.

Por defecto no incorpora ninguna gestión de usuarios. Solo se crea un usuario durante la instalación y es el administrador. Si tienes un blog con WordPress, no debería ser un problema ya que puedes usar los mismos usuarios del blog simplemente definiendo en el fichero gp-config.php de que tablas quieres que coja los datos:

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

Hay que tener en cuenta que las tablas de GlotPress y WordPress tienen que estar en la misma base de datos. Si no quieres instalar WordPress para añadir nuevos usuarios, puedes usar el siguiente script:

<?php
    require_once dirname( dirname( __FILE__ ) ) . '/gp-load.php';

    class GP_Script_Add_User extends GP_CLI {

        var $short_options = 'u:e:p:';

        var $usage = "-u <username> -e <e-mail> [-p <password>]";

        function run() {
            if ( !isset( $this->options['u'] ) || !isset( $this->options['e'] ) ) {
                $this->usage();
            }

            $user_by_login = GP::$user->by_login( $this->options['u'] );
            if ( $user_by_login ) {
                $this->to_stderr( sprintf("User '%s' already exists.", $this->options['u']) );
                exit( 1 );
            }

            $user_by_email = GP::$user->by_email( $this->options['e'] );
            if ( $user_by_email ) {
                $this->to_stderr( sprintf("Email '%s' already exists.", $this->options['e']) );
                exit( 2 );
            }

            $args = array();
            $args['user_login'] = $this->options['u'] ;
            $args['user_nicename'] = $this->options['u'] ;
            $args['display_name'] = $this->options['u'] ;
            $args['user_email'] = $this->options['e'] ;
            if( isset( $this->options['p']) ) {
                $args['user_pass'] = $this->options['p'] ;
            }

            $user = GP::$user->create( $args ) ;
            if( !$user ) {
                $this->to_stderr( sprintf("User '%s' hasn't been added.", $this->options['u']) );
                exit( 3 );
            }

            $this->to_stderr( "New user has been added:" );
            $this->to_stderr( sprintf(" - user: %s", $user->user_login) );
            $this->to_stderr( sprintf(" - e-mail: %s", $user->user_email) );
            $this->to_stderr( sprintf(" - pass: %s", $user->plain_pass) );
        }
    }

    $gp_script_add_user = new GP_Script_Add_User;
    $gp_script_add_user->run();
?>

Este fichero va en la carpeta de scripts de GlotPress. En mi caso lo he llamado add-user.php:

php scripts/add-user.php -u <username> -e <e-mail> [-p <password>]

El parámetro password es opcional, en caso de no ponerlo generará uno aleatorio:

$> php scripts/add-user.php -u glotpress -e glotpress@juanramon.me
New user has been added:
- user: glotpress
- e-mail: glotpress@juanramon.me
- pass: 1Owg6XO3x@xp