# 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= --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 /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 php resetUserEmail.php reebot reebot@reevo.org php 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 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 ``` ### 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 `````` * 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}}```