Reputation: 31
I'm wondering if anyone has more details on how to schedule Joomla to be set to "Offline/Maintenance Mode" at a specific date and time. I found this post here on stack overflow and I'm wondering if anyone has been successful in either (1) implementing a custom plugin to add this functionality, or (2) via a script that sets the site into offline/maintenance mode and perhaps a cronjob to run the script at specific time or if (3) maybe there is an extension that already exists that simply adds this offline/maintenance mode scheduling feature.
Based on the previous post I linked to above I'm not sure if a plugin would work or how best to go about the script and cronjob technique. From my understanding based on the responses in the post, it sounded like the script and cronjob would be the only way to accomplish this. If someone can let me know if they were successful implementing this and how that would be great or any suggestions or direction on how to go about it would be helpful.
Upvotes: 0
Views: 174
Reputation: 559
Using a plugin for such little would not worth it in my opinion. I would rather use a little script like:
<?php
// Make sure this is only called through command line
if (php_sapi_name() !== "cli") die('Only command line');
// Replace by your joomla configuration file path
$configuration_file_path = '/var/www/joomla/configuration.php';
if (!empty($argv[1])) {
$offline = 1;
} else {
$offline = 0;
}
// Retrieve configuration file content
$configuration_content = file_get_contents($configuration_file_path);
// Replace the offline line by the calculated value
$configuration_content = preg_replace('/(.*)public \$offline =(.*)/m', '$1public $offline = \'' . $offline . '\';' , $configuration_content);
// Write back the configuration file
file_put_contents($configuration_file_path, $configuration_content);
This script can be called through the command line:
php offline.php 1 #to enable offline status
php offline.php 0 #to disable offline status
If you need to run it through a cronjob by editing /etc/crontab or add it in your hosting settings:
# Offline at 4AM each day
0 4 * * * www-data php /path/of/your/script/offline.php 1 >> /dev/null 2>&1
# Online at 4:05AM each day
5 4 * * * www-data php /path/of/your/script/offline.php 0 >> /dev/null 2>&1
Upvotes: 1