diff --git a/core/lib/Thelia/Action/Install.php b/core/lib/Thelia/Install/BaseInstall.php
similarity index 66%
rename from core/lib/Thelia/Action/Install.php
rename to core/lib/Thelia/Install/BaseInstall.php
index 4c5d31df4..58c510267 100644
--- a/core/lib/Thelia/Action/Install.php
+++ b/core/lib/Thelia/Install/BaseInstall.php
@@ -20,42 +20,27 @@
/* along with this program. If not, see . */
/* */
/*************************************************************************************/
-
-namespace Thelia\Action;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
+namespace Thelia\Install;
+use Thelia\Install\Exception\AlreadyInstallException;
/**
- * Class Install
- * @package Thelia\Action
+ * Class BaseInstall
* @author Manuel Raynaud
*/
-class Install extends BaseAction implements EventSubscriberInterface {
-
+abstract class BaseInstall
+{
/**
- * Returns an array of event names this subscriber wants to listen to.
- *
- * 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
+ * Verify if an installation already exists
*/
- 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();
}
\ No newline at end of file
diff --git a/core/lib/Thelia/Install/CheckPermission.php b/core/lib/Thelia/Install/CheckPermission.php
new file mode 100644
index 000000000..db73330cf
--- /dev/null
+++ b/core/lib/Thelia/Install/CheckPermission.php
@@ -0,0 +1,78 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Install;
+
+
+/**
+ * Class CheckPermission
+ * @package Thelia\Install
+ * @author Manuel Raynaud
+ */
+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;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/lib/Thelia/Install/Exception/AlreadyInstallException.php b/core/lib/Thelia/Install/Exception/AlreadyInstallException.php
new file mode 100644
index 000000000..1409c7cdd
--- /dev/null
+++ b/core/lib/Thelia/Install/Exception/AlreadyInstallException.php
@@ -0,0 +1,35 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Install\Exception;
+
+
+/**
+ * Class AlreadyInstallException
+ * @package Thelia\Install\Exception
+ * @author Manuel Raynaud
+ */
+class AlreadyInstallException extends InstallException
+{
+
+}
\ No newline at end of file
diff --git a/core/lib/Thelia/Install/Exception/InstallException.php b/core/lib/Thelia/Install/Exception/InstallException.php
new file mode 100644
index 000000000..6924bcfe5
--- /dev/null
+++ b/core/lib/Thelia/Install/Exception/InstallException.php
@@ -0,0 +1,32 @@
+. */
+/* */
+/*************************************************************************************/
+namespace Thelia\Install\Exception;
+
+/**
+ * Class InstallException
+ * @author Manuel Raynaud
+ */
+class InstallException extends \RuntimeException
+{
+
+}
\ No newline at end of file