4 - Documentation technique

Sous le capot.

UNIVERS TECHNIQUE

INSTALLATION de Communecter

INTRODUCTION au code

MODULES

INSTANCES

Basé sur le code de Communecter

OPEN SOURCE TOOLS WE USE (doc)

CONNECTING THINGS TOGETHER

OPEN SOURCE PROJECTS WE USE AND LOVE

Introduction au code

N’ayez pas peur ! Le code est écrit de manière accessible afin que vous puissiez y contribuer facilement. Si vous êtes à l’aise avec les méthodes plus “standard” dans l’industrie, il est possible de coder de votre côté et de communiquer via l’API.

Ressources pour débuter

Architecture

Le motif utilisé est le classique Modèle-vue-contrôleur. Une grosse partie du code se trouve dans le dépôt CO2 de notre Gitlab, tandis que citizenToolKit gère plutôt le backend.

Construction d’une URL

Les URL sont gérées par co.js et se présentent sous la forme suivante : /ph/[module]/#[application]

Par exemple la page communecter.org/#search correspond à la vue co2/views/app/search.php.

Installer Communecter

Installer Communecter

Ubuntu 16.04

Prérequis

Pour utiliser Communecter vous devez avoir

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org

Install

Clone from GitHub :

mkdir ~/dev && mkdir ~/dev/communecter 
mkdir ~/dev/communecter/modules 
cd /var/www/html/
sudo ln -s ~/communecter communecter
cd ~/dev/communecter
git clone https://github.com/pixelhumain/pixelhumain.git
cd modules/
git clone https://github.com/pixelhumain/citizenToolKit.git
git clone https://github.com/pixelhumain/co2.git
ln -s co2 network
git clone https://github.com/pixelhumain/api
git clone https://github.com/pixelhumain/graph.git
git clone https://github.com/pixelhumain/classifieds.git
git clone https://github.com/pixelhumain/ressources.git
git clone https://github.com/pixelhumain/places.git
git clone https://github.com/pixelhumain/chat.git
git clone https://github.com/pixelhumain/learn.git
git clone https://github.com/pixelhumain/survey.git
git clone https://github.com/pixelhumain/interop.git
git clone https://github.com/pixelhumain/cotools.git
git clone https://github.com/pixelhumain/eco.git
cd ../

Installer les dépendances avec Composer :

sudo apt install composer
cd pixelhumain/ph/
composer update
composer install

Rename the dbconfig file :

cd protected/
cp config/dbconfig.exemple.php config/dbconfig.php

Si le fichier dbconfig.php n'existe pas, créer le : nano config/dbconfig.php

<?php
$dbconfig = array(
     'class' => 'mongoYii.EMongoClient',
    'server' => 'mongodb://127.0.0.1:27017/',
     'db' => 'pixelhumain', 
 );
?>

Création du dossier runtime et assets

mkdir runtime
sudo chmod -R 775 runtime/
cd ../
mkdir assets
sudo chmod -R 775 assets/
cd ../../
sudo chown -R [votreUser]:www-data pixelhumain
sudo chown -R [votreUser]:www-data modules

Configuration

And configure Apache vhost : edit /etc/apache2/sites-available/communecter.conf :

