login( new \Mediawiki\Api\ApiUser( $REEVO_WIKI_API_USER, $REEVO_WIKI_API_PASS ) ); $services = new \Mediawiki\Api\MediawikiFactory( $api ); $uid = $_POST['uid']; $titulo = $_POST['titulo']; $strJsonFileContents = file_get_contents("export-mapa.json"); $fullarray = json_decode($strJsonFileContents, true); // print_r($fullarray); // print array $key = array_search((int)$uid, array_column($fullarray, '#')); if ($key) { $array = $fullarray[$key]; $media_urls = array(); $media_videos = array(); $media_images = array(); $file = fopen('export-mapa-media.csv', 'r'); while (($line = fgetcsv($file)) !== FALSE) { //$line is an array of the csv elements if ($line[0] == $uid) { if(filter_var($line[1], FILTER_VALIDATE_URL) !== FALSE){ # si es una URL, lo cargamos en un array de URLs. Diferencia los videos... if (strpos($line[1], 'www.youtube.com') !== false || strpos($line[1], 'youtu.be') !== false || strpos($line[1], 'vimeo.com') !== false) { array_push($media_videos,$line[1]); } else { array_push($media_urls,$line[1]); } } else { # si NO es una URL, lo cargamos en un array de URLs array_push($media_images,$line[1]); } } } fclose($file); $text = ImportarExperiencia($array, $titulo, $uid, $services, $media_urls, $media_images, $media_videos); } function get_title($url){ $doc = new DOMDocument(); @$doc->loadHTMLFile($url); $xpath = new DOMXPath($doc); return $xpath->query('//title')->item(0)->nodeValue; } function ImportarExperiencia($array, $titulo, $id, $services, $media_urls, $media_images, $media_videos) { $content = '{{Experiencia |experiencia:oldid='.$id.' |experiencia:descripcion='.$array["DESCRIPCION"].' '.$array["CATEGORIA"].' |experiencia:contacto-url='.$array["URL"].' |experiencia:contacto-email='.$array["EMAIL"].' |experiencia:contacto-telefono='.$array["TELEFONO"].' |experiencia:lugar='.$array["LATITUD"].', '.$array["LONGITUD"].' |experiencia:lugar-pais= |experiencia:lugar-provincia= |experiencia:lugar-ciudad= |experiencia:lugar-calle='.$array["UBICACION"].' |experiencia:info-inicio='.$array["INICIO"].' |experiencia:info-niveleconomico='.$array["SOCIOECONOMICO"].' |experiencia:info-contextosocial='.$array["CONTEXTO"].' |experiencia:info-participantes='.$array["PARTICIPANTES"].' |experiencia:info-corrientes= |experiencia:info-certificacion='.$array["CERTIFICACION"].' |experiencia:info-tipoeducacion='.$array["TIPO"].' |experiencia:info-niveleducacion='.$array["NIVEL"].' |experiencia:info-lucro='.$array["LUCRO"].' |experiencia:info-virtual='.$array["VIRTUAL"].' }}'; if ($array["CARACTERISTICAS"]) { $content .= " == Características == {$array['CARACTERISTICAS']}"; }; if ($array["HISTORIA"]) { $content .= " == Historia == {$array['HISTORIA']}"; }; if ($array["PRACTICAS"]) { $content .= " == Prácticas o acciones principales == {$array['PRACTICAS']}"; }; if ($array["FUNDAMENTOS"]) { $content .= " == Fundamentos teóricos == {$array['FUNDAMENTOS']}"; }; if ($array["INFORMACIONEXTRA"]) { $content .= " == Información adicional == {$array['INFORMACIONEXTRA']} "; }; if ($media_videos) { $content .= " == Videos == "; foreach ($media_videos as $key => $value) { // $titleurl = get_title($value); $content .= "{{#evu:$value}} \n"; } }; if ($media_urls) { $content .= " == Referencias externas == "; foreach ($media_urls as $key => $value) { $titleurl = get_title($value); $content .= "* [$value $titleurl] \n"; } }; if ($media_images) { $content .= " == Imagenes == "; foreach ($media_images as $key => $value) { echo $value; if ($value != "NULL") { $image = ImportarImagen($value,$titulo,$key,$services); $content .= "$image \n"; } } $content .= ""; }; $content .= " [[Categoría:Experiencia]] [[Categoría:Experiencia migrada]] "; $newContent = new \Mediawiki\DataModel\Content( $content ); $title = new \Mediawiki\DataModel\Title( 'Experiencia:' . $titulo ); $identifier = new \Mediawiki\DataModel\PageIdentifier( $title ); $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier ); $log = $services->newRevisionSaver()->save( $revision ); // print_r($log, FALSE); $lines = file('./procesados.log'); $existe = FALSE; foreach ($lines as $lineNumber => $line) { $exp = explode(',',$line); if ($exp[0] == $id) { $existe = TRUE; $lineNumber = $lineNumber; break; } } if ($existe === FALSE) { # Solo lo agrego al log si antes no estaba $file = 'procesados.log'; $estado = 'si'; $salida = "$id,$titulo,$estado\r\n"; file_put_contents($file, $salida, FILE_APPEND); } else { # Si ya estaba en el log, cambio su estado $fileName = 'procesados.log'; $estado = 'si'; $salida = "$id,$titulo,$estado\r\n"; // Load file into array $contents = file($fileName); // Replace line $contents[$lineNumber] = $salida; // Implode and save file_put_contents($fileName, implode('',$contents)); } $proximo = $id + 1; $html = '

Se importó: '.$titulo.' ('.$id.')


Editar en el wiki Importar siguiente experiencia Importar otra experiencia'; return $html; } function ImportarImagen($filename,$pagename,$numero,$services) { // Definimos el nombre del archivo de la imagen $num = sprintf("%02d", $numero); $extension = explode('.', $filename); $pagetitle = 'Experiencia-'. $pagename . '-'.$num.'.'.$extension[1]; $localfile = '/srv/reevo-web/files/mapa/'.$filename; $snaphot_pagecontent = 'Imagen importada del mapa de REEVO para [[Experiencia:'. $pagename .']]'; $snaphot_desc = 'Imagen importada del mapa de REEVO para [[Experiencia:'. $pagename .']]'; $fileUploader = $services->newFileUploader(); $fileUploader->setChunkSize( 1024 * 1024 * 10 ); // exec("cp /srv/reevo-web/files/red/recext/{$elggid}/`ls /srv/reevo-web/files/red/recext/{$elggid}/` /tmp/imagen && convert /tmp/imagen /tmp/imagen.jpg"); $fileUploader->upload( $pagetitle, $localfile, $snaphot_pagecontent, $snaphot_desc ); return $pagetitle; } function accessProtected($obj, $prop) { $reflection = new ReflectionClass($obj); $property = $reflection->getProperty($prop); $property->setAccessible(true); return $property->getValue($obj); } ?> REEVO - Importar Experiencia

Importación completa