diff options
Diffstat (limited to 'bin/wiki/ImportarPerfil/ImportarPerfil.php')
-rw-r--r-- | bin/wiki/ImportarPerfil/ImportarPerfil.php | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/bin/wiki/ImportarPerfil/ImportarPerfil.php b/bin/wiki/ImportarPerfil/ImportarPerfil.php new file mode 100644 index 00000000..4e5681d8 --- /dev/null +++ b/bin/wiki/ImportarPerfil/ImportarPerfil.php @@ -0,0 +1,157 @@ +<?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(-1); +// 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( $wgServer .'/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"; + + $strJsonFileContents = file_get_contents("/srv/reevo-2020/bin/wiki/ImportarPerfil/export-elgg-usuarios.json"); + $fullarray = json_decode($strJsonFileContents, true); + // print_r($fullarray); // print array + + if ($email) { + // Verifico si existe un usuario con el email indicado, entonces lo cargo + $byEmail = array_search($email, array_column($fullarray, 'email')); + // $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'); + $datos = $fullarray[$byEmail]; + CrearPerfil($username, $datos, $services); + exit(); + } + } + + $byUsername = array_search(strtolower($username), array_map('strtolower', array_column($fullarray, 'username'))); + if ($byUsername) { + if ($force == 'true') { + error_log('Voy a importar los datos porque estoy forzado'); + $datos = $fullarray[$byUsername]; + CrearPerfil($username, $datos, $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("Existe un usuario llamado '$username' en la versión anterior de REEVO. No importo los datos pero le doy la opción para que lo importe.\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) { + // print_r($profiledata); + $userdata = $profiledata; + $icon = exec("find /srv/reevo-web/files/red/ -name {$userdata['guid']}master.jpg"); + if ($icon) { + echo "Imagen de usuario: $icon \n"; + // 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, $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); +} + + + +?> |