<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	  
	  Alias "/ph" "/var/www/html/communecter/pixelhumain/ph"
	  <Directory "/var/www/html/communecter/pixelhumain/ph">
		Options FollowSymLinks Indexes
		AllowOverride none
		Order deny,allow
		#Allow from 127.0.0.1
		#deny from all
		<IfModule mod_rewrite.c>
		Options +FollowSymLinks
		IndexIgnore */*
		RewriteEngine on
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteCond $1 !^(index\.php|assets|robots\.txt)
		RewriteRule ^(.*)$ /ph/index.php/$1 [L]
		</IfModule>
	  </Directory>

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Activate the new vhost :

sudo a2ensite communecter 
sudo a2enmod rewrite 
sudo service apache2 reload

Configurer MongoDB

#Making the Data folder for MongoDB
mkdir data/
mkdir data/db

#Starting mongod (communecter Database Engine)
mongod --dbpath "/var/www/html/communecter/data/db"

#open a new terminal windows
#Making user adding script of pixelhumain user
echo 'db.createUser({     user: "pixelhumain",     pwd: "pixelhumain",     roles: [{role:"readWrite", db:"pixelhumain"}]})' > adduserpixelhumaindb.js                                                   
mongo pixelhumain adduserpixelhumaindb.js

#Deleting script after use
rm adduserpixelhumaindb.js

Import les données :

cd modules/co2/data
unzip cities.json.zip
mongoimport --db pixelhumain --collection cities --file cities.json

unzip translate.json.zip
mongoimport --db pixelhumain --collection translate --file translate.json

unzip zones.json.zip
mongoimport --db pixelhumain --collection zones --file zones.json

mongoimport --db pixelhumain --collection lists lists.json --jsonArray ;

mongo
  use pixelhumain
  db.createCollection("applications")
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355d"),     "name" : "DEV Config",     "key" : "devParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355e"),     "name" : "PROD Config",     "key" : "prodParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )
  exit

cd ../

Ajouter MongoDB au démarrage et faire le script d’utilisation : sudo nano /etc/init.d/communecterdb

Ajouter ceci :

#!/bin/sh
#
### BEGIN INIT INFO
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Provides:          unattended-upgrade-shutdown-check
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: Check if unattended upgrades are being applied
# Description:       Check if unattended upgrades are being applied
#                    and wait for them to finish
### END INIT INFO

mongod --dbpath /var/www/html/communecter/data/db

Sauvegardez :

sudo chmod +x /etc/init.d/communecterdb
update-rc.d communecterdb defaults
update-rc.d communecterdb enable

Alternative : créer le script communecterdb.sh, le rendre exécutable et l’ajouter dans /etc/rc.local

Vérifier que tous les composants sont installés

Accéder a l’url suivant : http://127.0.0.1/ph/test
Et réglez tout les points rouges.

C’est bon vous pouvez utiliser COMMUNECTER

Accédez à cette adresse : http://127.0.0.1/ph/

Optionnel

Interface Mongo

Si vous souhaitez avoir une interface pour géré MongoDB vous pouvez télécharger Robo3T : https://robomongo.org/download

Email service to cron

Add

crontab -e : */2 * * * * curl https://127.0.0.1/ph/co2/test/docron

Use

Communecter is now available : http://127.0.0.1/ph/
To try the email service, go to http://127.0.0.1/ph/co2/test/docron

To use in production mode, edit index.php

Update

Create /var/www/html/communecter/update.sh containing :

red=`tput setaf 1`
green=`tput setaf 2`
blue=`tput setaf 0`
bgWhite=`tput setab 7`
reset=`tput sgr0`

cp pixelhumain/ph/protected/config/dbconfig.php .
cp pixelhumain/ph/protected/config/paramsconfig.php .

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CO2  --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd modules/co2
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CITIZEN TOOLKIT-----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../citizenToolKit
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CLASSIFIEDS -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../classifieds
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull


echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ RESSOURCES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../ressources
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull


echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PLACES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../places
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ API -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../api
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull



echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CHAT -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../chat
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PIXELHUMAIN --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../../pixelhumain
rm -f ph/protected/runtime/application.log
rm -Rf ph/assets/*

echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git reset --hard HEAD
git pull

cp ../dbconfig.php ph/protected/config
cp ../paramsconfig.php ph/protected/config

#echo "${red}---------------------------------------------"
#echo "------------ GLOBAL STATS --------------------"
#echo "---------------------------------------------${reset}"
#git shortlog -s -n

Make it executable and launch it.

Installer Communecter

Docker

Retour au TODO de Fluidlog

Proposition de Marc_Toulouse sur le chat :
https://chat.lescommuns.org/channel/co_dev_open
L’idée en effet est de regrouper les différents façons d’installer Communecter ici : https://wiki.communecter.org/en/installing-communect.html (c’est un clone du wiki de Github)
Voir plus précisément : https://wiki.communecter.org/en/installing-communect-with-docker.html (et pas https://wiki.communecter.org/en/installing-communect-on-ubuntu-16.04.html à priori car ça ne concerne pas docker)

Tibor me parle aussi du nouveau PAD : http://pad.co.tools (sur CryptoPad) : ça c’est pour faire la doc. C’est vraiment ici qu’elle doit être faite : https://wiki.communecter.org/en/installing-communect-with-docker.html : en cliquant sur le crayon, on accès au wiki de Github en mode édition (faut avoir un compte github)

Installation de Communecter via docker

choose community edition CE https://docs.docker.com/engine/installation
example install docker ubuntu https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu

Erreur avec AptGet… OK
docker-ce n’était pas dispo de base, il a fallu ajouter des serveurs
En fait, j’ai du suivre le post:
https://gist.github.com/Stoakes/a5adb36e9211964dbf00b47d36edd181

Post-installation steps for Linux https://docs.docker.com/engine/installation/linux/linux-postinstall

Installer docker-compose

https://docs.docker.com/compose/install

Installer Communecter

git clone https://gitlab.adullact.net/pixelhumain/docker ~/pixelhumain-docker
cd ~/pixelhumain-docker
#pour linux
docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph cotools --install
#ou pour windows/mac utiliser
docker-compose -f docker-compose-no-build.yml -f docker-compose.install-no-build.yml run ph cotools --install

Mise à jour des droits

Modifier les droits pour pouvoir modifier les fichiers :

Pour taper ces commandes, se mettre dans le rep :
cd ~/pixelhumain-docker

#modifier le group/user pour pouvoir ouvrir/modifier les fichiers
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/pixelhumain/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/modules/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/log/

Voir aussi “Getting start” : https://docs.docker.com/compose/gettingstarted/#step-3-define-services-in-a-compose-file

Problème d’accès

Suite à cela, je n’avais pas accès à CO.

Nous avons vérifié si un container tournait (voir paragraphe plus bas) -> non

Nous avons supprimé le répertoire code pour tout recommencer.

docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph install

Explication :
la il va rebuilder le container front et utiliser le container install pour faire l’install sur le front
c’est pour ça que l’on a 2 fichier :

docker-compose.install.yml ne sert que pour l’install et certaine commande

Suite à ces commandes, il clone tout ce qu’il faut en local, ça prend un certain temps en fonction de votre réseau…

Aller sur http://localhost:5080

La première fois, j’ai eu des messages d’erreur d’accès…

Thomas m’a demandé si j’avais le répertoire :
/pixelhumain-docker/code/pixelhumain/ph/vendor/
mais je ne l’avais pas…

Nous avons de nouveau supprimé le répertoire code, et modifié le script

/pixelhumain-docker/docker-install/Dockerfile

pour y ajouter curl et php

Voir la présence et lancer un container

Pour savoir si docker tourne, faire "docker ps"
S’il n’y a rien (à part le titre des colonnes du tableau), c’est signe qu’aucun container ne tourne.

Exemple : ici, il n’y a pas de container qui tourne :

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Là, il y en a :

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                           NAMES
92ed85af6a28        pixelhumaindocker_front   "/usr/bin/supervisord"   4 weeks ago         Up About a minute   9000/tcp, 0.0.0.0:5080->80/tcp, 0.0.0.0:5443->443/tcp, 0.0.0.0:5901->9001/tcp   pixelhumaindocker_front_1
8f16ade3a72b        mongo                     "docker-entrypoint..."   4 weeks ago         Up About a minute   27017/tcp                                                                       pixelhumaindocker_mongo_1

Et pour lancer un container :

docker-compose -f docker-compose.yml up

Inscription en local

Une fois sur l’interface d’accueil de CO, il faut remplir le formulaire d’inscription, sauf que le mail d’activation n’est pas envoyé.

Pour passer cette étape, on “triche” avec la commande :

docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph cotools --emailvalid=email@example.com

(en modifiant bien sur : email@example.com par l’email qui a servi à l’inscription)
On rafraîchit la page, on se loge, et ça fonctionne, on arrive dans CO !

Gérer le démarrage auto

https://docs.docker.com/engine/installation/linux/linux-postinstall/#configure-docker-to-start-on-boot

sudo systemctl enable docker
Synchronizing state of docker.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable docker

Malgré cela, CO ne démarre pas au lancement de ma machine.

Accès à Communecter

Je n’ai pas encore réussi (pas essayé non plus…) à le lancer au démarrage, donc à chaque fois que je souhaite lancer CO :

Tout est noté à la fin du script ci-dessus… (je dis ça, car j’ai cherché un peu car je n’avais pas lu…)

Ajout de Fluidgraph dans CO

Administration de la base NoSQL (mongoDB)

Pour avoir accès à mongo en dehors du container il faut ouvrir le port
Voir fichier :
https://github.com/pixelhumain/docker/blob/master/docker-compose.yml

J’ai du ajouter la ligne concernant l’ouverture de port comme l’exemple qui suit :

services:
  mongo:
    image: mongo
    volumes:
      - ./code/data/db:/data/db
    ports:
      - "5017:27017"

Cela m’a permis, via l’outil Robomongo d’ajouter une collection :

{
    "_id" : ObjectId("59f1920bc30f30536124355d"),
    "name" : "DEV Config",
    "key" : "devParams",
    "mangoPay" : {
        "ClientId" : "communecter",
        "ClientPassword" : "XXXXXXXXXXX",
        "TemporaryFolder" : "../../tmp"
    }
}

Je ne sais pas encore à quoi ça correspond, mais on m’a dit de le faire, sinon, j’avais l’erreur :

ERREUR 403
Missing Configs db.applications.key == prodParamsexists 

Ce qui m’a permis de faire fonctionner mon instance locale.

API

Accès à l’interface graphique de l’API : communecter.org/api

Google logo

Get : Récupérer des informations

Depuis l’API vous avez la possibilité de récupérer différentes informations en provenance de Communecter :

Récupérer toutes les entités

Structure

/api/[project || person || organization || event || need || news]/get/

Exemple

https://www.communecter.org/api/organization/get

Pour voir la description du résultat aller dans la rubrique “Les attributs”.

Paramétrer la recherche

Vous avez la possibilité d’ajouter des paramètres pour peaufiner votre recherche :

Récupérer une entité via son identifiant

/ph/communecter/data/get/type/(projects || citoyens || organizations || events || news)/id/[id_entity]

Exemple : https://www.communecter.org/api/organization/get/id/57186ed894ef47210d7b242d

Rechercher par tags

Vous avez la possibilité de paramétrer la recherche des entités en fonctions des tags. Vous pouvez ajouter plusieurs tags qui devront être séparé par une virgule. Par défauts, si vous avez mis plusieurs tags, il suffit pour l’entité d’avoir un de ces tags pour être affiché. Si vous souhaitez que l’entité possède tout les tags alors il faut mettre le paramètre suivant : /multiTags/true

Exemples :

https://www.communecter.org/api/organization/get?tags=nuitdebout
https://www.communecter.org/api/organization/get?tags=education,social
https://www.communecter.org/api/organization/get?tags=education,social/multiTags/true

Rechercher par code Insee

Si vous connaissez le code Insee de votre commune, vous pouvez faire une recherche via ce code.

Exemple :

https://www.communecter.org/api/organization/get?insee=33402

Formats

L’API prend en compte différents formats pour le résultat. Par défaut, c’est le format que propose Communecter. Nous prenons aussi en comptes les formats suivant :

Attention certains formats ne retourne pas forcement toutes les entités, voici la liste pour chaque format.

COMMUNECTER

SCHEMA

PLP

KML

GEOJSON

CSV

RSS

JSONFEED

Les attributs

Ici, vous aurez la description de tout les attribues des différentes entités qui sont retournés via l’API.

Format Communecter

entities toutes les entités en leurs identifiants en clé

Convert : Récupérer des données en onthologie PH

Depuis l’API, vous avez la possibilité de convertir les données sous différents format que vous possédez directement en onthologie PH.

Obtenir l’ontologie ph pour un type d’élément donnée via une url

Structure

/ph/communecter/api/convert/geojson/type/[organizations || citoyens || events || projects]?url="http://votreurl"

Exemple

https://www.communecter.org/api/convert/geojson/type/organizations?url=http://umap.openstreetmap.fr/en/datalayer/306808/

Cas particuliers : les uMap

Structure

L’API permet de convertir les données geojson d’une uMap donnée via la paramètre “url”.

On peut aussi mettre en paramètre l’URL courte d’une uMap (visible en appuyant sur le bouton partager à gauche de la uMap). Attention pour le moment, il faut que l’url soit en “http” et non pas en “https”, retirez le “s” si tel est le cas.

https://www.communecter.org/api/convert/geojson/type/organizations?url=[URL]

Exemples

URL longue :

https://www.communecter.org/api/convert/geojson/type/organizations?url=http://umap.openstreetmap.fr/en/datalayer/306808/

URL Courte :

/ph/communecter/api/convert/type/organizations?url=http://u.osmfr.org/m/62176/

Obtenir l’ontologie ph pour un type d’élément donnée via un fichier

Il faut envoyer à l’API le paramètre “file” via méthode POST. (en utilisant curl ou RESTED par exemple).

Obtenir l’ontologie ph pour une url intérrogeant une API externe

/ph/communecter/api/convert/[type interop]?url="http://votreurlinterop"

Wikidata

Structure

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/[wikidataID].json

Exemple

Ville de Saint-Louis - WikidataID = Q47045 :

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/Q47045.json

Data.gouv

Structure

/ph/api/convert/datagouv?url=https://www.data.gouv.fr/api/1/spatial/zone/fr/town/[insee]/datasets

Exemple

Ville de Rodez - Code INSEE 12202 :

/ph/api/convert/datagouv?url=https://www.data.gouv.fr/api/1/spatial/zone/fr/town/12202/datasets

On va pouvoir ensuite obtenir l’ensemble des datasets de la ville mentionnée et au final parcourir l’ensemble des différents jeux de données de la ville.

OpenStreetMap

Structure

/ph/api/convert/osm?url=http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:[geoshape]);out;

Exemple

Ville de Saint-Louis :

/ph/api/convert/osm?url=http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:%22-21.303505996763%2055.403919253998%20-21.292626813288%2055.391189163162%20-21.282029142394%2055.381522536523%20-21.256155186265%2055.392395046639%20-21.232012804782%2055.387888015185%20-21.211100938923%2055.390619722192%20-21.199480966855%2055.382654775478%20-21.185882138486%2055.385961778627%20-21.173346518752%2055.389949958731%20-21.16327583783%2055.399563417107%20-21.14709868917%2055.405379688232%20-21.166028899095%2055.414700890276%20-21.184085220909%2055.432085218794%20-21.190290936422%2055.440880800108%20-21.195166490948%2055.462318490892%20-21.237553168259%2055.459769285867%20-21.258726107298%2055.463692709631%20-21.286021128961%2055.455515913879%20-21.294777773557%2055.419916682666%20-21.303505996763%2055.403919253998%22);out;

On va pouvoir filtrer l’enssemble des noeuds qui sont présent dans le geoshape fourni et enfin filtrer tous les noeuds qui possède au moins le tag “name”.

OpenDataSoft

Structure

On va pouvoir filtrer l’ensemble des éléments présent dans le geofilter fournit. On peut filtrer les éléments par thématique en mentionnant des refine.libapen dans l’url.

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&sort=datemaj&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=[geofilter]

Exemples

Ville de Saint-Louis :

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&sort=datemaj&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

L’exemple suivant fait la même chose que l’exemple précédent sauf qu’il filtre tous les éléments qui sont dans le secteur d’activité : Pratique dentaire

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)&refine.libapen=Pratique%20dentaire

Datanova

Structure

On récupère l’ensemble des enseignes La Poste présent dans le geofilter donné.

/ph/api/convert/datanova?url=https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=[geofilter]

Exemple

Ville de Bordeaux

/ph/api/convert/datanova?url=https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Pôle Emploi

Introduction

avec en paramètre POST :

Ensuite on lance la requête :

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%27[insee]%27%

Exemple (ville de Saint-Louis) :

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%

Il faut indiquer en paramètre POST ses identifiants du Pôle Emploi (inscription sur emploi-store-dev.fr) et aussi mettre un token dans le HEADER : “Authorization: Bearer [token]”.

Structure

L’url à passer en paramètre est du type :

/ph/api/convert?url=https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%27[insee]%27%

Exemples

Ville de Saint-Louis :

/ph/api/convert?url=https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%

ScanR

Structure

ScanR comporte 4 jeux de données que l’on peut intéroger :

Structure de recherche publique :

/ph/api/convert/educstruct?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-structures-recherche-publiques-actives&facet=numero_national_de_structure&facet=annee_de_creation&facet=tutelles&facet=type_de_tutelle&facet=nature_de_tutelle&facet=nature_de_structure&facet=type_de_structure&facet=niveau_de_structure&facet=domaine_scientifique&facet=panel_erc&facet=theme_de_recherche&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=comue&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=[geofilter]

Etablissement impliqués dans la recherche :

/ph/api/convert/educetab?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=[geofilter]

Membres des universités de France :

/ph/api/convert/educmembre?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-iuf-les-membres&rows=30&start=0&geofilter.polygon=[geofilter]

Liste des écoles doctorales accréditées :

/ph/api/convert/educecole?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-ecoles_doctorales_annuaire&facet=numero&facet=groupe_disciplinaire&facet=toutes_les_disciplines&facet=discipline_principale&facet=localisation&facet=liste_tous_etablissements&facet=laboratoires_rattaches&facet=annee_de_creation&facet=annee_accreditation&facet=etablissement_support&facet=liste_codes_tous_etablissements&facet=identifiants_des_laboratoires&facet=libelle_unite_urbaine&facet=libelle_departement&facet=libelle_academie&facet=libelle_region&rows=30&start=0&geofilter.polygon=[geofilter]

Exemples

Structure de recherche publique de Saint-Louis :

/ph/api/convert/educstruct?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-structures-recherche-publiques-actives&facet=numero_national_de_structure&facet=annee_de_creation&facet=tutelles&facet=type_de_tutelle&facet=nature_de_tutelle&facet=nature_de_structure&facet=type_de_structure&facet=niveau_de_structure&facet=domaine_scientifique&facet=panel_erc&facet=theme_de_recherche&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=comue&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Etablissement impliqués dans la recherche de Bordeaux :

/ph/api/convert/educetab?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Membres des universités de France de Bordeaux :

/ph/api/convert/educmembre?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-iuf-les-membres&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Liste des écoles doctorales accréditées de Bordeaux :

/ph/api/convert/educecole?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-ecoles_doctorales_annuaire&facet=numero&facet=groupe_disciplinaire&facet=toutes_les_disciplines&facet=discipline_principale&facet=localisation&facet=liste_tous_etablissements&facet=laboratoires_rattaches&facet=annee_de_creation&facet=annee_accreditation&facet=etablissement_support&facet=liste_codes_tous_etablissements&facet=identifiants_des_laboratoires&facet=libelle_unite_urbaine&facet=libelle_departement&facet=libelle_academie&facet=libelle_region&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

REST Services

Register a new user

Le code utilisé est ici : citizenToolKit/controllers/person/RegisterAction.php (lien mort)

CoPi

Une instance de Communecter installée sur une Raspberry Pi

Features

Matériel disponible

CoPiMix

Agrégateur de source CoPi

CoPi Copy

Sauvegarde d’instance CoPi

CoPi Bank

Système de monétisation interne à une organisation

Interopérabilité

Vue d’ensemble du chantier sur l’interopérabilité

À gauche, la liste des sources extérieurs sur lesquelles on récupère les données :

Au milieu, le processus de Conversion des données (détails sur le prochain schéma)

A droite, l’affichage des données converties sur le site de Communecter ainsi que des exemple d’usage de ces données par des sites extérieurs.

Conversion des données sémantiques

We interoperate with

using their API

Wikidata

For any city, We retreive main information available on Wikidata

The process is the following :

The convert system will interrogate the Wikidata API to get data in JSON.

The next exemple is the data for the city of Saint-Denis, capital city of Réunion island :

And convert this data in the pivot language named “PH onthology”

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/Q47045.json

Exemple Wikidata here

Here are the mapping

Source’s data PH onthology
itemLabel.value name
coor.latitude geo.latitude
coor.longitude geo.longitude
item.value url
itemDescription.value description

DBpedia

OpenStreetMap

For any city, we retreive main information avaible on OSM

The process is the following :

The next exemple is all the OSM data of the city of Saint-Louis :

http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:%22-21.303505996763%2055.403919253998%20-21.292626813288%2055.391189163162%20-21.282029142394%2055.381522536523%20-21.256155186265%2055.392395046639%20-21.232012804782%2055.387888015185%20-21.211100938923%2055.390619722192%20-21.199480966855%2055.382654775478%20-21.185882138486%2055.385961778627%20-21.173346518752%2055.389949958731%20-21.16327583783%2055.399563417107%20-21.14709868917%2055.405379688232%20-21.166028899095%2055.414700890276%20-21.184085220909%2055.432085218794%20-21.190290936422%2055.440880800108%20-21.195166490948%2055.462318490892%20-21.237553168259%2055.459769285867%20-21.258726107298%2055.463692709631%20-21.286021128961%2055.455515913879%20-21.294777773557%2055.419916682666%20-21.303505996763%2055.403919253998%22);out%2030;

Here are the mapping

Source’s data PH onthology
tags.name name
lat geo.latitude
long geo.longitude
type type
tags.amenity tags.0

Exemple OSM here

Contribuez à OSM

COSM a pour but donner à l'utilisateur une meilleur visibilité des éléments OSM d'un territoire, de pouvoir contribuez a enrichir les tags OSM d'un OSM.

COSM permet à l'utilisateur de pouvoir lister l'intégralité des éléments OSM pour un scope géographique (uniquement les villes pour le moment).

Les éléments sont afficher en bleu s'il ont un type. C'est à dire, soit :

L'utilisateur peut à tout moment cliquer sur le bouton "Voir tous les tags" pour ... voir tous les tags de l'élément OSM.

Dans le cadre listant tous les tags de l'élément l'utiliseur peut en cliquant sur "Modifier/Ajouter un tag" ajouter ou modifier un tag. Pour on ne peut ajouter que les 5 tags cités plus haut.

L'information sera directement pusher vers la page OSM de l'élément en question.

Data.gouv

For any city, we retreive main information of the organizations placed in this city

The process is the following :

The module will find all the organizations placed in the geographic scope filter and then extract all the data in the differents datasets available.

The next exemple is all the data of the different structure of Méto-France, meteorological center of France.

https://www.data.gouv.fr/api/1/datasets/54a12162c751df720a04805a/

Here are the mapping

Source’s data PH onthology
slug name
page url
tags[] tag[]
item.value url
owner creator

Exemple Data.gouv here

Pôle emploi

For any city, we retreive all the job offer. (no exact localisation of the job place)

The process is the following :

To get data with the Pôle emploi’s API, a token is needed.

The next exemple fetch all the job offer of the city of Saint-Louis.

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5-f342-4223-9c51-72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%20LIMIT%2030

OpenDataSoft (SIREN database)

For any city, we retreive all the organizations and the association of the SIREN’s database.

The process is the following :

The next exemple will fetch all the data in the SIRENE database for the city of Saint-Louis.

https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

Here are the mapping

Source’s data PH onthology
fields.l1_declaree name
fields.categorie type
fields.siret shortDescription
fields.coordonnees.0 geo.latitude
fields.coordonnees.1 geo.longitude
fields.libapen tags.0

Exemple OpenDataSoft here

ScanR ( National Education )

For any city, we retreive main information from the national education of France

The process is the following :

The next exemple fetch all the actives research strutures of the city of Bordeaux :

https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Here are the mapping :

Source’s data PH onthology
fields.libelle name
fields.site_web shortDescription
fields.geolocalisation.0 geo.latitude
fields.geolocalisation.1 geo.longitude

Exemple ScanR here

Datanova ( La Poste )

For any city, we retreive the location of all buildings of La Poste

The process is the following :

The next exemple will fetch all La Poste buildings localised in the city of Saint-Louis.

https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

Here are the mapping

Source’s data PH onthology
fields.libelle_du_site name
recordid type
fields.adresse address.streetAddress
fields.latlong.0 geo.latitude
fields.latlong.1 geo.longitude
fields.libapen tags.0

Exemple Datanova here

Smart Citizen (coming soon)

Umaps (coming soon)

WordPress RSS (coming soon)

using an iframe

FramaPads

Copédia

Une autre façon de voir Wikipédia ...

Accessible depuis l'url suivante : /co2/#interoperability.copedia

Dans Copédia, le but est de permettre à l'utilisateur d'avoir une autre vision d'une page Wikipédia, de faciliter sa recherche et de la rendre plus intuitive.

Consulter la données Wikipédia

Copédia permet en selectionnant un scope géographique (uniquement les villes pour le moment) de lister tous les arcticles Wikipédia en liens avec la page Wikipédia de la ville selectionné (tout liens hypertexte renvoyant vers une autre page Wikipédia).

exemple_lien_copedia.pngLes liens Wikipédia listés sont ainsi catégorisés parmis 5 grands types :

Il est possible à tous moment de pouvoir filtrer parmis ces 6 grands types et ainsi obtenir par exemple uniquement les personnes d'une page Wikipédia.

Copédia met également les dates en relations avec certains éléments, dans une frise chronologique.

Les dates que Copédia affiche sont :

Pour tous les éléments listés il est possible de :

Contribuer à Wikipédia

Si un élément ne possède pas de type, il est possible d'ajouter vous même un type à cet élément en cliquant sur le bouton "Ajouter un type (Wikidata)" qui va permettre à l'utilisateur de pusher lui même un type directement dans la page Wikidata de l'élément parmis ces 4 grands type :

 

Configuration des outils à usage interne

English version

Créer une application ou un élément

Définition

CO2 est le nom du module correspondant à la 2nd version du module Communecter (www.communecter.org). Le module CO2 fait parti du projet PixelHumain, au même titre que d'autres modules développés au sein de PixelHumain (qu'est qu'un module ?).

CO2 a lui même été construit de façon à pouvoir intégrer facilement de nouvelles applications, et les activer/désactiver très facilement, via 1 seul fichier de configuration : https://github.com/pixelhumain/co2/blob/master/config/CO2/params.json

Les applications actuellement activées pour le site communecter.org sont : welcome, recherche, agenda, annonces, live, page, et info. Ce fichier sert à configurer un certain nombre de paramètres pour chaque application, ce qui permet de configurer très rapidement une nouvelle app, sans toucher au code commun qui gère toutes les applications.

Cela permet aussi de mettre en place des instances différentes de communecter.org (exemple : autrerezo.org, makietjichel.com, ou autres...), sur lesquelles les administrateurs de l'instance peuvent activer et désactiver les applications qu'ils souhaitent utiliser, sans avoir à supprimer ou modifier du code.

Les développeurs peuvent aussi créer de nouvelles applications à volonté.

 

Créer une nouvelle application dans CO2

 

1- Ajouter l'application dans le fichier /modules/co2/config/CO2/params.json, en suivant l'exemple suivant :

Il convient bien évidemment de remplacer "#nomdelapplication" par le nom de votre application, les titres ect ... Pour l'icône, choisir un nom parmi cette liste : http://fontawesome.io/icons/

"#nomdelapplication": {
            "inMenu" : true, 
            "useHeader" : true, 
            "open" : true, 
            "subdomain" : "nomdelapplication", 
            "subdomainName" : "Nomdelapplication",
            "hash" : "#app.nomdelapplication",
            "icon" : "nomDeLIconeFontawesome", 
            "mainTitle" : "Nom de l'application",
            "placeholderMainSearch" : "Rechercher dans ..."
        }, 

(il est conseillé d'indiquer tous les paramètres, mais il est possible d'en enlever ou d'en rajouter selon vos besoins.)

 

2- Ajouter une nouvelle fonction dans le fichier AppController.php du module CO2

Ouvrir le fichier /modules/co2/controllers/AppController.php et rajouter par exemple :

  public function actionNomdelapplication(){
    CO2Stat::incNbLoad("co2-nomdelapplication");
    echo $this->renderPartial("nomdelapplication", array(), true);
  }

 

3- Créer les liens vers les actions

Dans /modules/co2/components/CommunecterController.php, il faut ajouter votre lien dans l'array "app" : (l'array app se situe environ à la ligne 460 du fichier)

"app" => array(
      "nomdelapplication" => array('href' => "/ph/communecter/app/nomdelapplication", "public" => true),
), 

 

4- Créer la vue

Elle est appelée par le contrôleur pour gérer l'affichage (code HTML, CSS, JS).

Créer le fichier /modules/co2/views/app/nomdelapplication.php

On peut inclure le code d'une autre vue en utilisant $this->renderPartial

 

5- Accéder à votre application

Bravo ! Maintenant vous n'avez plus qu'à accéder à votre application grâce à l'url suivante :

http://127.0.0.1/ph/co2#nomdelapplication



 

Créer un nouvel élément dans CO2

Communecter permet déjà de gérer plusieurs éléments : citoyens, organisations, projets, événement, news, point d'intérets, annonces, etc...)

Voici la marche à suivre pour ajouter et gérer un nouvel élément : (si vous créez une nouvelle application, vous aurez probablement besoin de gérer un (ou plusieurs) nouveau(x) type(s) d'élément(s))

 

1- Créer un nouveau controller dans le module CitizenToolKit

Créer le dossier /modules/citizenToolKit/controllers/nomdelelement

Ce dossier contiendra l'ensemble de la logique métier.

A l'intérieur de ce dossier, créer les actions dont vous avez besoin. IndexAction est l'action par défaut. Pour créer une action, créer un fichier comme "/modules/citizenToolKit/controllers/nomdelelement/IndexAction.php" qui contiendra par exemple :

<?php
class IndexAction extends CAction
{
    public function run( $type=null, $id= null )
    {
      $controller=$this->getController();
      $params = array();
      $params["itemId"] = $id;
      $params['itemType'] = $type;

      if(Yii::app()->request->isAjaxRequest)
        echo $controller->renderPartial("index", $params,true);
      else
        $controller->render( "index" , $params );
    }
}

Et le fichier "/modules/citizenToolKit/controllers/nomdelelement/AutreAction.php"

class AutreAction extends CAction
{
    public function run()
    {
      ...
    }
}

Créer les autres actions de la même manière : "/modules/citizenToolKit/controllers/nomdelelement/searchAction.php" "/modules/citizenToolKit/controllers/nomdelelement/saveAction.php" etc

 

2- Créer un nouveau modèle dans le module CitizenToolKit (si besoin)

Créer le fichier /modules/citizenToolKit/models/nomdelelement.php

<?php 
class Nomdelelement {

  const COLLECTION = "nomdelelement";
  const CONTROLLER = "nomdelelement";
  const ICON = "fa-rss";
  const COLOR = "#F9B21A";

  public static function nomdelafonction() {
  }

}

 

3- Créer un nouveau controller dans le module CO2

C'est lui qui sera appelé en premier et qui redigirera vers le controller du module CitizenToolKit. Créer le fichier /modules/co2/controllers/NomdelelementController.php et le remplir comme dans l'exemple suivant :

<?php
/**
 * NomdelelementController.php
 * 
 * description
 *
 * @author: Prénom Nom <email@email.ext>
 * Date: dd/mm/yyyy
 */

