diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Core/Bootstrap.php b/CoreVersions/0.2.0/Frameworks/Baikal/Core/Bootstrap.php deleted file mode 100644 index 35f071e..0000000 --- a/CoreVersions/0.2.0/Frameworks/Baikal/Core/Bootstrap.php +++ /dev/null @@ -1,155 +0,0 @@ - -* All rights reserved -* -* http://baikal.codr.fr -* -* This script is part of the Baïkal Server project. The Baïkal -* Server 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! -***************************************************************/ - - -function rmBeginSlash($sString) { - if(substr($sString, 0, 1) === "/") { - $sString = substr($sString, 1); - } - - return $sString; -} - -function rmEndSlash($sString) { - if(substr($sString, -1) === "/") { - $sString = substr($sString, 0, -1); - } - - return $sString; -} - -function appendSlash($sString) { - if(substr($sString, -1) !== "/") { - $sString .= "/"; - } - - return $sString; -} - -function prependSlash($sString) { - if(substr($sString, 0, 1) !== "/") { - $sString = "/" . $sString; - } - - return $sString; -} - -function installTool() { - if(defined("BAIKAL_CONTEXT_INSTALL") && BAIKAL_CONTEXT_INSTALL === TRUE) { - return; - } else { - $sInstallToolUrl = BAIKAL_URI . "admin/install/"; - header("Location: " . $sInstallToolUrl); - exit(0); - } -} - -# Asserting PHP 5.3.0+ -if(version_compare(PHP_VERSION, '5.3.0', '<')) { - die('Baikal Fatal Error: Baikal requires PHP 5.3.0+ to run properly. You version is: ' . PHP_VERSION . '.'); -} - -# Registering Baikal classloader -define("BAIKAL_PATH_FRAMEWORKROOT", dirname(dirname(__FILE__)) . "/"); -require_once(BAIKAL_PATH_FRAMEWORKROOT . '/Core/ClassLoader.php'); -\Baikal\Core\ClassLoader::register(); - -\Baikal\Core\Tools::assertEnvironmentIsOk(); - -# determine Baïkal install root path -# not using realpath here to avoid symlinks resolution - -define("BAIKAL_PATH_ROOT", dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . "/"); # ../../../../../ -define("BAIKAL_PATH_CORE", BAIKAL_PATH_ROOT . "Core/"); -define("BAIKAL_PATH_SPECIFIC", BAIKAL_PATH_ROOT . "Specific/"); -define("BAIKAL_PATH_FRAMEWORKS", BAIKAL_PATH_CORE . "Frameworks/"); -define("BAIKAL_PATH_WWWROOT", BAIKAL_PATH_CORE . "WWWRoot/"); - -# Define path to Baïkal SQLite file -define("BAIKAL_SQLITE_FILE", BAIKAL_PATH_SPECIFIC . "db/baikal.sqlite"); - -require_once(BAIKAL_PATH_CORE . "Distrib.php"); - -# Determine BAIKAL_URI -$sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"])); -$sDirName = appendSlash(dirname($sScript)); -$sBaseUrl = appendSlash(substr($sDirName, 0, -1 * strlen(BAIKAL_CONTEXT_BASEURI))); -$aParts = explode("/", $_SERVER["SERVER_PROTOCOL"]); -$sProtocol = strtolower(array_shift($aParts)); -define("BAIKAL_BASEURI", $sBaseUrl); -define("BAIKAL_URI", $sProtocol . "://" . rmEndSlash($_SERVER["HTTP_HOST"]) . $sBaseUrl); -unset($sScript); unset($sDirName); unset($sBaseUrl); unset($sProtocol); unset($aParts); - -# Bootstrap Flake -require_once(BAIKAL_PATH_FRAMEWORKS . "Flake/Core/Bootstrap.php"); - -# Check that a config file exists -if( - !file_exists(BAIKAL_PATH_SPECIFIC . "config.php") || - !file_exists(BAIKAL_PATH_SPECIFIC . "config.system.php") -) { - installTool(); -} else { - require_once(BAIKAL_PATH_SPECIFIC . "config.php"); - require_once(BAIKAL_PATH_SPECIFIC . "config.system.php"); - date_default_timezone_set(BAIKAL_TIMEZONE); - - # Check that Baïkal is already configured - if(!defined("BAIKAL_CONFIGURED_VERSION")) { - installTool(); - - } else { - - # Check that running version matches configured version - if(version_compare(BAIKAL_VERSION, BAIKAL_CONFIGURED_VERSION) > 0) { - installTool(); - - } else { - - # Check that admin password is set - if(!defined("BAIKAL_ADMIN_PASSWORDHASH")) { - installTool(); - } - - \Baikal\Core\Tools::assertBaikalIsOk(); - - # Establishing connection with database - $GLOBALS["DB"] = new \Flake\Core\Database\Sqlite(BAIKAL_SQLITE_FILE); - - # Mapping PHP errors to exceptions; needed by SabreDAV - function exception_error_handler($errno, $errstr, $errfile, $errline) { - throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); - } - - set_error_handler("exception_error_handler"); - - unset($bShouldCheckEnv); - - # SabreDAV Autoloader - require_once(BAIKAL_PATH_SABREDAV . 'autoload.php'); - } - } -} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Core/ClassLoader.php b/CoreVersions/0.2.0/Frameworks/Baikal/Core/ClassLoader.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Core/Tools.php b/CoreVersions/0.2.0/Frameworks/Baikal/Core/Tools.php old mode 100644 new mode 100755 index a498b43..4a778d6 --- a/CoreVersions/0.2.0/Frameworks/Baikal/Core/Tools.php +++ b/CoreVersions/0.2.0/Frameworks/Baikal/Core/Tools.php @@ -48,50 +48,59 @@ class Tools { } } + public static function configureEnvironment() { + set_exception_handler('\Baikal\Core\Tools::handleException'); + ini_set("error_reporting", E_ALL); + } + + public static function handleException($exception) { + echo "
" . $exception . "\ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar.html new file mode 100755 index 0000000..7f8173f --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar.html @@ -0,0 +1,21 @@ + diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Anonymous.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Anonymous.html new file mode 100755 index 0000000..db737e0 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Anonymous.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Install.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Install.html new file mode 100755 index 0000000..0b09bdb --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Navigation/Topbar/Install.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/index.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/index.html old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/page-bg-light.png b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/page-bg-light.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/page-bg.png b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/page-bg.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/style.css b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Page/style.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Settings/Standard.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Settings/Standard.html new file mode 100755 index 0000000..d2e6b31 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Settings/Standard.html @@ -0,0 +1,5 @@ +"; + } + public static function assertBaikalIsOk() { # Asserting DB file exists - if(!file_exists(BAIKAL_SQLITE_FILE)) { + if(!file_exists(PROJECT_SQLITE_FILE)) { throw new \Exception("DB file does not exist. To create it, please copy 'Core/Resources/baikal.empty.sqlite' to 'Specific/db/baikal.sqlite'."); } # Asserting DB file is readable - if(!is_readable(BAIKAL_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/baikal.sqlite'."); } # Asserting DB file is writable - if(!is_writable(BAIKAL_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/baikal.sqlite'."); } # Asserting config file exists - if(!file_exists(BAIKAL_PATH_SPECIFIC . "config.php")) { + if(!file_exists(PROJECT_PATH_SPECIFIC . "config.php")) { throw new \Exception("Specific/config.php does not exist. Please use the Install tool to create it."); } # Asserting config file is readable - if(!is_readable(BAIKAL_PATH_SPECIFIC . "config.php")) { + if(!is_readable(PROJECT_PATH_SPECIFIC . "config.php")) { throw new \Exception("Specific/config.php is not readable. Please give read permissions to httpd user on file 'Specific/config.php'."); } # Asserting config file is writable - if(!is_writable(BAIKAL_PATH_SPECIFIC . "config.php")) { + if(!is_writable(PROJECT_PATH_SPECIFIC . "config.php")) { throw new \Exception("Specific/config.php is not writable. Please give write permissions to httpd user on file 'Specific/config.php'."); } # Asserting system config file exists - if(!file_exists(BAIKAL_PATH_SPECIFIC . "config.system.php")) { + if(!file_exists(PROJECT_PATH_SPECIFIC . "config.system.php")) { throw new \Exception("Specific/config.system.php does not exist. Please use the Install tool to create it."); } # Asserting system config file is readable - if(!is_readable(BAIKAL_PATH_SPECIFIC . "config.system.php")) { + if(!is_readable(PROJECT_PATH_SPECIFIC . "config.system.php")) { throw new \Exception("Specific/config.system.php is not readable. Please give read permissions to httpd user on file 'Specific/config.system.php'."); } # Asserting system config file is writable - if(!is_writable(BAIKAL_PATH_SPECIFIC . "config.system.php")) { + if(!is_writable(PROJECT_PATH_SPECIFIC . "config.system.php")) { throw new \Exception("Specific/config.system.php is not writable. Please give write permissions to httpd user on file 'Specific/config.system.php'."); } } diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Framework.php b/CoreVersions/0.2.0/Frameworks/Baikal/Framework.php new file mode 100755 index 0000000..c4a5fad --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/Baikal/Framework.php @@ -0,0 +1,97 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 Baikal; + +class Framework extends \Flake\Core\Framework { + + public static function installTool() { + if(defined("BAIKAL_CONTEXT_INSTALL") && BAIKAL_CONTEXT_INSTALL === TRUE) { + # Install tool has been launched and we're already on the install page + return; + } else { + # Install tool has been launched; redirecting user + $sInstallToolUrl = PROJECT_URI . "admin/install/"; + header("Location: " . $sInstallToolUrl); + exit(0); + } + } + + public static function bootstrap() { + + # Registering Baikal classloader + define("BAIKAL_PATH_FRAMEWORKROOT", dirname(__FILE__) . "/"); + require_once(BAIKAL_PATH_FRAMEWORKROOT . '/Core/ClassLoader.php'); + \Baikal\Core\ClassLoader::register(); + + \Baikal\Core\Tools::assertEnvironmentIsOk(); + \Baikal\Core\Tools::configureEnvironment(); + + # Check that a config file exists + if( + !file_exists(PROJECT_PATH_SPECIFIC . "config.php") || + !file_exists(PROJECT_PATH_SPECIFIC . "config.system.php") + ) { + self::installTool(); + } else { + require_once(PROJECT_PATH_SPECIFIC . "config.php"); + require_once(PROJECT_PATH_SPECIFIC . "config.system.php"); + date_default_timezone_set(BAIKAL_TIMEZONE); + + # Check that Baïkal is already configured + if(!defined("BAIKAL_CONFIGURED_VERSION")) { + self::installTool(); + + } else { + + # Check that running version matches configured version + if(version_compare(BAIKAL_VERSION, BAIKAL_CONFIGURED_VERSION) > 0) { + self::installTool(); + + } else { + + # Check that admin password is set + if(!defined("BAIKAL_ADMIN_PASSWORDHASH")) { + self::installTool(); + } + + \Baikal\Core\Tools::assertBaikalIsOk(); + + set_error_handler("\Baikal\Framework::exception_error_handler"); + + # SabreDAV Autoloader + require_once(BAIKAL_PATH_SABREDAV . 'autoload.php'); + } + } + } + + } + + # Mapping PHP errors to exceptions; needed by SabreDAV + public static function exception_error_handler($errno, $errstr, $errfile, $errline) { + throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/AddressBook.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/AddressBook.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/AddressBook/Contact.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/AddressBook/Contact.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Calendar.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Calendar.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Calendar/Event.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Calendar/Event.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/Standard.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/Standard.php old mode 100644 new mode 100755 index 8b91cf5..d9165ab --- a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/Standard.php +++ b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/Standard.php @@ -32,13 +32,16 @@ class Standard extends \Baikal\Model\Config { "BAIKAL_TIMEZONE" => array( "type" => "string", ), - "BAIKAL_CARD_ENABLED" => array( + "BAIKAL_ADMIN_ENABLED" => array( + "type" => "boolean", + ), + "BAIKAL_ADMIN_AUTOLOCKENABLED" => array( "type" => "boolean", ), "BAIKAL_CAL_ENABLED" => array( "type" => "boolean", ), - "BAIKAL_ADMIN_ENABLED" => array( + "BAIKAL_CARD_ENABLED" => array( "type" => "boolean", ), "BAIKAL_ADMIN_PASSWORDHASH" => array( @@ -54,6 +57,7 @@ class Standard extends \Baikal\Model\Config { "BAIKAL_CARD_ENABLED" => "", "BAIKAL_CAL_ENABLED" => "", "BAIKAL_ADMIN_ENABLED" => "", + "BAIKAL_ADMIN_AUTOLOCKENABLED" => "", "BAIKAL_ADMIN_PASSWORDHASH" => "" ); @@ -69,8 +73,21 @@ class Standard extends \Baikal\Model\Config { ))); $oMorpho->add(new \Formal\Element\Checkbox(array( - "prop" => "BAIKAL_CARD_ENABLED", - "label" => "Enable CardDAV" + "prop" => "BAIKAL_ADMIN_ENABLED", + "label" => "Enable Web Admin", + "popover" => array( + "title" => "Warning !", + "content" => "If disabled, you'll lose access to this very admin interface !", + ), + ))); + + $oMorpho->add(new \Formal\Element\Checkbox(array( + "prop" => "BAIKAL_ADMIN_AUTOLOCKENABLED", + "label" => "Enable Web Admin autolock", + "popover" => array( + "title" => "Web admin autolock", + "content" => "If enabled, you'll have to create a file named ENABLE_ADMIN in Specific/ prior to every admin use." + ) ))); $oMorpho->add(new \Formal\Element\Checkbox(array( @@ -79,12 +96,8 @@ class Standard extends \Baikal\Model\Config { ))); $oMorpho->add(new \Formal\Element\Checkbox(array( - "prop" => "BAIKAL_ADMIN_ENABLED", - "label" => "Enable Web Admin", - "popover" => array( - "title" => "Warning !", - "content" => "If disabled, you'll lose access to this very admin interface !", - ), + "prop" => "BAIKAL_CARD_ENABLED", + "label" => "Enable CardDAV" ))); $oMorpho->add(new \Formal\Element\Password(array( diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/System.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Config/System.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/Principal.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/Principal.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Baikal/Model/User.php b/CoreVersions/0.2.0/Frameworks/Baikal/Model/User.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Dashboard.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Dashboard.php old mode 100644 new mode 100755 index 9a42c37..4758b9a --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Dashboard.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Dashboard.php @@ -32,17 +32,31 @@ class Dashboard extends \Flake\Core\Controller { } public function render() { - $sLinkUsers = \BaikalAdmin\Controller\Users::link(); + $oView = new \BaikalAdmin\View\Dashboard(); + $oView->setData("BAIKAL_VERSION", BAIKAL_VERSION); - $sMessage =<<-* Nombre d'utilisateurs
-* Nombre de calendriers
-* Nombre d'évènements
-* Version + Mise à jour de baikal
-* Lien vers liste des utilisateurs
-* Lien vers paramétrage
-MESSAGE; - return $sMessage; + # Services status + $oView->setData("BAIKAL_CAL_ENABLED", BAIKAL_CAL_ENABLED); + $oView->setData("BAIKAL_CARD_ENABLED", BAIKAL_CARD_ENABLED); + + # Statistics: Users + $iNbUsers = \Baikal\Model\User::getBaseRequester()->count(); + $oView->setData("nbusers", $iNbUsers); + + # Statistics: CalDAV + $iNbCalendars = \Baikal\Model\Calendar::getBaseRequester()->count(); + $oView->setData("nbcalendars", $iNbCalendars); + + $iNbEvents = \Baikal\Model\Calendar\Event::getBaseRequester()->count(); + $oView->setData("nbevents", $iNbEvents); + + # Statistics: CardDAV + $iNbBooks = \Baikal\Model\AddressBook::getBaseRequester()->count(); + $oView->setData("nbbooks", $iNbBooks); + + $iNbContacts = \Baikal\Model\AddressBook\Contact::getBaseRequester()->count(); + $oView->setData("nbcontacts", $iNbContacts); + + return $oView->render(); } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/AdminPassword.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/AdminPassword.php deleted file mode 100644 index ef2a39a..0000000 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/AdminPassword.php +++ /dev/null @@ -1,71 +0,0 @@ - -* All rights reserved -* -* http://baikal.codr.fr -* -* This script is part of the Baïkal Server project. The Baïkal -* Server 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 BaikalAdmin\Controller\Install; - -class AdminPassword extends \Flake\Core\Controller { - - protected $aMessages = array(); - protected $oModel; # \BaikalAdmin\Model\Install - protected $oForm; # \Formal\Form - -/* public function __construct() { - parent::__construct(); - - $this->oModel = new \BaikalAdmin\Model\Install(); - - $this->oForm = $this->oModel->formForThisModelInstance(array( - "close" => FALSE - )); - } - - public function execute() { - if($this->oForm->submitted()) { - $this->oForm->execute(); - } - }*/ - - public function execute() { - } - - public function render() { - $sBigIcon = \BaikalAdmin\Model\Install::bigicon(); - $sBaikalVersion = BAIKAL_VERSION; - - $sHtml = << -Baïkal maintainance wizard
-Maintaining Baïkal {$sBaikalVersion}
- -HTML; - - $sHtml .= <<You have to set a password for the admin user. -HTML; - - return $sHtml; - } -} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/Initialize.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/Initialize.php old mode 100644 new mode 100755 index 86d5246..3131b4e --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/Initialize.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/Initialize.php @@ -35,8 +35,13 @@ class Initialize extends \Flake\Core\Controller { public function __construct() { parent::__construct(); + # Assert that /Specific is writable + if(!file_exists(PROJECT_PATH_SPECIFIC) || !is_dir(PROJECT_PATH_SPECIFIC) || !is_writable(PROJECT_PATH_SPECIFIC)) { + throw new \Exception("Specific/ dir is readonly. Baïkal Admin requires write permissions on this dir."); + } + $this->createDefaultConfigFilesIfNeeded(); - $this->oModel = new \Baikal\Model\Config\Standard(BAIKAL_PATH_SPECIFIC . "config.php"); + $this->oModel = new \Baikal\Model\Config\Standard(PROJECT_PATH_SPECIFIC . "config.php"); # Assert that config file is writable if(!$this->oModel->writable()) { @@ -53,7 +58,7 @@ class Initialize extends \Flake\Core\Controller { $this->oForm->execute(); if($this->oForm->persisted()) { - $sContent = file_get_contents(BAIKAL_PATH_SPECIFIC . "config.system.php"); + $sContent = file_get_contents(PROJECT_PATH_SPECIFIC . "config.system.php"); $sBaikalVersion = BAIKAL_VERSION; $sEncryptionKey = md5(microtime() . rand()); @@ -68,53 +73,52 @@ define("BAIKAL_CONFIGURED_VERSION", "{$sBaikalVersion}"); PHP; # Writing results to file - file_put_contents(BAIKAL_PATH_SPECIFIC . "config.system.php", $sContent . "\n\n" . $sNewConstants); + file_put_contents(PROJECT_PATH_SPECIFIC . "config.system.php", $sContent . "\n\n" . $sNewConstants); } } } public function render() { - $sBigIcon = \BaikalAdmin\Model\Install::bigicon(); + $sBigIcon = "glyph2x-magic"; $sBaikalVersion = BAIKAL_VERSION; - - $sHtml = << -Baïkal initialization wizard
-Configure your new Baïkal {$sBaikalVersion} installation.
- -HTML; + + $oView = new \BaikalAdmin\View\Install\Initialize(); + $oView->setData("baikalversion", BAIKAL_VERSION); if($this->oForm->persisted()) { - $sHtml .= "Baïkal is now configured. You may now Access the Baïkal admin"; - + $sMessage = "
Baïkal is now configured. You may now Access the Baïkal admin"; + $sForm = ""; } else { - # Display the config form - $sHtml .= $this->oForm->render(); + $sMessage = ""; + $sForm = $this->oForm->render(); } - - return $sHtml; + + $oView->setData("message", $sMessage); + $oView->setData("form", $sForm); + + return $oView->render(); } protected function tagConfiguredVersion() { - file_put_contents(BAIKAL_PATH_SPECIFIC . "config.php", $sContent); + file_put_contents(PROJECT_PATH_SPECIFIC . "config.php", $sContent); } protected function createDefaultConfigFilesIfNeeded() { # Create empty config.php if needed - if(!file_exists(BAIKAL_PATH_SPECIFIC . "config.php")) { - @touch(BAIKAL_PATH_SPECIFIC . "config.php"); + if(!file_exists(PROJECT_PATH_SPECIFIC . "config.php")) { + @touch(PROJECT_PATH_SPECIFIC . "config.php"); $sContent = "getDefaultConfig(); - file_put_contents(BAIKAL_PATH_SPECIFIC . "config.php", $sContent); + file_put_contents(PROJECT_PATH_SPECIFIC . "config.php", $sContent); } # Create empty config.system.php if needed - if(!file_exists(BAIKAL_PATH_SPECIFIC . "config.system.php")) { - @touch(BAIKAL_PATH_SPECIFIC . "config.system.php"); + if(!file_exists(PROJECT_PATH_SPECIFIC . "config.system.php")) { + @touch(PROJECT_PATH_SPECIFIC . "config.system.php"); $sContent = "getDefaultSystemConfig(); - file_put_contents(BAIKAL_PATH_SPECIFIC . "config.system.php", $sContent); + file_put_contents(PROJECT_PATH_SPECIFIC . "config.system.php", $sContent); } } @@ -138,6 +142,9 @@ define("BAIKAL_CAL_ENABLED", TRUE); # Baïkal Web Admin ON/OFF switch; default TRUE define("BAIKAL_ADMIN_ENABLED", TRUE); +# Baïkal Web Admin autolock ON/OFF switch; default TRUE +define("BAIKAL_ADMIN_AUTOLOCKENABLED", TRUE); + # Baïkal Web admin password hash; Set by Core/Scripts/adminpassword.php or via Baïkal Web Admin define("BAIKAL_ADMIN_PASSWORDHASH", ""); CODE; @@ -163,16 +170,16 @@ define("BAIKAL_STANDALONE_ALLOWED", FALSE); define("BAIKAL_STANDALONE_PORT", 8888); # PATH to SabreDAV -define("BAIKAL_PATH_SABREDAV", BAIKAL_PATH_FRAMEWORKS . "SabreDAV/lib/Sabre/"); +define("BAIKAL_PATH_SABREDAV", PROJECT_PATH_FRAMEWORKS . "SabreDAV/lib/Sabre/"); # If you change this value, you'll have to re-generate passwords for all your users define("BAIKAL_AUTH_REALM", "BaikalDAV"); # Should begin and end with a "/" -define("BAIKAL_CARD_BASEURI", BAIKAL_BASEURI . "card.php/"); +define("BAIKAL_CARD_BASEURI", PROJECT_BASEURI . "card.php/"); # Should begin and end with a "/" -define("BAIKAL_CAL_BASEURI", BAIKAL_BASEURI . "cal.php/"); +define("BAIKAL_CAL_BASEURI", PROJECT_BASEURI . "cal.php/"); CODE; $sCode = trim($sCode); return $sCode; diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php old mode 100644 new mode 100755 index 3fe4891..e1ecb37 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php @@ -36,7 +36,7 @@ class VersionUpgrade extends \Flake\Core\Controller { } public function render() { - $sBigIcon = \BaikalAdmin\Model\Install::bigicon(); + $sBigIcon = "glyph2x-magic"; $sBaikalVersion = BAIKAL_VERSION; $sBaikalConfiguredVersion = BAIKAL_CONFIGURED_VERSION; @@ -47,15 +47,6 @@ class VersionUpgrade extends \Flake\Core\Controller { HTML; -/* $sHtml .= <<What is this ? -
- This is the Baïkal Install Tool.
-HTML; -*/ return $sHtml; } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Login.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Login.php new file mode 100755 index 0000000..fcae27f --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Login.php @@ -0,0 +1,77 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 BaikalAdmin\Controller; + +class Login extends \Flake\Core\Controller { + + public function execute() { + } + + public function render() { + $sActionUrl = \Flake\Util\Tools::getCurrentUrl(); + $sSubmittedFlagName = "auth"; + $sMessage = ""; + + if(self::isSubmitted() && !\BaikalAdmin\Core\Auth::isAuthenticated()) { + $sMessage = \Formal\Core\Message::error( + "The login/password you provided is invalid. Please retry.", + "Authentication error" + ); + } elseif(self::justLoggedOut()) { + $sMessage = \Formal\Core\Message::notice( + "You have been disconnected from your session.", + "Session ended", + FALSE + ); + } + + $sLogin = htmlspecialchars(\Flake\Util\Tools::POST("login")); + $sPassword = htmlspecialchars(\Flake\Util\Tools::POST("password")); + + if(trim($sLogin) === "") { + $sLogin = "admin"; + } + + $oView = new \BaikalAdmin\View\Login(); + $oView->setData("message", $sMessage); + $oView->setData("actionurl", $sActionUrl); + $oView->setData("submittedflagname", $sSubmittedFlagName); + $oView->setData("login", $sLogin); + $oView->setData("password", $sPassword); + + return $oView->render(); + } + + protected static function isSubmitted() { + return (intval(\Flake\Util\Tools::POST("auth")) === 1); + } + + protected static function justLoggedOut() { + $aParams = $GLOBALS["ROUTER"]::getURLParams(); + return (!empty($aParams) && $aParams[0] === "loggedout"); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Logout.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Logout.php new file mode 100755 index 0000000..4194db6 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Logout.php @@ -0,0 +1,43 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 BaikalAdmin\Controller; + +class Logout extends \Flake\Core\Controller { + + public function execute() { + \BaikalAdmin\Core\Auth::unAuthenticate(); + + $sControllerForDefaultRoute = $GLOBALS["ROUTER"]::getControllerForRoute("default"); +# debug($sControllerForDefaultRoute); +# die(); + $sLink = $GLOBALS["ROUTER"]::buildRouteForController($sControllerForDefaultRoute, "loggedout"); + \Flake\Util\Tools::redirect($sLink); + } + + public function render() { + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar.php old mode 100644 new mode 100755 index f7e031e..a8b8bd1 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar.php @@ -33,6 +33,8 @@ class Topbar extends \Flake\Core\Controller { public function render() { + $oView = new \BaikalAdmin\View\Navigation\Topbar(); + $sCurrentRoute = $GLOBALS["ROUTER"]::getCurrentRoute(); $sActiveHome = $sActiveUsers = $sActiveSettingsStandard = $sActiveSettingsSystem = ""; @@ -41,6 +43,7 @@ class Topbar extends \Flake\Core\Controller { $sUsersLink = \BaikalAdmin\Controller\Users::link(); $sSettingsStandardLink = \BaikalAdmin\Controller\Settings\Standard::link(); $sSettingsSystemLink = \BaikalAdmin\Controller\Settings\System::link(); + $sLogoutLink = \BaikalAdmin\Controller\Logout::link(); if($sCurrentRoute === "default") { $sActiveHome = "active"; @@ -61,6 +64,7 @@ class Topbar extends \Flake\Core\Controller { $sActiveSettingsSystem = "active"; } +<<<<<<< HEAD $sHtml =<< HTML; return $sHtml; +======= + $oView->setData("activehome", $sActiveHome); + $oView->setData("activeusers", $sActiveUsers); + $oView->setData("activesettingsstandard", $sActiveSettingsStandard); + $oView->setData("activesettingssystem", $sActiveSettingsSystem); + $oView->setData("homelink", $sHomeLink); + $oView->setData("userslink", $sUsersLink); + $oView->setData("settingsstandardlink", $sSettingsStandardLink); + $oView->setData("settingssystemlink", $sSettingsSystemLink); + $oView->setData("logoutlink", $sLogoutLink); + + return $oView->render(); +>>>>>>> 140b415248d6a98d9f3aa37815964b3a4456cfd6 } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Anonymous.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Anonymous.php new file mode 100755 index 0000000..842efd5 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Anonymous.php @@ -0,0 +1,38 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 BaikalAdmin\Controller\Navigation\Topbar; + +class Anonymous extends \Flake\Core\Controller { + + public function execute() { + } + + public function render() { + $oView = new \BaikalAdmin\View\Navigation\Topbar\Anonymous(); + return $oView->render(); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php old mode 100644 new mode 100755 index 0e25499..a1306b1 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php @@ -32,16 +32,7 @@ class Install extends \Flake\Core\Controller { } public function render() { - - $sHtml =<< - - -HTML; - return $sHtml; + $oView = new \BaikalAdmin\View\Navigation\Topbar\Install(); + return $oView->render(); } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/Standard.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/Standard.php old mode 100644 new mode 100755 index d9c2dbc..91701b9 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/Standard.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/Standard.php @@ -30,7 +30,7 @@ class Standard extends \Flake\Core\Controller { public function __construct() { parent::__construct(); - $this->oModel = new \Baikal\Model\Config\Standard(BAIKAL_PATH_SPECIFIC . "config.php"); + $this->oModel = new \Baikal\Model\Config\Standard(PROJECT_PATH_SPECIFIC . "config.php"); # Assert that config file is writable if(!$this->oModel->writable()) { @@ -49,6 +49,10 @@ class Standard extends \Flake\Core\Controller { } public function render() { - return $this->oForm->render(); + + $oView = new \BaikalAdmin\View\Settings\Standard(); + $oView->setData("form", $this->oForm->render()); + + return $oView->render(); } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/System.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/System.php old mode 100644 new mode 100755 index 8063a90..9841f2a --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/System.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Settings/System.php @@ -30,7 +30,7 @@ class System extends \Flake\Core\Controller { public function __construct() { parent::__construct(); - $this->oModel = new \Baikal\Model\Config\System(BAIKAL_PATH_SPECIFIC . "config.system.php"); + $this->oModel = new \Baikal\Model\Config\System(PROJECT_PATH_SPECIFIC . "config.system.php"); # Assert that config file is writable if(!$this->oModel->writable()) { @@ -49,11 +49,16 @@ class System extends \Flake\Core\Controller { } public function render() { - $sMessage = \Formal\Core\Message::notice( + + $oView = new \BaikalAdmin\View\Settings\System(); + $oView->setData("message", \Formal\Core\Message::notice( "Do not change anything on this page unless you really know what you are doing.
- It's displayed because you just installed or upgraded your Baïkal installation.
- Baïkal requires some maintenance in order to ensure everything works as expected. -
You might break Baïkal if you misconfigure something here.", "Warning !", FALSE - ); - return $sMessage . $this->oForm->render(); + )); + + $oView->setData("form", $this->oForm->render()); + + return $oView->render(); } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php old mode 100644 new mode 100755 index f3dc1d0..55fe2c4 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php @@ -118,29 +118,28 @@ class AddressBooks extends \Flake\Core\Controller { public function render() { - $sHtml = ""; + $oView = new \BaikalAdmin\View\User\AddressBooks(); - # Render list of users - $oAddressBooks = $this->oUser->getAddressBooksBaseRequester()->execute(); - - $oView = new \BaikalAdmin\View\AddressBooks\Listing(); + # User $oView->setData("user", $this->oUser); - $oView->setData("addressbooks", $oAddressBooks); - $sHtml .= $oView->render(); - # Render form - $sHtml .= ""; + # Render list of address books + $oAddressBooks = $this->oUser->getAddressBooksBaseRequester()->execute(); + $oView->setData("addressbooks", $oAddressBooks); + + # Messages $sMessages = implode("\n", $this->aMessages); + $oView->setData("messages", $sMessages); if(self::newRequested() || self::editRequested()) { - # We have to display the User form - $sHtml .= $this->oForm->render(); + $sForm = $this->oForm->render(); } else { - # No form is displayed; simply display messages, if any - $sHtml .= $sMessages; + $sForm = ""; } + + $oView->setData("form", $sForm); - return $sHtml; + return $oView->render(); } protected function initForm() { diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/Calendars.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/Calendars.php old mode 100644 new mode 100755 index ca06df1..6a9ae52 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/Calendars.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/User/Calendars.php @@ -123,29 +123,28 @@ class Calendars extends \Flake\Core\Controller { public function render() { - $sHtml = ""; + $oView = new \BaikalAdmin\View\User\Calendars(); - # Render list of users - $oCalendars = $this->oUser->getCalendarsBaseRequester()->execute(); - - $oView = new \BaikalAdmin\View\Calendars\Listing(); + # User $oView->setData("user", $this->oUser); - $oView->setData("calendars", $oCalendars); - $sHtml .= $oView->render(); - # Render form - $sHtml .= ""; + # List of calendars + $oCalendars = $this->oUser->getCalendarsBaseRequester()->execute(); + $oView->setData("calendars", $oCalendars); + + # Messages $sMessages = implode("\n", $this->aMessages); + $oView->setData("messages", $sMessages); if(self::newRequested() || self::editRequested()) { - # We have to display the User form - $sHtml .= $this->oForm->render(); + $sForm = $this->oForm->render(); } else { - # No form is displayed; simply display messages, if any - $sHtml .= $sMessages; + $sForm = ""; } + + $oView->setData("form", $sForm); - return $sHtml; + return $oView->render(); } protected function initForm() { diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Users.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Users.php old mode 100644 new mode 100755 index 74e5c5b..68c3dfe --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Users.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Users.php @@ -98,28 +98,27 @@ class Users extends \Flake\Core\Controller { } public function render() { - $sHtml = ""; - # Render list of users + $oView = new \BaikalAdmin\View\Users(); + + # List of users $oUsers = \Baikal\Model\User::getBaseRequester()->execute(); - $oView = new \BaikalAdmin\View\Users\Listing(); $oView->setData("users", $oUsers); - $sHtml .= $oView->render(); - - # Render form - $sHtml .= ""; + # Messages $sMessages = implode("\n", $this->aMessages); - + $oView->setData("messages", $sMessages); + + # Form if(self::newRequested() || self::editRequested()) { - # We have to display the User form - $sHtml .= $this->oForm->render(); + $sForm = $this->oForm->render(); } else { - # No form is displayed; simply display messages, if any - $sHtml .= $sMessages; + $sForm = ""; } - return $sHtml; + $oView->setData("form", $sForm); + + return $oView->render(); } protected function initForm() { diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Auth.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Auth.php old mode 100644 new mode 100755 index 7f52b15..d7af35b --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Auth.php +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Auth.php @@ -27,7 +27,7 @@ namespace BaikalAdmin\Core; class Auth { - static function assertEnabled() { + public static function assertEnabled() { if(!defined("BAIKAL_ADMIN_ENABLED") || BAIKAL_ADMIN_ENABLED !== TRUE) { die("Baïkal Admin is disabled.
To enable it, set BAIKAL_ADMIN_ENABLED to TRUE in Specific/config.php"); } @@ -35,7 +35,11 @@ class Auth { self::assertUnlocked(); } - static function assertUnlocked() { + public static function assertUnlocked() { + + if(defined("BAIKAL_ADMIN_AUTOLOCKENABLED") && BAIKAL_ADMIN_AUTOLOCKENABLED === FALSE) { + return TRUE; + } if(defined("BAIKAL_CONTEXT_INSTALL") && BAIKAL_CONTEXT_INSTALL === TRUE) { $sToolName = "Baïkal Install Tool"; @@ -44,7 +48,7 @@ class Auth { } $bLocked = TRUE; - $sEnableFile = BAIKAL_PATH_SPECIFIC . "ENABLE_ADMIN"; + $sEnableFile = PROJECT_PATH_SPECIFIC . "ENABLE_ADMIN"; if(file_exists($sEnableFile)) { clearstatcache(); @@ -68,41 +72,40 @@ class Auth { die("" . $sToolName . " is locked.
To unlock it, create an empty file named ENABLE_ADMIN in Specific/"); } } - - static function assertAuthentified() { - if(!self::isAuthentified()) { - header(utf8_decode('WWW-Authenticate: Basic realm="Baïkal admin"')); - header('HTTP/1.0 401 Unauthorized'); - die("Please authenticate."); + + public static function isAuthenticated() { + if(isset($_SESSION["baikaladminauth"]) && $_SESSION["baikaladminauth"] === md5(BAIKAL_ADMIN_PASSWORDHASH)) { + return TRUE; } - - return TRUE; + + return FALSE; } - - static function isAuthentified() { - - if(array_key_exists("PHP_AUTH_USER", $_SERVER)) { - $sUser = $_SERVER["PHP_AUTH_USER"]; - } else { - $sUser = FALSE; + + public static function authenticate() { + + if(intval(\Flake\Util\Tools::POST("auth")) !== 1) { + return FALSE; } - - if(array_key_exists("PHP_AUTH_PW", $_SERVER)) { - $sPass = $_SERVER["PHP_AUTH_PW"]; - } else { - $sPass = FALSE; - } - + + $sUser = \Flake\Util\Tools::POST("login"); + $sPass = \Flake\Util\Tools::POST("password"); + $sPassHash = self::hashAdminPassword($sPass); - + if($sUser === "admin" && $sPassHash === BAIKAL_ADMIN_PASSWORDHASH) { + $_SESSION["baikaladminauth"] = md5(BAIKAL_ADMIN_PASSWORDHASH); return TRUE; } return FALSE; + + } + + public static function unAuthenticate() { + unset($_SESSION["baikaladminauth"]); } - static function hashAdminPassword($sPassword) { + public static function hashAdminPassword($sPassword) { return md5('admin:' . BAIKAL_AUTH_REALM . ':' . $sPassword); } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Bootstrap.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Bootstrap.php deleted file mode 100644 index a544041..0000000 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/Bootstrap.php +++ /dev/null @@ -1,44 +0,0 @@ - -* All rights reserved -* -* http://baikal.codr.fr -* -* This script is part of the Baïkal Server project. The Baïkal -* Server 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! -***************************************************************/ - -define("BAIKALADMIN_PATH_ROOT", dirname(dirname(__FILE__)) . "/"); - -# Bootstrap Baïkal Core -require_once(dirname(dirname(dirname(__FILE__))) . "/Baikal/Core/Bootstrap.php"); # ../../, symlink-safe - -# Bootstrap Formal -require_once(dirname(dirname(dirname(__FILE__))) . "/Formal/Core/Bootstrap.php"); - -# Registering BaikalAdmin classloader -require_once(dirname(__FILE__) . '/ClassLoader.php'); -\BaikalAdmin\Core\ClassLoader::register(); - -# Relative to BAIKAL_URI; so that BAIKAL_URI . BAIKALADMIN_URIPATH corresponds to the full URL to Baïkal admin -define("BAIKALADMIN_URIPATH", "admin/"); -$GLOBALS["ROUTER"]::setURIPath(BAIKALADMIN_URIPATH); - -# Include BaikalAdmin Framework config -require_once(BAIKALADMIN_PATH_ROOT . "config.php"); \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/ClassLoader.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/ClassLoader.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/View.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Core/View.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Framework.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Framework.php new file mode 100755 index 0000000..419ddb5 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Framework.php @@ -0,0 +1,46 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 BaikalAdmin; + +class Framework extends \Flake\Core\Framework { + + public static function bootstrap() { + define("BAIKALADMIN_PATH_ROOT", PROJECT_PATH_ROOT . "Core/Frameworks/BaikalAdmin/"); # ./ + + \Baikal\Framework::bootstrap(); + \Formal\Framework::bootstrap(); + + # Registering BaikalAdmin classloader + require_once(BAIKALADMIN_PATH_ROOT . '/Core/ClassLoader.php'); + \BaikalAdmin\Core\ClassLoader::register(); + + $GLOBALS["ROUTER"]::setURIPath("admin/"); + + # Include BaikalAdmin Framework config + require_once(BAIKALADMIN_PATH_ROOT . "config.php"); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Model/Install.php b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Model/Install.php deleted file mode 100644 index 61429b3..0000000 --- a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Model/Install.php +++ /dev/null @@ -1,75 +0,0 @@ - -* All rights reserved -* -* http://baikal.codr.fr -* -* This script is part of the Baïkal Server project. The Baïkal -* Server 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 BaikalAdmin\Model; - -class Install extends \Flake\Core\Model\NoDb { - - protected $aData = array( - "test" => "", - ); - - public function persist() { - } - - public function destroy() { - } - - public function floating() { - return FALSE; - } - - public function formMorphologyForThisModelInstance() { - $oMorpho = new \Formal\Form\Morphology(); - - $oMorpho->add(new \Formal\Element\Text(array( - "prop" => "test", - "label" => "Test" - ))); - - return $oMorpho; - } - - public static function icon() { - return "icon-cog"; - } - - public static function mediumicon() { - return "glyph-magic"; - } - - public static function bigicon() { - return "glyph2x-magic"; - } - - public function label() { - return "Baïkal"; - } - - public static function humanName() { - return "Parameters"; - } -} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyph-dark.png b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyph-dark.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyph2x-dark.png b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyph2x-dark.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyphpro-2x.css b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyphpro-2x.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyphpro.css b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/glyphpro.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/test-glyphpro2x.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/GlyphiconsPro/test-glyphpro2x.html old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Strings/EN/Exceptions.json b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Strings/EN/Exceptions.json new file mode 100755 index 0000000..4eb7c3f --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Strings/EN/Exceptions.json @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Dashboard.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Dashboard.html new file mode 100755 index 0000000..e7f3e1b --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Dashboard.html @@ -0,0 +1,111 @@ ++ + +Dashboard
++ + +++About this system
+++++Version
+This systems runs Baïkal = $BAIKAL_VERSION ?>
+++Services
+ + if($BAIKAL_CAL_ENABLED === TRUE) { + $sCalDAVClass = "label-success"; + $sCalDAVText = "On"; + } else { + $sCalDAVClass = "label-important"; + $sCalDAVText = "Off"; + } + + if($BAIKAL_CARD_ENABLED === TRUE) { + $sCardDAVClass = "label-success"; + $sCardDAVText = "On"; + } else { + $sCardDAVClass = "label-important"; + $sCardDAVText = "Off"; + } + + ?> ++ +
++ +Web admin +On ++ +CalDAV += $sCalDAVText ?> ++ + +CardDAV += $sCardDAVText ?> +++License and credits
+ + $sUrl = "http://baikal.codr.fr/version/" . $BAIKAL_VERSION . "/about"; + ?> +Baïkal is open source software, and released under the terms of the GNU GPL v3.
+Baïkal is developped by Jérôme Schneider. You can contact him at mail@jeromeschneider.fr.
+Baïkal is based upon other open source projects. Read the README.md file to learn about that.
+ ++ \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Install/Initialize.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Install/Initialize.html new file mode 100755 index 0000000..0ee9cb9 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Install/Initialize.html @@ -0,0 +1,8 @@ +++Statistics
+++++Users
++ +
++ + +Registered users += $nbusers ?> +++CalDAV
++ +
++ +Number of calendars += $nbcalendars ?> ++ + +Number of events += $nbevents ?> +++CardDAV
++ +
++ +Number of address books += $nbbooks ?> ++ + +Number of contacts += $nbcontacts ?> ++ + + += $message ?> += $form ?> \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Login.html b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Login.html new file mode 100755 index 0000000..f6e4d54 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Resources/Templates/Login.html @@ -0,0 +1,25 @@ +Baïkal initialization wizard
+Configure your new Baïkal = $baikalversion ?> installation.
++ + += $message ?> + +Authentication
+Please authenticate to access Baïkal Web Admin.
+
" . print_r(debug_backtrace(), TRUE) . ""; die(); } diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Core/DocumentedException.php b/CoreVersions/0.2.0/Frameworks/Flake/Core/DocumentedException.php new file mode 100755 index 0000000..ff86525 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/Flake/Core/DocumentedException.php @@ -0,0 +1,83 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 DocumentedException extends \Exception { + + protected $aMarkers = array(); + + # Redefine the exception signature + public function __construct($message, $aMarkers = array()) { + $this->aMarkers = $aMarkers; + parent::__construct($message, 0, null); + } + + # custom string representation of object + public function __toString() { + $aDoc = $this->getDocumentation(); + \Flake\Util\Tools::debug($aDoc); + return "" . htmlspecialchars($this->message) . ""; + } + + protected function getSoftrefPath() { + $sSoftRef = $this->getMessage(); + $aTrace = $this->getTrace(); + + if($sSoftRef{0} === "\\") { + # An absolute softref has been given + return $sSoftRef; + } + + if(isset($aTrace[0]["class"])) { + return "\\" . $aTrace[0]["class"] . "#" . $sSoftRef; + } + + return $sSoftRef; + } + + protected function getDocumentation() { + # Determine the documentation softref + $sSoftRefPath = $this->getSoftrefPath(); + return $sSoftRefPath; + + /* + $aParts = explode("#", \Flake\Util\Tools::trimStrings($sSoftRefPath, "\\")); + + $aSegments = explode("\\", $aParts[0]); + $sKey = $aParts[1]; + + # Is it a Framework ? + if(\Flake\Util\Frameworks::isAFramework($aSegments[0])) { + $sPath = \Flake\Util\Frameworks::getPath($aSegments[0]); + die($sPath); + } + + debug($aParts); + return $sSoftRefPath; + */ + } +} diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Core/Framework.php b/CoreVersions/0.2.0/Frameworks/Flake/Core/Framework.php new file mode 100755 index 0000000..c14b0af --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/Flake/Core/Framework.php @@ -0,0 +1,31 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 Framework { + +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester.php b/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester.php old mode 100644 new mode 100755 index a4416cb..7cdeb5c --- a/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester.php +++ b/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester.php @@ -45,4 +45,5 @@ abstract class Requester extends \Flake\Core\FLObject { } public abstract function execute(); + public abstract function count(); } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester/Sql.php b/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester/Sql.php index 769f95c..e332547 100755 --- a/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester/Sql.php +++ b/CoreVersions/0.2.0/Frameworks/Flake/Core/Requester/Sql.php @@ -170,7 +170,7 @@ class Sql extends \Flake\Core\FLObject { return $this->bHasBeenExecuted; } - public function getQuery() { + public function getQuery($sFields = "*") { $sWhere = "1=1"; $sOrderBy = ""; $sLimit = ""; @@ -194,7 +194,7 @@ class Sql extends \Flake\Core\FLObject { } return $GLOBALS["DB"]->SELECTquery( - "*", + $sFields, $this->sDataTable, $sWhere, "", @@ -202,6 +202,10 @@ class Sql extends \Flake\Core\FLObject { $sLimit ); } + + public function getCountQuery() { + return $this->getQuery("count(*) as nbitems"); + } public function execute() { $oCollection = new \Flake\Core\CollectionTyped($this->sModelClass); @@ -218,4 +222,15 @@ class Sql extends \Flake\Core\FLObject { return $oCollection; } + + public function count() { + $sSql = $this->getCountQuery(); + + $rSql = $GLOBALS["DB"]->query($sSql); + if(($aRs = $rSql->fetch()) !== FALSE) { + return intval($aRs["nbitems"]); + } + + return 0; + } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Framework.php b/CoreVersions/0.2.0/Frameworks/Flake/Framework.php new file mode 100755 index 0000000..87a2d34 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/Flake/Framework.php @@ -0,0 +1,155 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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; +require_once(PROJECT_PATH_ROOT . "Core/Frameworks/Flake/Core/Framework.php"); # Manual require as Classloader not included yet + + +if(!function_exists("debug")) { + function debug($mVar, $sHeader=0) { + \Flake\Util\Tools::debug($mVar, $sHeader); + } +} + +class Framework extends \Flake\Core\Framework { + + function rmBeginSlash($sString) { + if(substr($sString, 0, 1) === "/") { + $sString = substr($sString, 1); + } + + return $sString; + } + + function rmEndSlash($sString) { + if(substr($sString, -1) === "/") { + $sString = substr($sString, 0, -1); + } + + return $sString; + } + + function appendSlash($sString) { + if(substr($sString, -1) !== "/") { + $sString .= "/"; + } + + return $sString; + } + + function prependSlash($sString) { + if(substr($sString, 0, 1) !== "/") { + $sString = "/" . $sString; + } + + return $sString; + } + + public static function bootstrap() { + # Asserting PHP 5.3.0+ + if(version_compare(PHP_VERSION, '5.3.0', '<')) { + die('Flake Fatal Error: Flake requires PHP 5.3.0+ to run properly. Your version is: ' . PHP_VERSION . '.'); + } + + # Define absolute server path to Flake Framework + define("FLAKE_PATH_ROOT", PROJECT_PATH_ROOT . "Core/Frameworks/Flake/"); # ./ + + if(!defined('LF')) { + define('LF', chr(10)); + } + + if(!defined('CR')) { + define('CR', chr(13)); + } + + if(array_key_exists("SERVER_NAME", $_SERVER) && $_SERVER["SERVER_NAME"] === "mongoose") { + define("MONGOOSE_SERVER", TRUE); + } else { + define("MONGOOSE_SERVER", FALSE); + } + + # Display errors messages, except notices + #ini_set("display_errors", 1); + #ini_set("error_reporting", E_ALL & ~E_NOTICE); + + ################################################################################################# + + # determine Flake install root path + # not using realpath here to avoid symlinks resolution + + define("PROJECT_PATH_CORE", PROJECT_PATH_ROOT . "Core/"); + define("PROJECT_PATH_SPECIFIC", PROJECT_PATH_ROOT . "Specific/"); + define("PROJECT_PATH_FRAMEWORKS", PROJECT_PATH_CORE . "Frameworks/"); + define("PROJECT_PATH_WWWROOT", PROJECT_PATH_CORE . "WWWRoot/"); + + # Define path to Baïkal SQLite file + define("PROJECT_SQLITE_FILE", PROJECT_PATH_SPECIFIC . "db/baikal.sqlite"); + + define("PROJECT_SAFEHASH_SALT", "une-clef-super-secrete"); + + require_once(PROJECT_PATH_CORE . "Distrib.php"); + + # Determine PROJECT_URI + $sScript = substr($_SERVER["SCRIPT_FILENAME"], strlen($_SERVER["DOCUMENT_ROOT"])); + $sDirName = self::appendSlash(dirname($sScript)); + $sBaseUrl = self::appendSlash(substr($sDirName, 0, -1 * strlen(PROJECT_CONTEXT_BASEURI))); + $aParts = explode("/", $_SERVER["SERVER_PROTOCOL"]); + $sProtocol = strtolower(array_shift($aParts)); + define("PROJECT_BASEURI", $sBaseUrl); + define("PROJECT_URI", $sProtocol . "://" . self::rmEndSlash($_SERVER["HTTP_HOST"]) . $sBaseUrl); + unset($sScript); unset($sDirName); unset($sBaseUrl); unset($sProtocol); unset($aParts); + + ################################################################################################# + + require_once(FLAKE_PATH_ROOT . 'Core/ClassLoader.php'); + \Flake\Core\ClassLoader::register(); + + # Include Flake Framework config + require_once(FLAKE_PATH_ROOT . "config.php"); + + # Determine Router class + $GLOBALS["ROUTER"] = \Flake\Util\Tools::router(); + + if(!\Flake\Util\Tools::isCliPhp()) { + ini_set("html_errors", TRUE); + session_start(); + } + + setlocale(LC_ALL, FLAKE_LOCALE); + date_default_timezone_set(FLAKE_TIMEZONE); + + if(defined("PROJECT_SQLITE_FILE") && 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(); + + $aUrlInfo = parse_url(PROJECT_URI); + define("FLAKE_DOMAIN", $_SERVER["HTTP_HOST"]); + define("FLAKE_URIPATH", \Flake\Util\Tools::stripBeginSlash($aUrlInfo["path"])); + unset($aUrlInfo); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Util/Frameworks.php b/CoreVersions/0.2.0/Frameworks/Flake/Util/Frameworks.php old mode 100644 new mode 100755 index e6d2e30..73c8b9e --- a/CoreVersions/0.2.0/Frameworks/Flake/Util/Frameworks.php +++ b/CoreVersions/0.2.0/Frameworks/Flake/Util/Frameworks.php @@ -30,7 +30,26 @@ class Frameworks extends \Flake\Core\FLObject { private function __construct() { # private constructor to force static class } + public function isAFramework($sName) { + $sName = trim(\Flake\Util\Tools::trimSlashes($sName)); + if($sName === "" || $sName === "." || $sName === "..") { + return FALSE; + } + + $sFrameworkPath = PROJECT_PATH_FRAMEWORKS . $sName; + return file_exists($sFrameworkPath) && is_dir($sFrameworkPath); + } + public static function enabled($sFramework) { return FALSE; } + + # TODO: Create a 'Framework' Model + public function getPath($sName) { + if(self::isAFramework($sName)) { + throw new \Flake\Core\Exception(htmlspecialchars($$sName) . " is not a framework.", $sName); + } + + return \Flake\Util\Tools::appendSlash(PROJECT_PATH_FRAMEWORKS . $sName); + } } \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Util/Router/QuestionMarkRewrite.php b/CoreVersions/0.2.0/Frameworks/Flake/Util/Router/QuestionMarkRewrite.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Flake/Util/Tools.php b/CoreVersions/0.2.0/Frameworks/Flake/Util/Tools.php index 0a0e0e9..0620df4 100755 --- a/CoreVersions/0.2.0/Frameworks/Flake/Util/Tools.php +++ b/CoreVersions/0.2.0/Frameworks/Flake/Util/Tools.php @@ -65,7 +65,7 @@ class Tools extends \Flake\Core\FLObject { } public static function serverToRelativeWebPath($sAbsPath) { - return "/" . str_replace(FLAKE_PATH_WWWROOT, "", $sAbsPath); + return "/" . str_replace(PROJECT_PATH_WWWROOT, "", $sAbsPath); } public static function view_array($array_in) { @@ -192,7 +192,7 @@ class Tools extends \Flake\Core\FLObject { } public static function safelock($sString) { - return substr(md5(FLAKE_SAFEHASH_SALT . ":" . $sString), 0, 5); + return substr(md5(PROJECT_SAFEHASH_SALT . ":" . $sString), 0, 5); } public static function redirect($sUrl) { @@ -568,42 +568,65 @@ TEST; return $_SERVER['HTTP_USER_AGENT']; } + ########### public static function appendSlash($sString) { - if(substr($sString, -1) !== "/") { - $sString .= "/"; - } - - return $sString; + return self::appendString($sString, "/"); } public static function prependSlash($sString) { - if(substr($sString, 0, 1) !== "/") { - $sString = "/" . $sString; - } - - return $sString; + return self::prependString($sString, "/"); } public static function stripBeginSlash($sString) { - if(substr($sString, 0, 1) === "/") { - $sString = substr($sString, 1); - } - - return $sString; + return self::stripBeginString($sString, "/"); } public static function stripEndSlash($sString) { - if(substr($sString, -1) === "/") { - $sString = substr($sString, 0, -1); - } - - return $sString; + return self::stripEndString($sString, "/"); } public static function trimSlashes($sString) { return self::stripBeginSlash(self::stripEndSlash($sString)); } + ########### + public static function appendString($sString, $sAppend) { + if(substr($sString, -1 * strlen($sAppend)) !== $sAppend) { + $sString .= $sAppend; + } + + return $sString; + } + + public static function prependString($sString, $sAppend) { + if(substr($sString, 0, 1 * strlen($sAppend)) !== $sAppend) { + $sString = $sAppend . $sString; + } + + return $sString; + } + + public static function stripBeginString($sString, $sAppend) { + if(substr($sString, 0, 1 * strlen($sAppend)) === $sAppend) { + $sString = substr($sString, strlen($sAppend)); + } + + return $sString; + } + + public static function stripEndString($sString, $sAppend) { + if(substr($sString, -1 * strlen($sAppend)) === $sAppend) { + $sString = substr($sString, 0, -1 * strlen($sAppend)); + } + + return $sString; + } + + public static function trimStrings($sString, $sAppend) { + return self::stripBeginString(self::stripEndString($sString, $sAppend), $sAppend); + } + ########### + public static function router() { return "\Flake\Util\Router\QuestionMarkRewrite"; } diff --git a/CoreVersions/0.2.0/Frameworks/Flake/config.php b/CoreVersions/0.2.0/Frameworks/Flake/config.php old mode 100644 new mode 100755 index 0e23890..67ab3ca --- a/CoreVersions/0.2.0/Frameworks/Flake/config.php +++ b/CoreVersions/0.2.0/Frameworks/Flake/config.php @@ -24,12 +24,6 @@ * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ -define("FLAKE_URI", BAIKAL_URI); -define("FLAKE_DB_FILEPATH", BAIKAL_SQLITE_FILE); -define("FLAKE_PATH_FRAMEWORKS", BAIKAL_PATH_FRAMEWORKS); -define("FLAKE_PATH_WWWROOT", BAIKAL_PATH_WWWROOT); - -define("FLAKE_SAFEHASH_SALT", "une-clef-super-secrete"); define("FLAKE_LOCALE", "fr_FR.UTF-8"); if(defined("BAIKAL_TIMEZONE")) { diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Core/ClassLoader.php b/CoreVersions/0.2.0/Frameworks/Formal/Core/ClassLoader.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Core/Message.php b/CoreVersions/0.2.0/Frameworks/Formal/Core/Message.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Element.php b/CoreVersions/0.2.0/Frameworks/Formal/Element.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Element/Checkbox.php b/CoreVersions/0.2.0/Frameworks/Formal/Element/Checkbox.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Element/Listbox.php b/CoreVersions/0.2.0/Frameworks/Formal/Element/Listbox.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Element/Password.php b/CoreVersions/0.2.0/Frameworks/Formal/Element/Password.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Element/Text.php b/CoreVersions/0.2.0/Frameworks/Formal/Element/Text.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Form.php b/CoreVersions/0.2.0/Frameworks/Formal/Form.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Form/Morphology.php b/CoreVersions/0.2.0/Frameworks/Formal/Form/Morphology.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Formal/Framework.php b/CoreVersions/0.2.0/Frameworks/Formal/Framework.php new file mode 100755 index 0000000..ad62d44 --- /dev/null +++ b/CoreVersions/0.2.0/Frameworks/Formal/Framework.php @@ -0,0 +1,37 @@ + +* All rights reserved +* +* http://baikal.codr.fr +* +* This script is part of the Baïkal Server project. The Baïkal +* Server 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 Formal; + +class Framework extends \Flake\Core\Framework { + + public static function bootstrap() { + define("FORMAL_PATH_ROOT", PROJECT_PATH_ROOT . "Core/Frameworks/Formal/"); + + require_once(FORMAL_PATH_ROOT . 'Core/ClassLoader.php'); + \Formal\Core\ClassLoader::register(); + } +} \ No newline at end of file diff --git a/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Colorize.php b/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Colorize.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.cli.php b/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.cli.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.html.php b/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.html.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.php b/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/Tabulator.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/TabulatorColumn.php b/CoreVersions/0.2.0/Frameworks/Versions/Tabulator.0.0.1/TabulatorColumn.php old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap-responsive.css b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap-responsive.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap-responsive.min.css b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap-responsive.min.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap.css b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap.min.css b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/css/bootstrap.min.css old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings-orig.png b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings-orig.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings-white.png b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings-white.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings.png b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/img/glyphicons-halflings.png old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap-popover.js b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap-popover.js old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap-tooltip.js b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap-tooltip.js old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap.js b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap.js old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap.min.js b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/bootstrap.min.js old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/jquery-1.7.1.min.js b/CoreVersions/0.2.0/Frameworks/Versions/TwitterBootstrap.2.0.2/js/jquery-1.7.1.min.js old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Resources/Web/README.md b/CoreVersions/0.2.0/Resources/Web/README.md old mode 100644 new mode 100755 diff --git a/CoreVersions/0.2.0/Scripts/adminpassword.php b/CoreVersions/0.2.0/Scripts/adminpassword.php index dab0494..961ddb1 100755 --- a/CoreVersions/0.2.0/Scripts/adminpassword.php +++ b/CoreVersions/0.2.0/Scripts/adminpassword.php @@ -34,7 +34,7 @@ require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/Core/Frameworks/Ba # Bootstraping BaikalAdmin require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/Core/Frameworks/BaikalAdmin/Core/Bootstrap.php"); # ../../../ -$sConfigFile = BAIKAL_PATH_SPECIFIC . "config.php"; +$sConfigFile = PROJECT_PATH_SPECIFIC . "config.php"; if(!file_exists($sConfigFile)) { die("Specific/config.php is does not exist. Aborting, cannot modify admin password."); diff --git a/CoreVersions/0.2.0/WWWRoot/cal.php b/CoreVersions/0.2.0/WWWRoot/cal.php index 4b03ef0..ccc7018 100755 --- a/CoreVersions/0.2.0/WWWRoot/cal.php +++ b/CoreVersions/0.2.0/WWWRoot/cal.php @@ -25,10 +25,15 @@ ***************************************************************/ define("BAIKAL_CONTEXT", TRUE); -define("BAIKAL_CONTEXT_BASEURI", "/"); +define("PROJECT_CONTEXT_BASEURI", "/"); +define("PROJECT_PATH_ROOT", dirname(getcwd()) . "/"); #../ -# Bootstraping Baikal -require_once(dirname(dirname(__FILE__)) . "/Frameworks/Baikal/Core/Bootstrap.php"); +# Bootstraping Flake +require_once(PROJECT_PATH_ROOT . "Core/Frameworks/Flake/Framework.php"); +\Flake\Framework::bootstrap(); + +# Bootstrapping Baïkal +\Baikal\Framework::bootstrap(); if(!defined("BAIKAL_CAL_ENABLED") || BAIKAL_CAL_ENABLED !== TRUE) { throw new ErrorException("Baikal CalDAV is disabled.", 0, 255, __FILE__, __LINE__); diff --git a/CoreVersions/0.2.0/WWWRoot/card.php b/CoreVersions/0.2.0/WWWRoot/card.php index 701cbe7..9865ee7 100755 --- a/CoreVersions/0.2.0/WWWRoot/card.php +++ b/CoreVersions/0.2.0/WWWRoot/card.php @@ -25,10 +25,15 @@ ***************************************************************/ define("BAIKAL_CONTEXT", TRUE); -define("BAIKAL_CONTEXT_BASEURI", "/"); +define("PROJECT_CONTEXT_BASEURI", "/"); +define("PROJECT_PATH_ROOT", dirname(getcwd()) . "/"); #../ -# Bootstraping Baikal -require_once(dirname(dirname(__FILE__)) . "/Frameworks/Baikal/Core/Bootstrap.php"); +# Bootstraping Flake +require_once(PROJECT_PATH_ROOT . "Core/Frameworks/Flake/Framework.php"); +\Flake\Framework::bootstrap(); + +# Bootstrapping Baïkal +\Baikal\Framework::bootstrap(); if(!defined("BAIKAL_CARD_ENABLED") || BAIKAL_CARD_ENABLED !== TRUE) { throw new ErrorException("Baikal CardDAV is disabled.", 0, 255, __FILE__, __LINE__); diff --git a/CoreVersions/0.2.0/WWWRoot/index.php b/CoreVersions/0.2.0/WWWRoot/index.php index a7a64fc..607fb2a 100755 --- a/CoreVersions/0.2.0/WWWRoot/index.php +++ b/CoreVersions/0.2.0/WWWRoot/index.php @@ -24,10 +24,15 @@ * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ define("BAIKAL_CONTEXT", TRUE); -define("BAIKAL_CONTEXT_BASEURI", "/"); +define("PROJECT_CONTEXT_BASEURI", "/"); +define("PROJECT_PATH_ROOT", dirname(getcwd()) . "/"); #../ -# Bootstraping Baikal -require_once(dirname(dirname(__FILE__)) . "/Frameworks/Baikal/Core/Bootstrap.php"); +# Bootstraping Flake +require_once(PROJECT_PATH_ROOT . "Core/Frameworks/Flake/Framework.php"); +\Flake\Framework::bootstrap(); + +# Bootstrapping Baïkal +\Baikal\Framework::bootstrap(); ?> diff --git a/Specific/db/baikal.sqlite b/Specific/db/baikal.sqlite index 32253c2..db968ca 100755 Binary files a/Specific/db/baikal.sqlite and b/Specific/db/baikal.sqlite differ diff --git a/html/.htaccess b/html/.htaccess old mode 100644 new mode 100755