summaryrefslogtreecommitdiff
path: root/README.md
blob: e7a1cb6138a75b26e63b7ab5fbc57f6aa0bf71dc (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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# REEVO 2020

Repositorio de código de la plataforma unificada de REEVO, correspondiente al periodo 2019-2020

## Componentes

* Mediawiki 1.31.3
* SemanticMediawiki 3.0.2
* Wordpress 5.2.2
* CiviCRM 5.16.4


## Instalación

### Configurar y activar Nginx y php-fpm

Activar configuracion en Nginx, hay que editar ```/etc/nginx/nginx.conf``` agregando al final: ```include /srv/reevo-2020/etc/nginx/*.conf;```

Activar configuracion en php-fpm, hay que editar ```/etc/php/7.3/fpm/php-fpm.conf``` agregando al final: ```include=/srv/reevo-2020/etc/php-fpm/*.conf;```

Luego creamos los archivos de configuracion en /etc

### Mediawiki

#### Crear base de datos

En la consola de MYSQL:

```
CREATE DATABASE reevo2020_wiki;

CREATE USER 'reevo2020'@'localhost' IDENTIFIED BY 'my-strong-password-here';

GRANT INDEX, SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON reevo2020_wiki.* TO 'reevo2020'@'localhost';
```

Para generar las tablas en la base de datos hacemos (no usamos el ```LocalSettings.php``` resultante):

~~~
php www/wiki/maintenance/install.php --dbname=reevo2020_wiki --dbserver="localhost" --installdbuser=reevo2020 --installdbpass=<password> --dbuser=reevo2020_wiki --dbpass=<password> --server="http://reevo.red" --scriptpath=/ --lang=es --pass=yaco22 "REEVO" "Admin" --confpath /var/dump
~~~

Cargamos los datos para conectar con la base de datos en ```etc/global_config.php```.

Activamos el ```LocalSettings.php``` oficial: ```ln -s www/wiki/LocalSettings.Reevo.php www/wiki/LocalSettings.php```

Corremos el script para generar tablas y cambios de las extensiones: ```php /srv/reevo-2020/www/wiki/maintenance/update.php```

Para correr la actualización de variable de SMW y demas: ```php /srv/reevo-2020/www/wiki/maintenance/runJobs.php```

#### Crear usuario para API

Creamos el usuario de API

```
php createAndPromote.php --bureaucrat --sysop reebot <password>

php resetUserEmail.php reebot reebot@reevo.org

php changePassword.php --user=reebot --password=<password>
```

Y luego cargamos las credenciales en global_config.php

### Wordpress y CiviCRM

#### Activar configuraciones

Para activar las configuraciones de WP, hacemos: ```cd www/crm/ && rv ln -s wp-config.Reevo.php wp-config.php```

Para activar las configuraciones de CiviCRM, hacemos: ```cd www/crm/wp-content/uploads/civicrm && rv ln -s civicrm.settings.Reevo.php civicrm.settings.php```

## Configuraciones de CRON

Configurar con ```sudo crontab -e```, agregando lo siguiente:

~~~
### Cron de Mediawiki
*/10 * * * * /usr/bin/php /srv/reevo-2020/www/wiki/maintenance/runJobs.php > /var/log/runJobs.log 2>&1

### Generar Snapshots de Prensa
0 0 * * * sudo -u reevo -g www-data -H php /srv/reevo-2020/bin/wiki/GeneraSnapshot.php

### Ejecuta tareas de CiviCRM (hay que tener instalado wp-cli)
*/5 * * * * sudo -u reevo -g www-data -H /usr/local/bin/wp --user=yaco --url=http://crm.reevo.test --path=/srv/reevo-2020/www/crm/ civicrm api job.execute auth=0 > /dev/null 2>&1
~~~


## Documentación de herramientas propias

### Cargar páginas, propiedades y formularios

* Script: ```bin/wiki/initReevo.php```
* Descripción: se usa para crear o actualizar las páginas con propiedades, plantillas, formularios que se alojamos en ```bin/wiki/reevoPages```. Luego de crear o actualizar, se protegen para que solo los admins puedan editarlas.

Para crear todas las páginas: ```cd bin/wiki/ && php initReevo.php --int```

Para actualizar todas las páginas cuando ya están creadas: ```cd bin/wiki/ && php initReevo.php --int --force```

Para actualizar solo las que pertenecen a un namespace: ```cd bin/wiki/ && php initReevo.php --int --force NameSpace```

Para actualizar una página en particular: ```cd bin/wiki/ && php initReevo.php --int --force Propiedad:Prensa:url```


### Generador de archivos de prensa

* Script: ```bin/wiki/GeneraSnapshot.php```
* Descripción: se usa para generar una copia en texto e imagen (snapshot) de los Objetos de Prensa (antes "Recursos Externos" o "Enlaces")

Es necesario instalar previmente ```unfluff``` con: ```npm install -g unfluff```

También hay que tener instalado ```jq``` con : ```apt-get install jq```


### Creador de páginas de usuarios que importa datos de Elgg

* Script: ```bin/wiki/ImportarPerfil/ImportarPerfil.php```
* Extensión de MW: ```ImportarPerfil```
* Descripción: cuando un usuario nuevo en el wiki usa un e-mail que tiene asociado un usuario en Elgg, se crea la página Usuario:NombreDeUsuario tomando los valores del perfil de Elgg. Si lo que coincide es el nombre de usuario nuevo y uno antiguo en Elgg, se pregunta al usuario se quiere hacer la importación (ya que podria ser otra persona queriendo usar el mismo nombre de usuario). Los datos no se obtienen directo de Elgg, sino de una base de datos exportada en json.

Para que el usuario API funcione, tiene que tener el email validado, para hacerlo por consola:

```
php resetUserEmail.php User user@gmail.com
php changePassword.php --user=User --password=password
```

Se puede importar desde la línea de comandos cualquier usuario de ELGG con este comando: ```php bin/wiki/ImportarPerfil/ImportarPerfil.php -f true -u <Usuario>```


### Migrar experiencias desde Ushahidi

Tenemos una aplicacicón web para procesar una a una las experiencias de Ushahidi. Disponible en http://reevo.test/ImportarExperiencia/


### Importar pagina de prensa desde URL

Existe la aplicacion web (http://reevo.test/ImportarDesdeURL/) que permite precargar el formulario de creación del objeto Prensa a partir de los metadatos de una URL.

Para que funcione, hay que instalar metascraper y otras aplicaciones de nodejs:

```
sudo npm install metascraper metascraper-author metascraper-date metascraper-description metascraper-image metascraper-logo metascraper-clearbit metascraper-publisher metascraper-title metascraper-url franc-cli got minimist --global
```

Tambien hay que instalar ```php-geoip```


### Herramientas de backup

En el directorio ```/bin/bkp``` guardamos scripts para facilitar la generación de copias de respaldo de las bases de datos.

### Cómo traducimos contenidos

Las páginas con traducciones disponibles se deben editar de la siguiente forma:

* El contenido del articulo original en español (ej. Argentina) se marca entre ```<es></es>```
* Se le agrega la marca-plangilla ```{{Lang}}``` al final del texto
* Se crea una subpágina por cada idioma (ej? Argentina/en) y se coloca el texto sin formato especial. Para definir el título se usa ```{{DISPLAYTITLE:Argentine in English}}```