diff --git a/.gitignore b/.gitignore index 2a0d854376..aa497ff606 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,8 @@ font-awesome ionicons fullcalendar moment +/src/skin/locale +/src/skin/fastclick # Configuration files with passwords src/Include/Config.php diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000000..185ac33752 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,254 @@ +module.exports = function (grunt) { + + +// Project configuration. + grunt.initConfig({ + composer: grunt.file.readJSON('src/composer.json'), + pkg: grunt.file.readJSON('package.json'), + clean: { + locale: ["src/skin/locale"], + skin: ["src/skin/{adminlte,font-awesome,ionicons,fullcalendar,moment,fastclick}"], + release: ["target"] + }, + copy: { + skin: { + files: [ + // includes files within path and its sub-directories + { + expand: true, + cwd: 'node_modules/admin-lte', + src: [ + '{dist,bootstrap,plugins}/**', + '!plugins/fullcalendar', + '!plugins/moment', + '!plugins/fastclick', + '!dist/img/**', + '!plugins/**/psd/**'], + dest: 'src/skin/adminlte/' + }, + { + expand: true, + cwd: 'node_modules/font-awesome', + src: ['{css,fonts,less,scss}/**'], + dest: 'src/skin/font-awesome/' + }, + { + expand: true, + cwd: 'node_modules/ionicons', + src: ['{css,fonts,less,png}/**'], + dest: 'src/skin/ionicons/' + }, + { + expand: true, + filter: 'isFile', + flatten: true, + src: ['node_modules/fullcalendar/dist/*'], + dest: 'src/skin/fullcalendar/'}, + { + expand: true, + filter: 'isFile', + flatten: true, + src: ['node_modules/moment/min/*'], + dest: 'src/skin/moment/'} + ] + } + }, + concat: { + options: { + separator: ';\n\n', + banner: '/*! <%= composer.version %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' + }, + de_DE: { + src: ['node_modules/fullcalendar/dist/locale/de.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.de.js'], + dest: 'src/skin/locale/de_DE.js' + }, + en_AU: { + src: ['node_modules/fullcalendar/dist/locale/en-au.js'], + dest: 'src/skin/locale/en_AU.js' + }, + en_GB: { + src: ['node_modules/fullcalendar/dist/locale/en-gb.js'], + dest: 'src/skin/locale/en_GB.js' + }, + en_US: { + src: [], + dest: 'src/skin/locale/en_US.js' + }, + es_ES: { + src: ['node_modules/fullcalendar/dist/locale/es.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.es.js'], + dest: 'src/skin/locale/es_ES.js' + }, + fr_FR: { + src: ['node_modules/fullcalendar/dist/locale/fr.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.fr.js'], + dest: 'src/skin/locale/fr_FR.js' + }, + hu_HU: { + src: ['node_modules/fullcalendar/dist/locale/hu.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.hu.js'], + dest: 'src/skin/locale/hu_HU.js' + }, + it_IT: { + src: ['node_modules/fullcalendar/dist/locale/it.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.it.js'], + dest: 'src/skin/locale/it_IT.js' + }, + nb_NO: { + src: ['node_modules/fullcalendar/dist/locale/nb.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.nb.js'], + dest: 'src/skin/locale/nb_NO.js' + }, + nl_NL: { + src: ['node_modules/fullcalendar/dist/locale/nl.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.nl.js'], + dest: 'src/skin/locale/nl_NL.js' + }, + pl_PL: { + src: ['node_modules/fullcalendar/dist/locale/pl.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.pl.js'], + dest: 'src/skin/locale/pl_PL.js' + }, + pt_BR: { + src: ['node_modules/fullcalendar/dist/locale/pt-br.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js'], + dest: 'src/skin/locale/pt_BR.js' + }, + ro_RO: { + src: ['node_modules/fullcalendar/dist/locale/ro.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.ro.js'], + dest: 'src/skin/locale/ro_RO.js' + }, + ru_RU: { + src: ['node_modules/fullcalendar/dist/locale/ru.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.ru.js'], + dest: 'src/skin/locale/ru_RU.js' + }, + sq_AL: { + src: ['node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.sq.js'], + dest: 'src/skin/locale/sq_AL.js' + }, + sv_SE: { + src: ['node_modules/fullcalendar/dist/locale/sv.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.sv.js'], + dest: 'src/skin/locale/sv_SE.js' + }, + vi_VN: { + src: ['node_modules/fullcalendar/dist/locale/vi.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.vi.js'], + dest: 'src/skin/locale/vi_VN.js' + }, + zh_CN: { + src: ['node_modules/fullcalendar/dist/locale/zh-cn.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js'], + dest: 'src/skin/locale/zh_CN.js' + }, + zh_TW: { + src: ['node_modules/fullcalendar/dist/locale/zh-tw.js', 'node_modules/admin-lte/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js'], + dest: 'src/skin/locale/zh_TW.js' + } + }, + 'curl-dir': { + datatables: { + src: ['https://cdn.datatables.net/plug-ins/1.10.12/i18n/{Albanian,Chinese-traditional,Chinese,Dutch,English,French,German,Hungarian,Italian,Norwegian-Bokmal,Polish,Portuguese,Romanian,Russian,Spanish,Swedish,Vietnamese}.json'], + dest: 'src/skin/locale/datatables' + }, + fastclick: { + src: ['https://raw.githubusercontent.com/ftlabs/fastclick/569732a7aa5861d428731b8db022b2d55abe1a5a/lib/fastclick.js'], + dest: 'src/skin/fastclick' + } + }, + rename: { + datatables: { + files: [ + {src: ['src/skin/locale/datatables/English.json'], dest: 'src/skin/locale/datatables/en_US.json'}, + {src: ['src/skin/locale/datatables/German.json'], dest: 'src/skin/locale/datatables/de_DE.json'}, + {src: ['src/skin/locale/datatables/Spanish.json'], dest: 'src/skin/locale/datatables/es_ES.json'}, + {src: ['src/skin/locale/datatables/French.json'], dest: 'src/skin/locale/datatables/fr_FR.json'}, + {src: ['src/skin/locale/datatables/Hungarian.json'], dest: 'src/skin/locale/datatables/hu_HU.json'}, + {src: ['src/skin/locale/datatables/Italian.json'], dest: 'src/skin/locale/datatables/it_IT.json'}, + {src: ['src/skin/locale/datatables/Norwegian-Bokmal.json'], dest: 'src/skin/locale/datatables/nb_NO.json'}, + {src: ['src/skin/locale/datatables/Dutch.json'], dest: 'src/skin/locale/datatables/nl_NL.json'}, + {src: ['src/skin/locale/datatables/Polish.json'], dest: 'src/skin/locale/datatables/pl_PL.json'}, + {src: ['src/skin/locale/datatables/Portuguese.json'], dest: 'src/skin/locale/datatables/pt_BR.json'}, + {src: ['src/skin/locale/datatables/Romanian.json'], dest: 'src/skin/locale/datatables/ro_RO.json'}, + {src: ['src/skin/locale/datatables/Russian.json'], dest: 'src/skin/locale/datatables/ru_RU.json'}, + {src: ['src/skin/locale/datatables/Albanian.json'], dest: 'src/skin/locale/datatables/sq_AL.json'}, + {src: ['src/skin/locale/datatables/Swedish.json'], dest: 'src/skin/locale/datatables/sv_SE.json'}, + {src: ['src/skin/locale/datatables/Vietnamese.json'], dest: 'src/skin/locale/datatables/vi_VN.json'}, + {src: ['src/skin/locale/datatables/Chinese.json'], dest: 'src/skin/locale/datatables/zh_CN.json'}, + {src: ['src/skin/locale/datatables/Chinese-traditional.json'], dest: 'src/skin/locale/datatables/zh_TW.json'} + ] + } + }, + compress: { + package: { + options: { + archive: 'target/ChurchCRM-<%= composer.version %>.zip', + mode: "zip", + pretty: true + }, + files: [ + { + expand: true, + cwd: 'src/', + src: [ + '**', + '**/.*', + '!**/.gitignore', + '!vendor/**/example/**', + '!vendor/**/tests/**', + '!vendor/**/docs/**', + '!Images/Person/thumbnails/*.jpg', + '!composer.lock', + '!Include/Config.php', + '!integrityCheck.json' + ], + dest: 'churchcrm/' + } + ] + } + }, + generateSignatures: { + sign:{ + version: '<%= composer.version %>', + files: [{ + expand: true, + cwd: 'src/', + src: [ + '**/*.php', + '**/*.js', + '!**/.gitignore', + '!vendor/**/example/**', + '!vendor/**/tests/**', + '!vendor/**/docs/**', + '!Images/Person/thumbnails/*.jpg', + '!composer.lock', + '!Include/Config.php', + '!integrityCheck.json' + ], + dest: 'churchcrm/' + }] + } + } + }); + + grunt.registerTask('hash','gets a file hash',function(arg1){ + var sha1 = require('node-sha1'); + grunt.log.writeln(sha1(grunt.file.read(arg1,{encoding:null}))); + }); + + grunt.registerMultiTask('generateSignatures', 'A sample task that logs stuff.', function() { + var sha1 = require('node-sha1'); + var signatures = { + "version":this.data.version, + "files":[] + } + this.files.forEach(function(filePair) { + isExpandedPair = filePair.orig.expand || false; + + filePair.src.forEach(function(src) { + if (grunt.file.isFile(src)) + { + signatures.files.push({"filename":src.substring(4),"sha1":sha1(grunt.file.read(src,{encoding:null}))}); + } + }); + }); + signatures.sha1=sha1(JSON.stringify(signatures.files)); + grunt.file.write("src/signatures.json",JSON.stringify(signatures)); + }); + + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-compress'); + grunt.loadNpmTasks('grunt-contrib-rename'); + grunt.loadNpmTasks('grunt-curl'); +}; diff --git a/generateSignatures.php b/generateSignatures.php deleted file mode 100644 index 385b2f3db3..0000000000 --- a/generateSignatures.php +++ /dev/null @@ -1,36 +0,0 @@ -version = $composerJson["version"]; -$signatureData->files = array(); - -$projectFiles = new RecursiveDirectoryIterator($CRMRoot); -$Iterator = new RecursiveIteratorIterator($projectFiles); -$Regex = new RegexIterator($Iterator, '/^.+\.(php|js)$/i', RecursiveRegexIterator::GET_MATCH); -foreach ($Regex as $obj ) -{ - $file = new stdClass(); - $file->filename = substr($obj[0], $CRMRootLen+1); - $file->sha1 = sha1_file($CRMRoot."/".$file->filename); - array_push($signatureData->files, $file); -} - -ksort($signatureData->files); - -$signatureData->sha1 = sha1(json_encode($signatureData->files)); -file_put_contents($signatureFile, json_encode($signatureData)); - -?> diff --git a/package.json b/package.json index fa97e66032..c8c605cf64 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,16 @@ "url": "https://github.com/ChurchCRM/CRM/issues" }, "homepage": "http://www.churchcrm.io", + "devDependencies": { + "grunt": "~0.4.1", + "grunt-curl": "~2.2.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-clean": "^1.0.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-compress": "^1.0.3", + "grunt-contrib-rename": "^0.0.3", + "node-sha1":"1.0.1" + }, "dependencies": { "admin-lte": "2.3.7", "ionicons": "2.0.1", @@ -23,7 +33,11 @@ "fullcalendar": "3.0.1" }, "scripts": { - "install": "/vagrant/scripts/build-skin.sh", - "locale-gen": "cd src && find . -iname '*.php' | grep -v ./vendor | xargs xgettext --from-code=UTF-8 -o locale/messages.po -L PHP" + "preinstall": "grunt clean", + "install": "grunt curl-dir && grunt copy", + "postinstall": "grunt concat && grunt rename", + "locale-gen": "/vagrant/scripts/update-locale.sh", + "package": "grunt generateSignatures && grunt compress", + "demosite": "/vagrant/scripts/demosite.sh" } } diff --git a/scripts/build-skin.sh b/scripts/build-skin.sh deleted file mode 100644 index baea3532fe..0000000000 --- a/scripts/build-skin.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -echo "============================= Building Skin ==================================" - -rm -rf /var/www/public/skin/adminlte -mkdir /var/www/public/skin/adminlte - -cp -rf /vagrant/node_modules/admin-lte/dist/ /var/www/public/skin/adminlte/dist -cp -rf /vagrant/node_modules/admin-lte/bootstrap/ /var/www/public/skin/adminlte/ -cp -rf /vagrant/node_modules/admin-lte/plugins/ /var/www/public/skin/adminlte/ - -echo "Build Skin: AdminLTE" - -rm -rf /var/www/public/skin/font-awesome/ -mkdir /var/www/public/skin/font-awesome/ - -cp -rf /vagrant/node_modules/font-awesome/css/ /var/www/public/skin/font-awesome/css/ -cp -rf /vagrant/node_modules/font-awesome/fonts/ /var/www/public/skin/font-awesome/ -cp -rf /vagrant/node_modules/font-awesome/less/ /var/www/public/skin/font-awesome/ -cp -rf /vagrant/node_modules/font-awesome/scss/ /var/www/public/skin/font-awesome/ - -echo "Build Skin: font-awesome" - -rm -rf /var/www/public/skin/ionicons/ -mkdir /var/www/public/skin/ionicons/ - -cp -rf /vagrant/node_modules/ionicons/css/ /var/www/public/skin/ionicons/css/ -cp -rf /vagrant/node_modules/ionicons/fonts/ /var/www/public/skin/ionicons/ -cp -rf /vagrant/node_modules/ionicons/less/ /var/www/public/skin/ionicons/ -cp -rf /vagrant/node_modules/ionicons/png/ /var/www/public/skin/ionicons/ - -echo "Build Skin: ionicons" - -wget -nv -O /vagrant/src/skin/adminlte/plugins/fastclick/fastclick.js https://raw.githubusercontent.com/ftlabs/fastclick/569732a7aa5861d428731b8db022b2d55abe1a5a/lib/fastclick.js -rm /vagrant/src/skin/adminlte/plugins/fastclick/fastclick.min.js - -echo "FastClick Patched for iOS Select2 Bug" - -rm -rf /var/www/public/skin/fullcalendar/ -mkdir /var/www/public/skin/fullcalendar/ - -cp -rf /vagrant/node_modules/fullcalendar/dist/* /var/www/public/skin/fullcalendar/ - -echo "Build Skin: Full Calendar" - -rm -rf /var/www/public/skin/moment/ -mkdir /var/www/public/skin/moment/ - -cp -rf /vagrant/node_modules/moment/min/* /var/www/public/skin/moment - -echo "Build Skin: Moment" diff --git a/scripts/demosite.sh b/scripts/demosite.sh new file mode 100644 index 0000000000..85316f4d60 --- /dev/null +++ b/scripts/demosite.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +buildversion=`grep version /vagrant/src/composer.json | cut -d ',' -f1 | cut -d'"' -f4` +demoKey=$1 +file=/vagrant/target/ChurchCRM-$buildversion.zip +currentBranch=`git rev-parse --abbrev-ref HEAD` +publishBranch=currentBranch +commitHash=`git log --pretty=format:'%H' -n 1` + + + +if [ -f $file ]; then + + if [ -z ${demoKey} ]; then + echo -n "Enter the demo site hook password and press [ENTER]: " + read demoKey + fi + + + if ! [[ $publishBranch == "develop" || $publishBranch == "develop" ]]; then + echo -n "Current branch is not master or develop. Enter branch to emulate: (develop)" + read publishBranch + publishBranch=${publishBranch:-develop} + fi + echo "**************************************" + echo "Beginning to publish demosite" + echo "Publishing ZipArchive: $file" + echo "Current Branch: $currentBranch" + echo "Publishing as Branch: $publishBranch" + echo "Current Commit Hash: $commitHash" + echo "**************************************" + result=`curl -s -F "demoKey=${demoKey}" -F "branch=${publishBranch}" -F "commitHash=${commitHash}" -F "fileupload=@${file}" http://demo.churchcrm.io/webhooks/DemoUpdate.php` + echo "Publishing Result" + echo $result + echo "**************************************" +else + echo "You must build the source before pushing to demo site" +fi + + + \ No newline at end of file diff --git a/scripts/extract-db-loacle-terms.sql b/scripts/extract-db-loacle-terms.sql deleted file mode 100644 index c26503c9e2..0000000000 --- a/scripts/extract-db-loacle-terms.sql +++ /dev/null @@ -1,13 +0,0 @@ -select DISTINCT cfg_tooltip as term, "" as translation, "config_cfg" as cntx from config_cfg -union all -select DISTINCT qry_Name as term, "" as translation, "query_qry" as cntx from query_qry -union all -select DISTINCT qry_Description as term, "" as translation, "query_qry" as cntx from query_qry -union all -select DISTINCT qpo_Display as term, "" as translation, "queryparameteroptions_qpo" as cntx from queryparameteroptions_qpo -union all -select DISTINCT qrp_Name as term, "" as translation, "queryparameters_qrp" as cntx from queryparameters_qrp -union all -select DISTINCT qrp_Description term, "" as translation, "queryparameters_qrp" as cntx from queryparameters_qrp -union all -select DISTINCT content_english as term, "" as translation, "menuconfig_mcf" as cntx from menuconfig_mcf; \ No newline at end of file diff --git a/scripts/extract-db-locale-terms.php b/scripts/extract-db-locale-terms.php new file mode 100644 index 0000000000..22c366566c --- /dev/null +++ b/scripts/extract-db-locale-terms.php @@ -0,0 +1,36 @@ +query($query) as $row) +{ + $stringFile = $stringsDir."/".$row['cntx'].".php"; + if (!file_exists($stringFile)) + { + file_put_contents($stringFile, "",FILE_APPEND); +} diff --git a/scripts/update-locale.sh b/scripts/update-locale.sh new file mode 100644 index 0000000000..c74e44c37c --- /dev/null +++ b/scripts/update-locale.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd /vagrant/src +find . -iname '*.php' | grep -v ./vendor | xargs xgettext --from-code=UTF-8 -o locale/messages.po -L PHP +cd /vagrant/scripts/ +php extract-db-locale-terms.php +cd db-strings +find . -iname "*.php" | xargs xgettext --join-existing --from-code=UTF-8 -o /vagrant/src/locale/messages.po +cd .. +rm db-strings/* \ No newline at end of file diff --git a/src/ChurchCRM/ArrayUtils.php b/src/ChurchCRM/ArrayUtils.php new file mode 100644 index 0000000000..f81e541c37 --- /dev/null +++ b/src/ChurchCRM/ArrayUtils.php @@ -0,0 +1,17 @@ +generateBankDepositSlip($Report); - - - // $this->generateDepositSummary($Report); + $this->generateDepositSummary($Report); // Export file diff --git a/src/ChurchCRM/model/ChurchCRM/Version.php b/src/ChurchCRM/model/ChurchCRM/Version.php index 3604d868d9..f6eedf5dd5 100644 --- a/src/ChurchCRM/model/ChurchCRM/Version.php +++ b/src/ChurchCRM/model/ChurchCRM/Version.php @@ -3,6 +3,7 @@ namespace ChurchCRM; use ChurchCRM\Base\Version as BaseVersion; +use ChurchCRM; /** * Skeleton subclass for representing a row from the 'version_ver' table. @@ -16,5 +17,31 @@ */ class Version extends BaseVersion { - + public function preSave(\Propel\Runtime\Connection\ConnectionInterface $con = null) + { + //before we try to save this version object to the database, ensure that + //the database has the correct columns to accomedate the version data + + $query = "DESCRIBE version_ver"; + $statement = $con->prepare($query); + $resultset = $statement->execute(); + $results = $statement->fetchAll(\PDO::FETCH_ASSOC); + + if ( ! ArrayUtils::in_array_recursive( "ver_update_start",$results)) //the versions table does not contain the ver_update_start column. + { + $query = "ALTER TABLE version_ver CHANGE COLUMN ver_date ver_update_start datetime default NULL;"; + $statement = $con->prepare($query); + $resultset = $statement->execute(); + } + + if ( ! ArrayUtils::in_array_recursive("ver_update_start",$results)) //the versions table does not contain the ver_update_end column. + { + $query = "ALTER TABLE version_ver ADD COLUMN ver_update_end datetime default NULL AFTER ver_update_start;"; + $statement = $con->prepare($query); + $resultset = $statement->execute(); + } + //then save this version + + return true; + } } diff --git a/src/FamilyList.php b/src/FamilyList.php index 79a8072ae7..b108d3a364 100644 --- a/src/FamilyList.php +++ b/src/FamilyList.php @@ -17,7 +17,7 @@



