Maintenance Mode

With this neat module you can access the frontend by simply adding “?user=admin_user_name&pass=admin_password” as URL parameters. This module can as well be used when doing some maintenance in a running system.

Save the following code as “modules/powertemplate/pt_oxcmp_shop/pt_oxcmp_shop.php” and activate the module by adding “oxcmp_shop => powertemplate/pt_oxcmp_shop/pt_oxcmp_shop” in the modules section ain the backend.

<?php
/**
*    This file is part of OXID eShop Community Edition.
*
*    OXID eShop Community Edition is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    OXID eShop Community Edition is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with OXID eShop Community Edition.  If not, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxid-esales.com
* @package views
* @copyright (C) OXID eSales AG 2003-2009
* @version OXID eShop CE
* $Id: oxcmp_shop.php 16306 2009-02-05 10:28:05Z rimvydas.paskevicius $
*
* Modified by Avenger to allow admin logins to front-end for inactive shops
*
* @copyright (C) Avenger 2010
* @version OXID eShop CE
* $Id: pt_oxcmp_shop.php 1702 2010-02-04 06:22:13Z avenger $
*
* Activate with: oxcmp_shop => powertemplate/pt_oxcmp_shop/pt_oxcmp_shop
*/
/**
* Translarent shop manager (executed automatically), sets
* registration information and current shop object.
* @subpackage oxcmp
*/
class pt_oxcmp_shop extends pt_oxcmp_shop_parent
{
/**
* Marking object as component
* @var bool
*/
protected $_blIsComponent = true;
/**
* Executes parent::render() and returns active shop object.
*
* @return  object  $this->oActShop active shop object
*/
public function render()
{
//Avenger
$myConfig = $this->getConfig();
// is shop active?
$oShop = $myConfig->getActiveShop();
if (!$oShop->oxshops__oxactive->value && !$this->isAdmin() && 'oxstart' != $myConfig->getActiveView()->getClassName())
{
$logged_in=false;
$sUser=$_GET['user'];
$sPassword=$_GET['pass'];
if ($sUser && $sPassword)
{
$_GET['lgn_usr']=$sUser ;
$_GET['lgn_pwd']=$sPassword;
$oUser=oxnew('oxcmp_user');
$logged_in=$oUser->login($sUser, $sPassword);
$logged_in=$logged_in<>'user';
$_SESSION['logged_in']=$logged_in;
}
else
{
$logged_in=$_SESSION['logged_in'];
}
if (!$logged_in)
{
oxUtils::getInstance()->redirect( 'offline.html',false,302);
//Use alternate template for maintenance announcement
//oxUtils::getInstance()->redirect( 'maintenance.html',false,302);
}
}
$sShopLogo = $myConfig->getConfigParam( 'sShopLogo' );
if ( $sShopLogo && file_exists( $myConfig->getAbsImageDir().'/'.$sShopLogo ) )
{
$this->_oParent->setShopLogo($sShopLogo);
// Passing to view. Left for compatibility reasons for a while. Will be removed in future
$this->_oParent->addTplParam( 'shoplogo', $this->_oParent->getShopLogo() );
}
//Avenger
return $oShop;
}
}
?>

Now you can set your shop as “offline” by unchecking “active” in the backend. While your visitors can not access the shop, you can by adding “?user=admin_user_name&pass=admin_password” to your shop URL. Your visitors will be redirected to “offline.html” automatically.

If you want to design a seperate page for the maintenance-information, you can change following code-lines from:

oxUtils::getInstance()->redirect( 'offline.html',false,302);
//Use alternate template for maintenance announcement
//oxUtils::getInstance()->redirect( 'maintenance.html',false,302);

simply to

//oxUtils::getInstance()->redirect( 'offline.html',false,302);
//Use alternate template for maintenance announcement
oxUtils::getInstance()->redirect( 'maintenance.html',false,302);

 

Now all visitors get redirected to maintenance.html which you can design according to your needs.

According to the forums thread http://www.oxid-esales.com/forum/showthread.php?t=4389&page=2#post73751 this module is working as well in actual 4.5.x versions.

Thanks to Avenger for sharing!

 



0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *