summaryrefslogtreecommitdiff
path: root/core/config
diff options
context:
space:
mode:
Diffstat (limited to 'core/config')
-rw-r--r--core/config/anom_settings.php312
-rw-r--r--core/config/credentials.php126
-rw-r--r--core/config/init.php17
3 files changed, 239 insertions, 216 deletions
diff --git a/core/config/anom_settings.php b/core/config/anom_settings.php
index 406c6aa..76c7c62 100644
--- a/core/config/anom_settings.php
+++ b/core/config/anom_settings.php
@@ -1,35 +1,37 @@
<?php
+
/** CONFIGURATION PATAMETRES
- * ---
+ * -----------------------------------------------------------------------------
* This is the first file you need to setup
* in order to start a new application
+ *
+ * NOTE:
+ * You may rewrite the defines manualy setting any values manualy
+ * Here we propose that you use an .env file (with is a very safe option)
+ * the env file is saved into `/core/auth` folder
*/
+if (file_exists("../core/auth/.env")) {
+ $ini_array = parse_ini_file("../core/auth/.env");
+}
+
// DEFINE WHETTHER THE APP RUNS ON PRODUCTION
// Don't forget to change this setting
// when deploying to a different stage
// -----------------------------------------------------------------------------
-// define by OS parameter
-//// if (getenv('ENVIRONMENT')) {
-//// if (getenv('ENVIRONMENT') == 'PRODUCTION') {
-////
-//// define('PRODUCTION', true);
-////
-//// } else {
-//// define('PRODUCTION', false);
-//// }
-//// }
-//// // define by .env file
-//// if (!defined('PRODUCTION')) {
-//// if (file_exists('../core/auth/.env')) {
-//// $ini_array = parse_ini_file("../core/auth/.env");
-////
-//// define('PRODUCTION', $ini_array['ENVIRONMENT']);
-//// }
-//// } else {
-//// define('PRODUCTION', false); // or define manualy
-//// }
-define('PRODUCTION', false);
+
+# // define by OS parameter
+# if (getenv('ENVIRONMENT')) {
+# if (getenv('ENVIRONMENT') == 'PRODUCTION') {
+# define('PRODUCTION', true);
+# } else {
+# define('PRODUCTION', false);
+# }
+# }
+
+# define by .env file
+define('PRODUCTION', ($ini_array['ENVIRONMENT'] == 'production') );
+
// Custom Names ////////////////////////////////////////////////////////////////
@@ -43,15 +45,17 @@ define('SESSION_NAME', 'clroom'); // Session Name
-// APPLICATION PATHS ///////////////////////////////////////////////////////////
-// -----------------------------------------------------------------------------
-
-// Obligarory
-// These are needed in order to run the bare minimum MVC system
-// They also make code easier to read
-//
-// NOTE: probably you don't need to chage these defines
-// -----------------------------------------------------------------------------
+/** APPLICATION PATHS ///////////////////////////////////////////////////////////
+ * -----------------------------------------------------------------------------
+ *
+ * Obligarory
+ * These are needed in order to run the bare minimum MVC system
+ * They also make code easier to read
+ *
+ * NOTE:
+ * probably you don't need to chage these defines
+ * -----------------------------------------------------------------------------
+ */
define('APP_ROOT', dirname(get_included_files()[0]) );
@@ -68,22 +72,28 @@ define('VIEWS_DIRECTORY', APP_ROOT.'/app/views/');
define('TESTS_DIRECTORY', APP_ROOT."/../tests/");
-// AUTOLOADER //////////////////////////////////////////////////////////////////
-// -----------------------------------------------------------------------------
-
-// An autoloader for classes is required;
-// OPTION 1: COMPOSER
-// Composer is recommended and makes much more than simple autoloding
+/** AUTOLOADER /////////////////////////////////////////////////////////////////
+ * -----------------------------------------------------------------------------
+ * An autoloader for classes is required;
+ *
+ *
+ * OPTION 1: COMPOSER
+ * Composer is recommended and makes much more than simple autoloding
+ */
define('AUTOLOADER' , '../vendor/autoload.php');
-// OPTION 2: Custom Autoloader
-// If Composer is not supported, another autoloading proccess required
-// Comment/Disable the 1st option and uncomment/Enable the next line
+/** ...
+ *
+ * OPTION 2: Custom Autoloader
+ * If Composer is not supported, another autoloading proccess required
+ * Comment/Disable the 1st option and uncomment/Enable the next line
+ */
# define('AUTOLOADER' , '../core/helpers/autoload.php');
-// CLASSPATHS : array of paths where classes are saved
-// Needed only when the custom autoloader is used
-// (like autoload.classmap section of Composer)
+/** CLASSPATHS : array of paths where classes are saved
+ * Needed only when the custom autoloader is used
+ * (like autoload.classmap section of Composer)
+ */
# define('CLASSPATHS', array(
# '/../core/classes/',
# '/app/controllers/',
@@ -94,27 +104,45 @@ define('AUTOLOADER' , '../vendor/autoload.php');
-// ADVANCED OPTIMIZATION ///////////////////////////////////////////////////////
-// -----------------------------------------------------------------------------
-
-// APP_CACHE defines the cache-driver;
-// accepted values are the name of the Cache-interface impementations (the exact
-// names of the classes)
-//
-// 'FileCache' : caching in filesystem; fair if caching on HDD; great on SSD
-// 'RedisCache' : caching in Redis server; generally recommended if available
-// 'MemCachedCache' : caching in Memcached server; recommended if available
-//
-// NOTE: FileCache on a NVMe SDD is the fastest option;
-// Redis and Memcached are really-fast caching options and are available for
-// scaling horizontaly your application (eache one has it's own strngths;
-// study, then choose the one that fulfills your needs;
-// -----------------------------------------------------------------------------
+ /** SESSION HANDLING //////////////////////////////////////////////////////////
+ * ----------------------------------------------------------------------------
+ *
+ * there are several session drivers for session handling:
+ *
+ * 'DefaultSession' : uses the default (file-based) php session management
+ * 'FileSession' : defines a custom file-based session mechanism
+ * 'DatabaseSession' : mechanism that stores Session data into a DataBase
+ * ----------------------------------------------------------------------------
+ */
+
+define('SESSION_DRIVER', 'DefaultSession');
+
+
+
+/* ADVANCED OPTIMIZATION ///////////////////////////////////////////////////////
+ * -----------------------------------------------------------------------------
+ *
+ * APP_CACHE defines the cache-driver;
+ * accepted values are the name of the Cache-interface impementations (the exact
+ * names of the classes)
+ *
+ * 'FileCache' : caching in filesystem; fair if caching on HDD; great on SSD
+ * 'RedisCache' : caching in Redis server; generally recommended if available
+ * 'MemCachedCache' : caching in Memcached server; recommended if available
+ *
+ * NOTE: FileCache on a NVMe SDD is the fastest option;
+ * Redis and Memcached are really-fast caching options and are available for
+ * scaling horizontaly your application (eache one has it's own strngths;
+ * study, then choose the one that fulfills your needs;
+ * -----------------------------------------------------------------------------
+ */
define('CACHE_DRIVER', 'FileCache');
-// Caching expiration times fpr various expensive objects
-// -----------------------------------------------------------------------------
+
+/** Caching expiration times fpr various expensive objects
+ * -----------------------------------------------------------------------------
+ */
// Root objects like product-categories tree
define('CACHE_ROOT_TTL', 28800); // 8 hours
@@ -126,17 +154,11 @@ define('CACHE_CATEGORY_TTL', 18000); // 5 hours
define('CACHE_PRODUCT_TTL', 3600); // 1 hour
-// SESSION_DRIVER ; accepted values...
-// 'files' : (defult) php uses filesystem for saving session; fair if caching in SSD drive
-// 'redis' : keep sessions in a Redis server; rapid-fast but wastes large amount of RAM
-// 'database' : keep session data in Database; ideal for session across multiple servers
-// -----------------------------------------------------------------------------
-define('SESSION_DRIVER', 'files');
// CONNECTIONS ...
-define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'FileCache'
+define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'FileCache'
# define('REDIS_HOST', '127.0.0.1'); // if CACHE_DRIVER is set to 'RedisCache'
@@ -144,16 +166,16 @@ define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'Fi
-
-// SECURITY SETTINGS ///////////////////////////////////////////////////////////
-// -----------------------------------------------------------------------------
-
-// Cross Site Request Forgery
-// ---
-// Enables a CSRF cookie token to be set. When set to TRUE, token will be
-// checked on a submitted form. If you are accepting user data, it is strongly
-// recommended CSRF protection be enabled.
-// -----------------------------------------------------------------------------
+/** SECURITY SETTINGS ///////////////////////////////////////////////////////////
+ * -----------------------------------------------------------------------------
+ *
+ * Cross Site Request Forgery
+ * ---
+ * Enables a CSRF cookie token to be set. When set to TRUE, token will be
+ * checked on a submitted form. If you are accepting user data, it is strongly
+ * recommended CSRF protection be enabled.
+ * -----------------------------------------------------------------------------
+ */
define('CSRF_PROTCTION', false);
@@ -166,3 +188,137 @@ define('CSRF_EXPIRE', 7200); // The number in seconds the token shoul
define('CSRF_REGENERATE', TRUE); // Regenerate token on every submission
define('CSRF_EXCLUDE_URIS', array()); // Array of URIs which ignore CSRF checks
+
+
+
+
+/** CREDENTIALS
+ * -----------------------------------------------------------------------------
+ */
+
+/** SERVICE PARAMETRES
+ * -----------------------------------------------------------------------------
+ *
+ * Connection parametres and credentials for accssing services
+ * needed by the application; Such services may be..
+ *
+ * - RDBMS
+ * -- MySQL
+ * -- PotgresSQL
+ *
+ * - Caching services
+ * -- Redis
+ * -- MemCached
+ *
+ * Edit only the constants needed by the application;
+ * Comment those you do not need;
+ *
+ * /////////////////////////////////////////////////////////////////////////////
+ */
+
+/** DATABASE CONNECTION PARAMETRES
+ * -----------------------------------------------------------------------------
+ * Production and staging environments may use different databases.
+ *
+ * A safe practice is to keep credentials outside plain files like this one
+ * in environmental variable or other secret file etc.
+ *
+ * Uncomment/enable each group of definitions suits your case to define
+ * the credentials needed for accessing the database
+ */
+
+/** This is a SAFE method (define credentials as OS environmental variables)
+ * -----------------------------------------------------------------------------
+ */
+# define('DB_NAME', getenv('DB_NAME')); // database name
+#
+# define('DB_USER', getenv('DB_USER')); // database user-name
+#
+# define('DB_PASS', getenv('DB_PASS')); // user's pass
+#
+# define('PDO_HOST', getenv('PDO_HOST')); // database host (connection string)
+
+
+/** This is another SAFE method (keep credentials in an .env file)
+ * -----------------------------------------------------------------------------
+ */
+
+ $ini_array = parse_ini_file("../core/auth/.env");
+
+ define('DB_NAME', $ini_array['DB_NAME']);
+
+ define('DB_USER', $ini_array['DB_USER']);
+
+ define('DB_PASS', $ini_array['DB_PASS']);
+
+ define('PDO_HOST', $ini_array['PDO_HOST']);
+
+
+ /** This is just good enough
+ * -----------------------------------------------------------------------------
+ */
+
+ # if (!PRODUCTION) { // == Deployed on staging
+ #
+ # // STAGING SETTINGS:
+ #
+ # define('DB_NAME', 'dev_db_name');
+ #
+ # define('DB_USER', 'devUserName');
+ #
+ # define('DB_PASS', getenv('DBPASSWORD'));
+ #
+ # // PDO_HOST can be a hostname/port combination -or- a unix socket
+ # // ...examples:
+ # // define('PDO_HOST', 'host=/localhost') ## hostname case
+ # // define('PDO_HOST', 'host=/localhost;port=3456') ## hostname/port case
+ # // define('PDO_HOST', 'unix_socket=/sql/ex123:europe:some-db'); ## unix socket
+ # define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu');
+ #
+ # } else { // == Deployed on production
+ #
+ # // PRODUCTION SETTINGS:
+ #
+ # define('DB_NAME', 'your_db_name');
+ # define('DB_USER', 'dbusername');
+ # define('DB_PASS', getenv('DBPASSWORD'));
+ # define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu');
+ #
+ # }
+
+ define('DB_TIMEZONE', "SET time_zone = 'Europe/Athens'");
+
+ /** NOTE:
+ * Both Redis and Memcached configurations are given as a template to work on;
+ * In most cases the default values should do the job -- of course you need to
+ * read the README file (check the project's root);
+ * As these caching services are not fully tested you may need to ochestrate
+ * the services in detail or edit the connection strings into the core classes
+ * (hosted under the '/core/classes/cacher' folder)
+ */
+
+
+ /** REDIS SERVICE
+ * -----------------------------------------------------------------------------
+ * Most of the times Redis is running on 'localhost' (host = '127.0.0.1')
+ * When implemented via anom's docker-composer (redis via bridge) then you need
+ * do declare the hostname as 'redis'
+ */
+ #
+ # if (!defined('REDIS_HOST')) define('REDIS_HOST', 'redis');
+ #
+ # if (!defined('REDIS_PORT')) define('REDIS_PORT', 6379);
+ #
+ # if (!defined('REDIS_PASS')) define('REDIS_PASS', null);
+
+
+ /** MEMCACHED
+ * -----------------------------------------------------------------------------
+ * Memcached looks very much like Redis (plus, both are serving from RAM)
+ * Usualy Memcashed is running localy so host is 'localhost' ('127.0.0.1')
+ * If you use the framework's docker-composer implementation then
+ * the hostname is 'anomemcached'
+ */
+ #
+ #if (!defined('MEMCACHE_HOST')) define('MEMCACHE_HOST', 'anomemcached');
+ \ No newline at end of file
diff --git a/core/config/credentials.php b/core/config/credentials.php
deleted file mode 100644
index 43fa0a4..0000000
--- a/core/config/credentials.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-/** SERVICE PARAMETRES
- * -----------------------------------------------------------------------------
- *
- * Connection parametres and credentials for accssing services
- * needed by the application; Such services may be..
- *
- * - RDBMS
- * -- MySQL
- * -- PotgresSQL
- *
- * - Caching services
- * -- Redis
- * -- MemCached
- *
- * Edit only the constants needed by the application;
- * Comment those you do not need;
- *
- * /////////////////////////////////////////////////////////////////////////////
- */
-
-/** DATABASE CONNECTION PARAMETRES
- * -----------------------------------------------------------------------------
- * Production and staging environments may use different databases.
- *
- * A safe practice is to keep credentials outside plain files like this one
- * in environmental variable or other secret file etc.
- *
- * Uncomment/enable each group of definitions suits your case to define
- * the credentials needed for accessing the database
- */
-
-/** This is a SAFE method (define credentials as OS environmental variables)
- * -----------------------------------------------------------------------------
- */
-# define('DB_NAME', getenv('DB_NAME')); // database name
-#
-# define('DB_USER', getenv('DB_USER')); // database user-name
-#
-# define('DB_PASS', getenv('DB_PASS')); // user's pass
-#
-# define('PDO_HOST', getenv('PDO_HOST')); // database host (connection string)
-
-
-/** This is another SAFE method (keep credentials in an .env file)
- * -----------------------------------------------------------------------------
- */
-
-$ini_array = parse_ini_file("../core/auth/.env");
-
-define('DB_NAME', $ini_array['DB_NAME']);
-
-define('DB_USER', $ini_array['DB_USER']);
-
-define('DB_PASS', $ini_array['DB_PASS']);
-
-define('PDO_HOST', $ini_array['PDO_HOST']);
-
-
-/** This is just good enough
- * -----------------------------------------------------------------------------
- */
-#
-# if (!PRODUCTION) { // == Deployed on staging
-#
-# // STAGING SETTINGS:
-#
-# define('DB_NAME', 'dev_db_name');
-#
-# define('DB_USER', 'devUserName');
-#
-# define('DB_PASS', getenv('DBPASSWORD'));
-#
-# // PDO_HOST can be a hostname/port combination -or- a unix socket
-# // ...examples:
-# // define('PDO_HOST', 'host=/localhost') ## hostname case
-# // define('PDO_HOST', 'host=/localhost;port=3456') ## hostname/port case
-# // define('PDO_HOST', 'unix_socket=/sql/ex123:europe:some-db'); ## unix socket
-# define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu');
-#
-# } else { // == Deployed on production
-#
-# // PRODUCTION SETTINGS:
-#
-# define('DB_NAME', 'your_db_name');
-# define('DB_USER', 'dbusername');
-# define('DB_PASS', getenv('DBPASSWORD'));
-# define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu');
-#
-# }
-
-define('DB_TIMEZONE', "SET time_zone = 'Europe/Athens'");
-
-/** NOTE:
- * Both Redis and Memcached configurations are given as a template to work on;
- * In most cases the default values should do the job -- of course you need to
- * read the README file (check the project's root);
- * As these caching services are not fully tested you may need to ochestrate
- * the services in detail or edit the connection strings into the core classes
- * (hosted under the '/core/classes/cacher' folder)
- */
-
-
-/** REDIS SERVICE
- * -----------------------------------------------------------------------------
- * Most of the times Redis is running on 'localhost' (host = '127.0.0.1')
- * When implemented via anom's docker-composer (redis via bridge) then you need
- * do declare the hostname as 'redis'
- */
-#
-# if (!defined('REDIS_HOST')) define('REDIS_HOST', 'redis');
-#
-# if (!defined('REDIS_PORT')) define('REDIS_PORT', 6379);
-#
-# if (!defined('REDIS_PASS')) define('REDIS_PASS', null);
-
-
-/** MEMCACHED
- * -----------------------------------------------------------------------------
- * Memcached looks very much like Redis (plus, both are serving from RAM)
- * Usualy Memcashed is running localy so host is 'localhost' ('127.0.0.1')
- * If you use the framework's docker-composer implementation then
- * the hostname is 'anomemcached'
- */
-#
-#if (!defined('MEMCACHE_HOST')) define('MEMCACHE_HOST', 'anomemcached');
diff --git a/core/config/init.php b/core/config/init.php
index b035faf..2db2503 100644
--- a/core/config/init.php
+++ b/core/config/init.php
@@ -16,19 +16,16 @@
* anything else can be injected on-demand
*/
-// Load authorization parametres
-// -----------------------------------------------------------------------------
-require_once CREDENTIALS;
-
// setup error-handliing
// -----------------------------------------------------------------------------
require_once '../core/helpers/error_handling.php';
-// Load rendering sub-system
-// -----------------------------------------------------------------------------
-require_once RENDERING_SYSTEM;
+// depricated:
+/// // Load rendering sub-system
+/// // -----------------------------------------------------------------------------
+/// require_once RENDERING_SYSTEM;
// Setup Application Engiine
@@ -43,16 +40,12 @@ Registry::vow('database', function() { return new Database(); });
// Attach Cache to the Resitry as a vow
// (CACHE_DRIVER) acts as driver-wrapper
+// --- -- -- - - -
Registry::vow('cache', function() { return new (CACHE_DRIVER)(); });
// CHECK: if strict mode has any benefits:
// Registry::vow('cache', function():Cache_interface { return new (CACHE_DRIVER)(); });
-// Start session
-Registry::set('session', new DefaultSession());
-
-
-
// Initialize THE REQUEST
// -----------------------------------------------------------------------------
Registry::set('REQUEST', new Request());