diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /bin/wiki/PropiedadObtener.php |
first commit
Diffstat (limited to 'bin/wiki/PropiedadObtener.php')
-rw-r--r-- | bin/wiki/PropiedadObtener.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/bin/wiki/PropiedadObtener.php b/bin/wiki/PropiedadObtener.php new file mode 100644 index 00000000..114fba48 --- /dev/null +++ b/bin/wiki/PropiedadObtener.php @@ -0,0 +1,80 @@ +<?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 recibe el nombre de una pagina e intenta obtener el valor las propiedades específicas. +# Algo como: php PropiedadObtener.php -t=Experiencia:Summerhill -p="experiencia:lugar" -p="experiencia:lugar-pais" +# ---- + + +// 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( $wgServer .'/api.php' ); +$api->login( new \Mediawiki\Api\ApiUser( $REEVO_WIKI_API_USER, $REEVO_WIKI_API_PASS ) ); +$services = new \Mediawiki\Api\MediawikiFactory( $api ); + +$opciones = getopt('t:p:f:'); + +if ($opciones['t']) { + if ($opciones['p']) { + $title = $opciones['t']; + if (is_string($opciones['p'])) { + $prop[] = $opciones['p']; + } else { + $prop = $opciones['p']; + } + foreach ($prop as $key => $value) { + // $p = explode('|', $value); + $propiedades[$value] = ''; + } + $result = ObtenerPropiedades($title, $propiedades, $opciones, $services); + } else { + echo "Es necesario que definas al menos una propiedad para obtener con -p='propiedad|valor'\n"; + } +} else { + echo "Es necesario que definas el nombe de la pagina a revisar con -t='Pagina'\n"; +} + +// Obtengo el nombre de la página como parámetro + +function ObtenerPropiedades($title, $propiedades, $opciones, $services) { + + $page = $services->newPageGetter()->getFromTitle( $title ); + $pagecontent = $page->getRevisions()->getLatest(); + if (!$pagecontent) { + echo "\n**** ERROR: No existe una página con el nombre '$title'\n\n\n"; + exit(); + } else { + // echo "\n**** PROCESANDO: '$title' ****\n"; + } + + $pagecontent = $page->getRevisions()->getLatest()->getContent()->getData(); + + // armo un array con las propiedades de SMW + $extracto = preg_grep('/^\|/', explode("\n", $pagecontent)); + foreach ($extracto as $key => $value) { + $data = str_replace('|','',$value); + $data_limpia = explode('=', $data); + $propiedades_previas[$data_limpia[0]] = $data_limpia[1]; + } + + foreach ($propiedades as $key => $value) { + if (array_key_exists($key, $propiedades_previas)) { + echo "$propiedades_previas[$key]\n"; + } + } + +} + +function accessProtected($obj, $prop) { + $reflection = new ReflectionClass($obj); + $property = $reflection->getProperty($prop); + $property->setAccessible(true); + return $property->getValue($obj); +} + +?> |