somehow complete sqlite support

This commit is contained in:
Abdulrahman
2019-05-30 19:55:49 +03:00
parent 42d97cebe2
commit 33179e7e3f
11 changed files with 181 additions and 162 deletions

15
configx.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
//fill these variables with your data
$dbtype = 'sqlite';
$dbserver = 'localhost'; //database server
$dbuser = 'root'; // database user
$dbpass = '112233'; // database password
// $dbname = 'kleeja'; // database name
$dbname = 'kleeja.db'; // database name
$dbprefix = 'klj_'; // if you use prefix for tables , fill it
define('DEV_STAGE', true);
define('STOP_TPL_CACHE', true);
define('STOP_CAPTCHA', true);

View File

@@ -389,7 +389,9 @@ class KleejaDatabase
$query_id = $this->result; $query_id = $this->result;
} }
if ($results = $query_id->numColumns())
if ($query_id && $results = $query_id->numColumns())
{ {
return $results; return $results;
} }

View File

@@ -114,14 +114,26 @@ function kleeja_eval($code)
* @param mixed $nm * @param mixed $nm
* @param mixed $prf * @param mixed $prf
*/ */
function do_config_export($srv, $usr, $pass, $nm, $prf) function do_config_export($srv, $usr, $pass, $nm, $prf, $type = 'mysql')
{ {
$data = '<?php' . "\n\n" . '//fill these variables with your data' . "\n"; $data = '<?php' . "\n\n" . '//fill these variables with your data' . "\n";
$data .= '$dbserver = \'' . str_replace("'", "\'", $srv) . "'; //database server \n"; $data .= '//for more information about this file, visit: ' . "\n";
$data .= '$dbuser = \'' . str_replace("'", "\'", $usr) . "' ; // database user \n"; $data .= '//https://github.com/kleeja-official/kleeja/wiki/config.php-file' . "\n\n";
$data .= '$dbpass = \'' . str_replace("'", "\'", $pass) . "'; // database password \n";
$data .= '$dbname = \'' . str_replace("'", "\'", $nm) . "'; // database name \n"; if(!empty($type) && $type != 'mysql')
$data .= '$dbprefix = \'' . str_replace("'", "\'", $prf) . "'; // if you use prefix for tables , fill it \n"; {
if ($type == 'sqlite' && strpos($nm, '.') === false)
{
$nm = $nm . '.db';
}
$data .= '$dbtype = \'' . str_replace("'", "\'", $type) . "'; //database type \n";
}
$data .= '$dbserver = \'' . str_replace("'", "\'", $srv) . "'; //database server \n";
$data .= '$dbuser = \'' . str_replace("'", "\'", $usr) . "' ; // database user \n";
$data .= '$dbpass = \'' . str_replace("'", "\'", $pass) . "'; // database password \n";
$data .= '$dbname = \'' . str_replace("'", "\'", $nm) . "'; // database name \n";
$data .= '$dbprefix = \'' . str_replace("'", "\'", $prf) . "'; // if you use prefix for tables , fill it \n";
if (file_put_contents(PATH . 'config.php', $data, LOCK_EX) !== false) if (file_put_contents(PATH . 'config.php', $data, LOCK_EX) !== false)
{ {

View File

@@ -125,7 +125,7 @@ $install_sqls['config'] = "
CREATE TABLE `{$dbprefix}config` ( CREATE TABLE `{$dbprefix}config` (
`name` varchar(255) collate utf8_bin NOT NULL PRIMARY KEY, `name` varchar(255) collate utf8_bin NOT NULL PRIMARY KEY,
`value` varchar(255) collate utf8_bin NOT NULL DEFAULT '', `value` varchar(255) collate utf8_bin NOT NULL DEFAULT '',
`option` mediumtext collate utf8_bin NOT NULL DEFAULT '', `option` mediumtext collate utf8_bin NOT NULL,
`display_order` int(10) NOT NULL DEFAULT '1', `display_order` int(10) NOT NULL DEFAULT '1',
`type` varchar(20) NULL DEFAULT 'other', `type` varchar(20) NULL DEFAULT 'other',
`plg_id` int(11) NOT NULL DEFAULT '0', `plg_id` int(11) NOT NULL DEFAULT '0',
@@ -142,13 +142,13 @@ CREATE TABLE `{$dbprefix}plugins` (
`plg_name` varchar(255) collate utf8_bin NOT NULL DEFAULT '', `plg_name` varchar(255) collate utf8_bin NOT NULL DEFAULT '',
`plg_ver` varchar(255) collate utf8_bin NOT NULL, `plg_ver` varchar(255) collate utf8_bin NOT NULL,
`plg_author` varchar(255) collate utf8_bin NOT NULL DEFAULT '', `plg_author` varchar(255) collate utf8_bin NOT NULL DEFAULT '',
`plg_dsc` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '', `plg_dsc` mediumtext COLLATE utf8_bin NOT NULL,
`plg_icon` blob NOT NULL DEFAULT '', `plg_icon` blob NOT NULL,
`plg_uninstall` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '', `plg_uninstall` mediumtext COLLATE utf8_bin NOT NULL,
`plg_disabled` tinyint(1) unsigned NOT NULL default '0', `plg_disabled` tinyint(1) unsigned NOT NULL default '0',
`plg_instructions` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '', `plg_instructions` mediumtext COLLATE utf8_bin NOT NULL,
`plg_store` longtext COLLATE utf8_bin NOT NULL DEFAULT '', `plg_store` longtext COLLATE utf8_bin NOT NULL,
`plg_files` text COLLATE utf8_bin NOT NULL DEFAULT '', `plg_files` text COLLATE utf8_bin NOT NULL,
KEY `plg_name` (`plg_name`) KEY `plg_name` (`plg_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;
"; ";

View File

@@ -128,10 +128,9 @@ case 'c':
if (ip('dbsubmit')) if (ip('dbsubmit'))
{ {
//create config file, or export it to browser on failure //create config file, or export it to browser on failure
do_config_export(p('db_server'), p('db_user'), p('db_pass'), p('db_name'), p('db_prefix')); do_config_export(p('db_server'), p('db_user'), p('db_pass'), p('db_name'), p('db_prefix'), p('db_type'));
} }
$no_config = ! file_exists(PATH . 'config.php') || ig('force') ? false : true; $no_config = ! file_exists(PATH . 'config.php') || ig('force') ? false : true;
$writeable_path = is_writable(PATH) ? true : false; $writeable_path = is_writable(PATH) ? true : false;
@@ -144,8 +143,13 @@ case 'check':
$submit_disabled = $no_connection = $mysql_ver = false; $submit_disabled = $no_connection = $mysql_ver = false;
//config.php //config.php
if (! empty($dbname) && ! empty($dbuser)) if (! empty($dbname))
{ {
if (isset($dbtype) && $dbtype == 'sqlite')
{
@touch(PATH . $dbname);
}
//connect .. for check //connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix); $SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
@@ -156,7 +160,6 @@ case 'check':
} }
else else
{ {
if (defined('SQL_LAYER') && SQL_LAYER == 'mysqli') if (defined('SQL_LAYER') && SQL_LAYER == 'mysqli')
{ {
if (! empty($SQL->version()) && version_compare($SQL->version(), MIN_MYSQL_VERSION, '<')) if (! empty($SQL->version()) && version_compare($SQL->version(), MIN_MYSQL_VERSION, '<'))

View File

@@ -1,7 +1,7 @@
<div class="BoxInner"><div class="BoxTopImg"></div><div class="BoxBody"><div class="inner"> <div class="BoxInner"><div class="BoxTopImg"></div><div class="BoxBody"><div class="inner">
<div class="clr"></div> <div class="clr"></div>
{{if(empty($GLOBALS['dbname']) || empty($GLOBALS['dbuser'])): $GLOBALS['submit_disabled'] = true;}} {{if(empty($GLOBALS['dbname'])): $GLOBALS['submit_disabled'] = true;}}
<div class="notice"> <div class="notice">
<p class="error2"><img src="style/images/k_info.png" class="img" alt=" " />{{echo $lang['INST_CHANG_CONFIG']}}</p> <p class="error2"><img src="style/images/k_info.png" class="img" alt=" " />{{echo $lang['INST_CHANG_CONFIG']}}</p>
</div> </div>

View File

@@ -2,28 +2,38 @@
<div class="clr"></div> <div class="clr"></div>
{{if(!$GLOBALS['no_config']):}} {{if(!$GLOBALS['no_config']):}}
<form method="post" action="{{echo './install.php?step=c&amp;' . getlang(1)}}" onsubmit="javascript:return formCheck(this, Array('db_server','db_user' ,'db_name'));"> <form method="post" action="{{echo './install.php?step=c&amp;' . getlang(1)}}">
<h2><img src="style/images/klj_info.png" class="img" alt="!" />{{echo $lang['DB_INFO']}}</h2> <h2><img src="style/images/klj_info.png" class="img" alt="!" />{{echo $lang['DB_INFO']}}</h2>
<table class="TableConf" dir="{{echo $lang['DIR']}}"> <table class="TableConf" dir="{{echo $lang['DIR']}}">
<tr>
<td class="TdConf">{{echo $lang['DB_TYPE']}}</td>
<td class="TdInput">
<select name="db_type" id="db_type" style="text-align:left;direction:ltr">
<option value="mysql" selected>{{echo $lang['DB_TYPE_MYSQL']}}</option>
<option value="sqlite">{{echo $lang['DB_TYPE_SQLITE']}}</option>
</select>
</td>
</tr>
<tr> <tr>
<td class="TdConf">{{echo $lang['DB_SERVER']}}</td> <td class="TdConf">{{echo $lang['DB_SERVER']}}</td>
<td class="TdInput"><input name="db_server" type="text" value="localhost" class="InputConf" /></td> <td class="TdInput"><input name="db_server" id="db_server" type="text" value="localhost" class="InputConf" /></td>
</tr> </tr>
<tr> <tr>
<td class="TdConf">{{echo $lang['DB_NAME']}}</td> <td class="TdConf">{{echo $lang['DB_NAME']}}</td>
<td class="TdInput"><input name="db_name" type="text" class="InputConf" /></td> <td class="TdInput"><input name="db_name" id="db_name" type="text" value="kleeja" class="InputConf" /></td>
</tr> </tr>
<tr> <tr>
<td class="TdConf">{{echo $lang['DB_USER']}}</td> <td class="TdConf">{{echo $lang['DB_USER']}}</td>
<td class="TdInput"><input name="db_user" type="text" class="InputConf" /></td> <td class="TdInput"><input name="db_user" id="db_user" type="text" class="InputConf" /></td>
</tr> </tr>
<tr> <tr>
<td class="TdConf">{{echo $lang['DB_PASSWORD']}}</td> <td class="TdConf">{{echo $lang['DB_PASSWORD']}}</td>
<td class="TdInput"><input name="db_pass" type="text" class="InputConf" /></td> <td class="TdInput"><input name="db_pass" id="db_pass" type="text" class="InputConf" /></td>
</tr> </tr>
<tr> <tr>
<td class="TdConf">{{echo $lang['DB_PREFIX']}}</td> <td class="TdConf">{{echo $lang['DB_PREFIX']}}</td>
<td class="TdInput"><input name="db_prefix" type="text" value="klj_" class="InputConf" /></td> <td class="TdInput"><input name="db_prefix" id="db_prefix" type="text" value="klj_" class="InputConf" />
</td>
</tr> </tr>
</table> </table>
<div class="clr"></div> <div class="clr"></div>

View File

@@ -1,149 +1,131 @@
<div class="clr"></div></div><div class="ins_klj"></div> <div class="clr"></div>
</div>
<div class="ins_klj"></div>
<!-- strart code java script --> <!-- strart code java script -->
<script type="text/javascript" src="{{echo getjquerylink()}}"></script> <script type="text/javascript" src="{{echo getjquerylink()}}"></script>
<script type="text/javascript">{{echo gettpl('javascript.js')}}</script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function () {
$("#lang").msDropDown(); $("#toggleElement").click(function () {
$("#toggleElement").click(function() { $("#next").toggle(!$(this).attr('checked'));
$("#next").toggle(!$(this).attr('checked')); });
$('#sitemail').keydown(function (e) {
if ($(this).val().length > 1 && $('#email').val() == '') {
$('#email').val($(this).val());
}
});
$('#db_type').change(function(e) {
var state = $('#db_type').val() == 'sqlite';
$('#db_server').attr('disabled', state);
$('#db_user').attr('disabled', state);
$('#db_pass').attr('disabled', state);
});
}); });
$('input:checkbox:not([safari])').checkbox();
$('#sitemail').keydown( function(e){ function w_email(l) {
if( $(this).val().length > 1) { var m = document.getElementById(l);
$('#email').val($(this).val()); if (m.value.indexOf("@") == -1 || m.value.indexOf(".") == -1 || m.value.length < 7) {
alert("{{echo $lang['WRONG_EMAIL']}}");
m.focus();
} }
});
});
/** By JavaScript Kit (http://javascriptkit.com) **/
function w_email(l){
var m = document.getElementById(l);
if (m.value.indexOf("@") == - 1 || m.value.indexOf(".") == - 1 || m.value.length < 7 ) {
alert("{{echo $lang['WRONG_EMAIL']}}");
m.focus();
} }
}
function checkrequired(which){ function checkrequired(which) {
var pass = true; var pass = true;
if (document.images) if (document.images) {
{ for (i = 0; i < which.length; i++) {
for (i=0;i<which.length;i++) var tempobj = which.elements[i]
{ if (tempobj.name.substring(0, 8) == "required") {
var tempobj=which.elements[i] if (((tempobj.type == "text" || tempobj.type == "textarea") && tempobj.value == '') || (tempobj.type
if (tempobj.name.substring(0,8)=="required") .toString().charAt(0) == "s" && tempobj.selectedIndex == -1)) {
{ pass = false;
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s" && tempobj.selectedIndex==-1)) break
{ }
pass = false;
break
} }
} }
} }
if (!pass) {
alert("{{echo $lang['VALIDATING_FORM_WRONG']}}");
return false;
} else {
return true;
}
} }
if (!pass)
{
alert("{{echo $lang['VALIDATING_FORM_WRONG']}}");
return false;
}
else
{
return true;
}
}
/** http://www.dynamicdrive.com **/
function formCheck(formobj, fieldRequired){
if( document.getElementById('pass1').value != document.getElementById('pass2').value) function formCheck(formobj, fieldRequired) {
{
alert("{{echo $lang['PASS_NEQ_PASS2']}}"); if (document.getElementById('pass1').value != document.getElementById('pass2').value) {
return false; alert("{{echo $lang['PASS_NEQ_PASS2']}}");
} return false;
// dialog message }
var alertMsg = "{{echo $lang['VALIDATING_FORM_WRONG']}}:\n"; // dialog message
var l_Msg = alertMsg.length; var alertMsg = "{{echo $lang['VALIDATING_FORM_WRONG']}}:\n";
//lang var l_Msg = alertMsg.length;
var lang = new Array(9); //lang
lang["db_server"] = "{{echo $lang['DB_SERVER']}}"; var lang = new Array(9);
lang["db_user"] = "{{echo $lang['DB_USER']}}"; lang["db_server"] = "{{echo $lang['DB_SERVER']}}";
lang["db_name"] = "{{echo $lang['DB_NAME']}}"; lang["db_user"] = "{{echo $lang['DB_USER']}}";
lang["sitename"] = "{{echo $lang['SITENAME']}}"; lang["db_name"] = "{{echo $lang['DB_NAME']}}";
lang["siteurl"] = "{{echo $lang['SITEURL']}}"; lang["sitename"] = "{{echo $lang['SITENAME']}}";
lang["sitemail"] = "{{echo $lang['SITEMAIL']}}"; lang["siteurl"] = "{{echo $lang['SITEURL']}}";
lang["username"] = "{{echo $lang['USERNAME']}}"; lang["sitemail"] = "{{echo $lang['SITEMAIL']}}";
lang["password"] = "{{echo $lang['PASSWORD']}}"; lang["username"] = "{{echo $lang['USERNAME']}}";
lang["password2"] = "{{echo $lang['PASSWORD2']}}"; lang["password"] = "{{echo $lang['PASSWORD']}}";
lang["email"] = "{{echo $lang['EMAIL']}}"; lang["password2"] = "{{echo $lang['PASSWORD2']}}";
lang["email"] = "{{echo $lang['EMAIL']}}";
for (var i = 0; i < fieldRequired.length; i++)
{ for (var i = 0; i < fieldRequired.length; i++) {
var obj = formobj.elements[fieldRequired[i]]; var obj = formobj.elements[fieldRequired[i]];
if (obj) if (obj) {
{ switch (obj.type) {
switch(obj.type) case "text":
{ case "textarea":
case "text": if (obj.value == "" || obj.value == null)
case "textarea": alertMsg += " - " + lang[fieldRequired[i]] + "\n";
if (obj.value == "" || obj.value == null) break;
default:
}
if (obj.type == undefined) {
var blnchecked = false;
for (var j = 0; j < obj.length; j++) {
if (obj[j].checked)
blnchecked = true;
}
if (!blnchecked)
alertMsg += " - " + lang[fieldRequired[i]] + "\n"; alertMsg += " - " + lang[fieldRequired[i]] + "\n";
break;
default:
}
if (obj.type == undefined)
{
var blnchecked = false;
for (var j = 0; j < obj.length; j++)
{
if (obj[j].checked)
blnchecked = true;
} }
if (!blnchecked)
alertMsg += " - " + lang[fieldRequired[i]] + "\n";
} }
} }
if (alertMsg.length == l_Msg)
return true;
else {
alert(alertMsg);
return false;
}
} }
if (alertMsg.length == l_Msg)
return true; function checkPass() {
else var pass1 = document.getElementById('pass1');
{ var pass2 = document.getElementById('pass2');
alert(alertMsg);
return false; var goodColor = "#66cc66";
var badColor = "#ff6666";
//Compare the values in the password field
if(pass1.value != '' && pass2.value != '') {
if (pass1.value == pass2.value) {
pass1.style.backgroundColor = goodColor;
pass2.style.backgroundColor = goodColor;
} else {
pass1.style.backgroundColor = badColor;
pass2.style.backgroundColor = badColor;
}
}
} }
}
function checkPass(){
//Store the password field objects into variables ...
var pass1 = document.getElementById('pass1');
var pass2 = document.getElementById('pass2');
//Store the Confimation Message Object ...
//var message = document.getElementById('confirmMessage');
//Set the colors we will be using ...
var goodColor = "#66cc66";
var badColor = "#ff6666";
//Compare the values in the password field
//and the confirmation field
if(pass1.value == pass2.value){
//The passwords match.
//Set the color to the good color and inform
//the user that they have entered the correct password
pass1.style.backgroundColor = goodColor;
pass2.style.backgroundColor = goodColor;
//message.style.color = goodColor;
//message.innerHTML = "Passwords Match!"
}else{
//The passwords do not match.
//Set the color to the bad color and
//notify the user.
pass1.style.backgroundColor = badColor;
pass2.style.backgroundColor = badColor;
//message.style.color = badColor;
//message.innerHTML = "Passwords Do Not Match!"
}
}
</script> </script>
</body> </body>
</html> </html>

File diff suppressed because one or more lines are too long

View File

@@ -57,8 +57,8 @@ return [
'DB_INFO' => 'أدخل معلومات قاعدة البيانات', 'DB_INFO' => 'أدخل معلومات قاعدة البيانات',
'DB_SERVER' => 'الخادم', 'DB_SERVER' => 'الخادم',
'DB_TYPE' => 'نوع قاعدة البيانات', 'DB_TYPE' => 'نوع قاعدة البيانات',
'DB_TYPE_MYSQL' => 'MySQL القياسي', 'DB_TYPE_MYSQL' => 'MySQL',
'DB_TYPE_MYSQLI' => 'MySQL المطور', 'DB_TYPE_SQLITE' => 'SQLite',
'DB_USER' => 'اسم المستخدم لقاعدة البيانات', 'DB_USER' => 'اسم المستخدم لقاعدة البيانات',
'DB_PASSWORD' => 'كلمة المرور لقاعدة البيانات', 'DB_PASSWORD' => 'كلمة المرور لقاعدة البيانات',
'DB_NAME' => 'إسم قاعدة البيانات', 'DB_NAME' => 'إسم قاعدة البيانات',

View File

@@ -57,8 +57,8 @@ return [
'DB_INFO' => 'Enter the database information ..!', 'DB_INFO' => 'Enter the database information ..!',
'DB_SERVER' => 'Host', 'DB_SERVER' => 'Host',
'DB_TYPE' => 'Database type', 'DB_TYPE' => 'Database type',
'DB_TYPE_MYSQL' => 'MySQL Standard', 'DB_TYPE_MYSQL' => 'MySQL',
'DB_TYPE_MYSQLI' => 'MySQL Improved', 'DB_TYPE_SQLITE' => 'MySQL Improved',
'DB_USER' => 'Database Username', 'DB_USER' => 'Database Username',
'DB_PASSWORD' => 'Database Password', 'DB_PASSWORD' => 'Database Password',
'DB_NAME' => 'Database Name', 'DB_NAME' => 'Database Name',