class NomdelelementController extends CommunecterController {
  protected function beforeAction($action) {
      parent::initPage();
      return parent::beforeAction($action);
  }

  public function actions()
  {
    return array(
      'index'       => 'citizenToolKit.controllers.nomdelelement.IndexAction',
      'autre'       => 'citizenToolKit.controllers.nomdelelement.AutreAction'
    );
  }
}

L'array retourné par la fonction actions() contient l'essemble des pages qui seront traitées par les classes précédemment créées dans le module CitizenToolKit.

 

4- Créer les liens vers les actions

Dans /modules/co2/components/CommunecterController.php, il faut créer les liens vers les actions (qui afficheront les sous pages) dans l'array $pages :

"nomdelelement" => array(
  "index"   => array("href" => "/ph/communecter/nomdelelement/index", "public" => true),
  "autre"   => array("href" => "/ph/communecter/nomdelelement/autre", "public" => true)
),

 

5- Créer la vue

Elle est appelée par le contrôleur pour gérer l'affichage (code HTML, CSS, JS).

Créer le dossier /modules/co2/views/nomdelelement puis fichiers nommés en fonction du nom des actions :

 

6- Accéder à l'élément

http://127.0.0.1/co2/nomdelelement/index ou http://127.0.0.1/co2/nomdelelement/autre