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;
}
if ($results = $query_id->numColumns())
if ($query_id && $results = $query_id->numColumns())
{
return $results;
}

View File

@@ -114,14 +114,26 @@ function kleeja_eval($code)
* @param mixed $nm
* @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 .= '$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";
$data .= '//for more information about this file, visit: ' . "\n";
$data .= '//https://github.com/kleeja-official/kleeja/wiki/config.php-file' . "\n\n";
if(!empty($type) && $type != 'mysql')
{
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)
{

View File

@@ -125,7 +125,7 @@ $install_sqls['config'] = "
CREATE TABLE `{$dbprefix}config` (
`name` varchar(255) collate utf8_bin NOT NULL PRIMARY KEY,
`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',
`type` varchar(20) NULL DEFAULT 'other',
`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_ver` varchar(255) collate utf8_bin NOT NULL,
`plg_author` varchar(255) collate utf8_bin NOT NULL DEFAULT '',
`plg_dsc` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '',
`plg_icon` blob NOT NULL DEFAULT '',
`plg_uninstall` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '',
`plg_dsc` mediumtext COLLATE utf8_bin NOT NULL,
`plg_icon` blob NOT NULL,
`plg_uninstall` mediumtext COLLATE utf8_bin NOT NULL,
`plg_disabled` tinyint(1) unsigned NOT NULL default '0',
`plg_instructions` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '',
`plg_store` longtext COLLATE utf8_bin NOT NULL DEFAULT '',
`plg_files` text COLLATE utf8_bin NOT NULL DEFAULT '',
`plg_instructions` mediumtext COLLATE utf8_bin NOT NULL,
`plg_store` longtext COLLATE utf8_bin NOT NULL,
`plg_files` text COLLATE utf8_bin NOT NULL,
KEY `plg_name` (`plg_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;
";

View File

@@ -128,10 +128,9 @@ case 'c':
if (ip('dbsubmit'))
{
//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;
$writeable_path = is_writable(PATH) ? true : false;
@@ -144,8 +143,13 @@ case 'check':
$submit_disabled = $no_connection = $mysql_ver = false;
//config.php
if (! empty($dbname) && ! empty($dbuser))
if (! empty($dbname))
{
if (isset($dbtype) && $dbtype == 'sqlite')
{
@touch(PATH . $dbname);
}
//connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
@@ -156,7 +160,6 @@ case 'check':
}
else
{
if (defined('SQL_LAYER') && SQL_LAYER == 'mysqli')
{
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="clr"></div>
{{if(empty($GLOBALS['dbname']) || empty($GLOBALS['dbuser'])): $GLOBALS['submit_disabled'] = true;}}
{{if(empty($GLOBALS['dbname'])): $GLOBALS['submit_disabled'] = true;}}
<div class="notice">
<p class="error2"><img src="style/images/k_info.png" class="img" alt=" " />{{echo $lang['INST_CHANG_CONFIG']}}</p>
</div>

View File

@@ -2,28 +2,38 @@
<div class="clr"></div>
{{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>
<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>
<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>
<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>
<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>
<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>
<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>
</table>
<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 -->
<script type="text/javascript" src="{{echo getjquerylink()}}"></script>
<script type="text/javascript">{{echo gettpl('javascript.js')}}</script>
<script type="text/javascript">
$(document).ready(function() {
$("#lang").msDropDown();
$("#toggleElement").click(function() {
$("#next").toggle(!$(this).attr('checked'));
$(document).ready(function () {
$("#toggleElement").click(function () {
$("#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){
if( $(this).val().length > 1) {
$('#email').val($(this).val());
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();
}
});
});
/** 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){
var pass = true;
if (document.images)
{
for (i=0;i<which.length;i++)
{
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required")
{
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s" && tempobj.selectedIndex==-1))
{
pass = false;
break
function checkrequired(which) {
var pass = true;
if (document.images) {
for (i = 0; i < which.length; i++) {
var tempobj = which.elements[i]
if (tempobj.name.substring(0, 8) == "required") {
if (((tempobj.type == "text" || tempobj.type == "textarea") && tempobj.value == '') || (tempobj.type
.toString().charAt(0) == "s" && tempobj.selectedIndex == -1)) {
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)
{
alert("{{echo $lang['PASS_NEQ_PASS2']}}");
return false;
}
// dialog message
var alertMsg = "{{echo $lang['VALIDATING_FORM_WRONG']}}:\n";
var l_Msg = alertMsg.length;
//lang
var lang = new Array(9);
lang["db_server"] = "{{echo $lang['DB_SERVER']}}";
lang["db_user"] = "{{echo $lang['DB_USER']}}";
lang["db_name"] = "{{echo $lang['DB_NAME']}}";
lang["sitename"] = "{{echo $lang['SITENAME']}}";
lang["siteurl"] = "{{echo $lang['SITEURL']}}";
lang["sitemail"] = "{{echo $lang['SITEMAIL']}}";
lang["username"] = "{{echo $lang['USERNAME']}}";
lang["password"] = "{{echo $lang['PASSWORD']}}";
lang["password2"] = "{{echo $lang['PASSWORD2']}}";
lang["email"] = "{{echo $lang['EMAIL']}}";
for (var i = 0; i < fieldRequired.length; i++)
{
var obj = formobj.elements[fieldRequired[i]];
if (obj)
{
switch(obj.type)
{
case "text":
case "textarea":
if (obj.value == "" || obj.value == null)
function formCheck(formobj, fieldRequired) {
if (document.getElementById('pass1').value != document.getElementById('pass2').value) {
alert("{{echo $lang['PASS_NEQ_PASS2']}}");
return false;
}
// dialog message
var alertMsg = "{{echo $lang['VALIDATING_FORM_WRONG']}}:\n";
var l_Msg = alertMsg.length;
//lang
var lang = new Array(9);
lang["db_server"] = "{{echo $lang['DB_SERVER']}}";
lang["db_user"] = "{{echo $lang['DB_USER']}}";
lang["db_name"] = "{{echo $lang['DB_NAME']}}";
lang["sitename"] = "{{echo $lang['SITENAME']}}";
lang["siteurl"] = "{{echo $lang['SITEURL']}}";
lang["sitemail"] = "{{echo $lang['SITEMAIL']}}";
lang["username"] = "{{echo $lang['USERNAME']}}";
lang["password"] = "{{echo $lang['PASSWORD']}}";
lang["password2"] = "{{echo $lang['PASSWORD2']}}";
lang["email"] = "{{echo $lang['EMAIL']}}";
for (var i = 0; i < fieldRequired.length; i++) {
var obj = formobj.elements[fieldRequired[i]];
if (obj) {
switch (obj.type) {
case "text":
case "textarea":
if (obj.value == "" || obj.value == null)
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";
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;
else
{
alert(alertMsg);
return false;
function checkPass() {
var pass1 = document.getElementById('pass1');
var pass2 = document.getElementById('pass2');
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>
</body>
</html>
</html>

File diff suppressed because one or more lines are too long

View File

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

View File

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