diff --git a/.php_cs.dist b/.php_cs.dist index 4aaf1d9..990b6d7 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -5,8 +5,19 @@ $config->getFinder() ->exclude('vendor') ->in(__DIR__); $config->setRules([ - '@PSR1' => true, - '@Symfony' => true + '@PSR2' => true, + '@Symfony' => true, + 'binary_operator_spaces' => ['align_double_arrow' => true], + 'braces' => ['position_after_functions_and_oop_constructs' => 'same'], + 'concat_space' => ['spacing' => 'one'], + 'no_superfluous_phpdoc_tags' => false, + 'no_unneeded_control_parentheses' => false, + 'phpdoc_align' => false, + 'single_line_comment_style' => false, + 'single_quote' => false, + 'trailing_comma_in_multiline_array' => false, + 'visibility_required' => false, + 'yoda_style' => false ]); return $config; diff --git a/Core/Distrib.php b/Core/Distrib.php index 125aeff..c1cf8b3 100644 --- a/Core/Distrib.php +++ b/Core/Distrib.php @@ -1,4 +1,5 @@ render(); } } diff --git a/Core/Frameworks/Baikal/Controller/Navigation/Topbar/Anonymous.php b/Core/Frameworks/Baikal/Controller/Navigation/Topbar/Anonymous.php index 69d5182..2521f7f 100644 --- a/Core/Frameworks/Baikal/Controller/Navigation/Topbar/Anonymous.php +++ b/Core/Frameworks/Baikal/Controller/Navigation/Topbar/Anonymous.php @@ -1,4 +1,5 @@ render(); } } diff --git a/Core/Frameworks/Baikal/Core/PDOBasicAuth.php b/Core/Frameworks/Baikal/Core/PDOBasicAuth.php index 7eadb87..af2c7c6 100644 --- a/Core/Frameworks/Baikal/Core/PDOBasicAuth.php +++ b/Core/Frameworks/Baikal/Core/PDOBasicAuth.php @@ -12,23 +12,22 @@ namespace Baikal\Core; * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ class PDOBasicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { - /** - * Reference to PDO connection + * Reference to PDO connection. * * @var PDO */ protected $pdo; /** - * PDO table name we'll be using + * PDO table name we'll be using. * * @var string */ protected $tableName; /** - * Authentication realm + * Authentication realm. * * @var string */ @@ -48,39 +47,38 @@ class PDOBasicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { * @param string $tableName The PDO table name to use */ function __construct(\PDO $pdo, $authRealm, $tableName = 'users') { - $this->pdo = $pdo; $this->tableName = $tableName; $this->authRealm = $authRealm; } /** - * Validates a username and password + * Validates a username and password. * * This method should return true or false depending on if login * succeeded. * * @param string $username * @param string $password + * * @return bool */ function validateUserPass($username, $password) { - $stmt = $this->pdo->prepare('SELECT username, digesta1 FROM ' . $this->tableName . ' WHERE username = ?'); $stmt->execute([$username]); $result = $stmt->fetchAll(); - - if (!count($result)) return false; + if (!count($result)) { + return false; + } $hash = md5($username . ':' . $this->authRealm . ':' . $password); - if ($result[0]['digesta1'] === $hash) - { + if ($result[0]['digesta1'] === $hash) { $this->currentUser = $username; + return true; } + return false; - } - } diff --git a/Core/Frameworks/Baikal/Core/Server.php b/Core/Frameworks/Baikal/Core/Server.php index 46a8f0c..e96fe39 100644 --- a/Core/Frameworks/Baikal/Core/Server.php +++ b/Core/Frameworks/Baikal/Core/Server.php @@ -1,4 +1,5 @@ enableCalDAV = $enableCalDAV; $this->enableCardDAV = $enableCardDAV; $this->authType = $authType; @@ -111,27 +108,23 @@ class Server { $this->baseUri = $baseUri; $this->initServer(); - } /** - * Starts processing + * Starts processing. * * @return void */ function start() { - $this->server->exec(); - } /** - * Initializes the server object + * Initializes the server object. * * @return void */ protected function initServer() { - try { $config = Yaml::parseFile(PROJECT_PATH_CONFIG . "baikal.yaml"); } catch (\Exception $e) { @@ -188,11 +181,10 @@ class Server { } $this->server->on('exception', [$this, 'exception']); - } /** - * Log failed accesses, matching the default fail2ban nginx/apache auth rules + * Log failed accesses, matching the default fail2ban nginx/apache auth rules. * * @return void */ @@ -211,5 +203,4 @@ class Server { error_log($e); } } - } diff --git a/Core/Frameworks/Baikal/Core/Tools.php b/Core/Frameworks/Baikal/Core/Tools.php index cc4a610..5afb9b1 100644 --- a/Core/Frameworks/Baikal/Core/Tools.php +++ b/Core/Frameworks/Baikal/Core/Tools.php @@ -1,4 +1,5 @@ tables(); @@ -119,6 +117,7 @@ class Tools { @flush(); @ob_flush(); $confirmation = @trim(fgets(STDIN)); + return $confirmation; } @@ -127,6 +126,7 @@ class Tools { if (rtrim(shell_exec($command)) !== 'OK') { trigger_error("Can't invoke bash"); + return; } @@ -136,11 +136,11 @@ class Tools { $password = rtrim(shell_exec($command)); echo "\n"; + return $password; } static function getCopyrightNotice($sLinePrefixChar = "#", $sLineSuffixChar = "", $sOpening = false, $sClosing = false) { - if ($sOpening === false) { $sOpening = str_repeat("#", 78); } @@ -196,6 +196,7 @@ CODE; $aZones = \DateTimeZone::listIdentifiers(); reset($aZones); + return $aZones; } } diff --git a/Core/Frameworks/Baikal/Core/View.php b/Core/Frameworks/Baikal/Core/View.php index f48e9fa..12b0255 100644 --- a/Core/Frameworks/Baikal/Core/View.php +++ b/Core/Frameworks/Baikal/Core/View.php @@ -1,4 +1,5 @@ 0) { self::installTool(); } else { - # Check that admin password is set if (!$config['system']['admin_passwordhash']) { self::installTool(); @@ -76,11 +72,9 @@ class Framework extends \Flake\Core\Framework { \Baikal\Core\Tools::assertBaikalIsOk(); set_error_handler("\Baikal\Framework::exception_error_handler"); - } } } - } # Mapping PHP errors to exceptions; needed by SabreDAV diff --git a/Core/Frameworks/Baikal/Model/AddressBook.php b/Core/Frameworks/Baikal/Model/AddressBook.php index a2f729c..885cf7b 100644 --- a/Core/Frameworks/Baikal/Model/AddressBook.php +++ b/Core/Frameworks/Baikal/Model/AddressBook.php @@ -1,4 +1,5 @@ getContactsBaseRequester()->execute(); foreach ($oContacts as $contact) { $contact->destroy(); diff --git a/Core/Frameworks/Baikal/Model/AddressBook/Contact.php b/Core/Frameworks/Baikal/Model/AddressBook/Contact.php index 7316796..1708b00 100644 --- a/Core/Frameworks/Baikal/Model/AddressBook/Contact.php +++ b/Core/Frameworks/Baikal/Model/AddressBook/Contact.php @@ -1,4 +1,5 @@ oCalendar->get($sPropName); } @@ -126,13 +125,11 @@ class Calendar extends \Flake\Core\Model\Db { } function set($sPropName, $sValue) { - if ($sPropName === "components") { return $this->oCalendar->set($sPropName, $sValue); } if ($sPropName === "todos") { - if (($sComponents = $this->get("components")) !== "") { $aComponents = explode(",", $sComponents); } else { @@ -153,7 +150,6 @@ class Calendar extends \Flake\Core\Model\Db { } if ($sPropName === "notes") { - if (($sComponents = $this->get("components")) !== "") { $aComponents = explode(",", $sComponents); } else { @@ -228,7 +224,6 @@ class Calendar extends \Flake\Core\Model\Db { "help" => "If checked, notes will be enabled on this calendar.", ])); - if ($this->floating()) { $oMorpho->element("uri")->setOption( "help", diff --git a/Core/Frameworks/Baikal/Model/Calendar/Calendar.php b/Core/Frameworks/Baikal/Model/Calendar/Calendar.php index 20538d9..93fff0c 100644 --- a/Core/Frameworks/Baikal/Model/Calendar/Calendar.php +++ b/Core/Frameworks/Baikal/Model/Calendar/Calendar.php @@ -1,4 +1,5 @@ sConfigFileSection] = $this->aData; $yaml = Yaml::dump($config); @@ -97,6 +95,5 @@ abstract class Config extends \Flake\Core\Model\NoDb { } function destroy() { - } } diff --git a/Core/Frameworks/Baikal/Model/Config/Database.php b/Core/Frameworks/Baikal/Model/Config/Database.php index 0eb0404..626b591 100644 --- a/Core/Frameworks/Baikal/Model/Config/Database.php +++ b/Core/Frameworks/Baikal/Model/Config/Database.php @@ -1,4 +1,5 @@ [ "type" => "litteral", diff --git a/Core/Frameworks/Baikal/Model/Config/Distrib.php b/Core/Frameworks/Baikal/Model/Config/Distrib.php index 70e1ec9..d8a0872 100644 --- a/Core/Frameworks/Baikal/Model/Config/Distrib.php +++ b/Core/Frameworks/Baikal/Model/Config/Distrib.php @@ -1,4 +1,5 @@ [ "type" => "string", @@ -48,6 +47,7 @@ class Distrib extends \Baikal\Model\Config { function formMorphologyForThisModelInstance() { $oMorpho = new \Formal\Form\Morphology(); + return $oMorpho; } diff --git a/Core/Frameworks/Baikal/Model/Config/Standard.php b/Core/Frameworks/Baikal/Model/Config/Standard.php index 5507870..804a3c2 100644 --- a/Core/Frameworks/Baikal/Model/Config/Standard.php +++ b/Core/Frameworks/Baikal/Model/Config/Standard.php @@ -1,4 +1,5 @@ [ "type" => "string", @@ -84,7 +83,6 @@ class Standard extends \Baikal\Model\Config { "options" => \Baikal\Core\Tools::timezones(), ])); - $oMorpho->add(new \Formal\Element\Checkbox([ "prop" => "card_enabled", "label" => "Enable CardDAV" @@ -125,7 +123,6 @@ class Standard extends \Baikal\Model\Config { } if (!isset($config['system']["admin_passwordhash"]) || trim($config['system']["admin_passwordhash"]) === "") { - # No password set (Form is used in install tool), so password is required as it has to be defined $oMorpho->element("admin_passwordhash")->setOption("validation", "required"); } else { diff --git a/Core/Frameworks/Baikal/Model/Config/System.php b/Core/Frameworks/Baikal/Model/Config/System.php index 980c19f..32abd13 100644 --- a/Core/Frameworks/Baikal/Model/Config/System.php +++ b/Core/Frameworks/Baikal/Model/Config/System.php @@ -1,4 +1,5 @@ [ "type" => "litteral", diff --git a/Core/Frameworks/Baikal/Model/Principal.php b/Core/Frameworks/Baikal/Model/Principal.php index 64f1652..2b86b1a 100644 --- a/Core/Frameworks/Baikal/Model/Principal.php +++ b/Core/Frameworks/Baikal/Model/Principal.php @@ -1,4 +1,5 @@ floating(); # Persisted first, as Model users loads this data @@ -139,7 +136,6 @@ class User extends \Flake\Core\Model\Db { parent::persist(); if ($bFloating) { - # Creating default calendar for user $oDefaultCalendar = new \Baikal\Model\Calendar(); $oDefaultCalendar->set( @@ -281,7 +277,6 @@ class User extends \Flake\Core\Model\Db { } function getPasswordHashForPassword($sPassword) { - try { $config = Yaml::parseFile(PROJECT_PATH_CONFIG . "baikal.yaml"); } catch (\Exception $e) { diff --git a/Core/Frameworks/Baikal/View/Main.php b/Core/Frameworks/Baikal/View/Main.php index 6bd4fdf..b98a512 100644 --- a/Core/Frameworks/Baikal/View/Main.php +++ b/Core/Frameworks/Baikal/View/Main.php @@ -1,4 +1,5 @@ oModel = new \Baikal\Model\Config\System(); if (file_exists(PROJECT_PATH_SPECIFIC . "config.system.php")) { - require_once(PROJECT_PATH_SPECIFIC . "config.system.php"); + require_once PROJECT_PATH_SPECIFIC . "config.system.php"; $this->oModel->set('sqlite_file', PROJECT_SQLITE_FILE); $this->oModel->set('mysql', PROJECT_DB_MYSQL); $this->oModel->set('mysql_host', PROJECT_DB_MYSQL_HOST); @@ -75,7 +74,6 @@ class Database extends \Flake\Core\Controller { $oView->setData("baikalversion", BAIKAL_VERSION); if ($this->oForm->persisted()) { - $sMessage = "

Baïkal is now installed, and its database properly configured. For security reasons, this installation wizard is now disabled.

"; $sMessage . "

 

"; $sMessage .= "

Start using Baïkal

"; @@ -92,13 +90,12 @@ class Database extends \Flake\Core\Controller { } function validateConnection($oForm, $oMorpho) { - if ($oForm->refreshed()){ + if ($oForm->refreshed()) { return true; } $bMySQLEnabled = $oMorpho->element("mysql")->value(); if ($bMySQLEnabled) { - $sHost = $oMorpho->element("mysql_host")->value(); $sDbname = $oMorpho->element("mysql_dbname")->value(); $sUsername = $oMorpho->element("mysql_username")->value(); @@ -113,7 +110,6 @@ class Database extends \Flake\Core\Controller { ); if (($aMissingTables = \Baikal\Core\Tools::isDBStructurallyComplete($oDb)) !== true) { - # Checking if all tables are missing $aRequiredTables = \Baikal\Core\Tools::getRequiredTablesList(); if (count($aRequiredTables) !== count($aMissingTables)) { @@ -144,31 +140,29 @@ class Database extends \Flake\Core\Controller { $oForm->declareError($oMorpho->element("mysql_password")); } } else { - $sFile = $oMorpho->element("sqlite_file")->value(); try { - # Asserting DB file is writable if (file_exists($sFile) && !is_writable($sFile)) { $sMessage = "DB file is not writable. Please give write permissions on file " . $sFile . ""; $oForm->declareError($oMorpho->element("sqlite_file"), $sMessage); + return false; } # Asserting DB directory is writable if (!is_writable(dirname($sFile))) { $sMessage = "The FOLDER containing the DB file is not writable, and it has to.
Please give write permissions on folder " . dirname($sFile) . ""; $oForm->declareError($oMorpho->element("sqlite_file"), $sMessage); + return false; } - $oDb = new \Flake\Core\Database\Sqlite( $sFile ); if (($aMissingTables = \Baikal\Core\Tools::isDBStructurallyComplete($oDb)) !== true) { - # Checking if all tables are missing $aRequiredTables = \Baikal\Core\Tools::getRequiredTablesList(); if (count($aRequiredTables) !== count($aMissingTables)) { @@ -186,7 +180,9 @@ class Database extends \Flake\Core\Controller { # We add these tables ourselves to the database, to initialize Baïkal $sSqlDefinition = file_get_contents(PROJECT_PATH_CORERESOURCES . "Db/SQLite/db.sql"); foreach (explode(';', $sSqlDefinition) as $query) { - if (!trim($query)) continue; + if (!trim($query)) { + continue; + } $oDb->query($query); } } @@ -196,7 +192,7 @@ class Database extends \Flake\Core\Controller { } catch (\Exception $e) { $oForm->declareError( $oMorpho->element("sqlite_file"), - "Baïkal was not able to establish a connexion to the SQLite database as configured.
SQLite says: " . $e->getMessage() . (string)$e + "Baïkal was not able to establish a connexion to the SQLite database as configured.
SQLite says: " . $e->getMessage() . (string) $e ); } // SQLite @@ -204,7 +200,6 @@ class Database extends \Flake\Core\Controller { } function hideMySQLFieldWhenNeeded(\Formal\Form $oForm, \Formal\Form\Morphology $oMorpho) { - if ($oForm->submitted()) { $bMySQL = (intval($oForm->postValue("mysql")) === 1); } else { @@ -219,7 +214,6 @@ class Database extends \Flake\Core\Controller { if ($bMySQL === true) { $oMorpho->remove("sqlite_file"); } else { - $oMorpho->remove("mysql_host"); $oMorpho->remove("mysql_dbname"); $oMorpho->remove("mysql_username"); diff --git a/Core/Frameworks/BaikalAdmin/Controller/Install/Initialize.php b/Core/Frameworks/BaikalAdmin/Controller/Install/Initialize.php index 47c1c79..bceed49 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Install/Initialize.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Install/Initialize.php @@ -1,4 +1,5 @@ oModel->set('timezone', PROJECT_TIMEZONE); $this->oModel->set('card_enabled', BAIKAL_CARD_ENABLED); $this->oModel->set('cal_enabled', BAIKAL_CAL_ENABLED); @@ -65,7 +64,6 @@ class Initialize extends \Flake\Core\Controller { $this->oForm->execute(); if ($this->oForm->persisted()) { - // If we come from pre-0.7.0, we need to remove the INSTALL_DISABLED file so we go to the next step if (file_exists(PROJECT_PATH_SPECIFIC . '/INSTALL_DISABLED')) { @unlink(PROJECT_PATH_SPECIFIC . '/INSTALL_DISABLED'); @@ -76,16 +74,15 @@ class Initialize extends \Flake\Core\Controller { # Creating system config, and initializing BAIKAL_ENCRYPTION_KEY $oSystemConfig = new \Baikal\Model\Config\System("system"); - $oSystemConfig->set("encryption_key", md5(microtime() . rand())); + $oSystemConfig->set("encryption_key", md5(microtime() . rand())); # Default: PDO::SQLite or PDO::MySQL ? $aPDODrivers = \PDO::getAvailableDrivers(); if (!in_array('sqlite', $aPDODrivers)) { # PDO::MySQL is already asserted in \Baikal\Core\Tools::assertEnvironmentIsOk() - $oSystemConfig->set("mysql", true); + $oSystemConfig->set("mysql", true); } $oSystemConfig->persist(); - } } } @@ -101,13 +98,12 @@ class Initialize extends \Flake\Core\Controller { // we need to tell the installer page to show a warning message. $oView->setData("oldConfigSystem", file_exists(PROJECT_PATH_SPECIFIC . "config.system.php")); - if ($this->oForm->persisted()) { $sLink = PROJECT_URI . "admin/install/?/database"; \Flake\Util\Tools::redirect($sLink); exit(0); - #$sMessage = "

Baïkal is now configured. You may Access the Baïkal admin

"; + #$sMessage = "

Baïkal is now configured. You may Access the Baïkal admin

"; #$sForm = ""; } else { $sMessage = ""; @@ -121,7 +117,6 @@ class Initialize extends \Flake\Core\Controller { } protected function createHtaccessFilesIfNeeded() { - if (!file_exists(PROJECT_PATH_DOCUMENTROOT . ".htaccess")) { @copy(PROJECT_PATH_CORERESOURCES . "System/htaccess-documentroot", PROJECT_PATH_DOCUMENTROOT . ".htaccess"); } diff --git a/Core/Frameworks/BaikalAdmin/Controller/Install/UpgradeConfirmation.php b/Core/Frameworks/BaikalAdmin/Controller/Install/UpgradeConfirmation.php index 822df29..0f3ef26 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Install/UpgradeConfirmation.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Install/UpgradeConfirmation.php @@ -1,4 +1,5 @@ setData("message", $sMessage); $oView->setData("projectUri", PROJECT_URI); + return $oView->render(); } } diff --git a/Core/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php b/Core/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php index 2083615..f57b00b 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Install/VersionUpgrade.php @@ -1,4 +1,5 @@ upgrade($config['system']['configured_version'], BAIKAL_VERSION); } catch (\Exception $e) { $bSuccess = false; - $this->aErrors[] = 'Uncaught exception during upgrade: ' . (string)$e; + $this->aErrors[] = 'Uncaught exception during upgrade: ' . (string) $e; } if (!empty($this->aErrors)) { @@ -91,7 +89,6 @@ HTML; } protected function upgrade($sVersionFrom, $sVersionTo) { - if (version_compare($sVersionFrom, '0.2.3', '<=')) { throw new \Exception('This version of Baikal does not support upgrading from version 0.2.3 and older. Please request help on Github if this is a problem.'); } @@ -103,12 +100,10 @@ HTML; // Upgrading from sabre/dav 1.8 schema to 3.1 schema. if (defined("PROJECT_DB_MYSQL") && PROJECT_DB_MYSQL === true) { - // MySQL upgrade // sabre/dav 2.0 changes foreach (['calendar', 'addressbook'] as $dataType) { - $tableName = $dataType . 's'; $pdo->exec("ALTER TABLE $tableName ADD synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1'"); $this->aSuccess[] = 'synctoken was added to ' . $tableName; @@ -128,7 +123,6 @@ HTML; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; "); $this->aSuccess[] = $changesTable . ' was created'; - } $pdo->exec(" @@ -189,13 +183,11 @@ HTML; "); $pdo->exec('CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100));'); $this->aSuccess[] = 'propertystorage was created'; - } else { // SQLite upgrade // sabre/dav 2.0 changes foreach (['calendar', 'addressbook'] as $dataType) { - $tableName = $dataType . 's'; // Note: we can't remove the ctag field in sqlite :(; $pdo->exec("ALTER TABLE $tableName ADD synctoken integer"); @@ -212,7 +204,6 @@ HTML; ); "); $this->aSuccess[] = $changesTable . ' was created'; - } $pdo->exec(" CREATE TABLE calendarsubscriptions ( @@ -268,8 +259,6 @@ HTML; "); $pdo->exec('CREATE UNIQUE INDEX path_property ON propertystorage (path, name);'); $this->aSuccess[] = 'propertystorage was created'; - - } // Statements for both SQLite and MySQL @@ -288,7 +277,6 @@ HTML; $counter = 0; while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { - try { $vobj = \Sabre\VObject\Reader::read($row['calendardata']); } catch (\Exception $e) { @@ -301,11 +289,10 @@ HTML; $vobj->destroy(); continue; } - $uid = (string)$item->UID; + $uid = (string) $item->UID; $stmt->execute([$uid, $row['id']]); - $counter++; + ++$counter; $vobj->destroy(); - } $this->aSuccess[] = 'uid was recalculated for calendarobjects'; @@ -313,25 +300,20 @@ HTML; $stmt1 = $pdo->prepare('INSERT INTO propertystorage (path, name, valuetype, value) VALUES (?, ?, 3, ?)'); while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { - // Inserting the new record $stmt1->execute([ 'addressbooks/' . basename($row['uri']), '{http://calendarserver.org/ns/}me-card', serialize(new \Sabre\DAV\Xml\Property\Href($row['vcardurl'])) ]); - } $this->aSuccess[] = 'vcardurl was migrated to the propertystorage system'; - } if (version_compare($sVersionFrom, '0.4.0', '<')) { - // The sqlite schema had issues with both the calendar and // addressbooks tables. The tables didn't have a DEFAULT '1' for // the synctoken column. So we're adding it now. if (!defined("PROJECT_DB_MYSQL") || PROJECT_DB_MYSQL === false) { - $pdo->exec('UPDATE calendars SET synctoken = 1 WHERE synctoken IS NULL'); $tmpTable = '_' . time(); @@ -355,17 +337,13 @@ CREATE TABLE calendars ( $pdo->exec('INSERT INTO calendars SELECT id, principaluri, displayname, uri, synctoken, description, calendarorder, calendarcolor, timezone, components, transparent FROM calendars' . $tmpTable); $this->aSuccess[] = 'Updated calendars table'; - } - } if (version_compare($sVersionFrom, '0.4.5', '<=')) { - // Similar to upgrading from older than 0.4.5, there were still // issues with a missing DEFAULT 1 for sthe synctoken field in the // addressbook. if (!defined("PROJECT_DB_MYSQL") || PROJECT_DB_MYSQL === false) { - $pdo->exec('UPDATE addressbooks SET synctoken = 1 WHERE synctoken IS NULL'); $tmpTable = '_' . time(); @@ -384,9 +362,7 @@ CREATE TABLE addressbooks ( $pdo->exec('INSERT INTO addressbooks SELECT id, principaluri, displayname, uri, description, synctoken FROM addressbooks' . $tmpTable); $this->aSuccess[] = 'Updated addressbooks table'; - } - } if (version_compare($sVersionFrom, '0.5.1', '<')) { if (!defined("PROJECT_DB_MYSQL") || PROJECT_DB_MYSQL === false) { @@ -524,8 +500,8 @@ SQL $this->aSuccess[] = 'Migrated calendars table'; } - $this->updateConfiguredVersion($sVersionTo); + return true; } diff --git a/Core/Frameworks/BaikalAdmin/Controller/Login.php b/Core/Frameworks/BaikalAdmin/Controller/Login.php index 3450cc4..dd6cede 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Login.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Login.php @@ -1,4 +1,5 @@ render(); } } diff --git a/Core/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php b/Core/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php index fd85250..94a9a9e 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Navigation/Topbar/Install.php @@ -1,4 +1,5 @@ render(); } } diff --git a/Core/Frameworks/BaikalAdmin/Controller/Settings/Standard.php b/Core/Frameworks/BaikalAdmin/Controller/Settings/Standard.php index 8782a5a..e1dc225 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Settings/Standard.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Settings/Standard.php @@ -1,4 +1,5 @@ setData("form", $this->oForm->render()); diff --git a/Core/Frameworks/BaikalAdmin/Controller/Settings/System.php b/Core/Frameworks/BaikalAdmin/Controller/Settings/System.php index 9f2c4a3..f5274a8 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Settings/System.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Settings/System.php @@ -1,4 +1,5 @@ setData("message", \Formal\Core\Message::notice( "Do not change anything on this page unless you really know what you are doing.
You might break Baïkal if you misconfigure something here.", @@ -89,7 +87,6 @@ class System extends \Flake\Core\Controller { if ($bMySQL === true) { $oMorpho->remove("sqlite_file"); } else { - $oMorpho->remove("mysql_host"); $oMorpho->remove("mysql_dbname"); $oMorpho->remove("mysql_username"); @@ -98,11 +95,10 @@ class System extends \Flake\Core\Controller { } function validationHook(\Formal\Form $oForm, \Formal\Form\Morphology $oMorpho) { - if ($oForm->refreshed()){ + if ($oForm->refreshed()) { return true; } if (intval($oForm->modelInstance()->get("mysql")) === 1) { - # We have to check the MySQL connection $sHost = $oForm->modelInstance()->get("mysql_host"); $sDbName = $oForm->modelInstance()->get("mysql_dbname"); @@ -123,6 +119,7 @@ class System extends \Flake\Core\Controller { $oForm->declareError($oMorpho->element("mysql_dbname")); $oForm->declareError($oMorpho->element("mysql_username")); $oForm->declareError($oMorpho->element("mysql_password")); + return; } @@ -132,10 +129,10 @@ class System extends \Flake\Core\Controller { $sMessage .= "

Nothing has been saved"; $oForm->declareError($oMorpho->element("mysql"), $sMessage); + return; } } else { - $sFile = $oMorpho->element("sqlite_file")->value(); try { @@ -143,16 +140,17 @@ class System extends \Flake\Core\Controller { if (file_exists($sFile) && !is_writable($sFile)) { $sMessage = "DB file is not writable. Please give write permissions on file " . $sFile . ""; $oForm->declareError($oMorpho->element("sqlite_file"), $sMessage); + return; } # Asserting DB directory is writable if (!is_writable(dirname($sFile))) { $sMessage = "The FOLDER containing the DB file is not writable, and it has to.
Please give write permissions on folder " . dirname($sFile) . ""; $oForm->declareError($oMorpho->element("sqlite_file"), $sMessage); + return; } - $oDb = new \Flake\Core\Database\Sqlite( $sFile ); @@ -168,11 +166,12 @@ class System extends \Flake\Core\Controller { $sMessage ); } + return; } catch (\Exception $e) { $oForm->declareError( $oMorpho->element("sqlite_file"), - "Baïkal was not able to establish a connexion to the SQLite database as configured.
SQLite says: " . $e->getMessage() . (string)$e + "Baïkal was not able to establish a connexion to the SQLite database as configured.
SQLite says: " . $e->getMessage() . (string) $e ); } } diff --git a/Core/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php b/Core/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php index 2691ac1..b614aaf 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php +++ b/Core/Frameworks/BaikalAdmin/Controller/User/AddressBooks.php @@ -1,4 +1,5 @@ currentUserId()) === false) { throw new \Exception("BaikalAdmin\Controller\User\Contacts::render(): User get-parameter not found."); } @@ -56,7 +54,6 @@ class AddressBooks extends \Flake\Core\Controller { } function render() { - $oView = new \BaikalAdmin\View\User\AddressBooks(); # User @@ -138,7 +135,6 @@ class AddressBooks extends \Flake\Core\Controller { } protected function actionNew() { - # Building floating model object $this->oModel = new \Baikal\Model\AddressBook(); $this->oModel->set( @@ -234,14 +230,12 @@ class AddressBooks extends \Flake\Core\Controller { } protected function actionDelete() { - $aParams = $this->getParams(); $iModel = intval($aParams["delete"]); if ($this->actionDeleteConfirmed() !== false) { - # catching Exception thrown when model already destroyed - # happens when user refreshes page on delete-URL, for instance + # happens when user refreshes page on delete-URL, for instance try { $oModel = new \Baikal\Model\AddressBook($iModel); @@ -253,7 +247,6 @@ class AddressBooks extends \Flake\Core\Controller { # Redirecting to admin home \Flake\Util\Tools::redirectUsingMeta($this->linkHome()); } else { - $oModel = new \Baikal\Model\AddressBook($iModel); $this->aMessages[] = \Formal\Core\Message::warningConfirmMessage( "Check twice, you're about to delete " . $oModel->label() . " from the database !", diff --git a/Core/Frameworks/BaikalAdmin/Controller/User/Calendars.php b/Core/Frameworks/BaikalAdmin/Controller/User/Calendars.php index 162abe3..74951e6 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/User/Calendars.php +++ b/Core/Frameworks/BaikalAdmin/Controller/User/Calendars.php @@ -1,4 +1,5 @@ currentUserId()) === false) { throw new \Exception("BaikalAdmin\Controller\User\Calendars::render(): User get-parameter not found."); } @@ -52,7 +50,6 @@ class Calendars extends \Flake\Core\Controller { } function render() { - $oView = new \BaikalAdmin\View\User\Calendars(); # User @@ -134,7 +131,6 @@ class Calendars extends \Flake\Core\Controller { } protected function actionNew() { - # Building floating model object $this->oModel = new \Baikal\Model\Calendar(); $this->oModel->set( @@ -237,14 +233,12 @@ class Calendars extends \Flake\Core\Controller { } protected function actionDelete() { - $aParams = $this->getParams(); $iCalendar = intval($aParams["delete"]); if ($this->actionDeleteConfirmed() !== false) { - # catching Exception thrown when model already destroyed - # happens when user refreshes page on delete-URL, for instance + # happens when user refreshes page on delete-URL, for instance try { $oModel = new \Baikal\Model\Calendar($iCalendar); @@ -256,7 +250,6 @@ class Calendars extends \Flake\Core\Controller { # Redirecting to admin home \Flake\Util\Tools::redirectUsingMeta($this->linkHome()); } else { - $oModel = new \Baikal\Model\Calendar($iCalendar); $this->aMessages[] = \Formal\Core\Message::warningConfirmMessage( "Check twice, you're about to delete " . $oModel->label() . " from the database !", diff --git a/Core/Frameworks/BaikalAdmin/Controller/Users.php b/Core/Frameworks/BaikalAdmin/Controller/Users.php index 291408d..b1401b5 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Users.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Users.php @@ -1,4 +1,5 @@ actionDeleteConfirmed() !== false) { - # catching Exception thrown when model already destroyed - # happens when user refreshes delete-page, for instance + # happens when user refreshes delete-page, for instance try { $oUser = new \Baikal\Model\User($iUser); @@ -173,7 +170,6 @@ class Users extends \Flake\Core\Controller { # Redirecting to admin home \Flake\Util\Tools::redirectUsingMeta($this->link()); } else { - $oUser = new \Baikal\Model\User($iUser); $this->aMessages[] = \Formal\Core\Message::warningConfirmMessage( "Check twice, you're about to delete " . $oUser->label() . " from the database !", diff --git a/Core/Frameworks/BaikalAdmin/Core/Auth.php b/Core/Frameworks/BaikalAdmin/Core/Auth.php index 78b303f..cac930a 100644 --- a/Core/Frameworks/BaikalAdmin/Core/Auth.php +++ b/Core/Frameworks/BaikalAdmin/Core/Auth.php @@ -1,4 +1,5 @@ ceil($iSymbolHeight) ]; - $iKey++; + ++$iKey; } ########################################################################## @@ -457,5 +457,6 @@ CSS; } $sCss = "\n" . "/* " . count($aSprites) . " glyphs, generated on " . strftime("%Y-%m-%d %H:%M:%S") . "; C=" . $iCols . "; R=" . $iRows . "; W=" . $iPngWidth . "; H=" . $iPngHeight . "; PREFIX=" . $sClassPrefix . " */\n" . $sCss; + return $sCss; } diff --git a/Core/Frameworks/BaikalAdmin/Route/Dashboard.php b/Core/Frameworks/BaikalAdmin/Route/Dashboard.php index 0ff9bc1..53abc54 100644 --- a/Core/Frameworks/BaikalAdmin/Route/Dashboard.php +++ b/Core/Frameworks/BaikalAdmin/Route/Dashboard.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\Dashboard()); } diff --git a/Core/Frameworks/BaikalAdmin/Route/Logout.php b/Core/Frameworks/BaikalAdmin/Route/Logout.php index e883f3d..28c17bb 100644 --- a/Core/Frameworks/BaikalAdmin/Route/Logout.php +++ b/Core/Frameworks/BaikalAdmin/Route/Logout.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\Logout()); } diff --git a/Core/Frameworks/BaikalAdmin/Route/Settings/Standard.php b/Core/Frameworks/BaikalAdmin/Route/Settings/Standard.php index f80442e..8480d4a 100644 --- a/Core/Frameworks/BaikalAdmin/Route/Settings/Standard.php +++ b/Core/Frameworks/BaikalAdmin/Route/Settings/Standard.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\Settings\Standard()); } diff --git a/Core/Frameworks/BaikalAdmin/Route/Settings/System.php b/Core/Frameworks/BaikalAdmin/Route/Settings/System.php index 05ad024..579d519 100644 --- a/Core/Frameworks/BaikalAdmin/Route/Settings/System.php +++ b/Core/Frameworks/BaikalAdmin/Route/Settings/System.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\Settings\System()); } diff --git a/Core/Frameworks/BaikalAdmin/Route/User/AddressBooks.php b/Core/Frameworks/BaikalAdmin/Route/User/AddressBooks.php index 35fd066..ec1925c 100644 --- a/Core/Frameworks/BaikalAdmin/Route/User/AddressBooks.php +++ b/Core/Frameworks/BaikalAdmin/Route/User/AddressBooks.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\User\AddressBooks( self::getParams() diff --git a/Core/Frameworks/BaikalAdmin/Route/User/Calendars.php b/Core/Frameworks/BaikalAdmin/Route/User/Calendars.php index c255de9..e2b7150 100644 --- a/Core/Frameworks/BaikalAdmin/Route/User/Calendars.php +++ b/Core/Frameworks/BaikalAdmin/Route/User/Calendars.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\User\Calendars($aParams)); diff --git a/Core/Frameworks/BaikalAdmin/Route/Users.php b/Core/Frameworks/BaikalAdmin/Route/Users.php index 1e6e74e..097c28f 100644 --- a/Core/Frameworks/BaikalAdmin/Route/Users.php +++ b/Core/Frameworks/BaikalAdmin/Route/Users.php @@ -1,4 +1,5 @@ zone("Payload")->addBlock(new \BaikalAdmin\Controller\Users($aParams)); diff --git a/Core/Frameworks/BaikalAdmin/View/Dashboard.php b/Core/Frameworks/BaikalAdmin/View/Dashboard.php index f8e04a3..7dea645 100644 --- a/Core/Frameworks/BaikalAdmin/View/Dashboard.php +++ b/Core/Frameworks/BaikalAdmin/View/Dashboard.php @@ -1,4 +1,5 @@ injectHTTPHeaders(); $oPage->setTitle("Baïkal " . BAIKAL_VERSION . " Web Admin"); $oPage->setBaseUrl(PROJECT_URI); -if (! \BaikalAdmin\Core\Auth::isAuthenticated()) { +if (!\BaikalAdmin\Core\Auth::isAuthenticated()) { if (\BaikalAdmin\Core\Auth::authenticate()) { // Redirect to itself header('Location: ' . $_SERVER['REQUEST_URI']); exit(); - } else { // Draw login page $oPage->zone("navbar")->addBlock(new \BaikalAdmin\Controller\Navigation\Topbar\Anonymous()); $oPage->zone("Payload")->addBlock(new \BaikalAdmin\Controller\Login()); } } else { - // CSRF token check if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!isset($_POST['CSRF_TOKEN'])) { diff --git a/Core/Frameworks/BaikalAdmin/WWWRoot/install/index.php b/Core/Frameworks/BaikalAdmin/WWWRoot/install/index.php index e1dab04..93038d3 100644 --- a/Core/Frameworks/BaikalAdmin/WWWRoot/install/index.php +++ b/Core/Frameworks/BaikalAdmin/WWWRoot/install/index.php @@ -77,7 +77,6 @@ try { if (!$config || !isset($config['system']["configured_version"])) { # we have to upgrade Baïkal (existing installation) $oPage->zone("Payload")->addBlock(new \BaikalAdmin\Controller\Install\Initialize()); - } elseif (!isset($config['system']["admin_passwordhash"])) { # we have to set an admin password $oPage->zone("Payload")->addBlock(new \BaikalAdmin\Controller\Install\Initialize()); diff --git a/Core/Frameworks/BaikalAdmin/config.php b/Core/Frameworks/BaikalAdmin/config.php index 0462965..32f17c2 100644 --- a/Core/Frameworks/BaikalAdmin/config.php +++ b/Core/Frameworks/BaikalAdmin/config.php @@ -1,4 +1,5 @@ log($sStr); + return $sStr; } function subHeader($sMsg) { $sStr = "\n\n# " . str_pad(strtoupper($sMsg) . " ", 78, "-", STR_PAD_RIGHT) . "\n"; $this->log($sStr); + return $sStr; } function subHeader2($sMsg) { $sStr = "\n# # " . str_pad($sMsg . " ", 76, "-", STR_PAD_RIGHT) . "\n"; $this->log($sStr); + return $sStr; } function textLine($sMsg) { $sStr = ". " . $sMsg . "\n"; $this->log($sStr); + return $sStr; } function rawLine($sMsg) { $sStr = $sMsg . "\n"; $this->log($sStr); + return $sStr; } function notice($sMsg) { $sStr = "\n" . str_pad($sMsg, 80, ".", STR_PAD_BOTH) . "\n"; $this->log($sStr); + return $sStr; } @@ -139,7 +143,6 @@ class Cli extends \Flake\Core\Render\Container { } function file_writeBin($sPath, $sData, $bUTF8 = true) { - $rFile = fopen($sPath, "wb"); if ($bUTF8 === true) { diff --git a/Core/Frameworks/Flake/Controller/HtmlBlock.php b/Core/Frameworks/Flake/Controller/HtmlBlock.php index 4e4c630..1fa100e 100644 --- a/Core/Frameworks/Flake/Controller/HtmlBlock.php +++ b/Core/Frameworks/Flake/Controller/HtmlBlock.php @@ -1,4 +1,5 @@ sMetaKeywords); $sString = \Flake\Util\Tools::stringToUrlToken($sString); + return implode(", ", explode("-", $sString)); } @@ -102,7 +102,6 @@ class Page extends \Flake\Core\Render\Container { } function addCss($sCssAbsPath) { - if (\Flake\Util\Frameworks::enabled("LessPHP")) { $sCompiledPath = PATH_buildcss; $sFileName = basename($sCssAbsPath); diff --git a/Core/Frameworks/Flake/Controller/Rpc.php b/Core/Frameworks/Flake/Controller/Rpc.php index 8b8a5b8..3da5f50 100644 --- a/Core/Frameworks/Flake/Controller/Rpc.php +++ b/Core/Frameworks/Flake/Controller/Rpc.php @@ -1,4 +1,5 @@ injectHTTPHeaders(); $GLOBALS["POSTCONNECTIONSERVICES"] = []; @@ -44,7 +43,6 @@ class Rpc extends \Flake\Core\Render\Container { # Needed to cut client off when needed header("Connection: close\r\n"); ignore_user_abort(true); - } function P3PAllowCrossDomainCookies() { diff --git a/Core/Frameworks/Flake/Core/Collection.php b/Core/Frameworks/Flake/Core/Collection.php index 68455c0..f9e548c 100644 --- a/Core/Frameworks/Flake/Core/Collection.php +++ b/Core/Frameworks/Flake/Core/Collection.php @@ -1,4 +1,5 @@ aCollection); + return ($key !== null && $key !== false); } @@ -59,11 +60,13 @@ class Collection extends \Flake\Core\FLObject implements \Iterator { } $oRes = $this->aCollection[$sKey]; + return $oRes; } function &each() { list($key, $val) = each($this->aCollection); + return $val; } @@ -107,6 +110,7 @@ class Collection extends \Flake\Core\FLObject implements \Iterator { function &first() { if (!$this->isEmpty()) { $aKeys = $this->keys(); + return $this->aCollection[array_shift($aKeys)]; } @@ -117,10 +121,12 @@ class Collection extends \Flake\Core\FLObject implements \Iterator { function &last() { if (!$this->isEmpty()) { $aKeys = $this->keys(); + return $this->aCollection[array_pop($aKeys)]; } $var = null; + return $var; } @@ -148,12 +154,14 @@ class Collection extends \Flake\Core\FLObject implements \Iterator { function map($sFunc) { $aData = $this->toArray(); $oNewColl = $this->fromArray(array_map($sFunc, $aData)); + return $oNewColl; } function walk($sFunc, $aParams = []) { $aData = $this->toArray(); $oNewColl = $this->fromArray(array_walk($aData, $sFunc, $aParams)); + return $oNewColl; } @@ -179,19 +187,19 @@ class Collection extends \Flake\Core\FLObject implements \Iterator { $sName[6] === "a" ) { $sKey = strtolower(substr($sName, 7, 1)) . substr($sName, 8); - $mValue = & $aArguments[0]; + $mValue = &$aArguments[0]; if (is_null($mValue)) { if (array_key_exists($sKey, $this->aMeta)) { unset($this->aMeta[$sKey]); } } else { - $this->aMeta[$sKey] = & $mValue; + $this->aMeta[$sKey] = &$mValue; } $res = null; - return $res; # To avoid 'Notice: Only variable references should be returned by reference' + return $res; # To avoid 'Notice: Only variable references should be returned by reference' } elseif ( strlen($sName) > 7 && $sName[0] === "g" && diff --git a/Core/Frameworks/Flake/Core/CollectionTyped.php b/Core/Frameworks/Flake/Core/CollectionTyped.php index d5493df..55bb82c 100644 --- a/Core/Frameworks/Flake/Core/CollectionTyped.php +++ b/Core/Frameworks/Flake/Core/CollectionTyped.php @@ -1,4 +1,5 @@ sTypeClassOrProtocol); + return $oCollection; } } diff --git a/Core/Frameworks/Flake/Core/Controller.php b/Core/Frameworks/Flake/Core/Controller.php index 7b3fc57..33c81e4 100644 --- a/Core/Frameworks/Flake/Core/Controller.php +++ b/Core/Frameworks/Flake/Core/Controller.php @@ -1,4 +1,5 @@ childNodes->length - 1; $x >= 0; $x--) { + for ($x = $this->childNodes->length - 1; $x >= 0; --$x) { $this->removeChild($this->childNodes->item($x)); } // $value holds our new inner HTML @@ -67,7 +67,9 @@ class HTMLElement extends \DOMElement { // appendXML() expects well-formed markup (XHTML) $result = @$f->appendXML($sHtml); // @ to suppress PHP warnings if ($result) { - if ($f->hasChildNodes()) $this->appendChild($f); + if ($f->hasChildNodes()) { + $this->appendChild($f); + } } else { // $value is probably ill-formed $f = new \DOMDocument(); @@ -95,7 +97,7 @@ class HTMLElement extends \DOMElement { function getInnerHTML() { $sHtml = ''; $iNodes = $this->childNodes->length; - for ($i = 0; $i < $iNodes; $i++) { + for ($i = 0; $i < $iNodes; ++$i) { $oItem = $this->childNodes->item($i); $sHtml .= $oItem->ownerDocument->saveHTML($oItem); } @@ -113,7 +115,7 @@ class HTMLElement extends \DOMElement { while (!is_null($oNode->previousSibling)) { $oNode = $oNode->previousSibling; - $iPos++; + ++$iPos; } return $iPos; diff --git a/Core/Frameworks/Flake/Core/Database.php b/Core/Frameworks/Flake/Core/Database.php index 2ede625..8a17d47 100644 --- a/Core/Frameworks/Flake/Core/Database.php +++ b/Core/Frameworks/Flake/Core/Database.php @@ -1,4 +1,5 @@ fullQuoteArray($fields_values, $table, $no_quote_fields); - // Build query: + // Build query: $query = 'INSERT INTO ' . $table . ' ( ' . implode(', @@ -63,8 +60,11 @@ abstract class Database extends \Flake\Core\FLObject { ', $fields_values) . ' )'; - // Return query: - if ($this->debugOutput || $this->store_lastBuiltQuery) $this->debug_lastBuiltQuery = $query; + // Return query: + if ($this->debugOutput || $this->store_lastBuiltQuery) { + $this->debug_lastBuiltQuery = $query; + } + return $query; } } @@ -74,12 +74,10 @@ abstract class Database extends \Flake\Core\FLObject { } function UPDATEquery($table, $where, $fields_values, $no_quote_fields = false) { - - // Table and fieldnames should be "SQL-injection-safe" when supplied to this function (contrary to values in the arrays which may be insecure). - if (is_string($where)) { - if (is_array($fields_values) && count($fields_values)) { - - // quote and escape values + // Table and fieldnames should be "SQL-injection-safe" when supplied to this function (contrary to values in the arrays which may be insecure). + if (is_string($where)) { + if (is_array($fields_values) && count($fields_values)) { + // quote and escape values $nArr = $this->fullQuoteArray($fields_values, $table, $no_quote_fields); $fields = []; @@ -87,7 +85,7 @@ abstract class Database extends \Flake\Core\FLObject { $fields[] = $k . '=' . $v; } - // Build query: + // Build query: $query = 'UPDATE ' . $table . ' SET ' . implode(', @@ -96,8 +94,11 @@ abstract class Database extends \Flake\Core\FLObject { WHERE ' . $where : ''); - // Return query: - if ($this->debugOutput || $this->store_lastBuiltQuery) $this->debug_lastBuiltQuery = $query; + // Return query: + if ($this->debugOutput || $this->store_lastBuiltQuery) { + $this->debug_lastBuiltQuery = $query; + } + return $query; } } else { @@ -110,15 +111,17 @@ abstract class Database extends \Flake\Core\FLObject { } function DELETEquery($table, $where) { - if (is_string($where)) { - - // Table and fieldnames should be "SQL-injection-safe" when supplied to this function + if (is_string($where)) { + // Table and fieldnames should be "SQL-injection-safe" when supplied to this function $query = 'DELETE FROM ' . $table . (strlen($where) > 0 ? ' WHERE ' . $where : ''); - if ($this->debugOutput || $this->store_lastBuiltQuery) $this->debug_lastBuiltQuery = $query; + if ($this->debugOutput || $this->store_lastBuiltQuery) { + $this->debug_lastBuiltQuery = $query; + } + return $query; } else { die('Fatal Error: "Where" clause argument for DELETE query was not a string in $this->DELETEquery() !'); @@ -130,33 +133,35 @@ abstract class Database extends \Flake\Core\FLObject { } function SELECTquery($select_fields, $from_table, $where_clause, $groupBy = '', $orderBy = '', $limit = '') { - - // Table and fieldnames should be "SQL-injection-safe" when supplied to this function - // Build basic query: + // Table and fieldnames should be "SQL-injection-safe" when supplied to this function + // Build basic query: $query = 'SELECT ' . $select_fields . ' FROM ' . $from_table . (strlen($where_clause) > 0 ? ' WHERE ' . $where_clause : ''); - // Group by: - if (strlen($groupBy) > 0) { + // Group by: + if (strlen($groupBy) > 0) { $query .= ' GROUP BY ' . $groupBy; } - // Order by: - if (strlen($orderBy) > 0) { + // Order by: + if (strlen($orderBy) > 0) { $query .= ' ORDER BY ' . $orderBy; } - // Group by: - if (strlen($limit) > 0) { + // Group by: + if (strlen($limit) > 0) { $query .= ' LIMIT ' . $limit; } - // Return query: - if ($this->debugOutput || $this->store_lastBuiltQuery) $this->debug_lastBuiltQuery = $query; + // Return query: + if ($this->debugOutput || $this->store_lastBuiltQuery) { + $this->debug_lastBuiltQuery = $query; + } + return $query; } @@ -165,17 +170,18 @@ abstract class Database extends \Flake\Core\FLObject { } function fullQuoteArray($arr, $table, $noQuote = false) { - if (is_string($noQuote)) { + if (is_string($noQuote)) { $noQuote = explode(',', $noQuote); - } elseif (!is_array($noQuote)) { // sanity check + } elseif (!is_array($noQuote)) { // sanity check $noQuote = false; } - foreach ($arr as $k => $v) { - if ($noQuote === false || !in_array($k, $noQuote)) { + foreach ($arr as $k => $v) { + if ($noQuote === false || !in_array($k, $noQuote)) { $arr[$k] = $this->fullQuote($v, $table); } } + return $arr; } diff --git a/Core/Frameworks/Flake/Core/Database/Mysql.php b/Core/Frameworks/Flake/Core/Database/Mysql.php index f80e6c7..11ad0e6 100644 --- a/Core/Frameworks/Flake/Core/Database/Mysql.php +++ b/Core/Frameworks/Flake/Core/Database/Mysql.php @@ -1,4 +1,5 @@ chain($this, $this->count()); parent::push($value); @@ -40,11 +39,13 @@ class Chain extends \SplDoublyLinkedList { function &first() { $oRes = $this->bottom(); + return $oRes; } function &last() { $oRes = $this->top(); + return $oRes; } diff --git a/Core/Frameworks/Flake/Core/Datastructure/ChainLink.php b/Core/Frameworks/Flake/Core/Datastructure/ChainLink.php index 100ca81..cc046d3 100644 --- a/Core/Frameworks/Flake/Core/Datastructure/ChainLink.php +++ b/Core/Frameworks/Flake/Core/Datastructure/ChainLink.php @@ -1,4 +1,5 @@ __container->offsetGet($offset); + return $oRes; } @@ -83,11 +84,13 @@ abstract class ChainLink implements \Flake\Core\Datastructure\Chainable { function &next() { $oRes = $this->__container->next(); + return $oRes; } function &prev() { $oPrev = $this->__container->prev(); + return $oPrev; } @@ -101,11 +104,13 @@ abstract class ChainLink implements \Flake\Core\Datastructure\Chainable { function &first() { $oRes = $this->__container->first(); + return $oRes; } function &last() { $oRes = $this->__container->last(); + return $oRes; } } diff --git a/Core/Frameworks/Flake/Core/Datastructure/Chainable.php b/Core/Frameworks/Flake/Core/Datastructure/Chainable.php index 8d09056..dd15903 100644 --- a/Core/Frameworks/Flake/Core/Datastructure/Chainable.php +++ b/Core/Frameworks/Flake/Core/Datastructure/Chainable.php @@ -1,4 +1,5 @@ aData); + return $this->aData; } @@ -58,6 +59,7 @@ abstract class Model extends \Flake\Core\FLObject { function set($sPropName, $sPropValue) { if (array_key_exists($sPropName, $this->aData)) { $this->aData[$sPropName] = $sPropValue; + return $this; } @@ -82,6 +84,7 @@ abstract class Model extends \Flake\Core\FLObject { static function humanName() { $aRes = explode("\\", get_called_class()); + return array_pop($aRes); } diff --git a/Core/Frameworks/Flake/Core/Model/Db.php b/Core/Frameworks/Flake/Core/Model/Db.php index a33d5a1..990f9b6 100644 --- a/Core/Frameworks/Flake/Core/Model/Db.php +++ b/Core/Frameworks/Flake/Core/Model/Db.php @@ -1,4 +1,5 @@ exec_SELECTquery( "*", self::getDataTable(), diff --git a/Core/Frameworks/Flake/Core/Model/NoDb.php b/Core/Frameworks/Flake/Core/Model/NoDb.php index 9a7a602..74213f5 100644 --- a/Core/Frameworks/Flake/Core/Model/NoDb.php +++ b/Core/Frameworks/Flake/Core/Model/NoDb.php @@ -1,4 +1,5 @@ aData = $aData; diff --git a/Core/Frameworks/Flake/Core/PostConnectionService.php b/Core/Frameworks/Flake/Core/PostConnectionService.php index 2be6d9c..f85764c 100644 --- a/Core/Frameworks/Flake/Core/PostConnectionService.php +++ b/Core/Frameworks/Flake/Core/PostConnectionService.php @@ -1,4 +1,5 @@ &$oBlock, "rendu" => "", ]; - $this->aSequence[] = & $aTemp; - $this->aBlocks[$sZone][] = & $aTemp["rendu"]; + $this->aSequence[] = &$aTemp; + $this->aBlocks[$sZone][] = &$aTemp["rendu"]; } function &zone($sZone) { @@ -54,6 +53,7 @@ abstract class Container extends \Flake\Core\Controller { function render() { $this->execute(); $aRenderedBlocks = $this->renderBlocks(); + return implode("", $aRenderedBlocks); } @@ -75,6 +75,7 @@ abstract class Container extends \Flake\Core\Controller { } reset($aHtml); + return $aHtml; } } diff --git a/Core/Frameworks/Flake/Core/Render/Zone.php b/Core/Frameworks/Flake/Core/Render/Zone.php index ec81c2d..89b18ca 100644 --- a/Core/Frameworks/Flake/Core/Render/Zone.php +++ b/Core/Frameworks/Flake/Core/Render/Zone.php @@ -1,4 +1,5 @@ oZonableObject = & $oZonableObject; + $this->oZonableObject = &$oZonableObject; $this->sZone = $sZone; } diff --git a/Core/Frameworks/Flake/Core/Requester.php b/Core/Frameworks/Flake/Core/Requester.php index 9a93dc2..2c0f486 100644 --- a/Core/Frameworks/Flake/Core/Requester.php +++ b/Core/Frameworks/Flake/Core/Requester.php @@ -1,4 +1,5 @@ addClauseEquals($sField, $sValue); + return $this; } @@ -54,20 +55,25 @@ abstract class Requester extends \Flake\Core\FLObject { function orderBy($sOrderField, $sOrderDirection = "ASC") { $this->sOrderField = $sOrderField; $this->sOrderDirection = $sOrderDirection; + return $this; } function setLimitStart($iLimitStart) { $this->iLimitStart = $iLimitStart; + return $this; } function setLimitNumber($iLimitNumber) { $this->iLimitNumber = $iLimitNumber; + return $this; } abstract function addClauseEquals($sField, $sValue); + abstract function execute(); + abstract function count(); } diff --git a/Core/Frameworks/Flake/Core/Requester/Sql.php b/Core/Frameworks/Flake/Core/Requester/Sql.php index 0484096..e10c066 100644 --- a/Core/Frameworks/Flake/Core/Requester/Sql.php +++ b/Core/Frameworks/Flake/Core/Requester/Sql.php @@ -1,4 +1,5 @@ sDataTable = $sDataTable; + return $this; } function addClauseEquals($sField, $sValue) { $sWrap = "{field}='{value}'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseNotEquals($sField, $sValue) { $sWrap = "{field}!='{value}'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseLike($sField, $sValue) { $sWrap = "{field} LIKE '%{value}%'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseLikeBeginning($sField, $sValue) { $sWrap = "{field} LIKE '{value}%'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseLikeEnd($sField, $sValue) { $sWrap = "{field} LIKE '%{value}'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseNotLike($sField, $sValue) { $sWrap = "{field} NOT LIKE '%{value}%'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseNotLikeBeginning($sField, $sValue) { $sWrap = "{field} NOT LIKE '{value}%'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseNotLikeEnd($sField, $sValue) { $sWrap = "{field} NOT LIKE '%{value}'"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseIn($sField, $sValue) { $sWrap = "{field} IN ({value})"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } function addClauseNotIn($sField, $sValue) { $sWrap = "{field} NOT IN ({value})"; $this->addClauseWrapped($sField, $sValue, $sWrap); + return $this; } @@ -118,11 +128,13 @@ class Sql extends \Flake\Core\Requester { ); $this->addClauseLiteral($sClause); + return $this; } function addClauseLiteral($sClause) { $this->aClauses[] = $sClause; + return $this; } @@ -136,6 +148,7 @@ class Sql extends \Flake\Core\Requester { protected function &reify($aData) { $sTemp = $this->sModelClass; $res = new $sTemp($aData[$sTemp::getPrimaryKey()]); + return $res; # To address 'Notice: Only variable references should be returned by reference' } diff --git a/Core/Frameworks/Flake/Core/Route.php b/Core/Frameworks/Flake/Core/Route.php index b65e6c3..f80d719 100644 --- a/Core/Frameworks/Flake/Core/Route.php +++ b/Core/Frameworks/Flake/Core/Route.php @@ -1,4 +1,5 @@ templatesPath(); $oTemplate = new \Flake\Core\Template($this->templatesPath()); + return $oTemplate->parse($this->getData()); } diff --git a/Core/Frameworks/Flake/Framework.php b/Core/Frameworks/Flake/Framework.php index 4b9ca24..955e5b9 100644 --- a/Core/Frameworks/Flake/Framework.php +++ b/Core/Frameworks/Flake/Framework.php @@ -1,4 +1,5 @@ strlen($sString)) return false; + if ($iTestLen > strlen($sString)) { + return false; + } + return substr_compare($sString, $sTest, -$iTestLen) === 0; } static function bootstrap() { - # Asserting PHP 5.5.0+ if (version_compare(PHP_VERSION, '5.5.0', '<')) { die('Flake Fatal Error: Flake requires PHP 5.5.0+ to run properly. Your version is: ' . PHP_VERSION . '.'); @@ -119,10 +123,18 @@ class Framework extends \Flake\Core\Framework { # Also: https://github.com/netgusto/Baikal/issues/155 if (in_array(strtolower(ini_get('magic_quotes_gpc')), ['1', 'on'])) { $process = []; - if (isset($_GET) && is_array($_GET)) { $process[] = &$_GET;} - if (isset($_POST) && is_array($_POST)) { $process[] = &$_POST;} - if (isset($_COOKIE) && is_array($_COOKIE)) { $process[] = &$_COOKIE;} - if (isset($_REQUEST) && is_array($_REQUEST)) { $process[] = &$_REQUEST;} + if (isset($_GET) && is_array($_GET)) { + $process[] = &$_GET; + } + if (isset($_POST) && is_array($_POST)) { + $process[] = &$_POST; + } + if (isset($_COOKIE) && is_array($_COOKIE)) { + $process[] = &$_COOKIE; + } + if (isset($_REQUEST) && is_array($_REQUEST)) { + $process[] = &$_REQUEST; + } foreach ($process as $key => $val) { foreach ($val as $k => $v) { @@ -156,7 +168,7 @@ class Framework extends \Flake\Core\Framework { define("PROJECT_PATH_FRAMEWORKS", PROJECT_PATH_CORE . "Frameworks/"); define("PROJECT_PATH_WWWROOT", PROJECT_PATH_CORE . "WWWRoot/"); - require_once(PROJECT_PATH_CORE . "Distrib.php"); + require_once PROJECT_PATH_CORE . "Distrib.php"; define("PROJECT_PATH_DOCUMENTROOT", PROJECT_PATH_ROOT . "html/"); @@ -180,12 +192,16 @@ class Framework extends \Flake\Core\Framework { $sHttpBaseUrl = self::rmScriptName($sHttpBaseUrl, $sScript); $sHttpBaseUrl = self::rmProjectContext($sHttpBaseUrl); define("PROJECT_URI", $sProtocol . "://" . $_SERVER["HTTP_HOST"] . $sHttpBaseUrl); - unset($sScript); unset($sDirName); unset($sBaseUrl); unset($sProtocol); unset($sHttpBaseUrl); + unset($sScript); + unset($sDirName); + unset($sBaseUrl); + unset($sProtocol); + unset($sHttpBaseUrl); ################################################################################################# # Include Flake Framework config - require_once(FLAKE_PATH_ROOT . "config.php"); + require_once FLAKE_PATH_ROOT . "config.php"; # Determine Router class $GLOBALS["ROUTER"] = \Flake\Util\Tools::router(); @@ -196,7 +212,6 @@ class Framework extends \Flake\Core\Framework { if (!isset($_SESSION['CSRF_TOKEN'])) { $_SESSION['CSRF_TOKEN'] = bin2hex(openssl_random_pseudo_bytes(20)); } - } setlocale(LC_ALL, FLAKE_LOCALE); @@ -213,11 +228,11 @@ class Framework extends \Flake\Core\Framework { } protected static function initDb() { - try { $config = Yaml::parseFile(PROJECT_PATH_CONFIG . "baikal.yaml"); } catch (\Exception $e) { error_log('Error reading baikal.yaml file : ' . $e->getMessage()); + return true; } # Dont init db on install, but in normal mode and when upgrading @@ -249,6 +264,7 @@ class Framework extends \Flake\Core\Framework { if (file_exists($config['database']['sqlite_file']) && is_readable($config['database']['sqlite_file']) && !isset($GLOBALS["DB"])) { $GLOBALS["DB"] = new \Flake\Core\Database\Sqlite($config['database']['sqlite_file']); + return true; } @@ -256,7 +272,6 @@ class Framework extends \Flake\Core\Framework { } protected static function initDbMysql(array $config) { - if (!$config['database']['mysql_host']) { die("

The constant PROJECT_DB_MYSQL_HOST, containing the MySQL host name, is not set.
You should set it in config/baikal.yaml

"); } diff --git a/Core/Frameworks/Flake/Model/IUser.php b/Core/Frameworks/Flake/Model/IUser.php index dfea74d..ffd4854 100644 --- a/Core/Frameworks/Flake/Model/IUser.php +++ b/Core/Frameworks/Flake/Model/IUser.php @@ -1,4 +1,5 @@ $sDefinedController) { - if (strpos($sRouteTokens, $sDefinedRoute) === 0) { - # found a match $iSlashCount = substr_count($sDefinedRoute, "/"); if (!array_key_exists($iSlashCount, $aMatches)) { @@ -59,10 +55,10 @@ class QuestionMarkRewrite extends \Flake\Util\Router { } static function buildRoute($sRoute, $aParams = []/* [, $sParam, $sParam2, ...] */) { -# $aParams = func_get_args(); -# array_shift($aParams); # Stripping $sRoute + # $aParams = func_get_args(); + # array_shift($aParams); # Stripping $sRoute -# $sParams = implode("/", $aParams); + # $sParams = implode("/", $aParams); $aParamsSegments = []; reset($aParams); @@ -126,7 +122,6 @@ class QuestionMarkRewrite extends \Flake\Util\Router { # stripping route if (!empty($aTokens)) { - $sRouteUrl = implode("/", $aTokens); $sCurrentRoute = $GLOBALS["ROUTER"]::getCurrentRoute(); diff --git a/Core/Frameworks/Flake/Util/Tools.php b/Core/Frameworks/Flake/Util/Tools.php index ca371cc..d31d676 100644 --- a/Core/Frameworks/Flake/Util/Tools.php +++ b/Core/Frameworks/Flake/Util/Tools.php @@ -1,4 +1,5 @@ '; - if (!count($array_in)) {$result .= '' . htmlspecialchars("EMPTY!") . '';} + if (!count($array_in)) { + $result .= '' . htmlspecialchars("EMPTY!") . ''; + } foreach ($array_in as $key => $val) { - $result .= '' . htmlspecialchars((string)$key) . ''; - if (is_array($array_in[$key])) { + $result .= '' . htmlspecialchars((string) $key) . ''; + if (is_array($array_in[$key])) { $result .= \Flake\Util\Tools::view_array($array_in[$key]); } else { if (is_object($val)) { if (method_exists($val, "__toString")) { - $sWhat = nl2br(htmlspecialchars((string)$val)); + $sWhat = nl2br(htmlspecialchars((string) $val)); } else { $sWhat = nl2br(htmlspecialchars(get_class($val))); } } elseif (is_bool($val)) { $sWhat = ($val === true ? "boolean:TRUE" : "boolean:FALSE"); } else { - $sWhat = nl2br(htmlspecialchars((string)$val)); + $sWhat = nl2br(htmlspecialchars((string) $val)); } $result .= '' . $sWhat . '
'; @@ -98,13 +99,14 @@ class Tools extends \Flake\Core\FLObject { $result .= ''; } $result .= ''; - } else { + } else { $result = ' - +
' . nl2br(htmlspecialchars((string)$array_in)) . '
' . nl2br(htmlspecialchars((string) $array_in)) . '
'; // Output it as a string. } + return $result; } @@ -135,18 +137,18 @@ class Tools extends \Flake\Core\FLObject { } } - if ($brOrHeader) { - echo '
' . htmlspecialchars((string)$brOrHeader) . '
'; + if ($brOrHeader) { + echo '
' . htmlspecialchars((string) $brOrHeader) . '
'; } - if (is_array($var)) { + if (is_array($var)) { echo \Flake\Util\Tools::view_array($var); - } elseif (is_object($var)) { + } elseif (is_object($var)) { echo '|Object:
';
             print_r($var);
             echo '
|
'; - } elseif ((string)$var != '') { - echo '|' . htmlspecialchars((string)$var) . '|'; + } elseif ((string) $var != '') { + echo '|' . htmlspecialchars((string) $var) . '|'; } else { echo '| debug |'; } @@ -162,7 +164,7 @@ class Tools extends \Flake\Core\FLObject { array_pop($trail); $path = []; - foreach ($trail as $dat) { + foreach ($trail as $dat) { $path[] = $dat['class'] . $dat['type'] . $dat['function']; } @@ -277,24 +279,28 @@ class Tools extends \Flake\Core\FLObject { /** * Taken from TYPO3 - * Returns true if the first part of $str matches the string $partStr + * Returns true if the first part of $str matches the string $partStr. * * @param string Full string to check * @param string Reference string which must be found as the "first part" of the full string + * * @return bool True if $partStr was found to be equal to the first part of $str */ static function isFirstPartOfStr($str, $partStr) { // Returns true, if the first part of a $str equals $partStr and $partStr is not '' $psLen = strlen($partStr); - if ($psLen) { - return substr($str, 0, $psLen) == (string)$partStr; - } else return false; + if ($psLen) { + return substr($str, 0, $psLen) == (string) $partStr; + } else { + return false; + } } /** - * Binary-reads a file + * Binary-reads a file. * * @param string $sPath: absolute server path to file + * * @return string file contents */ static function file_readBin($sPath) { @@ -309,11 +315,12 @@ class Tools extends \Flake\Core\FLObject { } /** - * Binary-writes a file + * Binary-writes a file. * * @param string $sPath: absolute server path to file * @param string $sData: file contents * @param bool $bUTF8: add UTF8-BOM or not ? + * * @return void */ static function file_writeBin($sPath, $sData) { @@ -323,7 +330,6 @@ class Tools extends \Flake\Core\FLObject { } static function sendHtmlMail($sToAddress, $sSubject, $sBody, $sFromName, $sFromAddress, $sReplyToName, $sReplyToAddress) { - $sMessage = << @@ -357,18 +363,20 @@ TEST; } static function parseTemplateCode($sCode, $aMarkers) { - $loader = new \Twig_Loader_String(); $twig = new \Twig_Environment($loader); return $twig->render($sCode, $aMarkers); } - static function is_a($object, $class) { - if (is_object($object)) return $object instanceof $class; - if (is_string($object)){ - if (is_object($class)) $class = get_class($class); + if (is_object($object)) { + return $object instanceof $class; + } + if (is_string($object)) { + if (is_object($class)) { + $class = get_class($class); + } if (class_exists($class, true)) { # TRUE to autoload class return @is_subclass_of($object, $class) || $object == $class; @@ -376,10 +384,11 @@ TEST; if (interface_exists($class)) { $reflect = new \ReflectionClass($object); + return $reflect->implementsInterface($class); } - } + return false; } @@ -418,7 +427,9 @@ TEST; return self::number2Human($temp[0]) . ' virgule ' . self::number2Human($temp[1]); } - if ($a < 0) return 'moins ' . self::number2Human(-$a); + if ($a < 0) { + return 'moins ' . self::number2Human(-$a); + } if ($a < 17) { switch ($a) { @@ -455,8 +466,8 @@ TEST; case 90: return 'quatre-vingt-dix'; } } elseif (substr($a, -1) == 1) { - if (((int)($a / 10) * 10) < 70) { - return self::number2Human((int)($a / 10) * 10) . '-et-un'; + if (((int) ($a / 10) * 10) < 70) { + return self::number2Human((int) ($a / 10) * 10) . '-et-un'; } elseif ($a == 71) { return 'soixante-et-onze'; } elseif ($a == 81) { @@ -476,18 +487,17 @@ TEST; } elseif ($a < 200) { return self::number2Human(100) . ' ' . self::number2Human($a % 100); } elseif ($a < 1000) { - return self::number2Human((int)($a / 100)) . ' ' . self::number2Human(100) . ' ' . self::number2Human($a % 100); + return self::number2Human((int) ($a / 100)) . ' ' . self::number2Human(100) . ' ' . self::number2Human($a % 100); } elseif ($a == 1000) { return 'mille'; } elseif ($a < 2000) { return self::number2Human(1000) . ' ' . self::number2Human($a % 1000) . ' '; } elseif ($a < 1000000) { - return self::number2Human((int)($a / 1000)) . ' ' . self::number2Human(1000) . ' ' . self::number2Human($a % 1000); + return self::number2Human((int) ($a / 1000)) . ' ' . self::number2Human(1000) . ' ' . self::number2Human($a % 1000); } } static function stringToUrlToken($sString) { - # Taken from TYPO3 extension realurl $space = "-"; @@ -512,13 +522,11 @@ TEST; } static function getIP() { - $alt_ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_CLIENT_IP'])) { $alt_ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) and preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { - // make sure we dont pick up an internal IP defined by RFC1918 foreach ($matches[0] as $ip) { if (!preg_match('#^(10|172\.16|192\.168)\.#', $ip)) { @@ -612,7 +620,7 @@ TEST; # Taken from http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or-sequential#answer-4254008 # count() will return 0 if numeric, and > 0 if assoc, even partially - return (bool)count(array_filter(array_keys($aArray), 'is_string')); + return (bool) count(array_filter(array_keys($aArray), 'is_string')); } static function arrayIsSeq($aArray) { @@ -621,7 +629,7 @@ TEST; static function echoAndCutClient($sMessage = '') { ignore_user_abort(true); -# set_time_limit(0); + # set_time_limit(0); header("Connection: close"); header("Content-Length: " . strlen($sMessage)); @@ -635,7 +643,7 @@ TEST; } static function stopWatch($sWhat) { -# return; + # return; $iStop = \Flake\Util\Tools::milliseconds(); $trail = debug_backtrace(); @@ -661,12 +669,14 @@ TEST; $len = strlen($data); if ($len < 18 || strcmp(substr($data, 0, 2), "\x1f\x8b")) { $error = "Not in GZIP format."; + return null; // Not GZIP format (See RFC 1952) } $method = ord(substr($data, 2, 1)); // Compression method $flags = ord(substr($data, 3, 1)); // Flags if ($flags & 31 != $flags) { $error = "Reserved bits not allowed."; + return null; } // NOTE: $mtime may be negative (PHP integer limitations) @@ -729,6 +739,7 @@ TEST; $headercrc = $headercrc[1]; if ($headercrc != $calccrc) { $error = "Header checksum failed."; + return false; // Bad header CRC } $headerlen += 2; @@ -754,6 +765,7 @@ TEST; break; default: $error = "Unknown compression method."; + return false; } } // zero-byte body content is allowed @@ -763,8 +775,10 @@ TEST; $lenOK = $isize == strlen($data); if (!$lenOK || !$crcOK) { $error = ($lenOK ? '' : 'Length check FAILED. ') . ($crcOK ? '' : 'Checksum FAILED.'); + return false; } + return $data; } } diff --git a/Core/Frameworks/Flake/config.php b/Core/Frameworks/Flake/config.php index 1587562..a8279f5 100644 --- a/Core/Frameworks/Flake/config.php +++ b/Core/Frameworks/Flake/config.php @@ -1,4 +1,5 @@ HTML; + return $sHtml; } @@ -63,6 +64,7 @@ HTML; {$sMessage} HTML; + return $sHtml; } @@ -77,6 +79,7 @@ HTML;

HTML; + return $sHtml; } } diff --git a/Core/Frameworks/Formal/Element.php b/Core/Frameworks/Formal/Element.php index 6cb3087..b34b58b 100644 --- a/Core/Frameworks/Formal/Element.php +++ b/Core/Frameworks/Formal/Element.php @@ -1,4 +1,5 @@ "", "inputclass" => "input-xlarge", @@ -64,6 +63,7 @@ abstract class Element { } reset($aOptions); + return $aOptions; } @@ -91,6 +91,7 @@ abstract class Element { $aPost = \Flake\Util\Tools::POST("witness"); if (is_array($aPost)) { $sProp = $this->option("prop"); + return (array_key_exists($sProp, $aPost)) && (intval($aPost[$sProp]) === 1); } diff --git a/Core/Frameworks/Formal/Element/Checkbox.php b/Core/Frameworks/Formal/Element/Checkbox.php index 89140cc..39649c4 100644 --- a/Core/Frameworks/Formal/Element/Checkbox.php +++ b/Core/Frameworks/Formal/Element/Checkbox.php @@ -1,4 +1,5 @@ sValue = ((intval($sValue) === 1)); } @@ -80,6 +79,7 @@ class Checkbox extends \Formal\Element { HTML; + return $sHtml . $this->renderWitness(); } } diff --git a/Core/Frameworks/Formal/Element/Listbox.php b/Core/Frameworks/Formal/Element/Listbox.php index 9507db3..f398965 100644 --- a/Core/Frameworks/Formal/Element/Listbox.php +++ b/Core/Frameworks/Formal/Element/Listbox.php @@ -1,4 +1,5 @@ HTML; + return $sHtml . $this->renderWitness(); } } diff --git a/Core/Frameworks/Formal/Element/Password.php b/Core/Frameworks/Formal/Element/Password.php index 9fa3b2d..38b7ab3 100644 --- a/Core/Frameworks/Formal/Element/Password.php +++ b/Core/Frameworks/Formal/Element/Password.php @@ -1,4 +1,5 @@ option("popover")) !== "") { - if (array_key_exists("position", $aPopover)) { $sPosition = $aPopover["position"]; $inputclass .= " popover-focus-" . $sPosition; @@ -97,6 +95,7 @@ class Text extends \Formal\Element { HTML; + return $sHtml . $this->renderWitness(); } } diff --git a/Core/Frameworks/Formal/Form.php b/Core/Frameworks/Formal/Form.php index feef857..ef4135d 100644 --- a/Core/Frameworks/Formal/Form.php +++ b/Core/Frameworks/Formal/Form.php @@ -1,4 +1,5 @@ "", @@ -63,11 +62,13 @@ class Form { function setOption($sName, $sValue) { $this->aOptions[$sName] = $sValue; + return $this; } function options() { $aOptions = $this->aOptions; + return $aOptions; } @@ -138,7 +139,6 @@ class Form { # posted value is fetched, then passes to element before persistance if ($oElement->posted()) { - $sPostValue = $this->postValue($sPropName); $oElement->setValue($sPostValue); @@ -167,7 +167,6 @@ class Form { $sValue = $oElement->value(); foreach ($aValidation as $sValidation) { - # If element is readonly, skip process if ($oElement->option("readonly")) { continue; @@ -203,7 +202,6 @@ class Form { } if (!$this->refreshed() && empty($this->aErrors)) { - # Model object is persisted # Last chance to generate a confirm message corresponding to what *was* submitted ("Creating", instead of "Editing") @@ -341,7 +339,6 @@ class Form { $oMorpho->elements()->reset(); foreach ($oMorpho->elements() as $oElement) { - # Setting current prop value for element # Set on empty (just created) FormMorphology # And obtained from Model instance @@ -363,7 +360,6 @@ class Form { ###################################################### if ($this->submitted()) { - # There were errors detected during execute() # Error messages are displayed diff --git a/Core/Frameworks/Formal/Form/Morphology.php b/Core/Frameworks/Formal/Form/Morphology.php index 090e32d..6cdfd50 100644 --- a/Core/Frameworks/Formal/Form/Morphology.php +++ b/Core/Frameworks/Formal/Form/Morphology.php @@ -1,4 +1,5 @@ oElements->getForKey($sKey); + return $oElement; } diff --git a/Core/Frameworks/Formal/Framework.php b/Core/Frameworks/Formal/Framework.php index bdd428f..afd50aa 100644 --- a/Core/Frameworks/Formal/Framework.php +++ b/Core/Frameworks/Formal/Framework.php @@ -1,4 +1,5 @@