diff --git a/bl-kernel/admin/themes/default/css/default.css b/bl-kernel/admin/themes/default/css/default.css
index 191312d2..57d0baad 100644
--- a/bl-kernel/admin/themes/default/css/default.css
+++ b/bl-kernel/admin/themes/default/css/default.css
@@ -655,7 +655,7 @@ div.plugin-links > span.separator {
list-style-type: none;
margin: 15px 0;
padding: 0;
- font-size: 1.1em;
+ font-size: 1em;
text-align: left;
}
diff --git a/bl-kernel/boot/init.php b/bl-kernel/boot/init.php
index cf6a7e84..55102701 100644
--- a/bl-kernel/boot/init.php
+++ b/bl-kernel/boot/init.php
@@ -231,11 +231,12 @@ elseif( empty($base) ) {
$base = dirname($base);
}
-if($base!=DS) {
+if (strpos($_SERVER['REQUEST_URI'], $base)!==0) {
+ $base = '/';
+} elseif ($base!=DS) {
$base = trim($base, '/');
$base = '/'.$base.'/';
-}
-else {
+} else {
// Workaround for Windows Web Servers
$base = '/';
}
diff --git a/bl-kernel/dblanguage.class.php b/bl-kernel/dblanguage.class.php
index 68c038df..e73c32fb 100644
--- a/bl-kernel/dblanguage.class.php
+++ b/bl-kernel/dblanguage.class.php
@@ -46,6 +46,11 @@ class dbLanguage extends dbJSON
return $this->currentLanguage;
}
+ public function currentLanguage()
+ {
+ return $this->currentLanguage;
+ }
+
// Return the translation, if the translation doesn't exist returns the English translation
public function get($string)
{
diff --git a/install.php b/install.php
index 0ba7f7c5..4c8e57ce 100644
--- a/install.php
+++ b/install.php
@@ -8,25 +8,25 @@
*/
// Check PHP version
-if(version_compare(phpversion(), '5.3', '<')) {
+if (version_compare(phpversion(), '5.3', '<')) {
exit('Current PHP version '.phpversion().', you need > 5.3. (ERR_202)');
}
// Check PHP modules
-if(!extension_loaded('mbstring')) {
- exit('PHP module mbstring is not installed. Check the requirements.');
+if (!extension_loaded('mbstring')) {
+ exit('PHP module mbstring is not installed. Check the requirements.');
}
-if(!extension_loaded('json')) {
- exit('PHP module json is not installed. Check the requirements.');
+if (!extension_loaded('json')) {
+ exit('PHP module json is not installed. Check the requirements.');
}
-if(!extension_loaded('gd')) {
- exit('PHP module gd is not installed. Check the requirements.');
+if (!extension_loaded('gd')) {
+ exit('PHP module gd is not installed. Check the requirements.');
}
-if(!extension_loaded('dom')) {
- exit('PHP module dom is not installed. Check the requirements.');
+if (!extension_loaded('dom')) {
+ exit('PHP module dom is not installed. Check the requirements.');
}
// Security constant
@@ -40,54 +40,49 @@ define('PATH_ROOT', __DIR__.DS);
define('PATH_CONTENT', PATH_ROOT.'bl-content'.DS);
define('PATH_KERNEL', PATH_ROOT.'bl-kernel'.DS);
define('PATH_LANGUAGES', PATH_ROOT.'bl-languages'.DS);
-
define('PATH_UPLOADS', PATH_CONTENT.'uploads'.DS);
define('PATH_TMP', PATH_CONTENT.'tmp'.DS);
define('PATH_PAGES', PATH_CONTENT.'pages'.DS);
define('PATH_DATABASES', PATH_CONTENT.'databases'.DS);
define('PATH_PLUGINS_DATABASES',PATH_CONTENT.'databases'.DS.'plugins'.DS);
-
define('PATH_UPLOADS_PROFILES', PATH_UPLOADS.'profiles'.DS);
define('PATH_UPLOADS_THUMBNAILS',PATH_UPLOADS.'thumbnails'.DS);
-
define('PATH_HELPERS', PATH_KERNEL.'helpers'.DS);
define('PATH_ABSTRACT', PATH_KERNEL.'abstract'.DS);
-// Protecting against Symlink attacks.
+// Protecting against Symlink attacks
define('CHECK_SYMBOLIC_LINKS', TRUE);
-// Filename for posts and pages
+// Filename for pages
define('FILENAME', 'index.txt');
// Domain and protocol
define('DOMAIN', $_SERVER['HTTP_HOST']);
-if(!empty($_SERVER['HTTPS'])) {
+if (!empty($_SERVER['HTTPS'])) {
define('PROTOCOL', 'https://');
-}
-else {
+} else {
define('PROTOCOL', 'http://');
}
// Base URL
-// The user can define the base URL.
-// Left empty if you want to Bludit try to detect the base URL.
+// Change the base URL or leave it empty if you want to Bludit try to detect the base URL.
$base = '';
-if( !empty($_SERVER['DOCUMENT_ROOT']) && !empty($_SERVER['SCRIPT_NAME']) && empty($base) ) {
+if (!empty($_SERVER['DOCUMENT_ROOT']) && !empty($_SERVER['SCRIPT_NAME']) && empty($base)) {
$base = str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_NAME']);
$base = dirname($base);
-}
-elseif( empty($base) ) {
+} elseif (empty($base)) {
$base = empty( $_SERVER['SCRIPT_NAME'] ) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$base = dirname($base);
}
-if($base!=DS) {
+if (strpos($_SERVER['REQUEST_URI'], $base)!==0) {
+ $base = '/';
+} elseif ($base!=DS) {
$base = trim($base, '/');
$base = '/'.$base.'/';
-}
-else {
+} else {
// Workaround for Windows Web Servers
$base = '/';
}
@@ -98,7 +93,7 @@ define('HTML_PATH_ROOT', $base);
define('LOG_SEP', ' | ');
// JSON
-if(!defined('JSON_PRETTY_PRINT')) {
+if (!defined('JSON_PRETTY_PRINT')) {
define('JSON_PRETTY_PRINT', 128);
}
@@ -108,12 +103,13 @@ define('DB_DATE_FORMAT', 'Y-m-d H:i:s');
// Charset, default UTF-8.
define('CHARSET', 'UTF-8');
+// Default language file
define('DEFAULT_LANGUAGE_FILE', 'en.json');
-// Set internal character encoding.
+// Set internal character encoding
mb_internal_encoding(CHARSET);
-// Set HTTP output character encoding.
+// Set HTTP output character encoding
mb_http_output(CHARSET);
// --- PHP Classes ---
@@ -127,9 +123,8 @@ include(PATH_HELPERS.'date.class.php');
include(PATH_KERNEL.'dblanguage.class.php');
// --- LANGUAGE and LOCALE ---
-
-// Language from the URI
-$languageFromHTTP = 'en_US';
+// Try to detect the language from browser or headers
+$languageFromHTTP = 'en';
$localeFromHTTP = 'en_US';
if (isset($_GET['language'])) {
@@ -144,8 +139,15 @@ if (isset($_GET['language'])) {
}
}
-// Get language file
-$Language = new dbLanguage('en_US');
+$finalLanguage = 'en';
+$languageFiles = getLanguageList();
+foreach ($languageFiles as $fname=>$native) {
+ if ( ($languageFromHTTP==$fname) || ($localeFromHTTP==$fname) ) {
+ $finalLanguage = $fname;
+ }
+}
+
+$Language = new dbLanguage($finalLanguage);
// Set locale
setlocale(LC_ALL, $localeFromHTTP);
@@ -154,7 +156,7 @@ setlocale(LC_ALL, $localeFromHTTP);
// Check if timezone is defined in php.ini
$iniDate = ini_get('date.timezone');
-if(empty($iniDate)) {
+if (empty($iniDate)) {
// Timezone not defined in php.ini, then set UTC as default.
date_default_timezone_set('UTC');
}
@@ -181,24 +183,23 @@ function getLanguageList()
// Check if Bludit is installed
function alreadyInstalled() {
- return file_exists(PATH_DATABASES.'site.php');
+ return file_exists(PATH_DATABASES.'site.php');
}
-// Check the system, permissions, php version, modules, etc.
-// Returns an array with the problems otherwise empty array.
+// Check write permissions and .htaccess file
function checkSystem()
{
$stdOut = array();
$dirpermissions = 0755;
// Check .htaccess file for different webservers
- if( !file_exists(PATH_ROOT.'.htaccess') ) {
+ if (!file_exists(PATH_ROOT.'.htaccess')) {
if ( !isset($_SERVER['SERVER_SOFTWARE']) ||
stripos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false ||
stripos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false
) {
- $errorText = 'Missing file, upload the file .htaccess (ERR_201)';
+ $errorText = 'Missing file, upload the file .htaccess (ERROR_204)';
error_log($errorText, 0);
$tmp['title'] = 'File .htaccess';
@@ -211,8 +212,8 @@ function checkSystem()
@mkdir(PATH_CONTENT, $dirpermissions, true);
// Check if the directory content is writeable.
- if(!is_writable(PATH_CONTENT)) {
- $errorText = 'Writing test failure, check directory content permissions. (ERR_205)';
+ if (!is_writable(PATH_CONTENT)) {
+ $errorText = 'Writing test failure, check directory content permissions. (ERROR_205)';
error_log($errorText, 0);
$tmp['title'] = 'PHP permissions';
@@ -243,47 +244,50 @@ function install($adminPassword, $email, $timezone)
// 7=read,write,execute | 5=read,execute
$dirpermissions = 0755;
- if(!mkdir(PATH_PAGES.'welcome', $dirpermissions, true)) {
+ // PAGES
+ if (!mkdir(PATH_PAGES.'welcome', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PAGES.'welcome';
error_log($errorText, 0);
}
- if(!mkdir(PATH_PAGES.'about', $dirpermissions, true)) {
+ if (!mkdir(PATH_PAGES.'about', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PAGES.'about';
error_log($errorText, 0);
}
- if(!mkdir(PATH_PLUGINS_DATABASES.'pages', $dirpermissions, true)) {
+ // PLUGINS
+ if (!mkdir(PATH_PLUGINS_DATABASES.'pages', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'pages';
error_log($errorText, 0);
}
- if(!mkdir(PATH_PLUGINS_DATABASES.'simplemde', $dirpermissions, true)) {
+ if (!mkdir(PATH_PLUGINS_DATABASES.'simplemde', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'simplemde';
error_log($errorText, 0);
}
- if(!mkdir(PATH_PLUGINS_DATABASES.'tags', $dirpermissions, true)) {
+ if (!mkdir(PATH_PLUGINS_DATABASES.'tags', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'tags';
error_log($errorText, 0);
}
- if(!mkdir(PATH_PLUGINS_DATABASES.'about', $dirpermissions, true)) {
+ if (!mkdir(PATH_PLUGINS_DATABASES.'about', $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'about';
error_log($errorText, 0);
}
- if(!mkdir(PATH_UPLOADS_PROFILES, $dirpermissions, true)) {
+ // UPLOADS directories
+ if (!mkdir(PATH_UPLOADS_PROFILES, $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS_PROFILES;
error_log($errorText, 0);
}
- if(!mkdir(PATH_UPLOADS_THUMBNAILS, $dirpermissions, true)) {
+ if (!mkdir(PATH_UPLOADS_THUMBNAILS, $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS_THUMBNAILS;
error_log($errorText, 0);
}
- if(!mkdir(PATH_TMP, $dirpermissions, true)) {
+ if (!mkdir(PATH_TMP, $dirpermissions, true)) {
$errorText = 'Error when trying to created the directory=>'.PATH_TMP;
error_log($errorText, 0);
}
@@ -333,7 +337,7 @@ function install($adminPassword, $email, $timezone)
// If the website is not installed inside a folder the URL not need finish with /
// Example (root): https://domain.com
// Example (inside a folder): https://domain.com/folder/
- if(HTML_PATH_ROOT=='/') {
+ if (HTML_PATH_ROOT=='/') {
$siteUrl = PROTOCOL.DOMAIN;
} else {
$siteUrl = PROTOCOL.DOMAIN.HTML_PATH_ROOT;
@@ -343,18 +347,20 @@ function install($adminPassword, $email, $timezone)
'slogan'=>'CMS',
'description'=>'',
'footer'=>'Copyright © '.Date::current('Y'),
- 'language'=>$Language->locale(),
+ 'itemsPerPage'=>6,
+ 'language'=>$Language->currentLanguage(),
'locale'=>$Language->locale(),
'timezone'=>$timezone,
'theme'=>'kernel-panic',
'adminTheme'=>'default',
'homepage'=>'',
- 'itemsPerPage'=>6,
+ 'pageNotFound'=>'',
'uriPage'=>'/',
'uriTag'=>'/tag/',
'uriCategory'=>'/category/',
'url'=>$siteUrl,
- 'emailFrom'=>'no-reply@'.DOMAIN
+ 'emailFrom'=>'no-reply@'.DOMAIN,
+ 'orderBy'=>'date'
);
file_put_contents(PATH_DATABASES.'site.php', $dataHead.json_encode($data, JSON_PRETTY_PRINT), LOCK_EX);
@@ -365,19 +371,21 @@ function install($adminPassword, $email, $timezone)
$data = array(
'admin'=>array(
- 'firstName'=>$Language->get('Administrator'),
- 'lastName'=>'',
- 'role'=>'admin',
- 'password'=>$passwordHash,
- 'salt'=>$salt,
- 'email'=>$email,
- 'registered'=>$currentDate,
- 'tokenEmail'=>'',
- 'tokenEmailTTL'=>'2009-03-15 14:00',
- 'twitter'=>'',
- 'facebook'=>'',
- 'googlePlus'=>'',
- 'instagram'=>''
+ 'firstName'=>$Language->get('Administrator'),
+ 'lastName'=>'',
+ 'role'=>'admin',
+ 'password'=>$passwordHash,
+ 'salt'=>$salt,
+ 'email'=>$email,
+ 'registered'=>$currentDate,
+ 'tokenEmail'=>'',
+ 'tokenEmailTTL'=>'2009-03-15 14:00',
+ 'tokenAuth'=>'',
+ 'tokenAuthTTL'=>'2009-03-15 14:00',
+ 'twitter'=>'',
+ 'facebook'=>'',
+ 'googlePlus'=>'',
+ 'instagram'=>''
)
);
@@ -386,12 +394,12 @@ function install($adminPassword, $email, $timezone)
// File syslog.php
$data = array(
array(
- 'date'=>$currentDate,
- 'dictionaryKey'=>'welcome-to-bludit',
- 'notes'=>'',
- 'idExecution'=>uniqid(),
- 'method'=>'POST',
- 'username'=>'admin'
+ 'date'=>$currentDate,
+ 'dictionaryKey'=>'welcome-to-bludit',
+ 'notes'=>'',
+ 'idExecution'=>uniqid(),
+ 'method'=>'POST',
+ 'username'=>'admin'
));
file_put_contents(PATH_DATABASES.'syslog.php', $dataHead.json_encode($data, JSON_PRETTY_PRINT), LOCK_EX);
@@ -426,7 +434,7 @@ function install($adminPassword, $email, $timezone)
PATH_PLUGINS_DATABASES.'pages'.DS.'db.php',
$dataHead.json_encode(
array(
- 'position'=>0,
+ 'position'=>1,
'homeLink'=>true,
'label'=>$Language->get('Pages'),
'amountOfItems'=>5
@@ -466,7 +474,7 @@ function install($adminPassword, $email, $timezone)
PATH_PLUGINS_DATABASES.'tags'.DS.'db.php',
$dataHead.json_encode(
array(
- 'position'=>0,
+ 'position'=>2,
'label'=>$Language->get('Tags')
),
JSON_PRETTY_PRINT),