summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarImagenPrensa.php
blob: 91a247e466152808b9aee9ab82a8e456ac1e25f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?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 las imagenes de los objetos de prensa
# ----

// ini_set( 'post_max_size', '50M' );
// ini_set( 'upload_max_filesize', '50M' );
// 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 );

// Obtengo el nombre de la página como parámetro

function ImportarImagenPrensa($pagetitle, $services) {
  global $REEVO_URL;
  $page = $services->newPageGetter()->getFromTitle( $pagetitle );
  $pagecontent = $page->getRevisions()->getLatest();
  if (!$pagecontent) {
    echo "No existe una página con el nombre '$pagetitle'\n";
    return;
  }


  $pagecontent = $page->getRevisions()->getLatest()->getContent()->getData();

  // armo un array con las propiedades de SMW
  $rows = explode("|", $pagecontent);
  foreach($rows as $row => $data)
  {
    $row_data = explode('=', $data);
    $page_properties[$row_data[0]] = $row_data[1];
  }

  if (array_key_exists('prensa:imagen', $page_properties)) {
    echo "La página '$pagetitle' ya tiene una imagen\n";
    return;
  }

  if (array_key_exists('prensa:elggid', $page_properties)) {
    $elggidtmp = $page_properties['prensa:elggid'];
    $elggid = preg_replace( "/\r|\n/", "", $elggidtmp );
    // echo $url;
  } else {
    echo "La página '$pagetitle' no tiene definida la propiedad 'prensa:elggid'\n";
    return;
  }

  // Definimos el nombre del archivo de la imagen
  $pagename = str_replace( ":", "-", $pagetitle);
  $snapshot_name = $pagename . '.jpg';
  $snaphot_pagecontent = 'Imagen importada desde sitio anterior para [['. $pagetitle .']]';
  $snaphot_desc = 'Imagen importada desde sitio anterior para [['. $pagetitle .']]';
  $fileUploader = $services->newFileUploader();
  $fileUploader->setChunkSize( 256 * 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( $snapshot_name, '/tmp/imagen.jpg', $snaphot_pagecontent, $snaphot_desc );

  // Crea nueva o actualiza existente
  $linkContent = str_replace('}}','|prensa:imagen='. $snapshot_name . '}}', $pagecontent);

  $newContent = new \Mediawiki\DataModel\Content( $linkContent );
  $title = new \Mediawiki\DataModel\Title( $pagetitle );
  $identifier = new \Mediawiki\DataModel\PageIdentifier( $title );
  $revision = new \Mediawiki\DataModel\Revision( $newContent, $identifier );
  $services->newRevisionSaver()->save( $revision );
  $link = urlencode("http://{$REEVO_URL}/Archivo:{$snapshot_name}");
  echo "Importe la imagen para '{$pagetitle}' y se subio a: '{$link}'\n\n";
}


if ($argv[1]) {
  ImportarImagenPrensa($argv[1],$services);
} else {
  echo "Al no indicar una página, voy a generar los snapshots de todas las pagínas que usen Plantilla:Prensa \n";

  // Obtengo todas las paginas con Plantilla:Prensa
  $pageListGetter = $services->newPageListGetter();
  $examplePages =  $pageListGetter->getPageListFromPageTransclusions( 'Template:Prensa' );
  $array = accessProtected($examplePages,'pages');
  foreach ( $array as $exPage ) {
      $pagename = $exPage->getTitle()->getText();
      echo "$pagename \n";
      ImportarImagenPrensa($pagename, $services);
  }
}




function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}





// print_r($examplePages);

// $myArray = json_decode(json_encode($examplePages), true);
// print_r($examplePages->getPageList());






?>