# 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.3 * 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= --dbuser=reevo2020_wiki --dbpass= --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 www/wiki/maintenance/update.php``` Para correr la actualización de variable de SMW y demas: ```php www/wiki/maintenance/runJobs.php``` #### Crear usuario para API Creamos el usuario de API ``` php www/wiki/maintenance/createAndPromote.php --bureaucrat --sysop reebot php www/wiki/maintenance/resetUserEmail.php reebot reebot@reevo.org php www/wiki/maintenance/changePassword.php --user=reebot --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 crear o actualizar todas las páginas cuando ya están creadas: ```cd bin/wiki/ && php initReevo.php --int --force``` Para crear o actualizar solo las que pertenecen a un namespace, por ejemplo Propiedad: ```cd bin/wiki/ && php initReevo.php --int --force Propiedad``` Para crear o actualizar solo las que pertenecen a un objeto semántico específico, por ejemplo Experiencia: ```cd bin/wiki/ && php initReevo.php --int --force Experiencia``` 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 ``` ### Migrar experiencias desde Ushahidi Tenemos una aplicacicón web para procesar una a una las experiencias de Ushahidi. Disponible en http://reevo.test/ImportarExperiencia/ Este proceso se completó en Septiembre de 2019. ### 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``` Este script se ejecuta desde CRON. ### Listar páginas por Categoría o Plantilla Para obtener un listado rápido (puede que incompleto, revisar los limites!) hacemos: ``` php bin/wiki/ListarPaginas.php "Categoría:Experiencia" ``` ### Manipulación de propiedades semánticas #### Obtener una propiedad de una página Usamos el siguiente script indicando las propiedades a listar: ``` php bin/wiki/PropiedadObtener.php -t=Experiencia:Summerhill -p="experiencia:lugar" -p="experiencia:lugar-pais" ``` #### Modificar o agregar propiedades de una página Usamos el siguiente script indicando las propiedades a cambiar o agregar: ``` php bin/wiki/PropiedadActualizar.php -t=Experiencia:Summerhill -p="experiencia:descripcion|Algo" -p="experiencia:lugar-pais|AR" -f=true ``` Si no indicamos ```-f=true``` solamente se agregan propiedades, pero no se modifican las existentes ### 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 `````` * 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}}``` Se puede cambiar rapidamente de idioma agregando un ```"#es"``` (o cualquier otro código idioma soportado) al final de cada página. Eso dispara una función cargada en la página del wiki ```/MediaWiki:Common.js```. La configuración de Nginx permite también hacer el cambio anteponiendo un subdominio a la URL: ```en.reevo.test/Experiencia```.