Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (16607)
This diff is collapsed.
This diff is collapsed.
variables:
MYSQL_HOST: registry.afi-sa.net__hds__mariadb-docker
MYSQL_DATABASE: "bokeh_build_${CI_BUILD_REF}"
MYSQL_ROOT_PASSWORD: root
BOKEH_HTML_VALIDATOR_URL: "http://sthysel__nuhtml:8888"
test:php81_bokeh:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:8.1-dev
pull_policy: always
services:
- sthysel/nuhtml
script:
- bash build_bokeh.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 81_bokeh
test:php81_other:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:8.1-dev
pull_policy: always
services:
- registry.afi-sa.net/hds/mariadb-docker:10.11.8
- sthysel/nuhtml
script:
- bash scripts/ci_data_preparation.sh $MYSQL_DATABASE $MYSQL_HOST $MYSQL_ROOT_PASSWORD
- bash build_other.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 81_other
test:php81_scenario:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:8.1-dev
pull_policy: always
services:
- sthysel/nuhtml
script:
- bash build_scenario.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 81_scenario
test:php83_bokeh:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:alpine-8.3-dev
pull_policy: always
services:
- sthysel/nuhtml
script:
- bash build_bokeh.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 83_bokeh
test:php83_other:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:alpine-8.3-dev
pull_policy: always
services:
- registry.afi-sa.net/hds/mariadb-docker:10.11.8
- sthysel/nuhtml
script:
- bash scripts/ci_data_preparation.sh $MYSQL_DATABASE $MYSQL_HOST $MYSQL_ROOT_PASSWORD
- bash build_other.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 83_other
test:php83_scenario:
image:
name: registry.afi-sa.net/hds/php-nginx-docker:alpine-8.3-dev
pull_policy: always
services:
- sthysel/nuhtml
script:
- bash build_scenario.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD $MYSQL_HOST
except:
- tags
tags:
- 83_scenario
[submodule "library/storm"]
path = library/storm
url = https://git.afi-sa.net/afi/storm.git
[submodule "library/Redmine"]
path = library/Redmine
url = https://git.afi-sa.net/afi/php-redmine-api.git
[submodule "library/iCal"]
path = library/iCal
url = https://git.afi-sa.net/afi/iCal.git
[submodule "library/PhpParser"]
path = library/PhpParser
url = https://git.afi-sa.net/afi/PHP-Parser.git
[submodule "library/matomo-php-tracker"]
path = library/matomo-php-tracker
url = https://git.afi-sa.net/afi/matomo-php-tracker.git
[submodule "library/php-jwt"]
path = library/php-jwt
url = https://git.afi-sa.net/afi/php-jwt.git
[submodule "library/phpseclib"]
path = library/phpseclib
url = https://git.afi-sa.net/afi/phpseclib.git
[submodule "library/activitystreams"]
path = library/activitystreams
url = https://git.afi-sa.net/afi/activitystreams.git
[submodule "public/tarteaucitron"]
path = public/tarteaucitron
url = https://git.afi-sa.net/afi/tarte_au_citron.git
[submodule "tests_js/lib/chrome-php"]
path = tests_js/lib/chrome-php
url = https://git.afi-sa.net/afi/chrome-php.git
[submodule "library/emogrifier"]
path = library/emogrifier
url = https://git.afi-sa.net/afi/emogrifier.git
RewriteEngine on
RewriteCond %{REQUEST_URI} !/(xhprof_html|ckeditor)
RewriteRule !(userfiles|public|tmp|temp)/.*\.(js|ico|txt|gif|jpg|jpeg|png|css|xml|swf|mov|pdf|doc|docx|woff|eot|svg|ttf|xls|wsdl|mp3|m4v|ogg|ogv|epub|html|xhtml|asmx)$ index.php [NC,NE]
AddType application/x-javascript .js
AddType text/css .css
AddType application/json .json
<FilesMatch "\.(css|js)($|\?.*$)">
SetOutputFilter DEFLATE
Header add "Cache-Control" "max-age=604800, public"
</FilesMatch>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header add "Cache-Control" "max-age=604800, public"
</FilesMatch>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(google[a-z0-9]+\.html|.*/xhprof_html|ckeditor|exploit|\.well-known)
RewriteCond %{REQUEST_FILENAME} !^.*/robots\.txt$ [NC]
RewriteRule !(userfiles|public|tmp|temp|skins|library/templates|library/digital_resources/.*/js)/.*\.(js|ico|txt|gif|jpg|jpeg|png|css|xml|swf|mov|pdf|doc|docx|woff|woff2|eot|svg|ttf|xls|xlsx|xlsm|wsdl|mp3|m4v|ogg|ogv|epub|htm|html|xhtml|asmx|zip|sql|bro|flv|mp4|webm|tgz|json|geojson|xsl|ods|odp|odt|ots|ott|odm|odg|otg|otp)$ index.php [NC,NE]
AddType application/x-javascript .js
AddType text/css .css
AddType application/json .json
<FilesMatch "\.(css|js)($|\?.*$)">
SetOutputFilter DEFLATE
Header add "Cache-Control" "max-age=604800, public"
</FilesMatch>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header add "Cache-Control" "max-age=604800, public"
</FilesMatch>
VERSIONS
\ No newline at end of file
## Configurer le timeout pour les appels Webservice
Dans le fichier ./config.ini
Rajouter des clefs de style webservice_timeout
- webservice_timeout.all=10 pour permettre d'avoir un timeout de 10sec pour tout les appels Webservice
- webservice_timeout.Class_WebService_SIGB_Koha2405_Service=10 pour affecter un timeout que pour ce Webservice spécifique
# Contribute to source code
## Content
* [Prerequisite](#Prerequisite)
* [Create your own copy of the project](#Create-your-own-copy-of-the-project)
* [How to contribute to the source code](#How-to-contribute-to-the source-code)
* [Create a new skin](#Create-a-new-skin)
## Prerequisite
AFI & BIBLIBRE developpment teams use the opensource [forge](https://fr.wikipedia.org/wiki/Forge_%28informatique%29) libre [GitLab](https://www.gitlab.com) and the[SCM](https://fr.wikipedia.org/wiki/Gestion_de_versions) [Git](http://www.git-scm.com). Ce document décrit l'utilisation minimale nécessaire de ces deux outils pour pouvoir contribuer au code des projets maintenus par AFI et Biblibre. Néanmoins nous vous invitons à lire le livre [Pro Git](http://git-scm.com/book/fr).
Source code are hosted on https://git.afi-sa.fr. Public projects are accessible here https://git.afi-sa.fr/public.
## Create your own copy of the project
### Create a gitlab account
From the [Sign Up](http://git.afi-sa.fr/users/sign_up) page, you can create your account. You will receive a confirmation email.
### Clone the project
Once connected, from the [OPACCE project page](http://git.afi-sa.fr/afi/opacce), clic on the **Fork repository** button. You can also clone the project [here](http://git.afi-sa.fr/afi/opacce/fork).
This will create your own public copy of the project accessible through http://git.afi-sa.fr/my-account/opacce.
The SSH access is given from your project home page. for example git@git.afi-sa.fr:my_account/opacce.git
### Installing SSH access
In order to upload modifications on the gitlab you need SSH access. On [Your account page](http://git.afi-sa.fr/profile), in the [SSH Keys](http://git.afi-sa.fr/profile/keys) tab, use the link [Add SSH Key](http://git.afi-sa.fr/profile/keys/new).
#### Create & register your key
If you already have a key on your workstation in **~/.ssh/id_rsa.pub**, copy it.
otherwise, [ generate a key ](http://git.afi-sa.fr/help/ssh), with the following command:
```bash
ssh-keygen -t rsa -C "addresse_email@domaine.ext"
```
to show the content:
```bash
cat ~/.ssh/id_rsa.pub
```
#### configure SSH access
SS access uses **2950** port. Create or modify the **~/.ssh/config** file to add the following lines:
```
Host git.afi-sa.fr
Hostname git.afi-sa.fr
Port 2950
User git
IdentityFile ~/.ssh/id_rsa
```
## How to contribute to the source code
### Install your own copy of the project
The install process is described [Installation instructions](INSTALL.en.md), unlike described in the [Downloading source code](INSTALL.en.md#Downloading-source-code) section, you should use your own depository:
```bash
cd /var/www
git clone git@git.afi-sa.fr:mon_compte/opacce.git
```
### Update files and push them to gitlab
Once your done with your udpates, the file upload is done in two steps.
1. Commit your modifications locally
```bash
git commit -a -m "Commentaires des modifications"
```
2. Push your master branch to gitlab (origin):
```bash
git push origin master
```
For more details please check [Pro Git](http://git-scm.com/book/fr)
### Propose patches to the release team
On your private GitLab page, **Merge Requests** tab, clic on the link **+ New Merge Request** and fill the form to describe your patch.
### retrieve the last official release
Declate the official version depository (upstream) in your local project:
```bash
git remote add upstream git@git.afi-sa.fr:afi/opacce.git
```
Merge modifications:
```bash
# Download all modification from the master project
git fetch upstream master
# Merge the modifications in your local project
git merge upstream/master
# Push the result on the depository
git push origin master
```
## Create a new skin
### Create
Go to the skin directory in the root folder and duplicate it
```bash
cd skins
cp -a ../public/opac/skins/modele mon_skin
```
Go the the profil config page in the opac back office, you should see your skin in the combo.
### Save you skin on GitLab
Create a project on [GitLab](https://git.afi-sa.fr) to store the sourcecode. For exemple https://git.afi-sa.fr/mon_compte/mon_skin.
Go to my_skin and initialise the depository:
```bash
cd mon_skin
git init
git remote add origin -t master git@git.afi-sa.fr:mon_compte/mon_skin.git
git add *
git commit -m "Premier commit"
git push origin master
```
Now, new files should be acessible from https://git.afi-sa.fr/mon_compte/mon_skin/files
### Folder description
* **css/** contains the global.css file where to work. Other files are deprecated.
* **images/** icons **images/support/** for doc types. Files must be named: **support_id_.png**, for exemple **support_1.png** for books.
* **templates/** Box template on the home page. Files must be named with **_**, the liste will appear in the combo **Box style**. Every template can include tags **{TITRE}**, **{RSS}**, **{CONTENU}**. Pour avoir un rendu conditionnel, le fichier peut inclure les conditions **{IF-TITRE}**, **{IF-RSS}**, **{IF-CONTENU}** suivi de la balise **{ENDIF}**
```html
<div class="right-box">
<div class="right-box-inner">
{IF-TITRE}
<div class="header">
<div><h1>{TITRE}</h1></div>
<div class="rss">{RSS}</div>
</div>
{ENDIF}
<div class="content">
{CONTENU}
</div>
</div>
</div>
```
All files can be renamed in **application/modules/opac/views/scripts** . main files are:
* **footer.phtml** pour le pied de page
* **banniere.phtml** pour l'en-tête
* **skin_head.phtml** pour rajouter des éléments dans la balise **head** du site
* **accueil.phtml** pour la page d'accueil
* **contenu.phtml** pour les autres pages
\ No newline at end of file
# Contribuer au code source
## Contenu
* [Prérequis](#pr-requis)
* [Créer sa copie du projet](#cr-er-sa-copie-du-projet)
* [Contribuer au code](#contribuer-au-code)
* [Créer un nouveau skin](#cr-er-un-nouveau-skin)
## Prérequis
Les équipes de développement AFI et Biblibre utilisent le [sytème de gestion de développement](https://fr.wikipedia.org/wiki/Forge_%28informatique%29) libre [GitLab](https://www.gitlab.com) et le [système de gestion de version](https://fr.wikipedia.org/wiki/Gestion_de_versions) [Git](http://www.git-scm.com). Ce document décrit l'utilisation minimale nécessaire de ces deux outils pour pouvoir contribuer au code des projets maintenus par AFI et Biblibre. Néanmoins nous vous invitons à lire le livre [Pro Git](http://git-scm.com/book/fr).
Nous hébergeons les codes sources des projets sur une instance de GitLab accessible à l'URL https://git.afi-sa.fr. Les projets publics sont accessibles sans compte à l'URL https://git.afi-sa.fr/public.
## Créer sa copie du projet
### Créer un compte gitlab
Depuis la page [Sign Up](http://git.afi-sa.fr/users/sign_up) vous pouvez créer votre compte. Un mail sera automatiqument envoyé pour vous confirmer l'accès.
### Cloner le projet
Une fois connecté, depuis la [page du project OPACCE](http://git.afi-sa.fr/afi/opacce), cliquez sur le bouton **Fork repository**.
Cela vous créera une copie intégrale du projet, accessible publiquement à l'adresse http://git.afi-sa.fr/mon_compte/opacce.
L'accès SSH au dépôt git est donné sur la page d'accueil de votre projet. Par exemple git@git.afi-sa.fr:mon_compte/opacce.git
### Installer l'accès SSH
Le poussage de modifications sur gitlab requiert un accès ssh. Sur [la page de modification de votre profil](http://git.afi-sa.fr/profile), à l'onglet [SSH Keys](http://git.afi-sa.fr/profile/keys), le lien [Add SSH Key](http://git.afi-sa.fr/profile/keys/new) permet d'ajouter une clé.
#### Créer et déclarer sa clé
Si vous posséder déjà une clé sur votre poste de travail dans **~/.ssh/id_rsa.pub**, copiez le contenu.
Sinon pour [générer une clé SSH sur votre poste de travail](http://git.afi-sa.fr/help/ssh), utilisez la commande suivante:
```bash
ssh-keygen -t rsa -C "addresse_email@domaine.ext"
```
et pour afficher le contenu:
```bash
cat ~/.ssh/id_rsa.pub
```
#### Configurer l'accès SSH
L'accès SSH passe par le port **2950**. Créez ou modifiez le fichier **~/.ssh/config** pour y ajouter les lignes suivantes:
```
Host git.afi-sa.fr
Hostname git.afi-sa.fr
Port 2950
User git
IdentityFile ~/.ssh/id_rsa
```
## Contribuer au code
### Installer sa copie de l'OPAC
L'installation se déroule comme décrit [dans la procédure d'installation](INSTALL.fr.md), excepté que la commande pour cloner le projet décrite dans la section [Récupération des sources](INSTALL.md#Récupération-des-sources) utilise votre propre dépôt:
```bash
cd /var/www
git clone git@git.afi-sa.fr:mon_compte/opacce.git
```
### Faire des modifications et les pousser vers gitlab
Une fois quelques modifications effectuées, l'envoi des données se fait en deux temps.
1. Commit des modifications sur votre machine en local
```bash
git commit -a -m "Commentaires des modifications"
```
2. Pousser les modifications de votre branche master vers gitlab (origin):
```bash
git push origin master
```
Pour plus de détails, consultez [Pro Git](http://git-scm.com/book/fr)
### Proposer les modifications aux mainteneurs de la version officielle
Sur la page de votre projet GitLab, onglet **Merge Requests**, cliquez sur le lien **+ New Merge Request** et remplissez les différents champs pour décrire vos modifications.
### Récupérer les dernières modifications de la version officielle
Tout d'abord, il faut déclarer le dépôt de la version officielle (upstream) dans votre projet local:
```bash
git remote add upstream git@git.afi-sa.fr:afi/opacce.git
```
Ceci fait, vous pouvez fusionner les modifications dans votre branche:
```bash
# Télécharge toutes les nouvelles modifications du dépôt distant
git fetch upstream master
# Fusionne les nouvelles modifications dans votre répertoire
git merge upstream/master
# Pousse la fusion sur gitlab
git push origin master
```
## Créer un nouveau skin
### Création
Se placer dans le répertoire skins à la racine de l'OPAC et recopier le skin modele
```bash
cd skins
cp -a ../public/opac/skins/modele mon_skin
```
Aller dans la configuration d'un profil de l'OPAC, le nouveau skin devrait être disponible dans le sélecteur de thème.
### Sauvegarde sur GitLab
Créer le projet sur [GitLab](https://git.afi-sa.fr) pour stocker les sources. Par exemple https://git.afi-sa.fr/mon_compte/mon_skin.
Aller dans le répertoire mon_skin et initialiser le dépôt:
```bash
cd mon_skin
git init
git remote add origin -t master git@git.afi-sa.fr:mon_compte/mon_skin.git
git add *
git commit -m "Premier commit"
git push origin master
```
Ceci fait, les nouveaux fichiers devraient être accessibles sur https://git.afi-sa.fr/mon_compte/mon_skin/files
### Description des répertoires
* **css/** contient le fichier global.css sur lequel travailler. Les autres fichiers sont destinés à devenir obsolètes.
* **images/** les icônes, dont **images/support/** pour les types de support. Les fichiers doivent être nommés comme suit: **support_id_.png**, par exemple **support_1.png** pour les livres.
* **templates/** les modèles de rendu boite de la page d'accueil. Les fichiers doivent êtres nommés en séparant les mots par des tirets bas **_**, qui seront dans la configuration des boîtes **Style de boîte**. Chaque modèle de boîte peut inclure les tags **{TITRE}**, **{RSS}**, **{CONTENU}**. Pour avoir un rendu conditionnel, le fichier peut inclure les conditions **{IF-TITRE}**, **{IF-RSS}**, **{IF-CONTENU}** suivi de la balise **{ENDIF}**
```html
<div class="right-box">
<div class="right-box-inner">
{IF-TITRE}
<div class="header">
<div><h1>{TITRE}</h1></div>
<div class="rss">{RSS}</div>
</div>
{ENDIF}
<div class="content">
{CONTENU}
</div>
</div>
</div>
```
Tous les fichiers de vue du répertoire **application/modules/opac/views/scripts** peuvent être redéfinis dans un répertoire html. Les principaux sont:
* **footer.phtml** pour le pied de page
* **banniere.phtml** pour l'en-tête
* **skin_head.phtml** pour rajouter des éléments dans la balise **head** du site
* **accueil.phtml** pour la page d'accueil
* **contenu.phtml** pour les autres pages
\ No newline at end of file
CONTRIB.en.md
\ No newline at end of file
Sauf indiqué, cette procédure prends en compte par défaut les distributions GNU/Linux Ubuntu et Debian
* Prérequis: l'OPAC nécessite PHP 5.4 qui n'est pas encore par défaut dans Ubuntu. Il est nécessaire de déclarer le dépôt qui suit la dernière version de PHP comme ceci:
apt-get install python-software-properties
add-apt-repository ppa:ondrej/php5
apt-get update
* Paquets nécessaires:
apt-get install php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysql php5-xhprof graphviz apache2 mysql-server libapache2-mod-php5 subversion
(ArchLinux: yaourt -S php php-gd php-imagick xdebug php-pear apache mysql php-apache php-xhprof graphviz subversion)
* Configuration PEAR (en compte root / sudo):
pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
pear install pear.phpunit.de/PHPUnit_Story
pear install pear.phpunit.de/PHP_Invoker
pear install pear.phpunit.de/PHP_Timer
pear install pear.phpunit.de/PHP_TokenStream
pear install pear.phpunit.de/Text_Template
pear install pear.phpunit.de/DbUnit
pear install pear.phpunit.de/PHPUnit_Selenium
pear install phpunit/PHPUnit_TestListener_XHProf
pear install pear.phpunit.de/Diff
pear install pear.phpunit.de/Exporter
pear install pear.phpunit.de/Version
* Récupération des sources
svn checkout http://afi-forge.afi-sa.fr/svn/opacce/trunk afi-opac
svn checkout http://afi-forge.afi-sa.fr/svn/opacce/ZendFramework-1.6.2
* Configuration Apache / PHP:
Activez les modules :
a2enmod headers rewrite php5
(ArchLinux: modifiez /etc/httpd/conf/http.conf et ajoutez la ligne: LoadModule php5_module modules/libphp5.so)
Désactivez le module negotiation qui pose problème avec Zend Framework sur les urls index/index:
a2dismod negotiation
Dans /etc/php5/apache2/php.ini (ArchLinux: /etc/php/php.ini), configurer les variables suivantes:
post_max_size = 10M
upload_max_filesize = 10M
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
Activez les extensions suivantes: calendar, curl, gd, gettext, iconv, mcrypt, mysql, pdo_mysql, openssl, soap, imagick
Dans la conf Apache, supprimer l'option Indexes (listing des fichiers) et autoriser les .htaccess:
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
* Droits sur le répertoire temporaire
chmod 777 afi-opac/temp
* Configuration MySQL
Modifier /etc/mysql/my.cnf et ajouter dans la section [mysqld]:
#forcer l'indexation fulltext à partir de 2 lettres
ft_min_word_len = 2
Redémarrer mysql.
Notes: si des problèmes d'encodage de caractères sont visibles dans Cosmogramme, il est possible de forcer l'UTF8 comme ceci:
skip-character-set-client-handshake
character-set-server=utf8
Se connecter à mysql et importer le schema
mysql -uroot -ppass
mysql> create database opac;
mysql> connect opac;
mysql> source afi-opac/scripts/opac2.sql;
* Configuration Cosmogramme
Dans le répertoire cosmogramme, copiez config.ref.php vers config.php et configurez.
Connectez vous avec le compte admin/achanger et exécutez la mise à niveau de la base de données
* Configuration OPAC
Dans le répertoire afi-opac, copiez et configurez
config.ini.default -> config.ini
index.php.default -> index.php.default
touch local.php
* Se connecter à l'OPAC:
Utiliser le compte admin/achanger
* Pour lancer les tests de l'OPAC:
cd afi-opac/tests/
phpunit
This procedure is meant for Ubuntu et Debian GNU/Linux
# Necessary packages :
## PHP 7.4
### Debian Buster
```
apt-get install libapr1-dev libssl-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev imagemagick libmagickwand-dev libfontconfig bzip2 libmemcached-dev zlib1g-dev yaz default-mysql-client zip libzip-dev libxslt-dev
```
From PECL:
```
pecl install imagick-3.4.3RC1
pecl install memcached
pecl install mcrypt-1.0.3
```
## PHP 5.6
### Ubuntu Trusty
```
apt-get install python-software-properties php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd php5-xhprof graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz
```
### Debian Wheezy
```
apt-get install php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz
```
### ArchLinux
```
yaourt -S php php-gd php-imagick xdebug php-pear apache mariadb php-apache php-xhprof graphviz git
```
### CentOS
```
rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
yum install php54w php54w-gd php54w-pear php54w-mysql php54w-pecl-xdebug php54w-xml php54w-soap php54w-mbstring
```
You need to build Imagick extension from scratch
# Install PHPUnit (Account root / sudo):
```
cd /usr/local/bin
wget https://phar.phpunit.de/phpunit-5.7.27.phar
mv phpunit.phar phpunit
```
# Downloading source code
```
cd /var/www
git clone http://git.afi-sa.fr/afi/opacce.git opacce
```
Launch update.sh script
```
cd opacce
./update.sh
```
# Apache webserver:
## Activate the following modules :
### Debian
```
a2enmod headers rewrite php5
```
### ArchLinux:
Modify /etc/httpd/conf/http.conf and add the line:
```
LoadModule php5_module modules/libphp5.so
```
Activate mod_mpm_prefork (see https://wiki.archlinux.org/index.php/Apache_HTTP_Server#PHP).
Deactivate negotiation module which is in conflict with Zend Framework on index/index urls:
```
a2dismod negotiation
```
## Configure Apache
In Apache conf, delete indexes option (file list) and authorise .htaccess:
```
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
```
Warning: For apache 2.4
```
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
```
# Nginx webserver (experimental)
Using Nginx imply using PHP in PHP-FPM mode.
Recommaded configuration use 2 files.
This provides a mean to have factorised Bokeh configuration and a custom configuration for each Bokeh instance.
## Include file « bokeh.inc », store it for example in /etc/nginx/conf-enabled
```
# Include directives for Bokeh portal
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny access to sensitive files.
location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {
#deny all;
return 403;
}
location ~ /(\.|\.htaccess|config\.(ini|php)) {
#deny all;
return 403;
}
# Path without redirection
location ~ /(xhprof_html|ckeditor|\.well-known) {
}
# Serve PHP
location ~ /cosmogramme/cosmozend {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/cosmogramme/cosmozend/index.php;
fastcgi_param SCRIPT_NAME /cosmogramme/cosmozend/index.php;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass bokeh-dock:9000;
}
location ~ (\.php$|/(cosmogramme|exploit/(test\.php|fpm-ping|fpm-status))) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass bokeh-dock:9000;
}
```
## Vhost file, adapt it to your needs (change URL_Bokeh, Path_Bokeh_Dir, Bokeh_Dir, …)
```
server {
listen 80;
index index.php;
server_name <URL_Bokeh>;
root <Path_Bokeh_Dir>/<Bokeh_Dir>;
access_log "<Path_Nginx_Log>/<URL_Bokeh>_access.log";
error_log "<Path_Nginx_Log>/<URL_Bokeh>_error.log";
location / {
try_files $uri $uri/ @rewrite;
}
# if the requested file exists, return it immediately
if (-f $request_filename) {
break;
}
location @rewrite {
rewrite ^(.*)$ /index.php last;
}
include /etc/nginx/conf-enabled/bokeh.inc;
}
```
## Example content of etc/nginx/fastcgi_params
```
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
```
# Configure PHP
In /etc/php5/apache2/php.ini (ArchLinux: /etc/php/php.ini), configure the following variables:
```
post_max_size = 10M
upload_max_filesize = 10M
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
```
Activate the following extensions if they are not already actived (they should be):
```
php5enmod calendar curl gd gettext iconv mcrypt mysql pdo_mysql openssl soap imagick
```
On Archinux uncomment the corresponding lines.
# Write permission on directories
- userfiles hold all uploaded files and files harvested from digital resources.
- temp hold cache files, edit history and files generated by Bokeh.
Example:
```
chmod -R 777 opacce/userfiles
chmod -R 777 opacce/temp
```
If you don't want to give write permission to anybody, you must give it to the user who owns the PHP process at least.
# MySQL config
## Finalise the installation (ArchLinux)
See https://wiki.archlinux.org/index.php/MySQL#Installation
# Configuration
Edit /etc/mysql/my.cnf and add to the [mysqld] section the following line (in order to force fulltext indexation from the first letter)
```
ft_min_word_len = 1
ft_stopword_list = /dev/null
```
The stopword list can be set to a file in which you can define any word to be ignored.
Restart mysql.
Warning: If you have encoding problems, in Cosmogramme, you can force UTF8 like this:
```
skip-character-set-client-handshake
character-set-server=utf8
```
Connect to mysql and import the database schema
```
mysql -uroot -ppass
mysql> create database opac;
mysql> connect opac;
mysql> source opacce/scripts/opac2.sql;
```
# OPAC Config
In the opacce directory, copy and configure
```
cp config.ini.default config.ini
touch local.php
```
# Cosmogramme Config
In the cosmogramme folder, copy and configure
```
cp config.ref.php config.php
```
go to http://localhost/opacce/cosmogramme
connnect with the account admin/achanger and click on the patch update link
# Connect to the opac
Use the account compte admin/achanger
go to http://localhost/opacce/admin
# To run the tests:
```
cd opacce/tests/
phpunit
```
Sauf indiqué, cette procédure prends en compte par défaut les distributions GNU/Linux Ubuntu et Debian
# Paquets nécessaires:
## PHP 7.4
### Debian Buster
```
apt-get install libapr1-dev libssl-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev imagemagick libmagickwand-dev libfontconfig bzip2 libmemcached-dev zlib1g-dev yaz default-mysql-client zip libzip-dev libxslt-dev
```
Depuis PECL:
```
pecl install imagick-3.4.3RC1
pecl install memcached
pecl install mcrypt-1.0.3
```
## PHP 5.6
## Ubuntu Trusty
```
apt-get install python-software-properties php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd php5-xhprof graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz
```
## Debian Wheezy-Jessie
```
apt-get install php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz php5-xhprof
```
## ArchLinux
```
yaourt -S php php-gd php-imagick xdebug php-pear apache mariadb php-apache php-xhprof graphviz git php-mcrypt binutils automake autoconf gcc make fakeroot
```
## CentOS
```
rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
yum install php54w php54w-gd php54w-pear php54w-mysql php54w-pecl-xdebug php54w-xml php54w-soap php54w-mbstring
```
Il est nécessaire de compiler Imagick extension à partir des sources.
# Installer PHPUnit (en compte root / sudo):
Rechercher le numéro de la dernière version *phpunit-x.x.x.phar* sur [https://phar.phpunit.de](https://phar.phpunit.de)
```
cd /usr/local/bin
wget https://phar.phpunit.de/phpunit-5.7.27.phar
mv phpunit-x.x.x.phar phpunit
chmod +x phpunit
```
# Récupération des sources
```
cd /var/www
git clone http://git.afi-sa.fr/afi/opacce.git opacce
```
Lancer le script update.sh
```
cd opacce
./update.sh
```
# Serveur web Apache :
## Activez les modules :
### Debian
```
a2enmod headers rewrite php5
```
### ArchLinux:
Modifiez /etc/httpd/conf/http.conf et ajoutez la ligne:
```
LoadModule php5_module modules/libphp5.so
```
Activer mod_mpm_prefork (voir https://wiki.archlinux.org/index.php/Apache_HTTP_Server#PHP).
Désactivez le module negotiation qui pose problème avec Zend Framework sur les urls index/index:
```
a2dismod negotiation
```
## Configurer Apache
Dans la conf Apache (/etc/apache2/sites-available/votre-site.conf), supprimer l'option Indexes (listing des fichiers) et autoriser les .htaccess:
```
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
```
```
<VirtualHost *:80>
DocumentRoot /emplacement/du/repertoire/Bokeh/
ServerName monSiteBokeh.fr
AllowEncodedSlashes NoDecode
</Directory>
```
Note: pour apache 2.4
```
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
```
# Serveur web Nginx (experimental)
Le fait d’utiliser Nginx comme serveur Web implique d’utiliser le moteur PHP en mode FPM.
La configuration recommandée utilise 2 fichiers qui présentent l’intérêt d’avoir des fichiers vHost simplifiés et permettent de concentrer le paramétrage commun à tous les vHost dans un fichier annexe, qui fait un peu le même job que le fichier .htaccess sous Apache.
## Fichier d’include « bokeh.inc » à placer par exemple dans /etc/nginx/conf-enabled
```
# Include directives for Bokeh portal
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny access to sensitive files.
location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {
#deny all;
return 403;
}
location ~ /(\.|\.htaccess|config\.(ini|php)) {
#deny all;
return 403;
}
# Path without redirection
location ~ /(xhprof_html|ckeditor|\.well-known) {
}
# Serve PHP
location ~ /cosmogramme/cosmozend {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/cosmogramme/cosmozend/index.php;
fastcgi_param SCRIPT_NAME /cosmogramme/cosmozend/index.php;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass bokeh-dock:9000;
}
location ~ (\.php$|/(cosmogramme|exploit/(test\.php|fpm-ping|fpm-status))) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass bokeh-dock:9000;
}
```
## Fichier vhost à adapter à votre propre cas (changer URL_Bokeh, Path_Bokeh_Dir, Bokeh_Dir, …)
```
server {
listen 80;
index index.php;
server_name <URL_Bokeh>;
root <Path_Bokeh_Dir>/<Bokeh_Dir>;
access_log "<Path_Nginx_Log>/<URL_Bokeh>_access.log";
error_log "<Path_Nginx_Log>/<URL_Bokeh>_error.log";
location / {
try_files $uri $uri/ @rewrite;
}
# if the requested file exists, return it immediately
if (-f $request_filename) {
break;
}
location @rewrite {
rewrite ^(.*)$ /index.php last;
}
include /etc/nginx/conf-enabled/bokeh.inc;
}
```
## Pour information exemple de fichier etc/nginx/fastcgi_params
```
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
```
# Configurer PHP
Dans /etc/php5/apache2/php.ini (ArchLinux: /etc/php/php.ini), configurer les variables suivantes:
```
post_max_size = 10M
upload_max_filesize = 10M
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
extension = xhprof.so
xhprof.output_dir = /chemin/vers/bokeh/temp
```
Activez les extensions suivantes si elles ne le sont pas déjà (elles devraient l'être) :
```
php5enmod calendar curl gd gettext iconv mcrypt mysql pdo_mysql openssl soap imagick
```
Sur ArchLinux décommenter les lignes correspondantes.
# Droits d'écriture sur les répertoires
- userfiles contient tous les fichiers téléversés via l'interface Bokeh ou moissonés sur des ressources tierces.
- temp contient les fichiers de caches, fichiers d'historiques de modification, et autres fichiers générés par Bokeh.
Par exemple:
```
chmod -R 777 opacce/userfiles
chmod -R 777 opacce/temp
```
Si vous ne souhaitez pas donner les droits d'écriture à tous sur ces répertoires, vous devez donner la permission à l'utilisateur sous lequel s'exécute le code PHP.
# Configuration MySQL
## Finaliser l'installation (ArchLinux)
Voir https://wiki.archlinux.org/index.php/MySQL#Installation
## Configuration
Modifier /etc/mysql/my.cnf pour forcer l'indexation fulltext à partir de 1 lettre : ajouter dans la section [mysqld] :
```
ft_min_word_len = 1
```
Redémarrer mysql.
Notes: si des problèmes d'encodage de caractères sont visibles dans Cosmogramme, il est possible de forcer l'UTF8 comme ceci:
```
skip-character-set-client-handshake
character-set-server=utf8
```
Se connecter à mysql et importer le schema
```
mysql -uroot -ppass
mysql> create database opac;
mysql> connect opac;
mysql> source opacce/scripts/opac2.sql;
```
# Configuration OPAC
Dans le répertoire opacce, copiez et configurez
```
cp config.ini.default config.ini
touch local.php
```
# Configuration Cosmogramme
Dans le répertoire cosmogramme, copiez et configurez
```
cp config.ref.php config.php
```
Allez sur http://localhost/opacce/cosmogramme
# Mise à jour de la base de données
En ligne de commande:
```
php scripts/upgrade_db.php
```
ou bien via navigateur web:
- Pointez votre navigateur sur http://localhost/opacce/cosmogramme/ et connectez vous avec le compte admin / achanger.
- De là, cliquez sur le lien **Vous devez exécuter une mise à niveau de la base de données**.
# Se connecter à l'OPAC:
Vous pouvez maintenant administrer Bokeh à l'adresse http://localhost/opacce/admin avec le compte admin / achanger.
Les URLs sont:
- interface publique: http://localhost/opacce
- interface d'administration: http://localhost/opacce/admin
- interface de configuration des intégrations SIGB: http://localhost/opacce/cosmogramme
# Pour lancer les tests de l'OPAC:
```
cd opacce/tests/
phpunit
```
# Préparation de Windows
Téléchargez et installez le paquet [Microsoft Visual C++ 2008 Redistributable](http://www.microsoft.com/en-us/download/details.aspx?id=5582)
Cela nécessite le redémarrage de windows.
# Installation de la pile Apache + MySQL + PHP
Télécharger [XAMPP portable pour Windows](http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.3/xampp-portable-win32-5.6.3-0-VC11.zip/download)
Décompressez l'archive et déplacez le répertoire **xamp** à la racine d'un disque (ex: D:\xampp\)
Lancer le programme **D:\xampp\xampp-control** puis démarrez les services MySQL et Apache. Depuis un navigateur web, allez sur la page http://localhost. Vous devriez arriver sur une page avec le logo XAMPP.
# Configuration d'Apache
Modifiez le fichier D:\xampp\apache\conf\http.conf et décommentez la ligne suivante (ligne 108 et 115)
```
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so
```
Note si vous utilez une version d'Apache différente de celle abordée ici: assurez-vous de l'activation des modules ''headers'' et ''rewrite''.
# Récupération des sources
Téléchargez et installez [SourceTree pour l'accès GIT](http://www.sourcetreeapp.com/)
Ceci fait, dans le menu **Fichier** sélectionnez **Cloner / nouveau** et remplisser le formulaire comme suit:
* Source / URL: **http://git.afi-sa.fr/afi/opacce.git**
* Destination: **D:\xampp\htdocs\opacce**
et cliquez sur **Cloner**.
# Création de la base de données
Pointez votre navigateur web sur http://localhost/phpmyadmin pour accéder à l'outil d'administration MySQL.
Dans l'onglet **Bases de données** créez la base **opacce** puis sélectionnez la dans l'arborescence de gauche.
Dans l'onglet **Plus** sélectionnez **Importez**, puis importez le ficher **D:\xampp\htdocs\opacce\scripts\opac2.sql**.
# Configuration de Bokeh
Depuis le répertoire D:\xampp\htdocs\opacce, copiez le fichier **config.ini.default** en **config.ini** et modifiez les lignes suivantes:
```
sgbd.config.username = root
sgbd.config.password =
sgbd.config.dbname = opacce
```
Depuis le répertoire D:\xampp\htdocs\opacce\cosmogramme, copiez le fichier **config.ref.php** en **config.php** et modifiez les lignes suivantes:
```
integration_user=root
integration_pwd=
integration_base=opacce
pwd_master=opacce
```
Créez un fichier vide **D:\xampp\htdocs\opacce\local.php** (celui-ci sert à surcharger des configurations globales au site).
# Mise à jour de la base de données
Pointez votre navigateur sur http://localhost/opacce/cosmogramme/ et connectez vous avec le compte admin / achanger.
De là, cliquez sur le lien **Vous devez exécuter une mise à niveau de la base de données**.
# Terminé !
Vous pouvez maintenant administrer Bokeh à l'adresse http://localhost/opacce/admin avec le compte admin / achanger.
Les URLs sont:
- interface publique: http://localhost/opacce
- interface d'administration: http://localhost/opacce/admin
- interface de configuration des intégrations SIGB: http://localhost/opacce/cosmogramme
COPYING
\ No newline at end of file
Logo_biblioaccess.png

3.38 KiB

AFI-OPAC 2.0 is released under a dual-license AGPL / Proprietary use.
Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
You can redistribute it and/or modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by the Free Software Foundation (see COPYING)
Third-Party Components and their license are listed in doc/extern_libs.txt
# Bokeh Portal Library
## Learn
* User documentation can be read on [the official Wiki](http://wiki.bokeh-library-portal.org/)
* [User friendly changelog](VERSIONS)
* [Developer changelog](VERSIONS_DEV.md)
## Install
See [english](INSTALL.en.md) or [french](INSTALL.fr.md) documentation.
## Develop
See [How to contribute](http://git.afi-sa.fr/afi/opacce/blob/master/CONTRIB.en.md) or [comment contribuer](http://git.afi-sa.fr/afi/opacce/blob/master/CONTRIB.fr.md)
## Config
See [How to contribute](http://git.afi-sa.fr/afi/opacce/blob/master/CONFIG.fr.md)
## License
BOKEH is released under a dual-license AGPL / Proprietary use.
Copyright \(c\) 2012, 2013, 2014, 2015 Agence Française Informatique \(AFI\). All rights reserved.
You can redistribute it and/or modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by the Free Software Foundation \([see COPYING](COPYING)\)
[Third-Party Components and their license] (doc/extern_libs.org)
## Version
BOKEH version : https://semver.org/spec/v2.0.0.html
Actual 9.0.1-Focale
Sauf indiqué, cette procédure prend en compte par défaut les distributions GNU/Linux Ubuntu et Debian
# Pré-requis
## Sauvegarder votre site
Pensez à faire une sauvegarde de votre base de données ainsi que de votre dossier de sources.
En effet, si la base de données est impactée dans la mise à jour il est fortement déconseillé d'essayer de "downgrader" après application des patchs.
Si vous constatez un problème suite à la mise à jour, nous vous conseillons de réinjecter votre dump de base de données et de faire un retour arrière sur les sources.
## Mettre votre site en maintenance
Vous pouvez mettre votre site en maintenance avant de commencer toute opération: dans l'interface d'administration sur la page d'accueil il y a un lien "rendre le site indisponible".
À la fin de l'opération, pensez à cliquer sur "remettre le site en ligne".
## Identifier la version ciblée
Lorsqu'une version est publiée par l'équipe Bokeh, elle est identifiable par un [tag](http://git.afi-sa.fr/afi/opacce/tags).
Les apports des versions sont consignés dans le fichier [VERSIONS de la racine du projet](http://git.afi-sa.fr/afi/opacce/blob/master/VERSIONS).
Les dernières versions majeurs sont complétées par une [page dans le wiki](http://wiki.bokeh-library-portal.org/index.php/Category:Notes_de_version) qui apporte un éclairage plus fonctionnel aux ajouts des développements.
## Collecter les versions intermédaires
Si votre installation de BOKEH est très éloignés de la version que vous ciblez, il est probable que vous deviez d'abord mettre à jour votre installation vers des versions intermédiaires.
Il s'agit principalement de versions contenant des patchs de base de données qui sont dépendants de la version du code source de Bokeh.
Veuillez strictement respecter ces installations intermédiaires pour ne pas compromettre votre mise à jour.
# Mise à jour de Bokeh vers une version
La mise à jour d'un portail se fait à l'aide de plusieurs commandes :
- des commandes pour mettre à jour les sources du projets
- des commandes pour mettre à jour la base de données.
À la racine de votre installation de BOKEH, lancez la commande suivante pour récupérer les sources depuis le dépôt GIT officiel :
```
git checkout XXX
```
XXX étant un [tag](http://git.afi-sa.fr/afi/opacce/tags)
À la racine de votre installation de BOKEH, lancez le script suivant pour mettre à jour les projets dont dépend BOKEH :
```
$ bash update.sh
```
À la racine du dossier qui contient le fichier d'accès à la base de données (config.ini), lancer le script suivant pour mettre à jour la base de données :
```
$ php scripts/upgrade_db.php
```
# Informations sur les versions
## MariaDB
Bokeh requiert a minima MariaDB 10.3
## Moteur PHP
### PHP 5.6
Dernière version 8.0.139
### PHP 7.2
Dernière version 8.0.147
### PHP 7.4
Dernière version : 8.0.204
### PHP 8.1
Version minimum : 8.0.157
Dernière version : en cours
### PHP 8.3
Version minimum : Focale.0
Dernière version : en cours
## Migration de base de données en PHP
Tant que votre version de Bokeh est inférieure à l'une des versions suivantes,
vous devez procéder à l'étape d'installation de chacune d'elle.
- 8.0.141 - 11/10/2021 : cosmogramme/sql/patch/patch_403.php
- 8.0.144 - 08/11/2021 : cosmogramme/sql/patch/patch_417.php
cosmogramme/sql/patch/patch_418.php
- 8.0.149 - 17/01/2022 : cosmogramme/sql/patch/patch_423.php
cosmogramme/sql/patch/patch_424.php
- 8.0.151 - 24/01/2022 : cosmogramme/sql/patch/patch_425.php
- 8.0.152 - 15/02/2022 : cosmogramme/sql/patch/patch_426.php
- 8.0.157 - 23/05/2022 : cosmogramme/sql/patch/patch_429.php
cosmogramme/sql/patch/patch_430.php
- 8.0.158 - 16/05/2022 : cosmogramme/sql/patch/patch_431.php
- 8.0.159 - 31/05/2022 : cosmogramme/sql/patch/patch_432.php
- 8.0.162 - 12/07/2022 : cosmogramme/sql/patch/patch_434.php
cosmogramme/sql/patch/patch_435.php
- 8.0.167 - 06/09/2022 : cosmogramme/sql/patch/patch_437.php
## Opérations spécifiques
### Version 8.0.162
#### Recherche plus exacte
Si vous avez déjà des données en base avant de passer Bokeh en version 8.0.162 ou supérieure,
Pour réindexer toutes les notices de la base de données de façon à tirer le meilleur parti des améliorations du moteur de recherche et de pertinence.
au cas où vous souhaitiez avoir un accès rapide à cette fonctionnalité il est nécessaire de lancer le script
`scripts/reindex_local_unimarc.php`
Vous pouvez aussi attendre un réimport total de votre catalogue.
#### Parcourir les étagères
Pour que vos utilisateurs puissent parcourir les documents de la même étagère,
Vous pouvez activer le parcours des étagères dans la configuration de la boite exemplaire.
Cela fait appel à des clés de parcours d'étagères qui ont besoin d'être calculées et stockées
au cas où vous souhaitiez avoir un accès rapide à cette fonctionnalité il est nécessaire de lancer le script
`scripts/index_items_shelf_key.php`
Vous pouvez aussi attendre un réimport total de votre catalogue.
#### Identifiant unique PPN et Ark
Pour que vous puissiez accéder aux ressources du portail de type notice depuis un autre système avec un identifiant unique.
Après avoir configuré le profil de données du cosmogramme pour ajouter la définition de l'identifiant unique,
pour réindexer l'unimarc présent dans les notices et mettre à jour les données en base, il est nécessaire de lancer le script
`scripts/identifiers_records.php`
Vous pouvez aussi attendre un réimport total de vos notices.
## Changement de structure HTML pouvant impacter votre charte graphique
- 8.0.154 - 20/03/2022 : Suite à une amélioration RGAA des thèmes du magasin de thèmes, les tag "a" servant à afficher un dropdown ont été modifiés en tag "button".
- 8.0.158 - 16/05/2022 : Passage de jQuery 3.2.1 en 3.6.0
- 8.0.159 - 31/05/2020 : Suite à une amélioration de l'ergonomie, le résultat de recherche
et la liste des exemplaires dans le magasin de thèmes passent de
l'affichage mur à l'affichage grille.
- 8.0.160 - 20/06/2022 : cosmogramme/sql/patch/patch_433.php
- 8.0.170 - 29/09/2022 : Pour faciliter la personnalisation, les titres des notices sont maintenant composés de balises span ayant comme classe le champs UNIMARC.
- 8.0.179 - 04/04/2023 : Patch correctif de la migration des abonnements des utilisateurs.
- Focale.0 - 04/02/2025 : Suite à une amélioration RGAA, migration des h3 en h2 dans le magasin de thème.
This diff is collapsed.