diff --git a/src/ajax.php b/src/ajax.php
index 8170921..16216b2 100644
--- a/src/ajax.php
+++ b/src/ajax.php
@@ -11,7 +11,7 @@ set_exception_handler('myExceptionHandler');
require_once('./init.php');
require_once('./lang/class.default.php');
-require_once('./lang/'.$config['lang'].'.php');
+require_once('./lang/'.Config::get('lang').'.php');
$lang = new Lang();
if(isset($_GET['loadLists']))
@@ -56,7 +56,7 @@ elseif(isset($_GET['loadTasks']))
elseif($sort == 2) $sqlSort .= "ddn ASC, duedate ASC, prio DESC, ow ASC";
else $sqlSort .= "ow ASC";
$tz = (int)_get('tz');
- if((isset($config['autotz']) && $config['autotz']==0) || $tz<-720 || $tz>720 || $tz%30!=0) $tz = round(date('Z')/60);
+ if(Config::get('autotz')==0 || $tz<-720 || $tz>720 || $tz%30!=0) $tz = round(date('Z')/60);
$t = array();
$t['total'] = 0;
$t['list'] = array();
@@ -79,7 +79,7 @@ elseif(isset($_GET['newTask']))
$title = trim(_post('title'));
$prio = 0;
$tags = '';
- if(!isset($config['smartsyntax']) || $config['smartsyntax'] != 0)
+ if(Config::get('smartsyntax') != 0)
{
$a = parse_smartsyntax($title);
if($a === false) {
@@ -94,9 +94,9 @@ elseif(isset($_GET['newTask']))
echo json_encode($t);
exit;
}
- if(isset($config['autotag']) && $config['autotag']) $tags .= ','._post('tag');
+ if(Config::get('autotag')) $tags .= ','._post('tag');
$tz = (int)_post('tz');
- if( (isset($config['autotz']) && $config['autotz']==0) || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
+ if(Config::get('autotz')==0 || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
$ow = 1 + (int)$db->sq("SELECT MAX(ow) FROM todolist WHERE list_id=$listId AND compl=0");
$db->ex("BEGIN");
$db->dq("INSERT INTO todolist (list_id,title,d_created,ow,prio) VALUES ($listId,?,?,$ow,$prio)", array($title, time()));
@@ -134,9 +134,9 @@ elseif(isset($_GET['fullNewTask']))
exit;
}
$tags = trim(_post('tags'));
- if(isset($config['autotag']) && $config['autotag']) $tags .= ','._post('tag');
+ if(Config::get('autotag')) $tags .= ','._post('tag');
$tz = (int)_post('tz');
- if( (isset($config['autotz']) && $config['autotz']==0) || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
+ if( Config::get('autotz')==0 || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
$ow = 1 + (int)$db->sq("SELECT MAX(ow) FROM todolist WHERE list_id=$listId AND compl=0");
if(is_null($duedate)) $duedate = 'NULL'; else $duedate = $db->quote($duedate);
$db->ex("BEGIN");
@@ -225,7 +225,7 @@ elseif(isset($_GET['editTask']))
}
$tags = trim(_post('tags'));
$tz = (int)_post('tz');
- if( (isset($config['autotz']) && $config['autotz']==0) || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
+ if( Config::get('autotz')==0 || $tz<-720 || $tz>720 || $tz%30!=0 ) $tz = round(date('Z')/60);
$db->ex("BEGIN");
$tag_ids = prepare_tags($tags, $listId);
$cur_ids = get_task_tags($id);
@@ -284,7 +284,7 @@ elseif(isset($_POST['login']))
}
stop_gpc($_POST);
$password = _post('password');
- if($password == $config['password']) {
+ if($password == Config::get('password')) {
$t['logged'] = 1;
session_regenerate_id(1);
$_SESSION['logged'] = 1;
@@ -455,7 +455,7 @@ function prepareTaskRow($r, $tz)
function check_read_access($listId = null)
{
global $db;
- if(!isset($config['password']) || $config['password'] == '') return true;
+ if(Config::get('password') == '') return true;
if(is_logged()) return true;
if($listId)
{
@@ -468,8 +468,7 @@ function check_read_access($listId = null)
function check_write_access()
{
- global $config;
- if(!isset($config['password']) || $config['password'] == '') return;
+ if(Config::get('password') == '') return;
if(is_logged()) return;
echo json_encode( array('total'=>0, 'list'=>array(), 'denied'=>1) );
exit;
@@ -556,14 +555,13 @@ function tag_size($qmin, $q, $step)
function parse_duedate($s)
{
- global $config;
$y = $m = $d = 0;
if(preg_match("|^(\d+)-(\d+)-(\d+)\b|", $s, $ma)) {
$y = (int)$ma[1]; $m = (int)$ma[2]; $d = (int)$ma[3];
}
elseif(preg_match("|^(\d+)\/(\d+)\/(\d+)\b|", $s, $ma))
{
- if($config['duedateformat'] == 4) {
+ if(Config::get('duedateformat') == 4) {
$d = (int)$ma[1]; $m = (int)$ma[2]; $y = (int)$ma[3];
} else {
$m = (int)$ma[1]; $d = (int)$ma[2]; $y = (int)$ma[3];
@@ -580,7 +578,7 @@ function parse_duedate($s)
}
elseif(preg_match("|^(\d+)\/(\d+)\b|", $s, $ma))
{
- if($config['duedateformat'] == 4) {
+ if(Config::get('duedateformat') == 4) {
$d = (int)$ma[1]; $m = (int)$ma[2];
} else {
$m = (int)$ma[1]; $d = (int)$ma[2];
@@ -602,7 +600,7 @@ function parse_duedate($s)
function prepare_duedate($duedate, $tz)
{
- global $lang, $config;
+ global $lang;
$a = array( 'class'=>'', 'str'=>'', 'formatted'=>'' );
if($duedate == '') {
@@ -612,19 +610,19 @@ function prepare_duedate($duedate, $tz)
$at = explode('-', gmdate('Y-m-d', time() + $tz*60));
$diff = mktime(0,0,0,$ad[1],$ad[2],$ad[0]) - mktime(0,0,0,$at[1],$at[2],$at[0]);
- if($diff < -604800 && $ad[0] == $at[0]) { $a['class'] = 'past'; $a['str'] = formatDate3($config['dateformatshort'], (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
- elseif($diff < -604800) { $a['class'] = 'past'; $a['str'] = formatDate3($config['dateformat'], (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
+ if($diff < -604800 && $ad[0] == $at[0]) { $a['class'] = 'past'; $a['str'] = formatDate3(Config::get('dateformatshort'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
+ elseif($diff < -604800) { $a['class'] = 'past'; $a['str'] = formatDate3(Config::get('dateformat'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
elseif($diff < -86400) { $a['class'] = 'past'; $a['str'] = sprintf($lang->get('daysago'),ceil(abs($diff)/86400)); }
elseif($diff < 0) { $a['class'] = 'past'; $a['str'] = $lang->get('yesterday'); }
elseif($diff < 86400) { $a['class'] = 'today'; $a['str'] = $lang->get('today'); }
elseif($diff < 172800) { $a['class'] = 'today'; $a['str'] = $lang->get('tomorrow'); }
elseif($diff < 691200) { $a['class'] = 'soon'; $a['str'] = sprintf($lang->get('indays'),ceil($diff/86400)); }
- elseif($ad[0] == $at[0]) { $a['class'] = 'future'; $a['str'] = formatDate3($config['dateformatshort'], (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
- else { $a['class'] = 'future'; $a['str'] = formatDate3($config['dateformat'], (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
+ elseif($ad[0] == $at[0]) { $a['class'] = 'future'; $a['str'] = formatDate3(Config::get('dateformatshort'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
+ else { $a['class'] = 'future'; $a['str'] = formatDate3(Config::get('dateformat'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }
- if($config['duedateformat'] == 2) $a['formatted'] = (int)$ad[1].'/'.(int)$ad[2].'/'.$ad[0];
- elseif($config['duedateformat'] == 3) $a['formatted'] = $ad[2].'.'.$ad[1].'.'.$ad[0];
- elseif($config['duedateformat'] == 4) $a['formatted'] = $ad[2].'/'.$ad[1].'/'.$ad[0];
+ if(Config::get('duedateformat') == 2) $a['formatted'] = (int)$ad[1].'/'.(int)$ad[2].'/'.$ad[0];
+ elseif(Config::get('duedateformat') == 3) $a['formatted'] = $ad[2].'.'.$ad[1].'.'.$ad[0];
+ elseif(Config::get('duedateformat') == 4) $a['formatted'] = $ad[2].'/'.$ad[1].'/'.$ad[0];
else $a['formatted'] = $duedate;
return $a;
diff --git a/src/common.php b/src/common.php
index d51aedd..427b6c8 100644
--- a/src/common.php
+++ b/src/common.php
@@ -66,6 +66,7 @@ class Config
'mysql.db' => array('default'=>'mytinytodo', 'type'=>'s'),
'mysql.user' => array('default'=>'user', 'type'=>'s'),
'mysql.password' => array('default'=>'', 'type'=>'s'),
+ 'prefix' => array('default'=>'', 'type'=>'s'),
'title' => array('default'=>'', 'type'=>'s'),
'lang' => array('default'=>'en', 'type'=>'s'),
'password' => array('default'=>'', 'type'=>'s'),
@@ -80,14 +81,33 @@ class Config
'dateformatshort' => array('default'=>'j M', 'type'=>'s'),
);
- public static function save($config)
+ public static $config;
+
+ public function loadConfig($config)
+ {
+ self::$config = $config;
+ }
+
+ public static function get($key)
+ {
+ if(isset(self::$config[$key])) return self::$config[$key];
+ elseif(isset(self::$params[$key])) return self::$params[$key]['default'];
+ else return null;
+ }
+
+ public static function set($key, $value)
+ {
+ self::$config[$key] = $value;
+ }
+
+ public static function save()
{
$s = '';
foreach(self::$params as $param=>$v)
{
- if(!isset($config[$param])) $val = $v['default'];
- elseif(isset($v['options']) && !in_array($config[$param], $v['options'])) $val = $v['default'];
- else $val = $config[$param];
+ if(!isset(self::$config[$param])) $val = $v['default'];
+ elseif(isset($v['options']) && !in_array(self::$config[$param], $v['options'])) $val = $v['default'];
+ else $val = self::$config[$param];
if($v['type']=='i') {
$s .= "\$config['$param'] = ".(int)$val.";\n";
}
@@ -100,13 +120,6 @@ class Config
fwrite($f, "");
fclose($f);
}
-
- public static function get($key, $config)
- {
- if(isset($config[$key])) return $config[$key];
- elseif(isset(self::$params[$key])) return self::$params[$key]['default'];
- else return null;
- }
}
function formatDate3($format, $ay, $am, $ad, $lang)
diff --git a/src/db/config.php.default b/src/db/config.php.default
index a190f65..2ffcc77 100644
--- a/src/db/config.php.default
+++ b/src/db/config.php.default
@@ -12,6 +12,9 @@ $config['mysql.db'] = "mytinytodo";
$config['mysql.user'] = "user";
$config['mysql.password'] = "";
+# Tables prefix
+$config['prefix'] = "mtt_";
+
# Language pack
$config['lang'] = "en";
diff --git a/src/feed.php b/src/feed.php
index b662c62..efd0b16 100644
--- a/src/feed.php
+++ b/src/feed.php
@@ -9,7 +9,7 @@
$dontStartSession = 1;
require_once('./init.php');
require_once('./lang/class.default.php');
-require_once('./lang/'.$config['lang'].'.php');
+require_once('./lang/'.Config::get('lang').'.php');
$lang = new Lang();
$listId = (int)_get('list');
@@ -35,7 +35,7 @@ while($r = $q->fetch_assoc($q))
if($r['prio']) $a[] = $lang->get('priority'). ": $r[prio]";
if($r['duedate'] != '') {
$ad = explode('-', $r['duedate']);
- $a[] = $lang->get('due'). ": ".formatDate3($config['dateformat'], (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang);
+ $a[] = $lang->get('due'). ": ".formatDate3(Config::get('dateformat'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang);
}
if($r['tags'] != '') $a[] = $lang->get('tags'). ": ". str_replace(',', ', ', $r['tags']);
$r['_descr'] = nl2br($r['note']). ($a && $r['note']!='' ? "
" : ""). implode("
", $a);
diff --git a/src/index.php b/src/index.php
index 46c97f8..c18f059 100644
--- a/src/index.php
+++ b/src/index.php
@@ -8,19 +8,18 @@
require_once('init.php');
require_once('./lang/class.default.php');
-require_once('./lang/'.$config['lang'].'.php');
+require_once('./lang/'.Config::get('lang').'.php');
$lang = new Lang();
-if($config['duedateformat'] == 2) $duedateformat = 'm/d/yy';
-elseif($config['duedateformat'] == 3) $duedateformat = 'dd.mm.yy';
-elseif($config['duedateformat'] == 4) $duedateformat = 'dd/mm/yy';
+if(Config::get('duedateformat') == 2) $duedateformat = 'm/d/yy';
+elseif(Config::get('duedateformat') == 3) $duedateformat = 'dd.mm.yy';
+elseif(Config::get('duedateformat') == 4) $duedateformat = 'dd/mm/yy';
else $duedateformat = 'yy-mm-dd';
-if(!isset($config['firstdayofweek']) || !is_int($config['firstdayofweek']) ||
- $config['firstdayofweek']<0 || $config['firstdayofweek']>6) $config['firstdayofweek'] = 1;
+if(!is_int(Config::get('firstdayofweek')) || Config::get('firstdayofweek')<0 || Config::get('firstdayofweek')>6) Config::set('firstdayofweek', 1);
-if(isset($config['title']) && $config['title'] != '') $title = htmlarray($config['title']);
+if(Config::get('title') != '') $title = htmlarray(Config::get('title'));
else $title = $lang->get('My Tiny Todolist');
@@ -67,7 +66,7 @@ $().ready(function(){
echo "\tloadLists(1, 1);\n";
?>
preloadImg();
- $("#duedate").datepicker({dateFormat: '', firstDay: ,
+ $("#duedate").datepicker({dateFormat: '', firstDay: ,
showOn: 'button', buttonImage: 'images/calendar.png', buttonImageOnly: true, changeMonth:true,
changeYear:true, constrainInput: false, duration:'', nextText:'>', prevText:'<', dayNamesMin:lang.daysMin,
dayNames:lang.daysLong, monthNamesShort:lang.monthsLong });
diff --git a/src/init.php b/src/init.php
index eb06687..85f91af 100644
--- a/src/init.php
+++ b/src/init.php
@@ -5,12 +5,16 @@ require_once('./db/config.php');
ini_set('display_errors', 'On');
+if(!isset($config)) global $config;
+Config::loadConfig($config);
+unset($config);
+
# MySQL Database Connection
-if($config['db'] == 'mysql')
+if(Config::get('db') == 'mysql')
{
require_once('class.db.mysql.php');
$db = new Database_Mysql;
- $db->connect($config['mysql.host'], $config['mysql.user'], $config['mysql.password'], $config['mysql.db']);
+ $db->connect(Config::get('mysql.host'), Config::get('mysql.user'), Config::get('mysql.password'), Config::get('mysql.db'));
$db->dq("SET NAMES utf8");
}
@@ -23,10 +27,10 @@ else
}
-$needAuth = (isset($config['password']) && $config['password'] != '') ? 1 : 0;
+$needAuth = (Config::get('password') != '') ? 1 : 0;
if($needAuth && !isset($dontStartSession))
{
- if(isset($config['session']) && $config['session'] == 'files')
+ if(Config::get('session') == 'files')
{
session_save_path(realpath('./tmp/sessions/'));
ini_set('session.gc_maxlifetime', '1209600'); # 14 days session file minimum lifetime
@@ -48,8 +52,8 @@ function is_logged()
function timestampToDatetime($timestamp, $tz)
{
- global $config, $lang;
- $format = $config['dateformat'] .' '. ($config['clock'] == 12 ? 'g:i A' : 'H:i');
+ global $lang;
+ $format = Config::get('dateformat') .' '. (Config::get('clock') == 12 ? 'g:i A' : 'H:i');
$newformat = strtr($format, array('F'=>'%1', 'M'=>'%2'));
$adate = explode(',', gmdate('n,'.$newformat, $timestamp + $tz*60), 2);
$s = $adate[1];
diff --git a/src/settings.php b/src/settings.php
index 5b4aab2..d4ad3a4 100644
--- a/src/settings.php
+++ b/src/settings.php
@@ -19,20 +19,20 @@ if(isset($_POST['save']))
$t = array();
$langs = getLangs();
Config::$params['lang']['options'] = array_keys($langs);
- $config['lang'] = _post('lang');
- if(isset($_POST['password']) && $_POST['password'] != '') $config['password'] = $_POST['password'];
- elseif(!_post('allowpassword')) $config['password'] = '';
- $config['smartsyntax'] = (int)_post('smartsyntax');
- $config['autotz'] = (int)_post('autotz');
- $config['autotag'] = (int)_post('autotag');
- $config['session'] = _post('session');
- $config['firstdayofweek'] = (int)_post('firstdayofweek');
- $config['duedateformat'] = (int)_post('duedateformat');
- $config['clock'] = (int)_post('clock');
- $config['dateformat'] = _post('dateformat');
- $config['dateformatshort'] = _post('dateformatshort');
- $config['title'] = trim(_post('title'));
- Config::save($config);
+ Config::set('lang', _post('lang'));
+ if(isset($_POST['password']) && $_POST['password'] != '') Config::set('password', $_POST['password']);
+ elseif(!_post('allowpassword')) Config::set('password', '');
+ Config::set('smartsyntax', (int)_post('smartsyntax'));
+ Config::set('autotz', (int)_post('autotz'));
+ Config::set('autotag', (int)_post('autotag'));
+ Config::set('session', _post('session'));
+ Config::set('firstdayofweek', (int)_post('firstdayofweek'));
+ Config::set('duedateformat', (int)_post('duedateformat'));
+ Config::set('clock', (int)_post('clock'));
+ Config::set('dateformat', _post('dateformat'));
+ Config::set('dateformatshort', _post('dateformatshort'));
+ Config::set('title', trim(_post('title')));
+ Config::save();
$t['saved'] = 1;
echo json_encode($t);
exit;
@@ -41,8 +41,7 @@ if(isset($_POST['save']))
function _c($key)
{
- global $config;
- return Config::get($key, $config);
+ return Config::get($key);
}
function getLangs()
@@ -87,7 +86,7 @@ function selectOptions($a, $value, $default=null)