parent
9e5af08f7e
commit
89650784f5
12 changed files with 131 additions and 76 deletions
|
@ -26,3 +26,4 @@
|
||||||
|
|
||||||
define("BAIKAL_VERSION", "0.2.0");
|
define("BAIKAL_VERSION", "0.2.0");
|
||||||
define("BAIKAL_HOMEPAGE", "http://baikal.codr.fr");
|
define("BAIKAL_HOMEPAGE", "http://baikal.codr.fr");
|
||||||
|
define("PROJECT_PACKAGE", "regular");
|
|
@ -61,17 +61,17 @@ class Tools {
|
||||||
|
|
||||||
# Asserting DB file exists
|
# Asserting DB file exists
|
||||||
if(!file_exists(PROJECT_SQLITE_FILE)) {
|
if(!file_exists(PROJECT_SQLITE_FILE)) {
|
||||||
throw new \Exception("DB file does not exist. To create it, please copy 'Core/Resources/db.empty.sqlite' to 'Specific/db/.ht.db.sqlite'");
|
throw new \Exception("DB file does not exist. To create it, please copy 'Core/Resources/db.empty.sqlite' to '" . PROJECT_SQLITE_FILE . "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Asserting DB file is readable
|
# Asserting DB file is readable
|
||||||
if(!is_readable(PROJECT_SQLITE_FILE)) {
|
if(!is_readable(PROJECT_SQLITE_FILE)) {
|
||||||
throw new \Exception("DB file is not readable. Please give read permissions to httpd user on file 'Specific/db/.ht.db.sqlite'.");
|
throw new \Exception("DB file is not readable. Please give read permissions to httpd user on file '" . PROJECT_SQLITE_FILE . "'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Asserting DB file is writable
|
# Asserting DB file is writable
|
||||||
if(!is_writable(PROJECT_SQLITE_FILE)) {
|
if(!is_writable(PROJECT_SQLITE_FILE)) {
|
||||||
throw new \Exception("DB file is not writable. Please give write permissions to httpd user on file 'Specific/db/.ht.db.sqlite'.");
|
throw new \Exception("DB file is not writable. Please give write permissions to httpd user on file '" . PROJECT_SQLITE_FILE . "'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Asserting config file exists
|
# Asserting config file exists
|
||||||
|
|
|
@ -44,7 +44,7 @@ class Framework extends \Flake\Core\Framework {
|
||||||
|
|
||||||
# Registering Baikal classloader
|
# Registering Baikal classloader
|
||||||
define("BAIKAL_PATH_FRAMEWORKROOT", dirname(__FILE__) . "/");
|
define("BAIKAL_PATH_FRAMEWORKROOT", dirname(__FILE__) . "/");
|
||||||
require_once(BAIKAL_PATH_FRAMEWORKROOT . '/Core/ClassLoader.php');
|
require_once(BAIKAL_PATH_FRAMEWORKROOT . 'Core/ClassLoader.php');
|
||||||
\Baikal\Core\ClassLoader::register();
|
\Baikal\Core\ClassLoader::register();
|
||||||
|
|
||||||
\Baikal\Core\Tools::assertEnvironmentIsOk();
|
\Baikal\Core\Tools::assertEnvironmentIsOk();
|
||||||
|
|
|
@ -47,6 +47,9 @@ class System extends \Baikal\Model\Config {
|
||||||
"BAIKAL_STANDALONE_PORT" => array(
|
"BAIKAL_STANDALONE_PORT" => array(
|
||||||
"type" => "integer",
|
"type" => "integer",
|
||||||
),
|
),
|
||||||
|
"PROJECT_SQLITE_FILE" => array(
|
||||||
|
"type" => "litteral",
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $aData = array(
|
protected $aData = array(
|
||||||
|
@ -56,6 +59,7 @@ class System extends \Baikal\Model\Config {
|
||||||
"BAIKAL_CAL_BASEURI" => "",
|
"BAIKAL_CAL_BASEURI" => "",
|
||||||
"BAIKAL_STANDALONE_ALLOWED" => "",
|
"BAIKAL_STANDALONE_ALLOWED" => "",
|
||||||
"BAIKAL_STANDALONE_PORT" => "",
|
"BAIKAL_STANDALONE_PORT" => "",
|
||||||
|
"PROJECT_SQLITE_FILE" => "",
|
||||||
);
|
);
|
||||||
|
|
||||||
public function formMorphologyForThisModelInstance() {
|
public function formMorphologyForThisModelInstance() {
|
||||||
|
@ -83,19 +87,6 @@ class System extends \Baikal\Model\Config {
|
||||||
)
|
)
|
||||||
)));
|
)));
|
||||||
|
|
||||||
$oMorpho->add(new \Formal\Element\Text(array(
|
|
||||||
"prop" => "BAIKAL_PATH_SABREDAV",
|
|
||||||
"label" => "Path to SabreDAV",
|
|
||||||
"validation" => "required",
|
|
||||||
"inputclass" => "input-xxlarge",
|
|
||||||
"help" => "The absolute server path to SabreDAV API",
|
|
||||||
"popover" => array(
|
|
||||||
"title" => "Path to SabreDAV",
|
|
||||||
"content" => "If Baïkal is hosted in a subfolder, this path should reflect it.<br /><strong>Whatever happens, it should begin and end with a slash.</strong>",
|
|
||||||
"position" => "top"
|
|
||||||
)
|
|
||||||
)));
|
|
||||||
|
|
||||||
$oMorpho->add(new \Formal\Element\Text(array(
|
$oMorpho->add(new \Formal\Element\Text(array(
|
||||||
"prop" => "BAIKAL_AUTH_REALM",
|
"prop" => "BAIKAL_AUTH_REALM",
|
||||||
"label" => "Auth realm",
|
"label" => "Auth realm",
|
||||||
|
@ -119,6 +110,27 @@ class System extends \Baikal\Model\Config {
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$oMorpho->add(new \Formal\Element\Text(array(
|
||||||
|
"prop" => "BAIKAL_PATH_SABREDAV",
|
||||||
|
"label" => "Path to SabreDAV",
|
||||||
|
"validation" => "required",
|
||||||
|
"inputclass" => "input-xxlarge",
|
||||||
|
"help" => "The absolute server path to SabreDAV API",
|
||||||
|
"popover" => array(
|
||||||
|
"title" => "Path to SabreDAV",
|
||||||
|
"content" => "If Baïkal is hosted in a subfolder, this path should reflect it.<br /><strong>Whatever happens, it should begin and end with a slash.</strong>",
|
||||||
|
"position" => "top"
|
||||||
|
)
|
||||||
|
)));
|
||||||
|
|
||||||
|
$oMorpho->add(new \Formal\Element\Text(array(
|
||||||
|
"prop" => "PROJECT_SQLITE_FILE",
|
||||||
|
"label" => "SQLite file path",
|
||||||
|
"validation" => "required",
|
||||||
|
"inputclass" => "input-xxlarge",
|
||||||
|
"help" => "The absolute server path to the SQLite file",
|
||||||
|
)));
|
||||||
|
|
||||||
return $oMorpho;
|
return $oMorpho;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,5 +59,8 @@ mv html/* .
|
||||||
mv html/.htaccess .
|
mv html/.htaccess .
|
||||||
rm -Rf html
|
rm -Rf html
|
||||||
|
|
||||||
|
# Tagging Distrib
|
||||||
|
cat Core/Distrib.php | sed -e "s/\"regular\"/\"flat\"/g" > Core/Distrib.php
|
||||||
|
|
||||||
# Displaying result
|
# Displaying result
|
||||||
echo "# "$TEMPDIR
|
echo "# "$TEMPDIR
|
||||||
|
|
|
@ -41,6 +41,8 @@ class Initialize extends \Flake\Core\Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->createDefaultConfigFilesIfNeeded();
|
$this->createDefaultConfigFilesIfNeeded();
|
||||||
|
$this->createHtaccessFilesIfNeeded();
|
||||||
|
|
||||||
$this->oModel = new \Baikal\Model\Config\Standard(PROJECT_PATH_SPECIFIC . "config.php");
|
$this->oModel = new \Baikal\Model\Config\Standard(PROJECT_PATH_SPECIFIC . "config.php");
|
||||||
|
|
||||||
# Assert that config file is writable
|
# Assert that config file is writable
|
||||||
|
@ -103,6 +105,25 @@ PHP;
|
||||||
file_put_contents(PROJECT_PATH_SPECIFIC . "config.php", $sContent);
|
file_put_contents(PROJECT_PATH_SPECIFIC . "config.php", $sContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function createHtaccessFilesIfNeeded() {
|
||||||
|
|
||||||
|
if(!file_exists(PROJECT_PATH_DOCUMENTROOT . ".htaccess")) {
|
||||||
|
@copy(PROJECT_PATH_CORERESOURCES . "htaccess-documentroot", PROJECT_PATH_DOCUMENTROOT . ".htaccess");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!file_exists(PROJECT_PATH_DOCUMENTROOT . ".htaccess")) {
|
||||||
|
throw new \Exception("Unable to create " . PROJECT_PATH_DOCUMENTROOT . ".htaccess; you may try to create it manually by copying " . PROJECT_PATH_CORERESOURCES . "htaccess-documentroot");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!file_exists(PROJECT_PATH_SPECIFIC . ".htaccess")) {
|
||||||
|
@copy(PROJECT_PATH_CORERESOURCES . "htaccess-specific", PROJECT_PATH_SPECIFIC . ".htaccess");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!file_exists(PROJECT_PATH_SPECIFIC . ".htaccess")) {
|
||||||
|
throw new \Exception("Unable to create " . PROJECT_PATH_SPECIFIC . ".htaccess; you may try to create it manually by copying " . PROJECT_PATH_CORERESOURCES . "htaccess-specific");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function createDefaultConfigFilesIfNeeded() {
|
protected function createDefaultConfigFilesIfNeeded() {
|
||||||
|
|
||||||
# Create empty config.php if needed
|
# Create empty config.php if needed
|
||||||
|
@ -180,6 +201,10 @@ define("BAIKAL_CARD_BASEURI", PROJECT_BASEURI . "card.php/");
|
||||||
|
|
||||||
# Should begin and end with a "/"
|
# Should begin and end with a "/"
|
||||||
define("BAIKAL_CAL_BASEURI", PROJECT_BASEURI . "cal.php/");
|
define("BAIKAL_CAL_BASEURI", PROJECT_BASEURI . "cal.php/");
|
||||||
|
|
||||||
|
# Define path to Baïkal Database SQLite file
|
||||||
|
define("PROJECT_SQLITE_FILE", PROJECT_PATH_SPECIFIC . "db/db.sqlite");
|
||||||
|
|
||||||
CODE;
|
CODE;
|
||||||
$sCode = trim($sCode);
|
$sCode = trim($sCode);
|
||||||
return $sCode;
|
return $sCode;
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
<?php
|
|
||||||
#################################################################
|
|
||||||
# Copyright notice
|
|
||||||
#
|
|
||||||
# (c) 2012 Jérôme Schneider <mail@jeromeschneider.fr>
|
|
||||||
# All rights reserved
|
|
||||||
#
|
|
||||||
# http://flake.codr.fr
|
|
||||||
#
|
|
||||||
# This script is part of the Flake project. The Flake
|
|
||||||
# project 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 2 of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# The GNU General Public License can be found at
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html.
|
|
||||||
#
|
|
||||||
# This script 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.
|
|
||||||
#
|
|
||||||
# This copyright notice MUST APPEAR in all copies of the script!
|
|
||||||
#################################################################
|
|
||||||
|
|
||||||
namespace Flake\Core;
|
|
||||||
|
|
||||||
class Auth extends \Flake\Core\FLObject {
|
|
||||||
public static function isAdmin() {
|
|
||||||
$sUrl = \Flake\Util\Tools::getCurrentUrl();
|
|
||||||
$aParts = explode("/", $sUrl);
|
|
||||||
return in_array("edit", $aParts);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -101,34 +101,25 @@ class Framework extends \Flake\Core\Framework {
|
||||||
# not using realpath here to avoid symlinks resolution
|
# not using realpath here to avoid symlinks resolution
|
||||||
|
|
||||||
define("PROJECT_PATH_CORE", PROJECT_PATH_ROOT . "Core/");
|
define("PROJECT_PATH_CORE", PROJECT_PATH_ROOT . "Core/");
|
||||||
|
define("PROJECT_PATH_CORERESOURCES", PROJECT_PATH_CORE . "Resources/");
|
||||||
define("PROJECT_PATH_SPECIFIC", PROJECT_PATH_ROOT . "Specific/");
|
define("PROJECT_PATH_SPECIFIC", PROJECT_PATH_ROOT . "Specific/");
|
||||||
define("PROJECT_PATH_FRAMEWORKS", PROJECT_PATH_CORE . "Frameworks/");
|
define("PROJECT_PATH_FRAMEWORKS", PROJECT_PATH_CORE . "Frameworks/");
|
||||||
define("PROJECT_PATH_WWWROOT", PROJECT_PATH_CORE . "WWWRoot/");
|
define("PROJECT_PATH_WWWROOT", PROJECT_PATH_CORE . "WWWRoot/");
|
||||||
|
|
||||||
# Define path to Baïkal SQLite file
|
|
||||||
define("PROJECT_SQLITE_FILE", PROJECT_PATH_SPECIFIC . "db/.ht.db.sqlite");
|
|
||||||
|
|
||||||
# Activate Flake class loader
|
# Activate Flake class loader
|
||||||
require_once(FLAKE_PATH_ROOT . 'Core/ClassLoader.php');
|
require_once(FLAKE_PATH_ROOT . 'Core/ClassLoader.php');
|
||||||
\Flake\Core\ClassLoader::register();
|
\Flake\Core\ClassLoader::register();
|
||||||
|
|
||||||
# Asserting DB file exists
|
|
||||||
if(!file_exists(PROJECT_SQLITE_FILE)) {
|
|
||||||
die("<h3>DB file does not exist. To create it, please copy '<span style='font-family: monospace; background: yellow;'>Core/Resources/db.empty.sqlite</span>' to '<span style='font-family: monospace;background: yellow;'>Specific/db/.ht.db.sqlite</span>'</h3>");
|
|
||||||
}
|
|
||||||
|
|
||||||
# Asserting DB file is readable
|
|
||||||
if(!is_readable(PROJECT_SQLITE_FILE)) {
|
|
||||||
die("<h3>DB file is not readable. Please give read permissions on file '<span style='font-family: monospace; background: yellow;'>Specific/db/.ht.db.sqlite</span>'</h3>");
|
|
||||||
}
|
|
||||||
|
|
||||||
# Asserting DB file is writable
|
|
||||||
if(!is_writable(PROJECT_SQLITE_FILE)) {
|
|
||||||
die("<h3>DB file is not writable. Please give write permissions on file '<span style='font-family: monospace; background: yellow;'>Specific/db/.ht.db.sqlite</span>'</h3>");
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once(PROJECT_PATH_CORE . "Distrib.php");
|
require_once(PROJECT_PATH_CORE . "Distrib.php");
|
||||||
|
|
||||||
|
if(PROJECT_PACKAGE === "regular") {
|
||||||
|
define("PROJECT_PATH_DOCUMENTROOT", PROJECT_PATH_ROOT . "html/");
|
||||||
|
} elseif(PROJECT_PACKAGE === "flat") {
|
||||||
|
define("PROJECT_PATH_DOCUMENTROOT", PROJECT_PATH_ROOT);
|
||||||
|
} else {
|
||||||
|
throw new \Exception("Unrecognized PROJECT_PACKAGE value.");
|
||||||
|
}
|
||||||
|
|
||||||
# Determine PROJECT_URI
|
# Determine PROJECT_URI
|
||||||
$sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"]));
|
$sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"]));
|
||||||
$sDirName = self::appendSlash(dirname($sScript));
|
$sDirName = self::appendSlash(dirname($sScript));
|
||||||
|
@ -157,15 +148,53 @@ class Framework extends \Flake\Core\Framework {
|
||||||
setlocale(LC_ALL, FLAKE_LOCALE);
|
setlocale(LC_ALL, FLAKE_LOCALE);
|
||||||
date_default_timezone_set(FLAKE_TIMEZONE);
|
date_default_timezone_set(FLAKE_TIMEZONE);
|
||||||
|
|
||||||
if(file_exists(PROJECT_SQLITE_FILE) && is_readable(PROJECT_SQLITE_FILE) && !isset($GLOBALS["DB"])) {
|
|
||||||
$GLOBALS["DB"] = new \Flake\Core\Database\Sqlite(PROJECT_SQLITE_FILE);
|
|
||||||
}
|
|
||||||
|
|
||||||
$GLOBALS["TEMPLATESTACK"] = array();
|
$GLOBALS["TEMPLATESTACK"] = array();
|
||||||
|
|
||||||
$aUrlInfo = parse_url(PROJECT_URI);
|
$aUrlInfo = parse_url(PROJECT_URI);
|
||||||
define("FLAKE_DOMAIN", $_SERVER["HTTP_HOST"]);
|
define("FLAKE_DOMAIN", $_SERVER["HTTP_HOST"]);
|
||||||
define("FLAKE_URIPATH", \Flake\Util\Tools::stripBeginSlash($aUrlInfo["path"]));
|
define("FLAKE_URIPATH", \Flake\Util\Tools::stripBeginSlash($aUrlInfo["path"]));
|
||||||
unset($aUrlInfo);
|
unset($aUrlInfo);
|
||||||
|
|
||||||
|
|
||||||
|
# Include Project config
|
||||||
|
$sConfigPath = PROJECT_PATH_SPECIFIC . "config.php";
|
||||||
|
$sConfigSystemPath = PROJECT_PATH_SPECIFIC . "config.system.php";
|
||||||
|
|
||||||
|
if(file_exists($sConfigPath)) {
|
||||||
|
require_once($sConfigPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file_exists($sConfigSystemPath)) {
|
||||||
|
require_once($sConfigSystemPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
self::initDb();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static function initDb() {
|
||||||
|
|
||||||
|
# Asserting DB filepath is set
|
||||||
|
if(!defined("PROJECT_SQLITE_FILE")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Asserting DB file exists
|
||||||
|
if(!file_exists(PROJECT_SQLITE_FILE)) {
|
||||||
|
die("<h3>DB file does not exist. To create it, please copy '<span style='font-family: monospace; background: yellow;'>Core/Resources/db.empty.sqlite</span>' to '<span style='font-family: monospace;background: yellow;'>" . PROJECT_SQLITE_FILE . "</span>'</h3>");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Asserting DB file is readable
|
||||||
|
if(!is_readable(PROJECT_SQLITE_FILE)) {
|
||||||
|
die("<h3>DB file is not readable. Please give read permissions on file '<span style='font-family: monospace; background: yellow;'>" . PROJECT_SQLITE_FILE . "</span>'</h3>");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Asserting DB file is writable
|
||||||
|
if(!is_writable(PROJECT_SQLITE_FILE)) {
|
||||||
|
die("<h3>DB file is not writable. Please give write permissions on file '<span style='font-family: monospace; background: yellow;'>" . PROJECT_SQLITE_FILE . "</span>'</h3>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file_exists(PROJECT_SQLITE_FILE) && is_readable(PROJECT_SQLITE_FILE) && !isset($GLOBALS["DB"])) {
|
||||||
|
$GLOBALS["DB"] = new \Flake\Core\Database\Sqlite(PROJECT_SQLITE_FILE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
16
CoreVersions/0.2.0/Resources/htaccess-documentroot
Executable file
16
CoreVersions/0.2.0/Resources/htaccess-documentroot
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
# Disabling cache management
|
||||||
|
# that could cause problems with DAV requests
|
||||||
|
# Useful only for Apache servers, with AllowOverride All
|
||||||
|
# (ie, .htaccess files enabled)
|
||||||
|
|
||||||
|
# Allow HTTP headers with Apache/FastCGI
|
||||||
|
# See http://code.google.com/p/sabredav/wiki/Authentication#Apache_+_(Fast)CGI
|
||||||
|
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive Off
|
||||||
|
</IfModule>
|
2
CoreVersions/0.2.0/Resources/htaccess-specific
Executable file
2
CoreVersions/0.2.0/Resources/htaccess-specific
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
Order allow,deny
|
||||||
|
Deny from all
|
2
Specific/.htaccess
Normal file
2
Specific/.htaccess
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Order allow,deny
|
||||||
|
Deny from all
|
Loading…
Reference in a new issue