diff options
author | Nicolas LÅ“uillet <nicolas.loeuillet@gmail.com> | 2013-10-07 13:12:28 +0200 |
---|---|---|
committer | Nicolas LÅ“uillet <nicolas.loeuillet@gmail.com> | 2013-10-07 13:12:28 +0200 |
commit | 9d3b88b3796496b68e762d50904a7ab609edc9c3 (patch) | |
tree | daf5c8ded0b55e4f908ea632095fe85a15871f18 /inc/poche/Poche.class.php | |
parent | 5eebe4e50dd5da7e87e98c366205ed3266348603 (diff) | |
download | wallabag-9d3b88b3796496b68e762d50904a7ab609edc9c3.tar.gz wallabag-9d3b88b3796496b68e762d50904a7ab609edc9c3.tar.zst wallabag-9d3b88b3796496b68e762d50904a7ab609edc9c3.zip |
bug fix #266: make installation steps easier
Diffstat (limited to 'inc/poche/Poche.class.php')
-rw-r--r-- | inc/poche/Poche.class.php | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 1ba8e7c1..899d7356 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -20,7 +20,7 @@ class Poche | |||
20 | public $pagination; | 20 | public $pagination; |
21 | 21 | ||
22 | private $currentTheme = ''; | 22 | private $currentTheme = ''; |
23 | private $notInstalledMessage = ''; | 23 | private $notInstalledMessage = array(); |
24 | 24 | ||
25 | # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) | 25 | # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) |
26 | private $installedThemes = array( | 26 | private $installedThemes = array( |
@@ -33,28 +33,21 @@ class Poche | |||
33 | 33 | ||
34 | public function __construct() | 34 | public function __construct() |
35 | { | 35 | { |
36 | if (! $this->configFileIsAvailable()) { | 36 | if ($this->configFileIsAvailable()) { |
37 | return; | 37 | $this->init(); |
38 | } | 38 | } |
39 | 39 | ||
40 | $this->init(); | 40 | if ($this->themeIsInstalled()) { |
41 | 41 | $this->initTpl(); | |
42 | if (! $this->themeIsInstalled()) { | ||
43 | return; | ||
44 | } | 42 | } |
45 | 43 | ||
46 | $this->initTpl(); | 44 | if ($this->systemIsInstalled()) { |
47 | 45 | $this->store = new Database(); | |
48 | if (! $this->systemIsInstalled()) { | 46 | $this->messages = new Messages(); |
49 | return; | 47 | # installation |
50 | } | 48 | if (! $this->store->isInstalled()) { |
51 | 49 | $this->install(); | |
52 | $this->store = new Database(); | 50 | } |
53 | $this->messages = new Messages(); | ||
54 | |||
55 | # installation | ||
56 | if (! $this->store->isInstalled()) { | ||
57 | $this->install(); | ||
58 | } | 51 | } |
59 | } | 52 | } |
60 | 53 | ||
@@ -94,7 +87,7 @@ class Poche | |||
94 | 87 | ||
95 | public function configFileIsAvailable() { | 88 | public function configFileIsAvailable() { |
96 | if (! self::$configFileAvailable) { | 89 | if (! self::$configFileAvailable) { |
97 | $this->notInstalledMessage = 'You have to rename <strong>inc/poche/config.inc.php.new</strong> to <strong>inc/poche/config.inc.php</strong>.'; | 90 | $this->notInstalledMessage[] = 'You have to rename inc/poche/config.inc.php.new to inc/poche/config.inc.php.'; |
98 | 91 | ||
99 | return false; | 92 | return false; |
100 | } | 93 | } |
@@ -103,39 +96,44 @@ class Poche | |||
103 | } | 96 | } |
104 | 97 | ||
105 | public function themeIsInstalled() { | 98 | public function themeIsInstalled() { |
99 | $passTheme = TRUE; | ||
106 | # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet | 100 | # Twig is an absolute requirement for Poche to function. Abort immediately if the Composer installer hasn't been run yet |
107 | if (! self::$canRenderTemplates) { | 101 | if (! self::$canRenderTemplates) { |
108 | $this->notInstalledMessage = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at <a href="http://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>'; | 102 | $this->notInstalledMessage[] = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. Have a look at <a href="http://doc.inthepoche.com/doku.php?id=users:begin:install">the documentation.</a>'; |
109 | 103 | $passTheme = FALSE; | |
110 | return false; | ||
111 | } | 104 | } |
112 | 105 | ||
113 | if (! is_writable(CACHE)) { | 106 | if (! is_writable(CACHE)) { |
114 | $this->notInstalledMessage = '<h1>error</h1><p>You don\'t have write access on cache directory.</p>'; | 107 | $this->notInstalledMessage[] = 'You don\'t have write access on cache directory.'; |
115 | 108 | ||
116 | self::$canRenderTemplates = false; | 109 | self::$canRenderTemplates = false; |
117 | 110 | ||
118 | return false; | 111 | $passTheme = FALSE; |
119 | } | 112 | } |
120 | 113 | ||
121 | # Check if the selected theme and its requirements are present | 114 | # Check if the selected theme and its requirements are present |
122 | if (! is_dir(THEME . '/' . $this->getTheme())) { | 115 | if ($this->getTheme() != '' && ! is_dir(THEME . '/' . $this->getTheme())) { |
123 | $this->notInstalledMessage = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')'; | 116 | $this->notInstalledMessage[] = 'The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $this->getTheme() . ')'; |
124 | 117 | ||
125 | self::$canRenderTemplates = false; | 118 | self::$canRenderTemplates = false; |
126 | 119 | ||
127 | return false; | 120 | $passTheme = FALSE; |
128 | } | 121 | } |
129 | 122 | ||
130 | foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) { | 123 | foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) { |
131 | if (! is_dir(THEME . '/' . $requiredTheme)) { | 124 | if (! is_dir(THEME . '/' . $requiredTheme)) { |
132 | $this->notInstalledMessage = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')'; | 125 | $this->notInstalledMessage[] = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')'; |
133 | 126 | ||
134 | self::$canRenderTemplates = false; | 127 | self::$canRenderTemplates = false; |
135 | 128 | ||
136 | return false; | 129 | $passTheme = FALSE; |
137 | } | 130 | } |
138 | } | 131 | } |
132 | |||
133 | if (!$passTheme) { | ||
134 | return FALSE; | ||
135 | } | ||
136 | |||
139 | 137 | ||
140 | return true; | 138 | return true; |
141 | } | 139 | } |
@@ -147,25 +145,30 @@ class Poche | |||
147 | */ | 145 | */ |
148 | public function systemIsInstalled() | 146 | public function systemIsInstalled() |
149 | { | 147 | { |
150 | $msg = ''; | 148 | $msg = TRUE; |
151 | 149 | ||
152 | $configSalt = defined('SALT') ? constant('SALT') : ''; | 150 | $configSalt = defined('SALT') ? constant('SALT') : ''; |
153 | 151 | ||
154 | if (empty($configSalt)) { | 152 | if (empty($configSalt)) { |
155 | $msg = '<h1>error</h1><p>You have not yet filled in the SALT value in the config.inc.php file.</p>'; | 153 | $this->notInstalledMessage[] = 'You have not yet filled in the SALT value in the config.inc.php file.'; |
156 | } else if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { | 154 | $msg = FALSE; |
155 | } | ||
156 | if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) { | ||
157 | Tools::logm('sqlite file doesn\'t exist'); | 157 | Tools::logm('sqlite file doesn\'t exist'); |
158 | $msg = '<h1>error</h1><p>sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.</p>'; | 158 | $this->notInstalledMessage[] = 'sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.'; |
159 | } else if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) { | 159 | $msg = FALSE; |
160 | $msg = '<h1>install folder</h1><p>you have to delete the /install folder before using poche.</p>'; | 160 | } |
161 | } else if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { | 161 | if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) { |
162 | $this->notInstalledMessage[] = 'you have to delete the /install folder before using poche.'; | ||
163 | $msg = FALSE; | ||
164 | } | ||
165 | if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) { | ||
162 | Tools::logm('you don\'t have write access on sqlite file'); | 166 | Tools::logm('you don\'t have write access on sqlite file'); |
163 | $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>'; | 167 | $this->notInstalledMessage[] = 'You don\'t have write access on sqlite file.'; |
168 | $msg = FALSE; | ||
164 | } | 169 | } |
165 | 170 | ||
166 | if (! empty($msg)) { | 171 | if (! $msg) { |
167 | $this->notInstalledMessage = $msg; | ||
168 | |||
169 | return false; | 172 | return false; |
170 | } | 173 | } |
171 | 174 | ||