diff options
Diffstat (limited to 'bin/wiki/ImportarPerfil.php')
-rw-r--r-- | bin/wiki/ImportarPerfil.php | 149 |
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); +} + + + +?> |