|
|
#!/bin/bash
|
|
|
# (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
|
|
|
#
|
|
|
# All Rights Reserved. See copyright.txt for details and a complete list of authors.
|
|
|
# Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
|
|
|
#
|
|
|
# Clean mysql indexes because they tend to pile up and only one is actually being used
|
|
|
# TODO: non-interactive silent mode for crontab
|
|
|
# TODO: allow deletion of current index
|
|
|
|
|
|
usage()
|
|
|
{
|
|
|
echo "Usage: $0 [path/to/local.php]"
|
|
|
}
|
|
|
|
|
|
if [[ "$1" = "" ]]
|
|
|
then
|
|
|
# If no parameter was given, try to guess
|
|
|
if [[ -f db/local.php ]]
|
|
|
then
|
|
|
LOCALFILE="db/local.php"
|
|
|
echo "Detected: $LOCALFILE"
|
|
|
else
|
|
|
usage
|
|
|
exit 1
|
|
|
fi
|
|
|
else
|
|
|
# Use the one provided
|
|
|
LOCALFILE="$1"
|
|
|
fi
|
|
|
|
|
|
echo "Using: $LOCALFILE"
|
|
|
if [[ -f "$LOCALFILE" ]]
|
|
|
then
|
|
|
DB_DETECTED=$(grep "^\$dbs_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
|
|
|
USER_DETECTED=$(grep "^\$user_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
|
|
|
PASS_DETECTED=$(grep "^\$pass_tiki" "$LOCALFILE" | cut -d"'" -f2| tail -n 1);
|
|
|
else
|
|
|
echo "ERROR: local.php file not found"
|
|
|
usage
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
INDEXES=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SHOW TABLES WHERE Tables_in_${DB_DETECTED} LIKE 'index_%';")
|
|
|
NB_INDEXES=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SHOW TABLES WHERE Tables_in_${DB_DETECTED} LIKE 'index_%';"| wc -l)
|
|
|
SEARCHENGINE=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT value FROM tiki_preferences WHERE name = 'unified_engine';" )
|
|
|
echo "Search engine: $SEARCHENGINE"
|
|
|
if [[ "$SEARCHENGINE" = "mysql" ]]
|
|
|
then
|
|
|
CURRENTINDEX=$(mysql --skip-column-names --silent -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "SELECT value FROM tiki_preferences WHERE name = 'unified_mysql_index_current';" )
|
|
|
echo "Current index: $CURRENTINDEX"
|
|
|
fi
|
|
|
echo "---"
|
|
|
echo "$INDEXES"
|
|
|
if [[ "$NB_INDEXES" = "0" ]]
|
|
|
then
|
|
|
echo "No index found. Nothing to do."
|
|
|
exit 0
|
|
|
fi
|
|
|
echo "${NB_INDEXES} indexes found. Delete them? (y/N)"
|
|
|
read delete
|
|
|
if [ "$delete" = "y" ]
|
|
|
then
|
|
|
for i in $INDEXES
|
|
|
do
|
|
|
if [ "$i" != "$CURRENTINDEX" ]
|
|
|
then
|
|
|
mysql -u "${USER_DETECTED}" --password="${PASS_DETECTED}" "${DB_DETECTED}" -e "DROP TABLE IF EXISTS \`$i\`;"
|
|
|
echo "deleting $i"
|
|
|
else
|
|
|
echo "keeping $i"
|
|
|
fi
|
|
|
done
|
|
|
# Check that full-text search is configured before suggesting php console.php index:rebuild
|
|
|
if [ "$SEARCHENGINE" = "mysql" ]
|
|
|
then
|
|
|
echo "Now may be a good time for: php console.php index:rebuild"
|
|
|
fi
|
|
|
fi
|
|
|
|