3 CALLEDPATH
=`dirname $0`
5 # Convert to an absolute path if necessary
8 CALLEDPATH
="$PWD/$CALLEDPATH"
12 source "$CALLEDPATH/setup.conf"
14 if [ "$1" = '-h' ] ||
[ "$1" = '--help' ]; then
15 echo; echo Usage
: setup.sh
[schema
file] [database data
file] [database name
] [database user
] [database password
] [additional args
]; echo
20 # fetch command line arguments if available
21 if [ ! -z $1 ] ; then SCHEMA
=$1; fi
22 if [ ! -z $2 ] ; then DBLOAD
=$2; fi
23 if [ ! -z $3 ] ; then DBNAME
=$3; fi
24 if [ ! -z $4 ] ; then DBUSER
=$4; fi
25 if [ ! -z $5 ] ; then DBPASS
=$5; fi
27 # verify if we have at least DBNAME given
28 if [ -z $DBNAME ] ; then
29 echo "No database name defined!"
32 if [ -z $DBUSER ] ; then
33 echo "No database username defined!"
36 if [ -z $DBPASS ] ; then
37 read -p "Database password:"
41 # run code generator if it's there - which means it's
42 # checkout, not packaged code
43 if [ -d $CALLEDPATH/..
/xml
]; then
45 "$PHP5PATH"php GenCode.php
$SCHEMA
48 # someone might want to use empty password for development,
49 # let's make it possible - we asked before.
50 if [ -z $DBPASS ]; then # password still empty
53 PASSWDSECTION
="-p$DBPASS"
57 echo; echo "Dropping civicrm_* tables from database $DBNAME"
58 # mysqladmin -f -u $DBUSER $PASSWDSECTION $DBARGS drop $DBNAME
59 MYSQLCMD
="mysql -u$DBUSER $PASSWDSECTION $DBARGS $DBNAME"
60 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'VIEW'" \
62 |
grep '^\(civicrm_\|log_civicrm_\)' \
63 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop view " $1 ";"}' \
65 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'BASE TABLE'" \
67 |
grep '^\(civicrm_\|log_civicrm_\)' \
68 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop table " $1 ";"}' \
72 echo; echo Creating database structure
73 mysql
-u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < civicrm.mysql
75 # load civicrm_generated.mysql sample data unless special DBLOAD is passed
76 if [ -z $DBLOAD ]; then
77 echo; echo Populating database with example data
- civicrm_generated.mysql
78 mysql
-u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < civicrm_generated.mysql
80 echo; echo Populating database with required data
- civicrm_data.mysql
81 mysql
-u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < civicrm_data.mysql
82 echo; echo Populating database with
$DBLOAD data
83 mysql
-u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < $DBLOAD
86 # load additional script if DBADD defined
87 if [ ! -z $DBADD ]; then
88 echo; echo Loading
$DBADD
89 mysql
-u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < $DBADD
92 # run the cli script to build the menu and the triggers
94 "$PHP5PATH"php bin
/cli.php
-e System
-a flush
--triggers 1 --session 1
96 # reset config_backend and userFrameworkResourceURL which gets set
97 # when config object is initialized
98 mysql
-u$DBUSER $PASSWDSECTION $DBARGS $DBNAME -e "UPDATE civicrm_domain SET config_backend = NULL; UPDATE civicrm_setting SET value = NULL WHERE name = 'userFrameworkResourceURL';"