Subversion Repositories eFlore/Applications.cel

Rev

Rev 1726 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1723 raphael 1
#!/bin/bash
2
# @author Raphaël Droz <raphael@tela-botanica.org>
3
# @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
4
# @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
5
# @copyright © 2013, Tela Botanica
6
 
7
# Met à jour les appels à la database via l'instance $this de Cel
8
# pour y substituer le singleton Cel::db()
9
# À lancer dans le répertoire racine.
10
 
11
# fichiers à traiter (dans jrest/)
12
fichiers=$(grep -rl 'extends Cel' jrest)
13
 
14
# liste des fonctions à substituer, obtenue à partir de:
15
# grep -A1 'delete wrappers' jrest/lib/Cel.php |grep 'function.*()'|awk -F '[ (]' '{print $3}'
16
wrappers=( requeter executer protegerRequete proteger executerRequeteSimple executerRequete getTxt )
17
chaine=$(export IFS='|'; echo "${wrappers[*]}");
18
 
19
 
20
# Les fichiers qui définissent ou redéfinissent l'une de ces fonctions doivent être modifiés à la main
21
# car il est légitime pour eux d'utiliser $this
22
a_exclure=$(grep -rEl "function ($chaine)\(" jrest)
23
# (ils représentent 10 occurences du pattern)
24
# en réalité les fichiers dans scripts/ n'ont pas besoin d'être modifiés
25
 
26
# la liste refiltrée des fichiers
27
fichiers=$(echo "$fichiers"|fgrep -v -f <(echo "$a_exclure"))
28
echo -e "a modifier manuellement:\n$a_exclure" >&2
29
 
30
 
31
# 3 backslashes:
32
# 1 pour ne pas interpréter $this par bash entre les ""
33
# 1 autre en tant que simple bashslash (donc doublé) pour éviter que sed ne considère '$' comme fin de ligne
34
 
35
# Première regexp:
36
# 0 substitutions, car seuls les fichiers dans scripts/ l'utilisent
37
# or ils n'étendent pas la classe Cel
38
# sed -E "s;\\\$this->bdd->($chaine)\(;Cel::db()->\1(;g" $fichiers
39
 
40
# Seconde regexp
41
# 489 substitutions:
42
# sed -nE "s;\\\$this->($chaine)\(;Cel::db()->\1(;gp" $fichiers
43
sed -i -E "s;\\\$this->($chaine)\(;Cel::db()->\1(;g" $fichiers
1726 raphael 44
 
45
 
46
# Troisième passe: substitution de $this->bdd->quote()
47
# 25 substitutions
48
fichiers_quote=$(grep -rl '$this->bdd->quote(' jrest/services)
49
sed -i -E 's;\$this->bdd->quote\(;Cel::db()->quote(;g' $fichiers_quote