4 CALLEDPATH
=`dirname $0`
6 # Convert to an absolute path if necessary
9 CALLEDPATH
="$PWD/$CALLEDPATH"
13 if [ ! -f "$CALLEDPATH/setup.conf" ]; then
15 echo "Missing configuration file. Please copy $CALLEDPATH/setup.conf.txt to $CALLEDPATH/setup.conf and edit it."
19 source "$CALLEDPATH/setup.conf"
21 if [ "$1" = '-h' ] ||
[ "$1" = '--help' ]; then
22 echo; echo Usage
: setup.sh
[schema
file] [database data
file] [database name
] [database user
] [database password
] [database
host] [database port
] [additional args
]; echo
27 # fetch command line arguments if available
28 if [ ! -z "$1" ] ; then SCHEMA
="$1"; fi
29 if [ ! -z "$2" ] ; then DBLOAD
="$2"; fi
30 if [ ! -z "$3" ] ; then DBNAME
="$3"; fi
31 if [ ! -z "$4" ] ; then DBUSER
="$4"; fi
32 if [ ! -z "$5" ] ; then DBPASS
="$5"; fi
33 if [ ! -z "$6" ] ; then DBHOST
="$6"; fi
34 if [ ! -z "$7" ] ; then DBPORT
="$7"; fi
36 # verify if we have at least DBNAME given
37 if [ -z $DBNAME ] ; then
38 echo "No database name defined!"
41 if [ -z $DBUSER ] ; then
42 echo "No database username defined!"
45 if [ -z $DBPASS ] ; then
46 read -p "Database password:"
50 # run code generator if it's there - which means it's
51 # checkout, not packaged code
52 if [ -d "$CALLEDPATH/../xml" ]; then
53 cd "$CALLEDPATH/../xml"
54 "$PHP5PATH"php GenCode.php
$SCHEMA '' $GENCODE_CMS
57 # someone might want to use empty password for development,
58 # let's make it possible - we asked before.
59 if [ -z $DBPASS ]; then # password still empty
62 PASSWDSECTION
="-p$DBPASS"
66 if [ ! -z "$DBHOST" ]; then
67 HOSTSECTION
="-h $DBHOST"
71 if [ ! -z "$DBPORT" ]; then
72 PORTSECTION
="-P $DBPORT"
75 cd "$CALLEDPATH/../sql"
76 echo; echo "Dropping civicrm_* tables from database $DBNAME"
77 # mysqladmin -f -u $DBUSER $PASSWDSECTION $DBARGS drop $DBNAME
78 MYSQLCMD
="mysql -u$DBUSER $PASSWDSECTION $HOSTSECTION $PORTSECTION $DBARGS $DBNAME"
79 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'VIEW'" \
81 |
grep '^\(civicrm_\|log_civicrm_\)' \
82 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop view " $1 ";"}' \
84 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'BASE TABLE'" \
86 |
grep '^\(civicrm_\|log_civicrm_\)' \
87 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop table " $1 ";"}' \
91 echo; echo Creating database structure
92 $MYSQLCMD < civicrm.mysql
94 # load civicrm_generated.mysql sample data unless special DBLOAD is passed
95 if [ -z $DBLOAD ]; then
96 echo; echo Populating database with example data
- civicrm_generated.mysql
97 $MYSQLCMD < civicrm_generated.mysql
99 echo; echo Populating database with required data
- civicrm_data.mysql
100 $MYSQLCMD < civicrm_data.mysql
101 echo; echo Populating database with
$DBLOAD data
105 # load additional script if DBADD defined
106 if [ ! -z $DBADD ]; then
107 echo; echo Loading
$DBADD
111 # run the cli script to build the menu and the triggers
113 "$PHP5PATH"php bin
/cli.php
-e System
-a flush
--triggers 1 --session 1
115 # reset config_backend and userFrameworkResourceURL which gets set
116 # when config object is initialized
117 $MYSQLCMD -e "UPDATE civicrm_domain SET config_backend = NULL; UPDATE civicrm_setting SET value = NULL WHERE name = 'userFrameworkResourceURL';"
119 echo; echo "Setup Complete. Logout from your CMS to avoid session conflicts."