#!/bin/sh
# This file have to be executed like a git hook before every commit. In order to do this copy this script inside
# your repository dir "./git/hooks" naming it "pre-commit" and allowing it to be executed (chmod +x pre-commit)

echo "Executing pre-commit operations..."; 

# Change this variables according to your current database configuration
database_name=xtribe
database_user=root
database_password=t0t0r0Xtribe

# Before commit, three dump of the database get added to the commit, cutting down the database in three complementary dumps
# --- db_structure: only structure, no data
# Skip drop table because this dump will be loaded when the db is empty (no need to drop anything), or when the db is full of data, so the tables must be not dropped, but a table must be added if not already exist
mysqldump -d -u $database_user -p$database_password --skip-add-drop-table $database_name > /var/www/xtribe.eu/etsinstall/db_structure.sql
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' /var/www/xtribe.eu/etsinstall/db_structure.sql

# --- db_general_data: xtribe core data, containing no games, no users (Suppose table are still created)
# Some tables' data are filtered to omit games' pages or users data
# Only some specifical pages get imported and two users (anonymous and admin) with their managed_file
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name field_data_body --where "entity_id='14' OR entity_id='16' OR entity_id='34' OR entity_id='36' OR entity_id='37' OR entity_id='54' OR entity_id='56' OR entity_id='57' OR entity_id='59' OR entity_id='62' OR entity_id='63' OR entity_id='64' OR entity_id='65'" > /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name field_revision_body --where "entity_id='14' OR entity_id='16' OR entity_id='34' OR entity_id='36' OR entity_id='37' OR entity_id='54' OR entity_id='56' OR entity_id='57' OR entity_id='59' OR entity_id='62' OR entity_id='63' OR entity_id='64' OR entity_id='64'" >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name node --where "nid='14' OR nid='16' OR nid='34' OR nid='36' OR nid='37' OR nid='54' OR nid='56' OR nid='57' OR nid='59' OR nid='62' OR nid='63' OR nid='64' OR nid='65'" >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name node_revision --where "nid='14' OR nid='16' OR nid='34' OR nid='36' OR nid='37' OR nid='54' OR nid='56' OR nid='57' OR nid='59' OR nid='62' OR nid='63' OR nid='64' OR nid='65'" >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
# Maintaining only user 0 (anonymus) and user 1 (admin)
# Here there is no 'replace' for it would rewrite admin password and it is better not to do this for security issues
mysqldump --no-create-info -u $database_user -p$database_password --insert-ignore $database_name users --where "uid='0' OR uid='1'"  >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name users_roles --where "uid='1'"  >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name file_managed --where "uid='1'"  >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
# Do not rewrite ets variable in order to not rise problems
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name variable --where "name!='ets_key' AND name!='ets_redis_host_port' AND name!='ets_ehs_host_port' AND name!='ets_mhs_host_port1' AND name!='ets_mhs_host_port2' "  >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
mysqldump --no-create-info --insert-ignore -u $database_user -p$database_password $database_name variable --where "name='ets_key' OR name='ets_redis_host_port' OR name='ets_ehs_host_port' OR name='ets_mhs_host_port1' OR name='ets_mhs_host_port2' "  >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
# Do not rewrite ets caches in order to not rise problems
mysqldump --no-create-info --insert-ignore -u $database_user -p$database_password $database_name cache cache_block cache_bootstrap cache_field cache_filter cache_form cache_image cache_libraries cache_location cache_media_xml cache_menu cache_page cache_path cache_token cache_update cache_variable cache_views cache_views_data >> /var/www/xtribe.eu/etsinstall/db_general_data.sql
# Tables which no need to be filtered
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name actions block blocked_ips block_custom block_node_type block_role captcha_points ckeditor_input_format ckeditor_settings conditional_fields css_injector_rule date_formats date_format_locale date_format_type field_config field_config_instance field_group file_usage filter filter_format i18n_string i18n_translation_set image_effects image_styles languages locales_source locales_target media_type menu_custom menu_links menu_router node_access node_type rdf_mapping registry registry_file role role_permission shortcut_set system tableofcontents_node_toc taxonomy_index taxonomy_term_data taxonomy_term_hierarchy taxonomy_vocabulary views_display views_view >> /var/www/xtribe.eu/etsinstall/db_general_data.sql

