########################################
# CONFIG
########################################

OLD_SERVER="root@192.168.1.222"
SSH_PASSWORD="samsam"
REMOTE_WP_PATH="/var/www/html/wordpress"
REMOTE_BACKUP_PATH="/var/www/html/wordpress-backup"

LOCAL_WP_PATH="/var/www/html/wordpress"
LOCAL_CONFIG_BACKUP="/var/www/html/wordpress-config"

DB_NAME="wordpress_db"
DB_USER="root"
DB_PASS="root"
DB_HOST="127.0.0.1"
DB_PORT="3306"

NEW_URL="http://wp-server.local/wordpress"

########################################
# 1 EXPORT FROM OLD SERVER
########################################
echo ""
echo ""
echo "===> Creating remote backup..."

echo ""
echo "         1. Creating remote backup directory..."
sshpass -p $SSH_PASSWORD ssh $OLD_SERVER "mkdir -p $REMOTE_BACKUP_PATH"

# Archive wordpress directory correctly (no full path nesting)
echo ""
echo "         2. Archiving wordpress directory..."
sshpass -p $SSH_PASSWORD ssh $OLD_SERVER "rm -f $REMOTE_BACKUP_PATH/site-files.tar.gz && cd $REMOTE_WP_PATH && tar -czf $REMOTE_BACKUP_PATH/site-files.tar.gz ."

# Dump database
echo ""
echo "         3. Dumping the database..."
sshpass -p $SSH_PASSWORD ssh $OLD_SERVER "rm -f $REMOTE_BACKUP_PATH/site-data.sql && mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $REMOTE_BACKUP_PATH/site-data.sql"

# echo "enter remote password, to backup site"
# ssh "$OLD_SERVER" "
# mkdir -p \"$REMOTE_BACKUP_PATH\" && \
# rm -f \"$REMOTE_BACKUP_PATH/site-files.tar.gz\" && \
# cd \"$REMOTE_WP_PATH\" && \
# tar -czf \"$REMOTE_BACKUP_PATH/site-files.tar.gz\" . && \
# rm -f \"$REMOTE_BACKUP_PATH/site-data.sql\" && \
# mysqldump -u \"$DB_USER\" -p\"$DB_PASS\" \"$DB_NAME\" > \"$REMOTE_BACKUP_PATH/site-data.sql\"
# "



########################################
# 2 COPY BACKUP FILES LOCALLY
########################################
echo ""
echo ""
echo "===> Copying backup files..."

echo ""
echo "         1. Copying archive file..."
sshpass -p $SSH_PASSWORD scp $OLD_SERVER:$REMOTE_BACKUP_PATH/site-files.tar.gz .

echo ""
echo "         2. Copying database dump..."
sshpass -p $SSH_PASSWORD scp $OLD_SERVER:$REMOTE_BACKUP_PATH/site-data.sql .

# echo "enter remote password, to copy backup files locally"
# scp \
# "$OLD_SERVER:$REMOTE_BACKUP_PATH/site-files.tar.gz" \
# "$OLD_SERVER:$REMOTE_BACKUP_PATH/site-data.sql" \
# .


########################################
# 3 BACKUP CURRENT CONFIG
########################################
echo ""
echo ""
echo "===> Backing up current wp-config.php..."

mkdir -p $LOCAL_CONFIG_BACKUP

if [ -f "$LOCAL_CONFIG_BACKUP/wp-config.php" ]; then
    rm $LOCAL_CONFIG_BACKUP/wp-config.php
fi
cp $LOCAL_WP_PATH/wp-config.php $LOCAL_CONFIG_BACKUP/wp-config.php



########################################
# 4 IMPORT FILES
########################################
echo ""
echo ""
echo "===> Extracting files..."

rm -rdf $LOCAL_WP_PATH/*
tar -xzf site-files.tar.gz -C $LOCAL_WP_PATH --strip-components=1

# Restore wp-config if existed
if [ -f "$LOCAL_CONFIG_BACKUP/wp-config.php" ]; then
    cp $LOCAL_CONFIG_BACKUP/wp-config.php $LOCAL_WP_PATH/wp-config.php
fi

# fix permissions
chown -R www-data:www-data $LOCAL_WP_PATH
find $LOCAL_WP_PATH -type d -exec chmod 755 {} \;
find $LOCAL_WP_PATH -type f -exec chmod 644 {} \;

rm site-files.tar.gz



########################################
# 5 IMPORT DATABASE
########################################
echo ""
echo ""
echo "===> Importing database..."

# Drop and recreate database
mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS -e "DROP DATABASE IF EXISTS $DB_NAME;"
mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS -e "CREATE DATABASE $DB_NAME;"

# Import SQL
mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME < site-data.sql

rm site-data.sql



########################################
# 6 UPDATE SITE URL
########################################
echo ""
echo ""
echo "===> Updating site URL..."

mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME \
-e "UPDATE wp_options SET option_value='$NEW_URL' WHERE option_name IN ('siteurl','home');"



########################################
# DONE
########################################
echo ""
echo ""
echo ""
echo "+--------------------------------------------+"
echo "| Login to WordPress admin dashboard         |"
echo "|                                            |"
echo "|   Settings >> Permalinks >> Save           |"
echo "|                                            |"
echo "+--------------------------------------------+"
echo ""
echo "Migration completed successfully."