- +
@@ -68,6 +68,9 @@ - + @@ -54,6 +54,9 @@ + + + -getLanguageCode().".js"; -if ( file_exists(_DIR__."/../".$localizationFile ) ) { - ?> - - @@ -38,4 +30,4 @@ - \ No newline at end of file + diff --git a/src/Include/Header-function.php b/src/Include/Header-function.php index 51ad9a0d5c..8212265190 100644 --- a/src/Include/Header-function.php +++ b/src/Include/Header-function.php @@ -126,7 +126,8 @@ function Header_body_scripts() { - diff --git a/vagrant-qa/.gitignore b/vagrant-qa/.gitignore new file mode 100644 index 0000000000..6f66c74b0e --- /dev/null +++ b/vagrant-qa/.gitignore @@ -0,0 +1 @@ +*.zip \ No newline at end of file diff --git a/vagrant/previousversions/README.md b/vagrant-qa/README.md similarity index 100% rename from vagrant/previousversions/README.md rename to vagrant-qa/README.md diff --git a/vagrant/previousversions/Vagrantfile b/vagrant-qa/Vagrantfile similarity index 100% rename from vagrant/previousversions/Vagrantfile rename to vagrant-qa/Vagrantfile diff --git a/vagrant/previousversions/VersionToLaunch b/vagrant-qa/VersionToLaunch similarity index 84% rename from vagrant/previousversions/VersionToLaunch rename to vagrant-qa/VersionToLaunch index f92d7ba6b0..a333e5d952 100644 --- a/vagrant/previousversions/VersionToLaunch +++ b/vagrant-qa/VersionToLaunch @@ -1,7 +1,7 @@ # Un-comment any of the lines in the file, and then run "vagrant up" to build the "uncommented" version #1.2.14 #2.0.0 -2.0.1 +#2.0.1 #2.1.0 #2.1.1 #2.1.2 @@ -17,4 +17,6 @@ #2.2.3 #2.2.4 #2.3.1 -#2.3.2 \ No newline at end of file +#2.3.2 +#2.3.3 +#ChurchCRM-2.3.4.zip \ No newline at end of file diff --git a/vagrant/previousversions/bootstrap.sh b/vagrant-qa/bootstrap.sh similarity index 63% rename from vagrant/previousversions/bootstrap.sh rename to vagrant-qa/bootstrap.sh index 0029b9362f..6eb10f9046 100644 --- a/vagrant/previousversions/bootstrap.sh +++ b/vagrant-qa/bootstrap.sh @@ -5,8 +5,17 @@ rm -rf /var/www/public/* launchversion=`grep -i '^[^#;]' /vagrant/VersionToLaunch` +if [ -f /vagrant/$launchversion ] ; then + echo "bootstrapping from zip file located at $launchversion" + unzip -d /tmp/churchcrm /vagrant/$launchversion + shopt -s dotglob + mv /tmp/churchcrm/churchcrm/* /var/www/public/ + CRM_DB_INSTALL_SCRIPT="/vagrant/src/mysql/install/Install.sql" + CRM_DB_USER="churchcrm" + CRM_DB_PASS="churchcrm" + CRM_DB_NAME="churchcrm" -if [ $launchversion == "1.2.14" ] ; then +elif [ $launchversion == "1.2.14" ] ; then echo "bootstrapping 1.2.14" wget -nv -O /var/www/1.2.14.zip http://downloads.sourceforge.net/project/churchinfo/churchinfo/1.2.14/churchinfo-1.2.14.zip unzip -d /var/www/public /var/www/1.2.14.zip @@ -20,10 +29,10 @@ if [ $launchversion == "1.2.14" ] ; then elif [[ $launchversion =~ [2\.] ]] ; then echo "bootstrapping $launchversion" filename=ChurchCRM-$launchversion.zip - wget -nv -O /var/www/$filename https://github.com/ChurchCRM/CRM/releases/download/$launchversion/$filename - unzip -d /var/www/public /var/www/$filename + wget -nv -O /tmp/$filename https://github.com/ChurchCRM/CRM/releases/download/$launchversion/$filename + unzip -d /tmp/churchcrm /tmp/$filename shopt -s dotglob - mv /var/www/public/churchcrm/* /var/www/public/ + mv /tmp/churchcrm/churchcrm/* /var/www/public/ CRM_DB_INSTALL_SCRIPT="/vagrant/src/mysql/install/Install.sql" CRM_DB_USER="churchcrm" CRM_DB_PASS="churchcrm" @@ -38,8 +47,11 @@ DB_USER="root" DB_PASS="root" DB_HOST="localhost" - - +echo "==========================================================" +echo "==================== DB Setup =========================" +echo "==========================================================" +sudo sed -i 's/^bind-address.*$/bind-address=0.0.0.0/g' /etc/mysql/my.cnf +sudo service mysql restart RET=1 while [[ RET -ne 0 ]]; do echo "Database: Waiting for confirmation of MySQL service startup" @@ -50,19 +62,19 @@ done echo "Database: mysql started" +sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "DROP DATABASE $CRM_DB_NAME;" +sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "DROP USER '$CRM_DB_USER';" +echo "Database: cleared" + sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "CREATE DATABASE $CRM_DB_NAME CHARACTER SET utf8;" echo "Database: created" -sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "CREATE USER '$CRM_DB_USER'@'$DB_HOST' IDENTIFIED BY '$CRM_DB_PASS';" -sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "GRANT ALL PRIVILEGES ON $CRM_DB_NAME.* TO '$CRM_DB_NAME'@'$DB_HOST' WITH GRANT OPTION;" - +sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "CREATE USER '$CRM_DB_USER'@'%' IDENTIFIED BY '$CRM_DB_PASS';" +sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "GRANT ALL PRIVILEGES ON $CRM_DB_NAME.* TO '$CRM_DB_NAME'@'%' WITH GRANT OPTION;" +sudo mysql -u"$DB_USER" -p"$DB_PASS" -e "FLUSH PRIVILEGES;" echo "Database: user created with needed PRIVILEGES" -sudo mysql -u"$CRM_DB_USER" -p"$CRM_DB_PASS" "$CRM_DB_NAME" < $CRM_DB_INSTALL_SCRIPT - -echo "Database: tables and metadata deployed" - #============================================================================= # Help info diff --git a/vagrant/previousversions/src/.gitignore b/vagrant-qa/src/.gitignore similarity index 88% rename from vagrant/previousversions/src/.gitignore rename to vagrant-qa/src/.gitignore index e7a210ec7d..500faeff91 100644 --- a/vagrant/previousversions/src/.gitignore +++ b/vagrant-qa/src/.gitignore @@ -1,3 +1,3 @@ -* -*/ +* +*/ !.gitignore \ No newline at end of file diff --git a/vagrant/bootstrap.sh b/vagrant/bootstrap.sh index 223635db53..dbfdcb6315 100644 --- a/vagrant/bootstrap.sh +++ b/vagrant/bootstrap.sh @@ -99,7 +99,8 @@ echo "=============== NPM =================" echo "==========================================================" cd /vagrant -npm install --unsafe-perm +sudo npm install -g npm +sudo npm install --unsafe-perm --no-bin-links echo "==========================================================" echo "================= MailCatcher Setup ==================="