##
# Copyright (с) Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2022 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# https://www.cloudlinux.com/legal/
##
PATH_TO_PHP=$1
PATH_TO_WP=$2
JSON=$3
CPANEL_USER_EMAILS=$4
CPANEL_URL=$5
DO_UNINSTALL=${6:-"false"}
# Check php version, minimum 5.6
PHP_VERSION=$($PATH_TO_PHP -r "echo PHP_VERSION;")
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
echo "$CODE: Can't get PHP version."
exit 1
fi
IFS='.' read -ra PHP_VERSION_ARR <<<"$PHP_VERSION"
if [ "${PHP_VERSION_ARR[0]}" -lt 5 ] && [ "${PHP_VERSION_ARR[1]}" -lt 6 ]; then
echo "PHP version $PHP_VERSION is not supported."
exit 2
fi
# wrapper already contains all necessary directives to enable
# and additional wp-cli options like --skip-themes
COMMAND="/opt/clwpos/wp-cli-wrapped $PATH_TO_PHP $PATH_TO_WP"
# Check WordPress version, minimum 5.0
WORDPRESS_VERSION=$(CL_SMART_ADVICE_DISABLED=1 $COMMAND core version)
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
echo "$CODE: Error reading WordPress versions."
echo "$WORDPRESS_VERSION"
exit 3
fi
IFS='.' read -ra WORDPRESS_VERSION_ARR <<<"$WORDPRESS_VERSION"
if [ "${WORDPRESS_VERSION_ARR[0]}" -lt 5 ]; then
echo "WordPress version $WORDPRESS_VERSION is not supported."
exit 4
fi
# Check must use folder
PATH_TO_MU_FOLDER=$(CL_SMART_ADVICE_DISABLED=1 $COMMAND eval "echo WPMU_PLUGIN_DIR;")
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
echo "$CODE: Error reading WordPress constant WPMU_PLUGIN_DIR."
echo "$PATH_TO_MU_FOLDER"
exit 5
fi
if [[ -z "$PATH_TO_MU_FOLDER" ]]; then
echo "The path to the folder with must use plugins is empty."
exit 6
fi
if [[ ! -d "$PATH_TO_MU_FOLDER" ]]; then
mkdir -p "$PATH_TO_MU_FOLDER"
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
echo "$CODE: Failed creating must use plugin folder."
exit 7
fi
fi
# Create symlink to plugin file or Uninstall
PATH_TO_CURRENT_FOLDER=${0/"/run.sh"/""}
PATH_TO_MU_PLUGIN="$PATH_TO_MU_FOLDER/cl-smart-advice.php"
# Uninstall WP SmartAdvice
if [[ "$DO_UNINSTALL" == "true" ]]; then
if [ -L "$PATH_TO_MU_PLUGIN" ]; then
UNINSTALL_RESULT=$($COMMAND smart-advice uninstall)
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
echo "$CODE: Error uninstalling WP SmartAdvice plugin"
echo "$UNINSTALL_RESULT"
fi
exit 8
fi
echo "Error! WP SmartAdvice plugin not installed"
exit 9
fi
if [ ! -L "$PATH_TO_MU_PLUGIN" ]; then
# Delete the plugin file if is not symlink
if [ -e "$PATH_TO_MU_PLUGIN" ]; then
# Not symlink but file exists
rm -f "$PATH_TO_MU_PLUGIN"
fi
ln -s "$PATH_TO_CURRENT_FOLDER/cl-smart-advice.php" "$PATH_TO_MU_PLUGIN"
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
LS=$(ls -al "$PATH_TO_MU_FOLDER" | head -n 2 | tail -1)
echo "$CODE: Failed creating symlink to plugin file (Folder info: $LS)."
exit 10
fi
fi
# Sync and notify
if [[ -n "$JSON" ]]; then
# Sync advices
SYNC_RESULT=$($COMMAND smart-advice sync --list="$JSON" --cpanel_url="$CPANEL_URL" --cpanel_user_emails="$CPANEL_USER_EMAILS")
CODE=$?
if [[ "$CODE" -eq 1 ]]; then
echo "$CODE: Failed run wp-cli command smart-advice sync."
echo "$SYNC_RESULT"
exit 11
fi
fi
# Check site's health
HEALTH_RESULT=$($COMMAND option get home)
CODE=$?
if [[ ! "$CODE" -eq 0 ]]; then
rm "$PATH_TO_MU_PLUGIN"
echo "$CODE: Failed run wp-cli command, site's health status failed. Plugin removed."
echo "$HEALTH_RESULT"
exit 12
fi
exit 0
|