summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarPerfil.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarPerfil.php')
-rw-r--r--bin/wiki/ImportarPerfil.php149
1 files changed, 149 insertions, 0 deletions
diff --git a/bin/wiki/ImportarPerfil.php b/bin/wiki/ImportarPerfil.php
new file mode 100644
index 00000000..60a6f20d
--- /dev/null
+++ b/bin/wiki/ImportarPerfil.php
@@ -0,0 +1,149 @@
+<?php
+# ----
+# Copyright (C) 2013-2020 - Reevo Project (http://reevo.org)
+# License: Affero GPL version 3 - http://www.gnu.org/licenses/agpl.html
+# ES: Este script importa los datos de usuario desde el perfil de Elgg hacia la paginade usuario en MW
+# ----
+
+
+error_reporting(0);
+// Load all the stuff
+require_once( __DIR__ . '/vendor/autoload.php' );
+require_once( __DIR__ .'/../../etc/global_config.php' );
+
+// Log in to a wiki
+$api = new \Mediawiki\Api\MediawikiApi( 'http://'. $REEVO_URL .'/api.php' );
+$api->login( new \Mediawiki\Api\ApiUser( $REEVO_WIKI_API_USER, $REEVO_WIKI_API_PASS ) );
+$services = new \Mediawiki\Api\MediawikiFactory( $api );
+
+// ImportarPerfil.php -u <username> -e <email> -f <true>
+
+$shortopts = "";
+$shortopts .= "u:"; // usuario
+$shortopts .= "e:"; // email
+$shortopts .= "f:"; // forzar creacion
+$shortopts .= "n:"; // es nuevo
+
+$options = getopt($shortopts);
+
+if ($options['u']) {
+ $username = $options['u'];
+ $email = $options['e'];
+ $force = $options['f'];
+ $new = $options['n'];
+ echo "NEW es $new";
+ if ($email) {
+ // Verifico si existe un usuario con el email indicado, entonces lo cargo
+ $byEmail = exec('cd /srv/reevo-web/www/red/vendor/hypejunction/elgg-cli && ./elgg-cli user:get --email '.$email);
+ // error_log($byEmail);
+ if ($byEmail) {
+ error_log('Voy a crearlo por email');
+ CrearPerfil($username, $byEmail, $services);
+ exit();
+ }
+ }
+
+ $byUsername = exec('cd /srv/reevo-web/www/red/vendor/hypejunction/elgg-cli && ./elgg-cli user:get --username '.$username);
+ if ($byUsername) {
+ if ($force == 'true') {
+ error_log('Voy a importar los datos porque estoy forzado');
+ CrearPerfil($username, $byUsername, $services);
+ $services->newPageDeleter()->delete(
+ $services->newPageGetter()->getFromTitle( 'Usuario:'.$username.'/ImportarPerfil' ),
+ array( 'reason' => 'Ya se importaron los datos del perfil anterior' )
+ );
+ exit();
+ } else {
+ error_log('Voy a crear la subpagina de username');
+ CrearSubImportarPerfil($username, $services);
+ if ($new == 'true') {
+ CrearPerfilLimpio($username, $services);
+ error_log("No existe un usuario llamado '$username' en la versión anterior de REEVO. Pero es nuevo, asi que creo una pagina de usuario vacia.\n");
+ }
+ // exit();
+ }
+ } else {
+ if ($new == 'true') {
+ CrearPerfilLimpio($username, $services);
+ error_log("No existe un usuario llamado '$username' en la versión anterior de REEVO. Pero es nuevo, asi que creo una pagina de usuario vacia.\n");
+ } else {
+ error_log("No existe un usuario llamado '$username' en la versión anterior de REEVO. No hago nada.\n");
+ }
+ }
+} else {
+ error_log('ERROR. Forma correcta: ImportarPerfil.php -u <username> -e <email> -f <true>');
+ exit();
+}
+
+// $page = $services->newPageGetter()->getFromTitle( 'Usuario:'.$username );
+// $pagecontent = $page->getRevisions()->getLatest();
+// if ($pagecontent && $force != 'true') {
+// echo "El usuario ya tiene página de usuario '$username', no se va a importar\n";
+// return;
+// }
+
+function CrearPerfil($username, $profiledata,$services) {
+ $userdata = json_decode($profiledata, true);
+
+ if (strpos($userdata['icon'], 'defaultmaster') == false) {
+ $partes = explode('/',$userdata['icon']);
+ $icon = $partes[9].'/'.$partes[10].'/'.$partes[11].'/'.$partes[12];
+ // Definimos el nombre del archivo de la imagen
+ $snapshot_name = 'Avatar-' . $username . '.jpg';
+ $snaphot_pagecontent = 'Imagen de usuario migrada desde la plataforma web';
+ $snaphot_desc = 'Imagen de usuario migrada desde la plataforma web';
+ $fileUploader = $services->newFileUploader();
+ $fileUploader->setChunkSize( 1024 * 1024 * 10 );
+ $fileUploader->upload( $snapshot_name, '/srv/reevo-web/files/red/'.$icon, $snaphot_pagecontent, $snaphot_desc );
+ }
+
+ $content = '{{Usuario
+|usuario:nombre='.$userdata['name'].'
+|usuario:descripcion='.$userdata['briefdescription'].'
+|usuario:web='.$userdata['website'].'
+|usuario:avatar='.$snapshot_name.'
+}}
+
+'.strip_tags($userdata['description'], '<p>').'
+
+[[Categoría:Usuario migrado]]';
+
+ $newContent = new \Mediawiki\DataModel\Content( $content );
+ $title = new \Mediawiki\DataModel\Title( 'Usuario:' . $username );
+ $identifier = new \Mediawiki\DataModel\PageIdentifier( $title );
+ $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier );
+ $services->newRevisionSaver()->save( $revision );
+ error_log("#### Se han importado los datos del usuario $username\n");
+}
+
+
+function CrearSubImportarPerfil($username,$services) {
+ $content = '{{Sistema-ImportarPerfil}}';
+ $newContent = new \Mediawiki\DataModel\Content( $content );
+ $title = new \Mediawiki\DataModel\Title( 'Usuario:' . $username . '/ImportarPerfil' );
+ $identifier = new \Mediawiki\DataModel\PageIdentifier( $title );
+ $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier );
+ $services->newRevisionSaver()->save( $revision );
+ error_log("#### Se creo la pagina Usuario:$username/ImportarPerfil\n");
+}
+
+function CrearPerfilLimpio($username,$services) {
+ $content = '{{Usuario}}';
+ $newContent = new \Mediawiki\DataModel\Content( $content );
+ $title = new \Mediawiki\DataModel\Title( 'Usuario:' . $username );
+ $identifier = new \Mediawiki\DataModel\PageIdentifier( $title );
+ $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier );
+ $services->newRevisionSaver()->save( $revision );
+ error_log("#### Se creo el perfil limpio Usuario:$username\n");
+}
+
+function accessProtected($obj, $prop) {
+ $reflection = new ReflectionClass($obj);
+ $property = $reflection->getProperty($prop);
+ $property->setAccessible(true);
+ return $property->getValue($obj);
+}
+
+
+
+?>