Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1764 → Rev 1765

/trunk/scripts/modules/maj-code-DB-access-201307.sh
New file
0,0 → 1,49
#!/bin/bash
# @author Raphaël Droz <raphael@tela-botanica.org>
# @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
# @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
# @copyright © 2013, Tela Botanica
 
# Met à jour les appels à la database via l'instance $this de Cel
# pour y substituer le singleton Cel::db()
# À lancer dans le répertoire racine.
 
# fichiers à traiter (dans jrest/)
fichiers=$(grep -rl 'extends Cel' jrest)
 
# liste des fonctions à substituer, obtenue à partir de:
# grep -A1 'delete wrappers' jrest/lib/Cel.php |grep 'function.*()'|awk -F '[ (]' '{print $3}'
wrappers=( requeter executer protegerRequete proteger executerRequeteSimple executerRequete getTxt )
chaine=$(export IFS='|'; echo "${wrappers[*]}");
 
 
# Les fichiers qui définissent ou redéfinissent l'une de ces fonctions doivent être modifiés à la main
# car il est légitime pour eux d'utiliser $this
a_exclure=$(grep -rEl "function ($chaine)\(" jrest)
# (ils représentent 10 occurences du pattern)
# en réalité les fichiers dans scripts/ n'ont pas besoin d'être modifiés
 
# la liste refiltrée des fichiers
fichiers=$(echo "$fichiers"|fgrep -v -f <(echo "$a_exclure"))
echo -e "a modifier manuellement:\n$a_exclure" >&2
 
 
# 3 backslashes:
# 1 pour ne pas interpréter $this par bash entre les ""
# 1 autre en tant que simple bashslash (donc doublé) pour éviter que sed ne considère '$' comme fin de ligne
 
# Première regexp:
# 0 substitutions, car seuls les fichiers dans scripts/ l'utilisent
# or ils n'étendent pas la classe Cel
# sed -E "s;\\\$this->bdd->($chaine)\(;Cel::db()->\1(;g" $fichiers
 
# Seconde regexp
# 489 substitutions:
# sed -nE "s;\\\$this->($chaine)\(;Cel::db()->\1(;gp" $fichiers
sed -i -E "s;\\\$this->($chaine)\(;Cel::db()->\1(;g" $fichiers
 
 
# Troisième passe: substitution de $this->bdd->quote()
# 25 substitutions
fichiers_quote=$(grep -rl '$this->bdd->quote(' jrest/services)
sed -i -E 's;\$this->bdd->quote\(;Cel::db()->quote(;g' $fichiers_quote
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:eol-style
+native
\ No newline at end of property