DocumentsDate added
This a joomla 1.5, 2.5 and joomla 3.x system plugin that allow replacing a special keyword like {{site_id}} by the current value of the MULTISITES_ID.
This maybe usefull to condition some values present anywhere in a page.
It can be used for example to fill a hidden field in form to save the current site id.
Version 1.1.0
Add an alternate Multisites ID definition that can have a variant and that allow replacing the ":master_db:" parameter with another value and also give the possibility to add a dot after that site ID when the slave site id is present.
This allow for example to create URL like "www."yourdomain.com in case of the "master" or "{site_id}."yourdomain.com
Version 1.1.1
Add compatibility with Joomla 1.6
Version 1.2.00
Add the possibility to replace some parts of the multisites id using {{site_id-#}} where the # is the number of the element from right to left of the domain.
For example:
www.jms2win.com
3 2 1
{{site_id-3}} = www
{{site_id-2}} = jms2win
{{site_id-1}} = com
Version 1.2.01
Add compatibility for Joomla 3.x
This a Joomla 1.5, 1.6, 1.7, 2.5, 3.x and 4.0 native system plugin allow to search and replace any content present in a page.
This can be used for example to replace some keywords that could be placed in "shared articles" and that will be replaced by their specific values in a given website using this Search/Replace plugin.
You could for example use keywords like:
[COMPANY] = This is my company
[DEALER_NAME] = This is the dealer name
Version 1.1
With 1.1.0 version, it is now possible to also enter regular expression.
A regular expression is identified by a tilt as first character
~#\[COMPANY\]#i = This is my company
Version 1.2
The list of Search/Replace can also be provided from external files.
You can provide 2 external files with the Search/Replace patterns.
For example you could use :
- file #1 = {root}/tmp/searchreplace.php
- file #2 = {root}/tmp/searchreplace{site_id}.php
As you can see, some keywords can be used in the file names.
- {root} = the document root directory if the website
- {site_id} = the Multisites slave site ID.
In this sample, we have use a PHP file extension to allow protect the content of this file.
Here it is a sample of file content
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
/*
; Put below the Search/Replace expressions
;------------------------------------------
Search1=replace value1
Search2=replace value2
*/
See also power point and PDF
- English Powerpoint Slide Show (1.2 MB)
- English PDF (270 KB)
- Powerpoint Slide Show en français (1.2 MB)
- PDF en français (270 KB)
Version 1.3
Add Joomla 1.6 compatibility
Version 1.4
Add processing of keyword {host-N}
Version 1.5
Add PCRED customization and error handling
Version 1.6
Add PHP 5.4 compatibility
Version 1.7
Add Joomla 3.0 and 3.1 compatibility
Version 1.8
Add the possibility to use the keyword {host} and {host-x} in the Search/Replace file name
Version 1.9
Add the possibility to select if the Search/Replace is applied on HEAD or BODY section and not only on the full HTML page content.
When both HEAD and BODY is selected, the Search/Replace is applied on the full HTML content
Version 1.10
Under Joomla 2.5 or higher, avoid that the text area is filtered on html tag. Now accept to enter an html tag into the textarea instead putting the value into a file #1 or file #2
Concept
The "weekly backup script" is a shell script that can be used in a cron of you hosting environment in aim to perform the backup of a DB and the backup of a directory on the disk.
This script save the backup in a subdirectory "weekly" followed by a subdirectory with the name of the day.
So that you have maximum 7 subdirectories (one for each day of the week).
Installation
- Download the "backup_weekly.sh"
- Transfert the "backup_weekly.sh" script by FTP or other tool on your server.
We suggest that you create a "backup" directory on your server and that you put the script in this directory.
The result of the backup will be stored in directory like
backup/weekly/Monday/BackupName.tgz
backup/weekly/Tuesday/BackupName.tgz
backup/weekly/Wednesday/BackupName.tgz
backup/weekly/Thirsday/BackupName.tgz
backup/weekly/Friday/BackupName.tgz
backup/weekly/Saturday/BackupName.tgz
backup/weekly/Sunday/BackupName.tgz - With a chmod, change the permission of the file to add the "execute" attribute
Syntax
The backup shell script contain several parameters:
Mandatory parameters
- $1 = backup name.
This will create a subdirectory with this name in the weekly/Day/[backup name] - $2 = Joomla PHP Code directory to backup
- $3 = DB name
- $4 = DB user
- $5 = DB password
- $6 = FTP URL
- $7 = FTP User
- $8 = FTP Psw
- $9 = FTP remote directory where to save the file.
A weekly subdirectory with the day name is automatically created in the remote directory specified.
The parameters are divided in 2 categories.
The first parameters allows specifying the DB parameters and the directory that must be backup.
Sample syntax
The following syntax assume that you are in the directory where you have copied the "backup_weekly.sh" and that you are logged on your server with SSH.
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password" ftp.yourdomain.com ftpuser ftppassword /backup/
This execute a backup that will be named "test" and for which the result is send by FTP into an FTP root directory '/backup/'
The result will be stored in "/backup/weekly/DAY/test.tgz"
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password" ftp.yourdomain.com ftpuser ftppassword
Same as the previous case but the FTP Root directory is empty. So it is assume that it is sent in the home directory of the FTP account.
The result will be stored in "/weekly/DAY/test.tgz"
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password"
Backup without FTP transfert.
The backup remain in the local directory as follow "weekly/DAY/test.tgz"
Limitations
- It is assumed that the DB is located in the "localhost".
If you want to perform backup from DB that are located on another server, you will have to modify the "mysqldump" - The DB backup is performed with NO table locking and also ignore the SQL error that would stop the script.
If you want to perform a backup with "table locked", remove the "--lock-tables=false" command in the mysqldump - We recommand to avoid using special characters in the FTP password.
If you have special character, perhaps you should change the syntax of the LFTP to autorise that.
We have considered that a specific FTP user and FTP password would be used to transfert the backup on another server. - Avoid using a $ (dollar) character in the DB password.
The $ is generally used in the shell script to identify variable.
remark:
The FTP transfert use a "lftp" command.
If this LFTP is not installed on your server, you can use a "yum install lftp".
In case where you have an error on Perl library dependencies error, see also the following article that may help you.
https://forums.cpanel.net/f34/missing-dependency-lftp-install-242641.html
Concept
The "weekly backup script (All DBs)" is composed of 2 shell script.
A first one that is called by the cront
A second one that perform the operation.
For the customization, you need to update the "cron" one and potentially the email notification present in the second shell.
This script save the backup in a subdirectory "weekly" followed by a subdirectory with the name of the day.
So that you have maximum 7 subdirectories (one for each day of the week).
Installation
- Download the "backup_alldbs.zip"
- Unzip the files into a directory present on your server and that can be called by cron
We suggest that you create a "backup/cpanel" directory on your server and that you put the script in this directory.
The result of the backup will be stored in directory like
backup/weekly/Monday/BackupName.tgz
backup/weekly/Tuesday/BackupName.tgz
backup/weekly/Wednesday/BackupName.tgz
backup/weekly/Thirsday/BackupName.tgz
backup/weekly/Friday/BackupName.tgz
backup/weekly/Saturday/BackupName.tgz
backup/weekly/Sunday/BackupName.tgz - With a chmod, change the permission of the file to add the "execute" attribute
Syntax
Most of the parameters are defined in the "backup_alldbs_cron.sh".
This script can do a lot:
- It is possible to send the backup on 1 or 2 FTP account outside the server
- It is also possible to encrypt the compressed file when the FTP is sent on server that you do not control.
- It is possible to send an email notification when the backup is completed.
Limitations
- It is assumed that the DB is located in the "localhost".
If you want to perform backup from DB that are located on another server, you will have to modify the "mysqldump" - The DB backup is performed with NO table locking and also ignore the SQL error that would stop the script.
If you want to perform a backup with "table locked", remove the "--lock-tables=false" command in the mysqldump - We recommand to avoid using special characters in the FTP password.
If you have special character, perhaps you should change the syntax of the LFTP to autorise that.
We have considered that a specific FTP user and FTP password would be used to transfert the backup on another server. - Avoid using a $ (dollar) character in the DB password.
The $ is generally used in the shell script to identify variable.
remark:
The FTP transfert use a "lftp" command.
If this LFTP is not installed on your server, you can use a "yum install lftp".
In case where you have an error on Perl library dependencies error, see also the following article that may help you.
https://forums.cpanel.net/f34/missing-dependency-lftp-install-242641.html
See also the other weekly backup script for single website.