# --- db_custom_data: data containing custom data like games and users
mkdir -p /var/www/xtribe.eu/files/custom_data_db/
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name field_data_body --where "entity_id!='14' AND entity_id!='16' AND entity_id!='34' AND entity_id!='36' AND entity_id!='37' AND entity_id!='54' AND entity_id!='56' AND entity_id!='57' AND entity_id!='59' AND entity_id!='62' AND entity_id!='63'"  > /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name field_revision_body --where "entity_id!='14' AND entity_id!='16' AND entity_id!='34' AND entity_id!='36' AND entity_id!='37' AND entity_id!='54' AND entity_id!='56' AND entity_id!='57' AND entity_id!='59' AND entity_id!='62' AND entity_id!='63'" >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name node --where "nid!='14' AND nid!='16' AND nid!='34' AND nid!='36' AND nid!='37' AND nid!='54' AND nid!='56' AND nid!='57' AND nid!='59' AND nid!='62' AND nid!='63'"  >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name node_revision --where "nid!='14' AND nid!='16' AND nid!='34' AND nid!='36' AND nid!='37' AND nid!='54' AND nid!='56' AND nid!='57' AND nid!='59' AND nid!='62' AND nid!='63'"  >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
# Removing only user 0 (anonymus) and user 1 (admin)
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name users --where "uid!='0' AND uid!='1'"  >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name users_roles --where "uid!='1'"  >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
mysqldump --no-create-info -u $database_user -p$database_password --replace $database_name file_managed --where "uid!='1'"  >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
# Import all tables except those containing general data
mysqldump --add-drop-table -u $database_user -p$database_password --replace $database_name --ignore-table=$database_name.actions --ignore-table=$database_name.block --ignore-table=$database_name.blocked_ips --ignore-table=$database_name.block_custom --ignore-table=$database_name.block_node_type --ignore-table=$database_name.block_role --ignore-table=$database_name.cache --ignore-table=$database_name.cache_block --ignore-table=$database_name.cache_bootstrap --ignore-table=$database_name.cache_field --ignore-table=$database_name.cache_filter --ignore-table=$database_name.cache_form --ignore-table=$database_name.cache_image --ignore-table=$database_name.cache_libraries --ignore-table=$database_name.cache_location --ignore-table=$database_name.cache_media_xml --ignore-table=$database_name.cache_menu --ignore-table=$database_name.cache_page --ignore-table=$database_name.cache_path --ignore-table=$database_name.cache_token --ignore-table=$database_name.cache_update --ignore-table=$database_name.cache_variable --ignore-table=$database_name.cache_views --ignore-table=$database_name.cache_views_data --ignore-table=$database_name.captcha_points --ignore-table=$database_name.ckeditor_input_format --ignore-table=$database_name.ckeditor_settings --ignore-table=$database_name.conditional_fields --ignore-table=$database_name.css_injector_rule --ignore-table=$database_name.date_formats --ignore-table=$database_name.date_format_locale --ignore-table=$database_name.date_format_type --ignore-table=$database_name.field_config --ignore-table=$database_name.field_config_instance --ignore-table=$database_name.field_group --ignore-table=$database_name.file_managed --ignore-table=$database_name.file_usage --ignore-table=$database_name.filter --ignore-table=$database_name.filter_format --ignore-table=$database_name.i18n_string --ignore-table=$database_name.i18n_translation_set --ignore-table=$database_name.image_effects --ignore-table=$database_name.image_styles --ignore-table=$database_name.languages --ignore-table=$database_name.locales_source --ignore-table=$database_name.locales_target --ignore-table=$database_name.media_type --ignore-table=$database_name.menu_custom --ignore-table=$database_name.menu_links --ignore-table=$database_name.node_access --ignore-table=$database_name.node_type --ignore-table=$database_name.rdf_mapping --ignore-table=$database_name.registry --ignore-table=$database_name.registry_file --ignore-table=$database_name.role --ignore-table=$database_name.role_permission --ignore-table=$database_name.shortcut_set --ignore-table=$database_name.system --ignore-table=$database_name.tableofcontents_node_toc --ignore-table=$database_name.taxonomy_index --ignore-table=$database_name.taxonomy_term_data --ignore-table=$database_name.taxonomy_term_hierarchy --ignore-table=$database_name.taxonomy_vocabulary --ignore-table=$database_name.variable --ignore-table=$database_name.views_display --ignore-table=$database_name.views_view --ignore-table=$database_name.field_data_body --ignore-table=$database_name.field_revision_body --ignore-table=$database_name.node --ignore-table=$database_name.node_revision --ignore-table=$database_name.users --ignore-table=$database_name.users_roles --ignore-table=$database_name.menu_router >> /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql

#games database dump
database_name_games_0=cityrace;
database_name_games_1=eaic;
database_name_games_2=elise; 
database_name_games_3=quorum;

database_user_games_0=cityrace;
database_user_games_1=eaic;
database_user_games_2=elise; 
database_user_games_3=quorum;

database_password_games_0=alinasirbu;
database_password_games_1=misuroeaic2; 
database_password_games_2=perelise;
database_password_games_3=alinasirbu;

echo "Dumping ${database_name_games_0} database..."; 
mysqldump -u "${database_user_games_0}" -p"${database_password_games_0}" --replace "${database_name_games_0}" > /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_0}".sql
echo "Dumping ${database_name_games_1} database..."; 
mysqldump -u "${database_user_games_1}" -p"${database_password_games_1}" --replace "${database_name_games_1}" > /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_1}".sql
echo "Dumping ${database_name_games_2} database..."; 
mysqldump -u "${database_user_games_2}" -p"${database_password_games_2}" --replace "${database_name_games_2}" > /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_2}".sql
echo "Dumping ${database_name_games_3} database..."; 
mysqldump -u "${database_user_games_3}" -p"${database_password_games_3}" --replace "${database_name_games_3}" > /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_3}".sql

# adding newly created dumps to git
cd /var/www/xtribe.eu/files/
git add /var/www/xtribe.eu/files/custom_data_db/db_custom_data.sql
git add /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_0}".sql
git add /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_1}".sql
git add /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_2}".sql
git add /var/www/xtribe.eu/files/custom_data_db/"${database_name_games_3}".sql
