start refacroting install process
This commit is contained in:
@@ -20,42 +20,27 @@
|
|||||||
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
/* */
|
/* */
|
||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
|
namespace Thelia\Install;
|
||||||
namespace Thelia\Action;
|
use Thelia\Install\Exception\AlreadyInstallException;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Install
|
* Class BaseInstall
|
||||||
* @package Thelia\Action
|
|
||||||
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
||||||
*/
|
*/
|
||||||
class Install extends BaseAction implements EventSubscriberInterface {
|
abstract class BaseInstall
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Returns an array of event names this subscriber wants to listen to.
|
* Verify if an installation already exists
|
||||||
*
|
|
||||||
* The array keys are event names and the value can be:
|
|
||||||
*
|
|
||||||
* * The method name to call (priority defaults to 0)
|
|
||||||
* * An array composed of the method name to call and the priority
|
|
||||||
* * An array of arrays composed of the method names to call and respective
|
|
||||||
* priorities, or 0 if unset
|
|
||||||
*
|
|
||||||
* For instance:
|
|
||||||
*
|
|
||||||
* * array('eventName' => 'methodName')
|
|
||||||
* * array('eventName' => array('methodName', $priority))
|
|
||||||
* * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
|
|
||||||
*
|
|
||||||
* @return array The event names to listen to
|
|
||||||
*
|
|
||||||
* @api
|
|
||||||
*/
|
*/
|
||||||
public static function getSubscribedEvents()
|
public function __construct($verifyInstall = true)
|
||||||
{
|
{
|
||||||
array(
|
if (file_exists(THELIA_ROOT . '/local/config/database.yml') && $verifyInstall) {
|
||||||
|
throw new AlreadyInstallException("Thelia is already installed");
|
||||||
|
}
|
||||||
|
|
||||||
);
|
|
||||||
|
$this->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract public function exec();
|
||||||
}
|
}
|
||||||
78
core/lib/Thelia/Install/CheckPermission.php
Normal file
78
core/lib/Thelia/Install/CheckPermission.php
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* Thelia */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : info@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* This program 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 */
|
||||||
|
/* */
|
||||||
|
/* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace Thelia\Install;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CheckPermission
|
||||||
|
* @package Thelia\Install
|
||||||
|
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class CheckPermission extends BaseInstall
|
||||||
|
{
|
||||||
|
const CONF = "const";
|
||||||
|
const LOG = "log";
|
||||||
|
const CACHE = "cache";
|
||||||
|
|
||||||
|
private $directories = array();
|
||||||
|
private $validation = array();
|
||||||
|
private $valid = true;
|
||||||
|
|
||||||
|
public function __construct($verifyInstall = true)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
$this->directories = array(
|
||||||
|
self::CONF => THELIA_ROOT . "local/config",
|
||||||
|
self::LOG => THELIA_ROOT . "log",
|
||||||
|
self::CACHE => THELIA_ROOT . "cache"
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->validation = array(
|
||||||
|
self::CONF => array(
|
||||||
|
"text" => sprintf("config directory(%s)...", $this->directories[self::CONF]),
|
||||||
|
"status" => true
|
||||||
|
),
|
||||||
|
self::LOG => array(
|
||||||
|
"text" => sprintf("cache directory(%s)...", $this->directories[self::LOG]),
|
||||||
|
"status" => true
|
||||||
|
),
|
||||||
|
self::CACHE => array(
|
||||||
|
"text" => sprintf("log directory(%s)...", $this->directories[self::CACHE]),
|
||||||
|
"status" => true
|
||||||
|
)
|
||||||
|
);
|
||||||
|
parent::__construct($verifyInstall);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function exec()
|
||||||
|
{
|
||||||
|
foreach ($this->directories as $key => $directory) {
|
||||||
|
if(is_writable($directory) === false) {
|
||||||
|
$this->valid = false;
|
||||||
|
$this->validation[$key]["status"] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* Thelia */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : info@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* This program 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 */
|
||||||
|
/* */
|
||||||
|
/* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace Thelia\Install\Exception;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AlreadyInstallException
|
||||||
|
* @package Thelia\Install\Exception
|
||||||
|
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class AlreadyInstallException extends InstallException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
32
core/lib/Thelia/Install/Exception/InstallException.php
Normal file
32
core/lib/Thelia/Install/Exception/InstallException.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* Thelia */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : info@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* This program 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 */
|
||||||
|
/* */
|
||||||
|
/* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************/
|
||||||
|
namespace Thelia\Install\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class InstallException
|
||||||
|
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class InstallException extends \RuntimeException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user