Merge namespace development into master

This commit is contained in:
Clemens Schwaighofer
2018-04-24 10:14:09 +09:00
440 changed files with 3035 additions and 29691 deletions

View File

@@ -11,6 +11,6 @@ CREATE TABLE edit_access_data (
edit_access_id INT NOT NULL,
name VARCHAR,
value VARCHAR,
enabled SMALLINT NOT NULL DEFAULT 0,
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
enabled SMALLINT NOT NULL DEFAULT 0,
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
) INHERITS (edit_generic) WITHOUT OIDS;

View File

@@ -1,12 +1,12 @@
#!/bin/bash
# create path
path=`pwd`"/"$0;
path=$(pwd)"/"$0;
LOCAL_BASE_DIR="<local folder>";
LOCAL_DIR=$LOCAL_BASE_DIR"";
REMOTE_WEB="<remote folder>";
TARGET_HOST_WEB="<user>@<host>
TARGET_HOST_WEB="<user>@<host>";
TMP_DIR=$LOCAL_BASE_DIR"/4dev/";
tmpf_web=$TMP_DIR"tmp.web";

View File

@@ -0,0 +1,72 @@
#!/bin/bash
OIFS=${IFS};
base_dir="/home/clemens/html/developers/clemens/core_data/php_libraries/trunk/";
class_file="CoreLibs/Output/Form/Generate.inc";
tmp_file=${base_dir}"4dev/tmp/tmp.comp."$(echo "${class_file}" | tr \/. _);
rpl_file=${base_dir}"4dev/tmp/tmp.rpl."$(echo "${class_file}" | tr \/. _);
rm -f "${tmp_file}";
rm -f "${rpl_file}";
if [ ! -f ${class_file} ];
then
echo "Cannot find ${class_file} in current folder: $(pwd)";
exit;
fi;
cat "${class_file}" | grep "WAS :" -B 1 | while read line;
do
# if method grep for function call
found=$(echo "${line}" | sed -e 's/^[ \t]*//' | grep "METHOD:");
if [ -n "${found}" ];
then
method=$(echo "${line}" | cut -d " " -f 3);
echo "1 MET: ${method}";
# is method
if [ -n "${method}" ];
then
# the full new call
new_function_call_full=$(grep "function ${method}(" "${class_file}" | grep "function" | sed -e 's/^[ \t]*//');
# just the method name
new_function_call=$(echo "${new_function_call_full}" | sed -e 's/public //' | sed -e 's/private //' | sed -e 's/static //' | sed -e 's/function //' | cut -d "(" -f 1);
# check if func call is more than just alphanumeric (we don't need to redeclare those, functions are case insenstivie)
#
# only params (remove all = ... stuff)
new_function_call_params=$(echo "${new_function_call_full}" | cut -d "(" -f 2- | sed -e 's/)//');
old_function_call_params='';
IFS=',';
for el in ${new_function_call_params};
do
if [ -n "${old_function_call_params}" ];
then
old_function_call_params=${old_function_call_params}", ";
fi;
old_function_call_params=${old_function_call_params}$(echo "${el}" | cut -d "=" -f 1 | tr -d ' ');
done;
# cut -d "," "${new_function_call_params}" | while
fi;
fi;
# if this is a WAS
was=$(echo "${line}" | sed -e 's/^[ \t]*//' | grep "WAS :" | tr -s " ");
if [ -n "${was}" ];
then
old_function_call=$(echo "${was}" | cut -d " " -f 4)
echo "2 OLD: ${old_function_call} => ${new_function_call} [${new_function_call_full}]";
# for return write:
# rpl new -> old { new }
rpl=$(echo "${new_function_call_full}" | sed -e "s/${new_function_call}/${old_function_call}/");
new_call="${rpl}\n";
new_call=${new_call}"{\n";
new_call=${new_call}"\terror_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);\n";
new_call=${new_call}"\treturn \$this->${new_function_call}(${old_function_call_params});\n";
new_call=${new_call}"}\n";
echo -e "${new_call}" >> "${tmp_file}";
echo "3A RPL CALL: ${rpl}";
echo "3B RPL CALL: return \$this->${new_function_call}(${old_function_call_params});";
echo "4 SWT RPL : rpl '\$this->${old_function_call}' '\$this->${new_function_call}'";
# write the replace calls for old $this->old_call to $this->new_call
echo "rpl '\$this->${old_function_call}' '\$this->${new_function_call}' ##TARGET_FILE##" >> "${rpl_file}";
echo "----";
fi;
done;
IFS=${OIFS};
# __END__

View File

@@ -0,0 +1,18 @@
#!/bin/bash
cat tmp.comp | while read i;
do
found=$(echo "${i}" | grep "function ");
if [ -n "${found}" ]; then
fk=$(echo "${i}" | cut -d " " -f 3 | cut -d "(" -f 1);
fi;
found=$(echo "${i}" | grep "\$this->");
if [ -n "${found}" ]; then
# no to debug
found=$(echo "${i}" | grep "debug(");
if [ -z "${found}" ]; then
fk_n=$(echo "${i}" | cut -d "(" -f 1);
echo "rpl '\$this->${fk}' '${fk_n}' CoreLibs/DB/IO.inc";
fi;
fi;
done;

View File

@@ -1 +0,0 @@
smarty-3.1.30

View File

@@ -1 +0,0 @@
../Smarty

View File

@@ -1 +0,0 @@
../cache/

View File

@@ -1,4 +1,4 @@
<?
<?php
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
$DEBUG_ALL = 1;
$PRINT_ALL = 1;
@@ -8,35 +8,36 @@ if ($DEBUG_ALL) {
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
}
ob_start();
// basic class test file
define('USE_DATABASE', true);
// sample config
require("config.inc");
// set session name
DEFINE('SET_SESSION_NAME', EDIT_SESSION_NAME);
// session_name(EDIT_SESSION_NAME);
// session_start();
// basic class test file
foreach (array ('Login', 'Admin.Backend') as $class) {
_spl_autoload('Class.'.$class.'.inc');
}
$lang = 'en_utf8';
// define log file id
DEFINE('LOG_FILE_ID', 'classTest');
$login = new login($DB_CONFIG[LOGIN_DB], $lang);
// init with standard
// $basic = new db_io($DB_CONFIG[MAIN_DB]);
$basic = new AdminBackend($DB_CONFIG[MAIN_DB], $lang);
$basic->db_info(1);
// set language for l10n
$lang = 'en_utf8';
// init login & backend class
$login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
$basic = new CoreLibs\Admin\Backend($DB_CONFIG[MAIN_DB], $lang);
$basic->dbInfo(1);
ob_end_flush();
// set + check edit access id
$edit_access_id = 3;
print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), 1)."<br>";
print "ACCESS CHECK: ".$login->login_check_edit_access($edit_access_id)."<br>";
if ($login->login_check_edit_access($edit_access_id)) {
$basic->edit_access_id = $edit_access_id;
if (array_key_exists('unit', $login->acl)) {
print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), 1)."<br>";
print "ACCESS CHECK: ".$login->loginCheckEditAccess($edit_access_id)."<br>";
if ($login->loginCheckEditAccess($edit_access_id)) {
$basic->edit_access_id = $edit_access_id;
} else {
$basic->edit_access_id = $login->acl['unit_id'];
}
} else {
$basic->edit_access_id = $login->acl['unit_id'];
print "Something went wrong with the login<br>";
}
// $basic->debug('SESSION', $basic->print_ar($_SESSION));
@@ -59,12 +60,12 @@ print "DEBUG OUT ALL: ".$basic->debug_output_all."<br>";
print "ECHO OUT ALL: ".$basic->echo_output_all."<br>";
print "PRINT OUT ALL: ".$basic->print_output_all."<br>";
print "CALLER BACKTRACE: ".$basic->get_caller_method()."<br>";
print "CALLER BACKTRACE: ".$basic->getCallerMethod()."<br>";
$basic->debug('SOME MARK', 'Some error output');
print "EDIT ACCESS ID: ".$basic->edit_access_id."<br>";
// print "ACL: <br>".$basic->print_ar($login->acl)."<br>";
$basic->debug('ACL', "ACL: ".$basic->print_ar($login->acl));
$basic->debug('ACL', "ACL: ".$basic->printAr($login->acl));
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
// $result = array_flip(array_filter(array_flip($login->default_acl_list), function ($key) { if (is_numeric($key)) return $key; }));
@@ -72,51 +73,54 @@ $basic->debug('ACL', "ACL: ".$basic->print_ar($login->acl));
// DEPRICATED CALL
// $basic->adbSetACL($login->acl);
while ($res = $basic->db_return("SELECT * FROM max_test")) {
// DB client encoding
print "DB Client encoding: ".$basic->dbGetEncoding()."<br>";
while ($res = $basic->dbReturn("SELECT * FROM max_test")) {
print "TIME: ".$res['time']."<br>";
}
$status = $basic->db_exec("INSERT INTO foo (test) VALUES ('FOO TEST ".time()."') RETURNING test");
$status = $basic->dbExec("INSERT INTO foo (test) VALUES ('FOO TEST ".time()."') RETURNING test");
print "DIRECT INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, 1)."<br>";
print "DIRECT INSERT PREVIOUS INSERTED: ".print_r($basic->db_return_row("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>";
$basic->db_prepare("ins_foo", "INSERT INTO foo (test) VALUES ($1)");
$status = $basic->db_execute("ins_foo", array('BAR TEST '.time()));
print "DIRECT INSERT PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>";
$basic->dbPrepare("ins_foo", "INSERT INTO foo (test) VALUES ($1)");
$status = $basic->dbExecute("ins_foo", array('BAR TEST '.time()));
print "PREPARE INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, 1)."<br>";
print "PREPARE INSERT PREVIOUS INSERTED: ".print_r($basic->db_return_row("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>";
print "PREPARE INSERT PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>";
// returning test with multiple entries
// $status = $basic->db_exec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id");
$status = $basic->db_exec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id, test");
$status = $basic->dbExec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id, test");
print "DIRECT MULTIPLE INSERT STATUS: $status | PRIMARY KEYS: ".print_r($basic->insert_id, 1)." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, 1)."<br>";
// no returning, but not needed ;
$status = $basic->db_exec("INSERT INTO foo (test) VALUES ('FOO; TEST ".time()."');");
$status = $basic->dbExec("INSERT INTO foo (test) VALUES ('FOO; TEST ".time()."');");
print "DIRECT INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, 1)."<br>";
# db write class test
$table = 'foo';
print "TABLE META DATA: ".$basic->print_ar($basic->db_show_table_meta_data($table))."<br>";
print "TABLE META DATA: ".$basic->printAr($basic->dbShowTableMetaData($table))."<br>";
$primary_key = ''; # unset
$db_write_table = array ('test', 'string_a', 'number_a', 'some_bool');
// $db_write_table = array ('test');
$object_fields_not_touch = array ();
$object_fields_not_update = array ();
$data = array ('test' => 'BOOL TEST SOMETHING '.time(), 'string_a' => 'SOME TEXT', 'number_a' => 5);
$primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
$data = array ('test' => 'BOOL TEST ON '.time(), 'string_a' => '', 'number_a' => 0, 'some_bool' => 1);
$primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
$data = array ('test' => 'BOOL TEST OFF '.time(), 'string_a' => null, 'number_a' => null, 'some_bool' => 0);
$primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
$data = array ('test' => 'BOOL TEST UNSET '.time());
$primary_key = $basic->db_write_data_ext($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
# async test queries
/* $basic->db_exec_async("SELECT test FROM foo, (SELECT pg_sleep(10)) as sub WHERE foo_id IN (27, 50, 67, 44, 10)");
/* $basic->dbExecAsync("SELECT test FROM foo, (SELECT pg_sleep(10)) as sub WHERE foo_id IN (27, 50, 67, 44, 10)");
echo "WAITING FOR ASYNC: ";
$chars = array('|', '/', '-', '\\');
while (($ret = $basic->db_check_async()) === true)
while (($ret = $basic->dbCheckAsync()) === true)
{
if ((list($_, $char) = each($chars)) === FALSE)
{
@@ -128,37 +132,37 @@ while (($ret = $basic->db_check_async()) === true)
flush();
}
print "<br>END STATUS: ".$ret."<br>";
// while ($res = $basic->db_fetch_array($ret))
while ($res = $basic->db_fetch_array())
// while ($res = $basic->dbFetchArray($ret))
while ($res = $basic->dbFetchArray())
{
echo "RES: ".$res['test']."<br>";
}
# test async insert
$basic->db_exec_async("INSERT INTO foo (Test) VALUES ('ASYNC TEST ".time()."')");
$basic->dbExecAsync("INSERT INTO foo (Test) VALUES ('ASYNC TEST ".time()."')");
echo "WAITING FOR ASYNC INSERT: ";
while (($ret = $basic->db_check_async()) === true)
while (($ret = $basic->dbCheckAsync()) === true)
{
print ".";
sleep(1);
flush();
}
print "<br>END STATUS: ".$ret." | PK: ".$basic->insert_id."<br>";
print "ASYNC PREVIOUS INSERTED: ".print_r($basic->db_return_row("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>"; */
print "ASYNC PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), 1)."<br>"; */
$to_db_version = '9.1.9';
print "VERSION DB: ".$basic->db_version()."<br>";
print "DB Version smaller $to_db_version: ".$basic->db_compare_version('<'.$to_db_version)."<br>";
print "DB Version smaller than $to_db_version: ".$basic->db_compare_version('<='.$to_db_version)."<br>";
print "DB Version equal $to_db_version: ".$basic->db_compare_version('='.$to_db_version)."<br>";
print "DB Version bigger than $to_db_version: ".$basic->db_compare_version('>='.$to_db_version)."<br>";
print "DB Version bigger $to_db_version: ".$basic->db_compare_version('>'.$to_db_version)."<br>";
print "VERSION DB: ".$basic->dbVersion()."<br>";
print "DB Version smaller $to_db_version: ".$basic->dbCompareVersion('<'.$to_db_version)."<br>";
print "DB Version smaller than $to_db_version: ".$basic->dbCompareVersion('<='.$to_db_version)."<br>";
print "DB Version equal $to_db_version: ".$basic->dbCompareVersion('='.$to_db_version)."<br>";
print "DB Version bigger than $to_db_version: ".$basic->dbCompareVersion('>='.$to_db_version)."<br>";
print "DB Version bigger $to_db_version: ".$basic->dbCompareVersion('>'.$to_db_version)."<br>";
/* $q = "SELECT FOO FRO BAR";
// $q = "Select * from foo";
$foo = $basic->db_exec_async($q);
$foo = $basic->dbExecAsync($q);
print "[ERR] Query: ".$q."<br>";
print "[ERR] RESOURCE: $foo<br>";
while (($ret = $basic->db_check_async()) === true)
while (($ret = $basic->dbCheckAsync()) === true)
{
print "[ERR]: $ret<br>";
// sleep(5);
@@ -166,30 +170,33 @@ while (($ret = $basic->db_check_async()) === true)
// search path check
$q = "SHOW search_path";
$cursor = $basic->db_exec($q);
$data = $basic->db_fetch_array($cursor)['search_path'];
$cursor = $basic->dbExec($q);
$data = $basic->dbFetchArray($cursor)['search_path'];
print "RETURN DATA FOR search_path: ".$data."<br>";
// print "RETURN DATA FOR search_path: ".$basic->print_ar($data)."<br>";
// print "RETURN DATA FOR search_path: ".$basic->printAr($data)."<br>";
// insert something into test.schema_test and see if we get the PK back
$status = $basic->db_exec("INSERT INTO test.schema_test (contents, id) VALUES ('TIME: ".time()."', ".rand(1, 10).")");
$status = $basic->dbExec("INSERT INTO test.schema_test (contents, id) VALUES ('TIME: ".time()."', ".rand(1, 10).")");
print "OTHER SCHEMA INSERT STATUS: ".$status." | PK NAME: ".$basic->pk_name.", PRIMARY KEY: ".$basic->insert_id."<br>";
// time string thest
$timestamp = 5887998.33445;
$time_string = $basic->TimeStringFormat($timestamp);
$time_string = $basic->timeStringFormat($timestamp);
print "TIME STRING TEST: ".$time_string."<br>";
print "REVERSE TIME STRING: ".$basic->StringToTime($time_string);
print "REVERSE TIME STRING: ".$basic->stringToTime($time_string);
// magic links test
print $basic->magic_links('user@bubu.at').'<br>';
print $basic->magic_links('http://test.com/foo/bar.php?foo=1').'<br>';
print $basic->magicLinks('user@bubu.at').'<br>';
print $basic->magicLinks('http://test.com/foo/bar.php?foo=1').'<br>';
// compare date
$date_1 = '2017/1/5';
$date_2 = '2017-01-05';
print "COMPARE DATE: ".$basic->CompareDate($date_1, $date_2)."<br>";
print "COMPARE DATE: ".$basic->compareDate($date_1, $date_2)."<br>";
// print error messages
print $basic->print_error_msg();
print $login->printErrorMsg();
print $basic->printErrorMsg();
print "</body></html>";
# __END__

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2003/06/10
@@ -28,22 +28,15 @@ define(REL_PATH, '');
ob_start();
include("config.inc");
// set session name here
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
// overrride debug flags
if (!DEBUG) {
$DEBUG_ALL = 0;
$PRINT_ALL = 0;
$DB_DEBUG = 0;
$ECHO_ALL = 0;
// $DEBUG_TMPL = 0;
}
// set session name here
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
// login class
require(LIBS."Class.Login.inc");
// form generate for edit interface
require(LIBS."Class.Form.Generate.inc");
// Smarty: and the small extend for l10n calls
require(LIBS.'Class.Smarty.Extend.inc');
// set default lang if not set otherwise
if (!$lang) {
@@ -52,17 +45,17 @@ if (!$lang) {
// should be utf8
header("Content-type: text/html; charset=".DEFAULT_ENCODING);
ob_end_flush();
$login = new login($DB_CONFIG[LOGIN_DB], $lang);
$login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
// create form class
$form = new form($DB_CONFIG[MAIN_DB], $lang);
$form->db_exec("SET search_path TO ".LOGIN_DB_SCHEMA);
$form = new CoreLibs\Output\Form\Generate($DB_CONFIG[MAIN_DB], $lang);
$form->dbExec("SET search_path TO ".LOGIN_DB_SCHEMA);
if ($form->mobile_phone) {
echo "I am sorry, but this page cannot be viewed by a mobile phone";
exit;
}
// smarty template engine (extended Translation version)
$smarty = new SmartyML($lang);
$smarty = new CoreLibs\Template\SmartyExtend($lang);
if (TARGET == 'live' || TARGET == 'remote') {
// login
@@ -98,7 +91,7 @@ function EditLog($event = '', $data = '')
{
$q = "INSERT INTO edit_log ";
$q .= "(euid, event_date, ip, event, data, page) ";
$q .= "VALUES (".$_SESSION['EUID'].", NOW(), '".$_SERVER["REMOTE_ADDR"]."', '".$GLOBALS['form']->db_escape_string($event)."', '".$GLOBALS['form']->db_escape_string($data)."', '".$GLOBALS['form']->get_page_name()."')";
$q .= "VALUES (".$_SESSION['EUID'].", NOW(), '".$_SERVER["REMOTE_ADDR"]."', '".$GLOBALS['form']->dbEscapeString($event)."', '".$GLOBALS['form']->dbEscapeString($data)."', '".$GLOBALS['form']->getPageName()."')";
}
// log backend data
@@ -112,11 +105,11 @@ $data = array (
// log action
EditLog('Edit Submit', serialize($data));
$form->form_procedure_load(${$form->archive_pk_name});
$form->form_procedure_new();
$form->form_procedure_save();
$form->form_procedure_delete();
$form->form_procedure_delete_from_element_list($element_list, $remove_name);
$form->formProcedureLoad(${$form->archive_pk_name});
$form->formProcedureNew();
$form->formProcedureSave();
$form->formProcedureDelete();
$form->formProcedureDeleteFromElementList($element_list, $remove_name);
// define all needed smarty stuff for the general HTML/page building
$HEADER['CSS'] = CSS;
@@ -128,7 +121,7 @@ $HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
$DATA['table_width'] = $table_width;
// write out error / status messages
$messages[] = $form->form_error_msg();
$messages[] = $form->formPrintMsg();
$DATA['form_error_msg'] = $messages;
// MENU START
@@ -172,7 +165,7 @@ for ($i = 1; $i <= count($menuarray); $i ++) {
if ($i == 1 || !(($i - 1) % $SPLIT_FACTOR)) {
$menu_data[$j]['splitfactor_in'] = 1;
}
if ($menuarray[($i - 1)]["filename"] == $form->get_page_name()) {
if ($menuarray[($i - 1)]["filename"] == $form->getPageName()) {
$position = $i - 1;
$menu_data[$j]['position'] = 1;
} else {
@@ -197,103 +190,103 @@ $L_TITLE = $DATA['page_name'];
$HEADER['HTML_TITLE'] = ((!$L_TITLE) ? $form->l->__($G_TITLE) : $form->l->__($L_TITLE));
// END MENU
// LOAD AND NEW
$DATA['load'] = $form->form_create_load();
$DATA['new'] = $form->form_create_new();
$DATA['load'] = $form->formCreateLoad();
$DATA['new'] = $form->formCreateNew();
// SHOW DATA PART
if ($form->yes) {
$DATA['form_yes'] = $form->yes;
$DATA['form_my_page_name'] = $form->my_page_name;
// depending on the "get_page_name()" I show different stuff
// depending on the "getPageName()" I show different stuff
switch ($form->my_page_name) {
case "edit_users":
$elements[] = $form->form_create_element("login_error_count");
$elements[] = $form->form_create_element("login_error_date_last");
$elements[] = $form->form_create_element("login_error_date_first");
$elements[] = $form->form_create_element("enabled");
$elements[] = $form->form_create_element("username");
$elements[] = $form->form_create_element("password");
$elements[] = $form->form_create_element("password_change_interval");
$elements[] = $form->form_create_element("email");
$elements[] = $form->form_create_element("last_name");
$elements[] = $form->form_create_element("first_name");
$elements[] = $form->form_create_element("edit_group_id");
$elements[] = $form->form_create_element("edit_access_right_id");
$elements[] = $form->form_create_element("strict");
$elements[] = $form->form_create_element("locked");
$elements[] = $form->form_create_element("admin");
$elements[] = $form->form_create_element("debug");
$elements[] = $form->form_create_element("db_debug");
$elements[] = $form->form_create_element("edit_language_id");
$elements[] = $form->form_create_element("edit_scheme_id");
$elements[] = $form->form_show_list_table("edit_access_user");
$elements[] = $form->formCreateElement("login_error_count");
$elements[] = $form->formCreateElement("login_error_date_last");
$elements[] = $form->formCreateElement("login_error_date_first");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("username");
$elements[] = $form->formCreateElement("password");
$elements[] = $form->formCreateElement("password_change_interval");
$elements[] = $form->formCreateElement("email");
$elements[] = $form->formCreateElement("last_name");
$elements[] = $form->formCreateElement("first_name");
$elements[] = $form->formCreateElement("edit_group_id");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("strict");
$elements[] = $form->formCreateElement("locked");
$elements[] = $form->formCreateElement("admin");
$elements[] = $form->formCreateElement("debug");
$elements[] = $form->formCreateElement("db_debug");
$elements[] = $form->formCreateElement("edit_language_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_access_user");
break;
case "edit_schemes":
$elements[] = $form->form_create_element("enabled");
$elements[] = $form->form_create_element("name");
$elements[] = $form->form_create_element("header_color");
$elements[] = $form->form_create_element("template");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("header_color");
$elements[] = $form->formCreateElement("template");
break;
case "edit_pages":
if (!$form->table_array["edit_page_id"]["value"]) {
$q = "DELETE FROM temp_files";
$form->db_exec($q);
$form->dbExec($q);
// gets all files in the current dir ending with .php
$crap = exec("ls *.php", $output, $status);
// now get all that are NOT in de DB
$q = "INSERT INTO temp_files VALUES ";
for ($i = 0; $i < count($output); $i ++) {
$t_q = "('".$form->db_escape_string($output[$i])."')";
$form->db_exec($q.$t_q, 'NULL');
$t_q = "('".$form->dbEscapeString($output[$i])."')";
$form->dbExec($q.$t_q, 'NULL');
}
$elements[] = $form->form_create_element("filename");
$elements[] = $form->formCreateElement("filename");
} else {
// show file menu
// just show name of file ...
$DATA['filename_exist'] = 1;
$DATA['filename'] = $form->table_array["filename"]["value"];
} // File Name View IF
$elements[] = $form->form_create_element("name");
// $elements[] = $form->form_create_element("tag");
// $elements[] = $form->form_create_element("min_acl");
$elements[] = $form->form_create_element("order_number");
$elements[] = $form->form_create_element("online");
$elements[] = $form->form_create_element("menu");
$elements[] = $form->form_show_list_table("edit_query_string");
$elements[] = $form->form_create_element("popup");
$elements[] = $form->form_create_element("popup_x");
$elements[] = $form->form_create_element("popup_y");
$elements[] = $form->form_show_reference_table("edit_visible_group");
$elements[] = $form->form_show_reference_table("edit_menu_group");
$elements[] = $form->formCreateElement("name");
// $elements[] = $form->formCreateElement("tag");
// $elements[] = $form->formCreateElement("min_acl");
$elements[] = $form->formCreateElement("order_number");
$elements[] = $form->formCreateElement("online");
$elements[] = $form->formCreateElement("menu");
$elements[] = $form->formCreateElementListTable("edit_query_string");
$elements[] = $form->formCreateElement("popup");
$elements[] = $form->formCreateElement("popup_x");
$elements[] = $form->formCreateElement("popup_y");
$elements[] = $form->formCreateElementReferenceTable("edit_visible_group");
$elements[] = $form->formCreateElementReferenceTable("edit_menu_group");
break;
case "edit_languages":
$elements[] = $form->form_create_element("enabled");
$elements[] = $form->form_create_element("short_name");
$elements[] = $form->form_create_element("long_name");
$elements[] = $form->form_create_element("iso_name");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("short_name");
$elements[] = $form->formCreateElement("long_name");
$elements[] = $form->formCreateElement("iso_name");
break;
case "edit_groups":
$elements[] = $form->form_create_element("enabled");
$elements[] = $form->form_create_element("name");
$elements[] = $form->form_create_element("edit_access_right_id");
$elements[] = $form->form_create_element("edit_scheme_id");
$elements[] = $form->form_show_list_table("edit_page_access");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_page_access");
break;
case "edit_visible_group":
$elements[] = $form->form_create_element("name");
$elements[] = $form->form_create_element("flag");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
break;
case "edit_menu_group":
$elements[] = $form->form_create_element("name");
$elements[] = $form->form_create_element("flag");
$elements[] = $form->form_create_element("order_number");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
$elements[] = $form->formCreateElement("order_number");
break;
case "edit_access":
$elements[] = $form->form_create_element("name");
$elements[] = $form->form_create_element("color");
$elements[] = $form->form_create_element("description");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("color");
$elements[] = $form->formCreateElement("description");
// add name/value list here
$elements[] = $form->form_show_list_table("edit_access_data");
$elements[] = $form->formCreateElementListTable("edit_access_data");
break;
default:
print "[No valid page definition given]";
@@ -301,8 +294,8 @@ if ($form->yes) {
}
// $form->debug('edit', "Elements: <pre>".$form->print_ar($elements));
$DATA['elements'] = $elements;
$DATA['hidden'] = $form->form_create_hidden_fields();
$DATA['save_delete'] = $form->form_create_save_delete();
$DATA['hidden'] = $form->formCreateHiddenFields();
$DATA['save_delete'] = $form->formCreateSaveDelete();
}
// debug data, if DEBUG flag is on, this data is print out
@@ -314,11 +307,16 @@ $CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
while (list($key, $value) = each($CONTENT_DATA)) {
$smarty->assign($key, $value);
}
// $smarty->assign('popup_page', 'mt_popup_'.$body_part.'.tpl');
if (is_dir(BASE.TEMPLATES_C)) {
$smarty->setCompileDir(BASE.TEMPLATES_C);
}
if (is_dir(BASE.CACHE)) {
$smarty->setCacheDir(BASE.CACHE);
}
$smarty->display('edit_body.tpl');
// debug output
echo $login->print_error_msg();
echo $form->print_error_msg();
echo $login->printErrorMsg();
echo $form->printErrorMsg();
# __END__

View File

@@ -1,209 +1,196 @@
<?
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2001/07/11
* SHORT DESCRIPTION:
* sets the order from a table (edit_)
* HISTORY:
* 2005/07/11 (cs) adept to new edit interface
* 2002-10-18: little include changes
* 2001-07-11: erste Version
**********************************************************************/
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2001/07/11
* SHORT DESCRIPTION:
* sets the order from a table (edit_)
* HISTORY:
* 2005/07/11 (cs) adept to new edit interface
* 2002-10-18: little include changes
* 2001-07-11: erste Version
**********************************************************************/
$DEBUG_ALL = 1;
$DB_DEBUG = 1;
$DEBUG_ALL = 1;
$DB_DEBUG = 1;
extract($_GET, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
extract($_GET, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
include("config.inc");
// overrride debug flags
if (!DEBUG)
{
$DEBUG_ALL = 0;
$PRINT_ALL = 0;
$DB_DEBUG = 0;
$ECHO_ALL = 0;
// $DEBUG_TMPL = 0;
}
// set session name
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
require(LIBS."Class.Login.inc");
require(LIBS.'Class.Smarty.Extend.inc');
include("config.inc");
// set session name
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
// overrride debug flags
if (!DEBUG) {
$DEBUG_ALL = 0;
$PRINT_ALL = 0;
$DB_DEBUG = 0;
$ECHO_ALL = 0;
}
// default lang
if (!$lang)
$lang = DEFAULT_LANG;
// default lang
if (!$lang) {
$lang = DEFAULT_LANG;
}
$table_width = 600;
if (!$table_width)
$table_width = PAGE_WIDTH;
$table_width = 600;
if (!$table_width) {
$table_width = PAGE_WIDTH;
}
ob_end_flush();
$login = new login($DB_CONFIG[LOGIN_DB], $lang);
$db = new db_io($DB_CONFIG[MAIN_DB]);
$db->db_exec("SET search_path TO ".LOGIN_DB_SCHEMA);
$smarty = new SmartyML($lang);
if (TARGET == 'live' || TARGET == 'remote')
{
// login
$login->debug_output_all = DEBUG ? 1 : 0;
$login->echo_output_all = 0;
$login->print_output_all = DEBUG ? 1 : 0;
// form
$db->debug_output_all = DEBUG ? 1 : 0;
$db->echo_output_all = 0;
$db->print_output_all = DEBUG ? 1 : 0;
}
// set the template dir
if (defined('LAYOUT'))
{
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
}
else
{
$smarty->setTemplateDir(TEMPLATES.DEFAULT_TEMPLATE);
$DATA['css'] = CSS.DEFAULT_TEMPLATE;
$DATA['js'] = JS.DEFAULT_TEMPLATE;
}
// order name is _always_ order_number for the edit interface
// follwing arrays do exist here:
// $position ... has the positions of the array (0..max), cause in a <select> I can't put an number into the array field, in this array, there are the POSITION stored, that should CHANGE there order (up/down)
// $row_data_id ... has ALL ids from the sorting part
// $row_data_order ... has ALL order positions from the soirting part
if (count($position))
{
$original_id = $row_data_id;
// FIRST u have to put right sort, then read again ...
if ($up && $position[0] > 0) // hast to be >0 or the first one is selected and then there is no move
{
for ($i = 0; $i < count($position); $i++)
{
// change position order
// this gets temp, id before that, gets actual (moves one "down")
// this gets the old before (moves one "up")
// is done for every element in row
//echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
$temp_id = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $row_data_id[$position[$i]-1];
$row_data_id[$position[$i]-1] = $temp_id;
//echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
} // for
} // if up
if ($down && ($position[count($position) - 1] != (count($row_data_id) - 1))) // the last position id from position array is not to be the count-1 of row_data_id array, or it is the last element
{
for ($i = count($position) - 1; $i >= 0; $i --)
{
// same as up, just up in other way, starts from bottom (last element) and moves "up"
// element before actuel gets temp, this element, becomes element after this,
// element after this, gets this
$temp_id = $row_data_id[$position[$i] + 1];
$row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $temp_id;
} // for
} // if down
// write data ... (which has to be abstrackt ...)
if (($up && $position[0] > 0) || ($down && ($position[count($position) - 1]!=(count($row_data_id) - 1))))
{
for ($i = 0;$i < count($row_data_id); $i ++)
{
// $q="UPDATE broschueren SET broschuere_order=".$row_data_order[$i]." WHERE unique_id='".$row_data_id[$i]."'";
$q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
//echo "Q: $q<br>";
$q = $db->db_exec($q);
} // for all article ids ...
} // if write
} // if there is something to move
// get ...
$q = "SELECT ".$table_name."_id, name, order_number FROM ".$table_name." ";
if ($where_string)
$q .= "WHERE $where_string ";
$q .= "ORDER BY order_number";
while ($res = $db->db_return($q))
{
$row_data[] = array (
"id" => $res[$table_name."_id"],
"name" => $res["name"],
"order" => $res["order_number"]
);
} // while read data ...
// define all needed smarty stuff for the general HTML/page building
ob_end_flush();
$login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
$db = new CoreLibs\DB\IO($DB_CONFIG[MAIN_DB]);
$db->dbExec("SET search_path TO ".LOGIN_DB_SCHEMA);
$smarty = new CoreLibs\Template\SmartyExtend($lang);
if (TARGET == 'live' || TARGET == 'remote') {
// login
$login->debug_output_all = DEBUG ? 1 : 0;
$login->echo_output_all = 0;
$login->print_output_all = DEBUG ? 1 : 0;
// form
$db->debug_output_all = DEBUG ? 1 : 0;
$db->echo_output_all = 0;
$db->print_output_all = DEBUG ? 1 : 0;
}
// set the template dir
if (defined('LAYOUT')) {
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
$HEADER['CSS'] = CSS;
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
$HEADER['JS'] = JS;
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
// html title
$HEADER['HTML_TITLE'] = ((!$L_TITLE) ? $smarty->l10n->__($G_TITLE) : $smarty->l10n->__($L_TITLE));
} else {
$smarty->setTemplateDir(TEMPLATES.DEFAULT_TEMPLATE);
$DATA['css'] = CSS.DEFAULT_TEMPLATE;
$DATA['js'] = JS.DEFAULT_TEMPLATE;
}
$DATA['table_width'] = $table_width;
// order name is _always_ order_number for the edit interface
// error msg
if ($error)
{
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => $table_width);
}
$DATA['form_error_msg'] = $messages;
// follwing arrays do exist here:
// $position ... has the positions of the array (0..max), cause in a <select>
// I can't put an number into the array field, in this array,
// there are the POSITION stored, that should CHANGE there order (up/down)
// $row_data_id ... has ALL ids from the sorting part
// $row_data_order ... has ALL order positions from the soirting part
if (count($position)) {
$original_id = $row_data_id;
// all the row data
$options_id = array();
$options_name = array();
$options_selected = array();
for ($i = 0; $i < count($row_data); $i ++)
{
$options_id[] = $i;
$options_name[] = $row_data[$i]["name"];
// list of points to order
for ($j = 0; $j < count($position); $j++)
{
// if matches, put into select array
if ($original_id[$position[$j]] == $row_data[$i]["id"])
$options_selected[] = $i;
// FIRST u have to put right sort, then read again ...
// hast to be >0 or the first one is selected and then there is no move
if ($up && $position[0] > 0) {
for ($i = 0; $i < count($position); $i++) {
// change position order
// this gets temp, id before that, gets actual (moves one "down")
// this gets the old before (moves one "up")
// is done for every element in row
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
$temp_id = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $row_data_id[$position[$i]-1];
$row_data_id[$position[$i]-1] = $temp_id;
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
} // for
} // if up
// the last position id from position array is not to be the count-1 of row_data_id array, or it is the last element
if ($down && ($position[count($position) - 1] != (count($row_data_id) - 1))) {
for ($i = count($position) - 1; $i >= 0; $i --) {
// same as up, just up in other way, starts from bottom (last element) and moves "up"
// element before actuel gets temp, this element, becomes element after this,
// element after this, gets this
$temp_id = $row_data_id[$position[$i] + 1];
$row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $temp_id;
} // for
} // if down
// write data ... (which has to be abstrackt ...)
if (($up && $position[0] > 0) || ($down && ($position[count($position) - 1]!=(count($row_data_id) - 1)))) {
for ($i = 0; $i < count($row_data_id); $i ++) {
$q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
$q = $db->dbExec($q);
} // for all article ids ...
} // if write
} // if there is something to move
// get ...
$q = "SELECT ".$table_name."_id, name, order_number FROM ".$table_name." ";
if ($where_string) {
$q .= "WHERE $where_string ";
}
$q .= "ORDER BY order_number";
while ($res = $db->dbReturn($q)) {
$row_data[] = array (
"id" => $res[$table_name."_id"],
"name" => $res["name"],
"order" => $res["order_number"]
);
} // while read data ...
// define all needed smarty stuff for the general HTML/page building
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
$HEADER['CSS'] = CSS;
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
$HEADER['JS'] = JS;
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
// html title
$HEADER['HTML_TITLE'] = (!$L_TITLE) ? $smarty->l10n->__($G_TITLE) : $smarty->l10n->__($L_TITLE);
$DATA['table_width'] = $table_width;
// error msg
if ($error) {
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => $table_width);
}
$DATA['form_error_msg'] = $messages;
// all the row data
$options_id = array();
$options_name = array();
$options_selected = array();
for ($i = 0; $i < count($row_data); $i ++) {
$options_id[] = $i;
$options_name[] = $row_data[$i]["name"];
// list of points to order
for ($j = 0; $j < count($position); $j++) {
// if matches, put into select array
if ($original_id[$position[$j]] == $row_data[$i]["id"]) {
$options_selected[] = $i;
}
}
$DATA['options_id'] = $options_id;
$DATA['options_name'] = $options_name;
$DATA['options_selected'] = $options_selected;
}
$DATA['options_id'] = $options_id;
$DATA['options_name'] = $options_name;
$DATA['options_selected'] = $options_selected;
// hidden list for the data (id, order number)
$row_data_id = array();
$row_data_order = array();
for ($i = 0; $i < count($row_data); $i++)
{
$row_data_id[] = $row_data[$i]["id"];
$row_data_order[] = $row_data[$i]["order"];
}
$DATA['row_data_id'] = $row_data_id;
$DATA['row_data_order'] = $row_data_order;
// hidden list for the data (id, order number)
$row_data_id = array();
$row_data_order = array();
for ($i = 0; $i < count($row_data); $i++) {
$row_data_id[] = $row_data[$i]["id"];
$row_data_order[] = $row_data[$i]["order"];
}
$DATA['row_data_id'] = $row_data_id;
$DATA['row_data_order'] = $row_data_order;
// hidden names for the table & where string
$DATA['table_name'] = $table_name;
$DATA['where_string'] = $where_string;
// hidden names for the table & where string
$DATA['table_name'] = $table_name;
$DATA['where_string'] = $where_string;
// debug data, if DEBUG flag is on, this data is print out
$DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
// debug data, if DEBUG flag is on, this data is print out
$DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
// create main data array
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
// data is 1:1 mapping (all vars, values, etc)
while (list($key, $value) = each($CONTENT_DATA))
{
$smarty->assign($key, $value);
}
$smarty->display('edit_order.tpl');
// create main data array
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
// data is 1:1 mapping (all vars, values, etc)
while (list($key, $value) = each($CONTENT_DATA)) {
$smarty->assign($key, $value);
}
$smarty->display('edit_order.tpl');
echo $login->printErrorMsg();
echo $db->printErrorMsg();
# __END__
echo $login->print_error_msg();
echo $db->print_error_msg();
?>

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2005/07/13
@@ -202,10 +202,10 @@ if ($cms->action == 'save') {
$file = DEV_SCHEMA."_".$file_uid;
// now upload the file
if ($_FILES['file_up']['name']) {
$upload_file = ROOT.MEDIA.$cms->data_path[$file_type].$file;
$upload_file = BASE.MEDIA.$cms->data_path[$file_type].$file;
// wipe out any old tmp data for this new upload
if (is_array(glob(ROOT.TMP."thumb_".$file."*"))) {
foreach (glob(ROOT.TMP."thumb_".$file."*") as $filename) {
if (is_array(glob(BASE.TMP."thumb_".$file."*"))) {
foreach (glob(BASE.TMP."thumb_".$file."*") as $filename) {
@unlink($filename);
}
}
@@ -213,7 +213,7 @@ if ($cms->action == 'save') {
$error = move_uploaded_file($_FILES['file_up']['tmp_name'], $upload_file);
$cms->debug('file_upload', "UP: $upload_file");
$cms->debug('file_upload', "Orig: ".$cms->print_ar($_FILES['file_up']));
$cms->debug('file_upload', "Orig: ".$cms->printAr($_FILES['file_up']));
// because I get bogus error info from move_uploaded_file ...
$error = 0;
@@ -242,7 +242,7 @@ if ($cms->action == 'save') {
}
$q .= ") VALUES ('".$cms->queue_name."', '".$file_uid."', 'file_uid', '".$sql_action."', 'file', '".$cms->db_escape_string($sql_data)."', '".$cms->queue_key."', '".$cms->action."'";
if ($_FILES['file_up']['name']) {
$q .= ", '".ROOT.MEDIA.$cms->data_path[$file_type].$file."#".ROOT.MEDIA.$cms->data_path[$file_type].PUBLIC_SCHEMA."_".$file_uid."'";
$q .= ", '".BASE.MEDIA.$cms->data_path[$file_type].$file."#".BASE.MEDIA.$cms->data_path[$file_type].PUBLIC_SCHEMA."_".$file_uid."'";
}
$q .= ")";
$cms->db_exec($q);
@@ -262,9 +262,9 @@ if ($cms->action == 'delete' && $cms->action_yes == 'true') {
}
if (QUEUE == 'live_queue') {
$q = "INSERT INTO ".GLOBAL_DB_SCHEMA.".live_queue (queue_key, key_value, key_name, type, target, data, group_key, action, file) VALUES (";
$q .= "'".$cms->queue_name."', '".$file_uid."', 'file_uid', 'DELETE', 'file', '', '".$cms->queue_key."', '".$cms->action."', '".ROOT.MEDIA.$cms->data_path[$file_type].PUBLIC_SCHEMA."_".$file_uid."')";
$q .= "'".$cms->queue_name."', '".$file_uid."', 'file_uid', 'DELETE', 'file', '', '".$cms->queue_key."', '".$cms->action."', '".BASE.MEDIA.$cms->data_path[$file_type].PUBLIC_SCHEMA."_".$file_uid."')";
}
@unlink(ROOT.MEDIA.$cms->data_path[$file_type].DEV_SCHEMA."_".$file_uid);
@unlink(BASE.MEDIA.$cms->data_path[$file_type].DEV_SCHEMA."_".$file_uid);
unset($file_uid);
unset($file_id);
$delete_done = 1;
@@ -296,7 +296,7 @@ if ($cms->action_flag == 'set_live' && $cms->action = 'set_delete') {
while ($res = $cms->db_return($q)) {
$q_del = "DELETE FROM ".PUBLIC_SCHEMA.".file WHERE file_uid = '".$res['pkid'].'"';
$cms->db_exec($q_del);
@unlink(ROOT.MEDIA.$cms->data_path[$res['type']].PUBLIC_SCHEMA."_".$res['file_uid']);
@unlink(BASE.MEDIA.$cms->data_path[$res['type']].PUBLIC_SCHEMA."_".$res['file_uid']);
}
$q = "DELETE FROM ".LOGIN_DB_SCHEMA.".set_live WHERE table_name = '".$cms->page_name."' AND delete_flag = 't'";
$cms->db_exec($q);

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2008/08/14
@@ -8,5 +8,5 @@
*********************************************************************/
// print debug messages
echo $login->print_error_msg();
echo $cms->print_error_msg();
echo $login->printErrorMsg();
echo $cms->printErrorMsg();

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2008/08/01
@@ -23,11 +23,6 @@ extract($_POST, EXTR_SKIP);
// set output to quiet for load of classes & session settings
ob_start();
require("config.inc");
// login class, DB connections & Admin class, Smarty extension
foreach (array ('Login', 'Admin.Backend', 'Smarty.Extend') as $class) {
_spl_autoload('Class.'.$class.'.inc');
}
//------------------------------ library include end
//------------------------------ basic variable settings start
@@ -50,21 +45,19 @@ if (array_key_exists('action', $_POST) && $_POST['action'] != 'download_csv') {
//------------------------------ class init start
// login & page access check
$login = new login($DB_CONFIG[LOGIN_DB], $lang);
$login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
// post login lang check
if ($_SESSION['DEFAULT_LANG']) {
$lang = $_SESSION['DEFAULT_LANG'];
}
// create smarty object
$smarty = new SmartyML($lang);
$smarty = new CoreLibs\Template\SmartyExtend($lang);
// create new DB class
$cms = new AdminBackend($DB_CONFIG[MAIN_DB], $lang);
// set search path to the default DB schema
$cms->db_exec("SET search_path TO ".DB_SCHEMA);
$cms = new CoreLibs\Admin\Backend($DB_CONFIG[MAIN_DB], $lang);
// the menu show flag (what menu to show)
$cms->menu_show_flag = 'main';
// db nfo
$cms->db_info();
$cms->dbInfo();
// set acl
$cms->acl = $login->acl;
//------------------------------ class init end

View File

@@ -1 +0,0 @@
../libs/

View File

@@ -1 +0,0 @@
../log/

42
www/admin/namespace_test.php Executable file
View File

@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
$DEBUG_ALL = 1;
$PRINT_ALL = 1;
$DB_DEBUG = 1;
// namespace test
ob_start();
// admin class tests
require 'config.inc' ;
DEFINE('SET_SESSION_NAME', EDIT_SESSION_NAME);
echo "DIR: ".DIR."<br>ROOT: ".ROOT."<br>BASE: ".BASE."<br>";
$lang = 'ja_utf8';
$base = new CoreLibs\Admin\Backend($DB_CONFIG[MAIN_DB], $lang);
ob_end_flush();
print "Start time: ".$base->runningTime()."<br>";
print "ByteStringFormat: ".$base->ByteStringFormat(1234567.12)."<br>";
print "byteStringFormat: ".$base->byteStringFormat(1234567.12)."<br>";
print "get_page_name [DEPRECATED]: ".$base->get_page_name()."<br>";
print "getPageName: ".$base->getPageName()."<br>";
print "DB Info: ".$base->dbInfo(1)."<br>";
print "End Time: ".$base->runningTime()."<br>";
print "Run Time: ".$base->runningTime()."<br>";
$base->resetRunningtime();
print "Lang: ".$base->l->__getLang().", MO File: ".$base->l->__getMoFile()."<br>";
print "Translate test: Year -> ".$base->l->__('Year')."<br>";
// end error print
print $base->printErrorMsg();
# __END__

23
www/admin/other_test.php Executable file
View File

@@ -0,0 +1,23 @@
<?php
namespace Foo;
class FooBar
{
public $foo = '';
public function __construct()
{
$this->foo = 'BAR';
}
public function otherBarBar($wrong)
{
echo "B: $wrong<br>";
}
public function barBar($wrong)
{
echo "B: $wrong<br>";
}
}

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2007/09/03
@@ -15,7 +15,7 @@ if ($_SESSION['TEMPLATE']) {
} else {
$TEMPLATE = DEFAULT_TEMPLATE;
}
$TEMPLATE_DIR = $TEMPLATE.'/';
$TEMPLATE_DIR = $TEMPLATE;
// master template
if (!$MASTER_TEMPLATE_NAME) {
$MASTER_TEMPLATE_NAME = MASTER_TEMPLATE_NAME;
@@ -41,7 +41,7 @@ $lang_short = substr($lang, 0, 2);
$CONTENT_INCLUDE = str_replace(".php", ".tpl", $cms->page_name);
$FORM_NAME = !isset($FORM_NAME) || !$FORM_NAME ? str_replace(".php", "", $cms->page_name) : $FORM_NAME;
// set local page title
$L_TITLE = ucfirst(str_replace('_', ' ', $cms->get_page_name(1))).' - '.$G_TITLE;
$L_TITLE = ucfirst(str_replace('_', ' ', $cms->getPageName(1))).' - '.$G_TITLE;
// strip tpl and replace it with inc
// php include file per page
$cms->INC_TEMPLATE_NAME = str_replace(".tpl", ".inc", $CONTENT_INCLUDE);
@@ -55,13 +55,13 @@ $cms->CSS_SPECIAL_TEMPLATE_NAME = @$CSS_NAME;
$cms->JS_SPECIAL_TEMPLATE_NAME = @$JS_NAME;
// set basic template path (tmp)
$smarty->setTemplateDir(LAYOUT.$TEMPLATE_DIR.TEMPLATES.'/');
$cms->lang_dir = LAYOUT.$TEMPLATE_DIR.LANG."/";
$cms->includes = LAYOUT.$TEMPLATE_DIR.INCLUDES."/";
$cms->javascript = LAYOUT.$TEMPLATE_DIR.JS."/";
$cms->css = LAYOUT.$TEMPLATE_DIR.CSS."/";
$cms->pictures = LAYOUT.$TEMPLATE_DIR.IMAGES."/";
$cms->cache_pictures = LAYOUT.$TEMPLATE_DIR.CACHE.IMAGES.'/';
$smarty->setTemplateDir(LAYOUT.$TEMPLATE_DIR.TEMPLATES);
$cms->lang_dir = LAYOUT.$TEMPLATE_DIR.LANG;
$cms->includes = LAYOUT.$TEMPLATE_DIR.INCLUDES;
$cms->javascript = LAYOUT.$TEMPLATE_DIR.JS;
$cms->css = LAYOUT.$TEMPLATE_DIR.CSS;
$cms->pictures = LAYOUT.$TEMPLATE_DIR.IMAGES;
$cms->cache_pictures = LAYOUT.$TEMPLATE_DIR.CACHE.IMAGES;
$cms->cache_pictures_root = ROOT.$cms->cache_pictures;
if (!is_dir($cms->cache_pictures_root)) {
mkdir($cms->cache_pictures_root);
@@ -69,13 +69,13 @@ if (!is_dir($cms->cache_pictures_root)) {
$template_set = $TEMPLATE;
// if we don't find the master template, set the template path back AND set the insert template as absolute path
if (!file_exists(ROOT.$smarty->getTemplateDir()[0]."/".MASTER_TEMPLATE_NAME)) {
if (file_exists(ROOT.$smarty->getTemplateDir()[0]."/".$TEMPLATE_NAME)) {
$TEMPLATE_NAME = ROOT.$smarty->getTemplateDir()[0]."/".$TEMPLATE_NAME;
if (!file_exists(ROOT.$smarty->getTemplateDir()[0].DS.MASTER_TEMPLATE_NAME)) {
if (file_exists(ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME)) {
$TEMPLATE_NAME = ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME;
}
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$template_set = DEFAULT_TEMPLATE;
} elseif (!file_exists(ROOT.$smarty->getTemplateDir()[0]."/".$TEMPLATE_NAME)) {
} elseif (!file_exists(ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME)) {
// check if the template exists in the template path, if not, set path to to default
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$template_set = DEFAULT_TEMPLATE;
@@ -85,25 +85,25 @@ if (!file_exists(ROOT.$smarty->getTemplateDir()[0]."/".MASTER_TEMPLATE_NAME)) {
// check if the javascript folder exists in the template path, if not fall back to default
if (!is_dir($cms->javascript)) {
$cms->javascript = LAYOUT.DEFAULT_TEMPLATE.JS."/";
$cms->javascript = LAYOUT.DEFAULT_TEMPLATE.JS;
}
// check if lang_dir folder exists in the template path, if not fall back to default
if (!is_dir($cms->lang_dir)) {
$cms->lang_dir = LAYOUT.DEFAULT_TEMPLATE.LANG."/";
$cms->lang_dir = LAYOUT.DEFAULT_TEMPLATE.LANG;
}
// check if include folder exists in the template path, if not fall back to default
if (!is_dir($cms->includes)) {
$cms->includes = LAYOUT.DEFAULT_TEMPLATE.INCLUDES."/";
$cms->includes = LAYOUT.DEFAULT_TEMPLATE.INCLUDES;
}
// check if css folder exists in the template path, if not fall back to default
if (!is_dir($cms->css)) {
$cms->css = LAYOUT.DEFAULT_TEMPLATE.CSS."/";
$cms->css = LAYOUT.DEFAULT_TEMPLATE.CSS;
}
if (!is_dir($cms->pictures)) {
$cms->pictures = LAYOUT.DEFAULT_TEMPLATE.PICTURES.'/';
$cms->pictures = LAYOUT.DEFAULT_TEMPLATE.PICTURES;
}
if (!is_dir($cms->cache_pictures)) {
$cms->cache_pictures = LAYOUT.DEFAULT_TEMPLATE.CACHE.IMAGES.'/';
$cms->cache_pictures = LAYOUT.DEFAULT_TEMPLATE.CACHE.IMAGES;
}
// if the template_dir is != DEFAULT_TEMPLATE, then try to make a lang switch

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2005/07/12
@@ -84,7 +84,7 @@ $cms->DATA['LANG'] = $lang;
$cms->DATA['TINYMCE_LANG'] = $lang_short;
// debug data, if DEBUG flag is on, this data is print out
$cms->DEBUG_DATA['debug_error_msg'] = $cms->running_time();
$cms->DEBUG_DATA['debug_error_msg'] = $cms->runningTime();
$cms->DEBUG_DATA['DEBUG'] = @$DEBUG_TMPL;
// create main data array
@@ -93,4 +93,10 @@ $cms->CONTENT_DATA = array_merge($cms->HEADER, $cms->DATA, $cms->DEBUG_DATA);
while (list($key, $value) = each($cms->CONTENT_DATA)) {
$smarty->assign($key, $value);
}
if (is_dir(BASE.TEMPLATES_C)) {
$smarty->setCompileDir(BASE.TEMPLATES_C);
}
if (is_dir(BASE.CACHE)) {
$smarty->setCacheDir(BASE.CACHE);
}
$smarty->display($MASTER_TEMPLATE_NAME, $TEMPLATE.$lang, $TEMPLATE.$lang);

View File

@@ -1,4 +1,4 @@
<?
<?php
$ENABLE_ERROR_HANDLING = 0;
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
$DEBUG_ALL = 1;

View File

@@ -1 +0,0 @@
../templates_c/

View File

@@ -1 +0,0 @@
../tmp/

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2003/06/10
@@ -21,67 +21,66 @@ DEFINE('DEFAULT_LANG', "en_utf8");
DEFINE('DEFAULT_ENCODING', "UTF-8");
/************* PATHS *********************/
// directory seperator
DEFINE('DS', DIRECTORY_SEPARATOR);
// ** NEW/BETTER DIR DECLARATIONS **
// path to original file (if symlink)
DEFINE('DIR', __DIR__."/");
// libs base path based on DIR
DEFINE('LIBDIR', DIR.'libs/');
// SMARTY path based on DIR
DEFINE('SMARTYDIR', DIR.'Smarty/');
// table arrays for Class Form
DEFINE('TABLEARRAYDIR', DIR.'table_arrays/');
DEFINE('DIR', __DIR__.DS);
// base dir root folder level
DEFINE('BASE', str_replace('configs', '', __DIR__));
// ** OLD DIR DECLARATIONS **
// path to document root of file called
DEFINE('ROOT', getcwd()."/");
DEFINE('ROOT', getcwd().DS);
// libs path
DEFINE('LIBS', "libs/");
DEFINE('LIB', 'lib'.DS);
DEFINE('LIBS', 'lib'.DS);
// includes (strings, arrays for static, etc)
DEFINE('INCLUDES', "includes/");
DEFINE('INCLUDES', 'includes'.DS);
// layout base path
DEFINE('LAYOUT', 'layout/');
DEFINE('LAYOUT', 'layout'.DS);
// pic-root (compatible to CMS)
DEFINE('PICTURES', "images/");
DEFINE('PICTURES', "images".DS);
// images
DEFINE('IMAGES', "images/");
DEFINE('IMAGES', "images".DS);
// icons (below the images/ folder)
DEFINE('ICONS', 'icons/');
DEFINE('ICONS', 'icons'.DS);
// media
DEFINE('MEDIA', "media/");
DEFINE('MEDIA', "media".DS);
// flash-root (below media)
DEFINE('FLASH', "flash/");
DEFINE('FLASH', "flash".DS);
// uploads (anything to keep)
DEFINE('UPLOADS', "uploads/");
DEFINE('UPLOADS', "uploads".DS);
// files (binaries) (below media)
DEFINE('BINARIES', "binaries/");
DEFINE('BINARIES', "binaries".DS);
// files (videos) (below media)
DEFINE('VIDEOS', "videos/");
DEFINE('VIDEOS', "videos".DS);
// files (documents) (below media)
DEFINE('DOCUMENTS', "documents/");
DEFINE('DOCUMENTS', "documents".DS);
// files (pdfs) (below media)
DEFINE('PDFS', "documents/");
DEFINE('PDFS', "documents".DS);
// css
DEFINE('CSS', "css/");
DEFINE('CSS', "css".DS);
// js
DEFINE('JS', "javascript/");
DEFINE('JS', "javascript".DS);
// table arrays
DEFINE('TABLE_ARRAYS', "table_arrays/");
DEFINE('TABLE_ARRAYS', "table_arrays".DS);
// smarty libs path
DEFINE('SMARTY', "Smarty/");
DEFINE('SMARTY', "Smarty".DS);
// po langs
DEFINE('LANG', "lang/");
DEFINE('LANG', "lang".DS);
// cache path
DEFINE('CACHE', "cache/");
DEFINE('CACHE', "cache".DS);
// temp path
DEFINE('TMP', "tmp/");
DEFINE('TMP', "tmp".DS);
// log files
DEFINE('LOG', 'log/');
DEFINE('LOG', 'log'.DS);
// template base
DEFINE('TEMPLATES', "templates/");
DEFINE('TEMPLATES', "templates".DS);
// frontend template dir', only for admin
DEFINE('TEMPLATES_FRONTEND', "templates_frontend/");
DEFINE('TEMPLATES_FRONTEND', "templates_frontend".DS);
// default template
DEFINE('DEFAULT_TEMPLATE', "default/");
DEFINE('DEFAULT_TEMPLATE', "default".DS);
// default template file
DEFINE('DEFAULT_TEMPLATE_FILE', 'default.tpl');
@@ -249,27 +248,7 @@ if (DEBUG == false) {
// any other global definitons here
// DEFINE('SOME_ID', <SOME VALUE>);
// function that will be called on top of each class include to load the class
function _spl_autoload($include_file)
{
// where to search for the files to include
$dirs = array (
LIBDIR,
SMARTYDIR,
TABLEARRAYDIR,
'',
LIBS,
SMARTY,
TABLE_ARRAYS,
__DIR__.'/'.LIBS,
__DIR__.'/'.SMARTY
);
// try to find and load the class ifle
foreach ($dirs as $folder) {
if (file_exists($folder.$include_file)) {
require_once($folder.$include_file);
return true;
}
}
return false;
}
// read auto loader
require BASE.LIB.'autoloader.php';
# __END__

View File

@@ -10,11 +10,11 @@
msgid ""
msgstr ""
"Project-Id-Version: Project Version\n"
"Report-Msgid-Bugs-To: clemens.schwaighofer@e-graphics.com\n"
"POT-Creation-Date: 2005-08-09 09:26+0900\n"
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: \n"
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@e-graphics.com>\n"
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,6 +1,6 @@
#********************************************************************
# AUTHOR: Clemens Schwaighofer
# CREATED: 2007/04/18
# CREATED: 2018/03/28
# SHORT DESCRIPTION:
# Backend Japanese Messages file for gettext
# to craete: msgfmt -o ja.mo messages_ja.po
@@ -10,14 +10,54 @@
msgid ""
msgstr ""
"Project-Id-Version: Project Version\n"
"Report-Msgid-Bugs-To: clemens.schwaighofer@e-graphics.com\n"
"POT-Creation-Date: 2007-04-18 17:40+0900\n"
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: \n"
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@e-graphics.com>\n"
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Yes"
msgstr ""
msgstr "はい"
msgid "No"
msgstr "いいえ"
# Basic date info
msgid "Year"
msgstr "年"
msgid "Month"
msgstr "月"
msgid "Day"
msgstr "日"
msgid "Hour"
msgstr "時"
msgid "Minute"
msgstr "分"
msgid "Mon"
msgstr "月"
msgid "Tue"
msgstr "火"
msgid "Wed"
msgstr "水"
msgid "Thu"
msgstr "木"
msgid "Fri"
msgstr "金"
msgid "Sat"
msgstr "土"
msgid "Sun"
msgstr "日"

View File

@@ -1,8 +1,8 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2000/06/01
* VERSION: 4.0.0
* VERSION: 5.0.0
* RELEASED LICENSE: GNU GPL 3
* SHORT DESCRIPTON:
* ~ 2003/03/03: change the whole include file into one class
@@ -57,10 +57,9 @@
* 2000-06-01: created basic idea and functions
*********************************************************************/
// try to include file from LIBS path, or from normal path
_spl_autoload('Class.DB.IO.inc');
namespace CoreLibs\ACL;
class login extends db_io
class Login extends \CoreLibs\DB\IO
{
private $euid; // the user id var
private $permission_okay = 0; // is set to one if login okay, or EUID is set and user is okay to access this page
@@ -92,7 +91,11 @@ class login extends db_io
$this->log_per_class = 1;
// create db connection and init base class
parent::__construct($db_config, $debug, $db_debug, $echo, $print);
if (!parent::__construct($db_config, $debug, $db_debug, $echo, $print)) {
echo "Could not connect to DB<br>";
// if I can't connect to the DB to auth exit hard. No access allowed
exit;
}
// no session could be found at all
if (!session_id()) {
@@ -100,14 +103,15 @@ class login extends db_io
exit;
}
// get the language sub class & init it
_spl_autoload('Class.l10n.inc');
$this->l = new l10n($lang);
$this->l = new \CoreLibs\Language\L10n($lang);
// if we have a search path we need to set it, to use the correct DB to login
// check what schema to use. if there is a login schema use this, else check if there is a schema set in the config, or fall back to DB_SCHEMA if this exists, if this also does not exists use public schema
$SCHEMA = defined('LOGIN_DB_SCHEMA') ? LOGIN_DB_SCHEMA : ($db_config['db_schema'] ? $db_config['db_schema'] : (defined('DB_SCHEMA') ? DB_SCHEMA : 'public'));
$this->db_exec("SET search_path TO ".$SCHEMA);
// set schema if schema differs to schema set in db conneciton
if ($this->dbGetSchema() && $this->dbGetSchema() != $SCHEMA) {
$this->dbExec("SET search_path TO ".$SCHEMA);
}
$this->euid = array_key_exists('EUID', $_SESSION) ? $_SESSION['EUID'] : 0; // if there is none, there is none, saves me POST/GET check
// get login vars, are so, can't be changed
// prepare
@@ -165,16 +169,16 @@ class login extends db_io
// internal
$this->class_info["login"] = array(
"class_name" => "Login",
"class_version" => "4.0.0",
"class_version" => "5.0.0",
"class_created" => "2000-06-01",
"class_author" => "cs/gullevek/at"
"class_author" => "Clemens Schwaighofer"
);
// init default ACL list array
$_SESSION['DEFAULT_ACL_LIST'] = array ();
// read the current edit_access_right list into an array
$q = "SELECT level, type, name FROM edit_access_right WHERE level >= 0 ORDER BY level";
while ($res = $this->db_return($q)) {
while ($res = $this->dbReturn($q)) {
// level to description format (numeric)
$this->default_acl_list[$res['level']] = array (
'type' => $res['type'],
@@ -185,19 +189,19 @@ class login extends db_io
$_SESSION['DEFAULT_ACL_LIST'] = $this->default_acl_list;
// if username & password & !$euid start login
$this->login_login_user();
$this->loginLoginUser();
// checks if $euid given check if user is okay for that side
$this->login_check_permissions();
$this->loginCheckPermissions();
// logsout user
$this->login_logout_user();
$this->loginLogoutUser();
// if the password change flag is okay, run the password change method
if ($this->password_change) {
$this->login_password_change();
$this->loginPasswordChange();
}
// if !$euid || permission not okay, print login screan
echo $this->login_print_login();
echo $this->loginPrintLogin();
// closing all connections, depending on error status, exit
if (!$this->login_close_class()) {
if (!$this->loginCloseClass()) {
// do not go anywhere, quit processing here
// do something with possible debug data?
if (TARGET == 'live' || TARGET == 'remote') {
@@ -206,14 +210,14 @@ class login extends db_io
$this->echo_output_all = 0;
$this->print_output_all = DEBUG ? 1 : 0;
}
$status_msg = $this->print_error_msg();
$status_msg = $this->printErrorMsg();
if ($this->echo_output_all) {
echo $status_msg;
}
exit;
}
// set acls for this user/group and this page
$this->login_set_acl();
$this->loginSetAcl();
}
// METHOD: _login
@@ -225,11 +229,12 @@ class login extends db_io
parent::__destruct();
}
// METHOD: login_login_user
// METHOD: loginLoginUser
// WAS : login_login_user
// PARAMS: none
// RETURN: none
// DESC : if user pressed login button this script is called, but only if there is no preview euid set
private function login_login_user()
private function loginLoginUser()
{
// have to get the global stuff here for setting it later
if (!$this->euid && $this->login) {
@@ -253,7 +258,7 @@ class login extends db_io
$q .= "eg.edit_access_right_id = eareg.edit_access_right_id AND ";
// password match is done in script, against old plain or new blowfish encypted
$q .= "(LOWER(username) = '".strtolower($this->username)."') ";
$res = $this->db_return($q);
$res = $this->dbReturn($q);
// username is wrong, but we throw for wrong username and wrong password the same error
if (!$this->cursor_ext[md5($q)]["num_rows"]) {
$this->login_error = 1010;
@@ -280,13 +285,24 @@ class login extends db_io
} elseif ($res['locked']) {
// user is locked, either set or auto set
$this->login_error = 105;
} elseif ((preg_match("/^\\$2(a|y)\\$/", $res['password']) && CRYPT_BLOWFISH != 1) || (preg_match("/^\\$1\\$/", $res['password']) && CRYPT_MD5 != 1) || (preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password']) && CRYPT_STD_DES != 1)) {
} elseif ((preg_match("/^\\$2(a|y)\\$/", $res['password']) && CRYPT_BLOWFISH != 1) ||
(preg_match("/^\\$1\\$/", $res['password']) && CRYPT_MD5 != 1) ||
(preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password']) && CRYPT_STD_DES != 1)
) {
// this means password cannot be decrypted because of missing crypt methods
$this->login_error = 9999;
} elseif ((preg_match("/^\\$2(a|y)\\$/", $res['password']) || preg_match("/^\\$1\\$/", $res['password']) || preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password'])) && !$this->verifyCryptString($this->password, $res['password'])) {
} elseif ((preg_match("/^\\$2(a|y)\\$/", $res['password']) ||
preg_match("/^\\$1\\$/", $res['password']) ||
preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password'])) &&
!$this->verifyCryptString($this->password, $res['password'])
) {
// check passwword as crypted, $2a$ or $2y$ is blowfish start, $1$ is MD5 start, $\w{12} is standard DES
$this->login_error = 1011;
} elseif (!preg_match("/^\\$2(a|y)\\$/", $res['password']) && !preg_match("/^\\$1\\$/", $res['password']) && !preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password']) && $res['password'] != $this->password) {
} elseif (!preg_match("/^\\$2(a|y)\\$/", $res['password']) &&
!preg_match("/^\\$1\\$/", $res['password']) &&
!preg_match("/^\\$[0-9A-Za-z.]{12}$/", $res['password']) &&
$res['password'] != $this->password
) {
// check old plain password, non case sensitive
$this->login_error = 1012;
} else {
@@ -294,7 +310,7 @@ class login extends db_io
// set class var and session var
$_SESSION["EUID"] = $this->euid = $res["edit_user_id"];
// check if user is okay
$this->login_check_permissions();
$this->loginCheckPermissions();
if (!$this->login_error) {
// now set all session vars and read page permissions
$GLOBALS["DEBUG_ALL"] = $_SESSION["DEBUG_ALL"] = $res["debug"];
@@ -314,7 +330,7 @@ class login extends db_io
// reset any login error count for this user
if ($res['login_error_count'] > 0) {
$q = "UPDATE edit_user SET login_error_count = 0, login_error_date_last = NULL, login_error_date_first = NULL WHERE edit_user_id = ".$res['edit_user_id'];
$this->db_exec($q);
$this->dbExec($q);
}
$pages = array();
$edit_page_ids = array();
@@ -324,7 +340,7 @@ class login extends db_io
$q .= "WHERE ep.edit_page_id = epa.edit_page_id AND ear.edit_access_right_id = epa.edit_access_right_id ";
$q .= "AND epa.enabled = 1 AND epa.edit_group_id = ".$res["edit_group_id"]." ";
$q .= "ORDER BY ep.order_number";
while ($res = $this->db_return($q)) {
while ($res = $this->dbReturn($q)) {
// page id array for sub data readout
$edit_page_ids[] = $res['edit_page_id'];
// create the array for pages
@@ -348,22 +364,26 @@ class login extends db_io
} // for each page
// get the visible groups for all pages and write them to the pages
$_edit_page_id = 0;
$q = "SELECT epvg.edit_page_id, name, flag FROM edit_visible_group evp, edit_page_visible_group epvg WHERE evp.edit_visible_group_id = epvg.edit_visible_group_id AND epvg.edit_page_id IN (".join(', ', $edit_page_ids).") ORDER BY epvg.edit_page_id";
while ($res = $this->db_return($q)) {
$q = "SELECT epvg.edit_page_id, name, flag ";
$q .= "FROM edit_visible_group evp, edit_page_visible_group epvg ";
$q .= "WHERE evp.edit_visible_group_id = epvg.edit_visible_group_id AND epvg.edit_page_id IN (".join(', ', $edit_page_ids).") ";
$q .= "ORDER BY epvg.edit_page_id";
while ($res = $this->dbReturn($q)) {
if ($res['edit_page_id'] != $_edit_page_id) {
// search the pos in the array push
$pos = $this->array_search_recursive($res['edit_page_id'], $pages, 'edit_page_id');
$pos = $this->arraySearchRecursive($res['edit_page_id'], $pages, 'edit_page_id');
$_edit_page_id = $res['edit_page_id'];
}
$pages[$pos[0]]['visible'][$res['name']] = $res['flag'];
}
// get the same for the query strings
$_edit_page_id = 0;
$q = "SELECT eqs.edit_page_id, name, value, dynamic FROM edit_query_string eqs WHERE enabled = 1 AND edit_page_id IN (".join(', ', $edit_page_ids).") ORDER BY eqs.edit_page_id";
while ($res = $this->db_return($q)) {
$q = "SELECT eqs.edit_page_id, name, value, dynamic FROM edit_query_string eqs ";
$q .= "WHERE enabled = 1 AND edit_page_id IN (".join(', ', $edit_page_ids).") ORDER BY eqs.edit_page_id";
while ($res = $this->dbReturn($q)) {
if ($res['edit_page_id'] != $_edit_page_id) {
// search the pos in the array push
$pos = $this->array_search_recursive($res['edit_page_id'], $pages, 'edit_page_id');
$pos = $this->arraySearchRecursive($res['edit_page_id'], $pages, 'edit_page_id');
$_edit_page_id = $res['edit_page_id'];
}
$pages[$pos[0]]['query'][] = array (
@@ -378,16 +398,17 @@ class login extends db_io
// load the edit_access user rights
$q = "SELECT ea.edit_access_id, level, type, ea.name, ea.color, ea.uid, edit_default ";
$q .= "FROM edit_access_user eau, edit_access_right ear, edit_access ea ";
$q .= "WHERE eau.edit_access_id = ea.edit_access_id AND eau.edit_access_right_id = ear.edit_access_right_id AND eau.enabled = 1 AND edit_user_id = ".$this->euid." ";
$q .= "WHERE eau.edit_access_id = ea.edit_access_id AND eau.edit_access_right_id = ear.edit_access_right_id ";
$q .= "AND eau.enabled = 1 AND edit_user_id = ".$this->euid." ";
$q .= "ORDER BY ea.name";
$unit_access = array();
$eauid = array();
$unit_acl = array();
while ($res = $this->db_return($q)) {
while ($res = $this->dbReturn($q)) {
// read edit access data fields and drop them into the unit access array
$q_sub ="SELECT name, value FROM edit_access_data WHERE enabled = 1 AND edit_access_id = ".$res['edit_access_id'];
$ea_data = array ();
while ($res_sub = $this->db_return($q_sub)) {
while ($res_sub = $this->dbReturn($q_sub)) {
$ea_data[$res_sub['name']] = $res_sub['value'];
}
// build master unit array
@@ -419,8 +440,10 @@ class login extends db_io
$login_error_date_first = ', login_error_date_first = NOW()';
}
// update login error count for this user
$q = "UPDATE edit_user SET login_error_count = login_error_count + 1, login_error_date_last = NOW() $login_error_date_first WHERE edit_user_id = ".$res['edit_user_id'];
$this->db_exec($q);
$q = "UPDATE edit_user ";
$q .= "SET login_error_count = login_error_count + 1, login_error_date_last = NOW() $login_error_date_first ";
$q .= "WHERE edit_user_id = ".$res['edit_user_id'];
$this->dbExec($q);
// totally lock the user if error max is reached
if ($res['login_error_count'] + 1 > $this->max_login_error_count) {
// do some alert reporting in case this error is too big
@@ -441,21 +464,22 @@ class login extends db_io
} // if he pressed login at least and is not yet loggined in
}
// METHOD: login_check_permission
// METHOD: loginCheckPermissions
// WAS : login_check_permission
// PARAMS: none
// RETUNR none
// DESC : for every page the user access this script checks if he is allowed to do so
public function login_check_permissions()
public function loginCheckPermissions()
{
if ($this->euid && $this->login_error != 103) {
$q = "SELECT filename ";
$q .= "FROM edit_page ep, edit_page_access epa, edit_group eg, edit_user eu ";
$q .= "WHERE ep.edit_page_id = epa.edit_page_id AND eg.edit_group_id = epa.edit_group_id AND eg.edit_group_id = eu.edit_group_id ";
$q .= "AND eu.edit_user_id = ".$this->euid." AND filename = '".$this->page_name."' AND eg.enabled = 1 AND epa.enabled = 1";
$res = $this->db_return_row($q);
$res = $this->dbReturnRow($q);
// unset mem limit if debug is set to 1
// if (($GLOBALS["DEBUG_ALL"] || $GLOBALS["DB_DEBUG"] || $_SESSION["DEBUG_ALL"] || $_SESSION["DB_DEBUG"]) && ini_get('memory_limit') != -1)
// ini_set('memory_limit', -1);
// if (($GLOBALS["DEBUG_ALL"] || $GLOBALS["DB_DEBUG"] || $_SESSION["DEBUG_ALL"] || $_SESSION["DB_DEBUG"]) && ini_get('memory_limit') != -1)
// ini_set('memory_limit', -1);
if ($res["filename"] == $this->page_name) {
$this->permission_okay = 1;
} else {
@@ -467,11 +491,12 @@ class login extends db_io
return $this->permission_okay;
}
// METHOD: login_logout_user
// METHOD: loginLogoutUser
// WAS : login_logout_user
// PARAMS: none
// RETURN: none
// DESC : if a user pressed on logout, destroyes session and unsets all global vars
public function login_logout_user()
public function loginLogoutUser()
{
if ($this->logout || $this->login_error) {
// unregister and destroy session vars
@@ -495,7 +520,8 @@ class login extends db_io
}
}
// METHOD: login_set_acl
// METHOD: loginSetAcl
// WAS : login_set_acl
// PARAMS: none
// RETURN: none
// DESC : sets all the basic ACLs
@@ -512,7 +538,7 @@ class login extends db_io
// * if an account ACL is set, set this parallel, account ACL overrides user ACL if it applies
// * if edit access ACL level is set, use this, else use page
// set all base ACL levels as a list keyword -> ACL number
public function login_set_acl()
public function loginSetAcl()
{
// we start with the default acl
$this->acl['base'] = DEFAULT_ACL_LEVEL;
@@ -595,11 +621,12 @@ class login extends db_io
// $this->debug('ACL', $this->print_ar($this->acl));
}
// METHOD: login_check_edit_access
// METHOD: loginCheckEditAccess
// WAS : login_check_edit_access
// PARAMS: edit_access_id to check
// RETURN: true/false: if the edit access is not in the valid list: false
// DESC : checks if this edit access id is valid
public function login_check_edit_access($edit_access_id)
public function loginCheckEditAccess($edit_access_id)
{
if (array_key_exists($edit_access_id, $this->acl['unit'])) {
return true;
@@ -608,11 +635,12 @@ class login extends db_io
}
}
// METHOD: login_password_change
// METHOD: loginPasswordChange
// WAS : login_password_change
// PARAMS: none
// RETURN: none
// DESC : changes a user password
private function login_password_change()
private function loginPasswordChange()
{
if ($this->change_password) {
$event = 'Password Change';
@@ -624,8 +652,8 @@ class login extends db_io
}
// check user exist, if not -> error
if (!$this->login_error) {
$q = "SELECT edit_user_id FROM edit_user WHERE enabled = 1 AND username = '".$this->db_escape_string($this->pw_username)."'";
list ($edit_user_id) = $this->db_return_row($q);
$q = "SELECT edit_user_id FROM edit_user WHERE enabled = 1 AND username = '".$this->dbEscapeString($this->pw_username)."'";
list ($edit_user_id) = $this->dbReturnRow($q);
if (!$edit_user_id) {
// username wrong
$this->login_error = 201;
@@ -634,8 +662,8 @@ class login extends db_io
}
// check old passwords match -> error
if (!$this->login_error) {
$q = "SELECT edit_user_id FROM edit_user WHERE enabled = 1 AND username = '".$this->db_escape_string($this->pw_username)."' AND password = '".$this->db_escape_string($this->pw_old_password)."'";
list ($edit_user_id) = $this->db_return_row($q);
$q = "SELECT edit_user_id FROM edit_user WHERE enabled = 1 AND username = '".$this->dbEscapeString($this->pw_username)."' AND password = '".$this->dbEscapeString($this->pw_old_password)."'";
list ($edit_user_id) = $this->dbReturnRow($q);
if (!$edit_user_id) {
// old password wrong
$this->login_error = 202;
@@ -659,8 +687,8 @@ class login extends db_io
// no error change this users password
if (!$this->login_error) {
// update the user (edit_user_id) with the new password
$q = "UPDATE edit_user SET password = '".$this->db_escape_string($this->cryptString($this->pw_new_password))."' WHERE edit_user_id = ".$edit_user_id;
$this->db_exec($q);
$q = "UPDATE edit_user SET password = '".$this->dbEscapeString($this->cryptString($this->pw_new_password))."' WHERE edit_user_id = ".$edit_user_id;
$this->dbExec($q);
$data = 'Password change for user "'.$this->pw_username.'" from "'.$this->pw_old_password.'" to "'.$this->pw_new_password.'"';
}
} else {
@@ -673,15 +701,16 @@ class login extends db_io
} // button pressed
}
// METHOD: login_print_login
// METHOD: loginPrintLogin
// WAS : login_print_login
// PARAMS: none
// RETURN: none
// DESC : prints out login html part if no permission (error) is set
private function login_print_login()
private function loginPrintLogin()
{
if (!$this->permission_okay) {
// set the templates now
$this->login_set_templates();
$this->loginSetTemplates();
// if there is a global logout target ...
if (file_exists($this->logout_target) && $this->logout_target) {
$LOGOUT_TARGET = $this->logout_target;
@@ -728,11 +757,12 @@ class login extends db_io
} // if permission is 0 then print out login
}
// METHOD: login_close_class
// METHOD: loginCloseClass
// WAS : login_close_class
// PARAMS: none
// RETURN: none
// DESC : last function called, writes log and prints out error msg and exists script if permission 0
private function login_close_class()
private function loginCloseClass()
{
// write to LOG table ...
if ($this->login_error || $this->login || $this->logout) {
@@ -750,9 +780,9 @@ class login extends db_io
if ($this->euid) {
// get user from user table
$q = "SELECT username, password FROM edit_user WHERE edit_user_id = ".$this->euid;
list($username, $password) = $this->db_return_row($q);
list($username, $password) = $this->dbReturnRow($q);
} // if euid is set, get username (or try)
$this->write_log($event, '', $this->login_error, $username, $password);
$this->writeLog($event, '', $this->login_error, $username, $password);
} // write log under certain settings
// now close DB connection
// $this->error_msg = $this->_login();
@@ -763,11 +793,12 @@ class login extends db_io
}
}
// METHOD: login_set_templates
// METHOD: loginSetTemplates
// WAS : login_set_templates
// PARAMS:
// RETURN: none
// DESC : checks if there are external templates, if not uses internal fallback ones
private function login_set_templates()
private function loginSetTemplates()
{
$strings = array (
'HTML_TITLE' => $this->l->__("LOGIN"),
@@ -911,13 +942,14 @@ EOM;
}
}
// METHOD: write_log
// METHOD: writeLog
// WAS : write_log
// PARAMS: event -> string of what has been done
// data -> data information (id, etc)
// error -> if error, write error string (not enougth data, etc)
// RETURN: none
// DESC : writes detailed data into the edit user log table (keep log what user does)
private function write_log($event, $data, $error = "", $username = "", $password = "")
private function writeLog($event, $data, $error = "", $username = "", $password = "")
{
if ($this->login) {
$this->action = 'Login';
@@ -931,31 +963,32 @@ EOM;
'_FILES' => $_FILES,
'error' => $this->login_error
);
$data_binary = $this->db_escape_bytea(bzcompress(serialize($_data_binary)));
$data_binary = $this->dbEscapeBytea(bzcompress(serialize($_data_binary)));
// SQL querie for log entry
$q = "INSERT INTO edit_log ";
$q .= "(username, password, euid, event_date, event, error, data, data_binary, page, ";
$q .= "ip, user_agent, referer, script_name, query_string, server_name, http_host, http_accept, http_accept_charset, http_accept_encoding, session_id, ";
$q .= "action, action_id, action_yes, action_flag, action_menu, action_loaded, action_value, action_error) ";
$q .= "VALUES ('".$this->db_escape_string($username)."', '".$this->db_escape_string($password)."', ".(($this->euid) ? $this->euid : 'NULL').", ";
$q .= "NOW(), '".$this->db_escape_string($event)."', '".$this->db_escape_string($error)."', '".$this->db_escape_string($data)."', '".$data_binary."', '".$this->page_name."', ";
$q .= "VALUES ('".$this->dbEscapeString($username)."', '".$this->dbEscapeString($password)."', ".(($this->euid) ? $this->euid : 'NULL').", ";
$q .= "NOW(), '".$this->dbEscapeString($event)."', '".$this->dbEscapeString($error)."', '".$this->dbEscapeString($data)."', '".$data_binary."', '".$this->page_name."', ";
foreach (array('REMOTE_ADDR', 'HTTP_USER_AGENT', 'HTTP_REFERER', 'SCRIPT_FILENAME', 'QUERY_STRING', 'SERVER_NAME', 'HTTP_HOST', 'HTTP_ACCEPT', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_ENCODING') as $server_code) {
if (array_key_exists($server_code, $_SERVER)) {
$q .= "'".$this->db_escape_string($_SERVER[$server_code])."', ";
$q .= "'".$this->dbEscapeString($_SERVER[$server_code])."', ";
} else {
$q .= "NULL, ";
}
}
$q .= "'".session_id()."', ";
$q .= "'".$this->db_escape_string($this->action)."', '".$this->db_escape_string($this->username)."', NULL, '".$this->db_escape_string($this->login_error)."', NULL, NULL, '".$this->db_escape_string($this->permission_okay)."', NULL)";
$this->db_exec($q, 'NULL');
$q .= "'".$this->dbEscapeString($this->action)."', '".$this->dbEscapeString($this->username)."', NULL, '".$this->dbEscapeString($this->login_error)."', NULL, NULL, '".$this->dbEscapeString($this->permission_okay)."', NULL)";
$this->dbExec($q, 'NULL');
}
// METHOD: login_check_edit_access_id
// METHOD: loginCheckEditAccessId
// WAS : login_check_edit_access_id
// PARAMS: edit access id to check
// RETURN: same edit access id if ok, or the default edit access id if given one is not valud
// DESC : checks that the given edit access id is valid for this user
public function login_check_edit_access_id($edit_access_id)
public function loginCheckEditAccessId($edit_access_id)
{
if (!array_key_exists($edit_access_id, $_SESSION["UNIT"])) {
return $_SESSION["UNIT_DEFAULT"];
@@ -964,11 +997,12 @@ EOM;
}
}
// METHOD: login_set_edit_access_data
// METHOD: loginSetEditAccessData
// WAS : login_set_edit_access_data
// PARAMS: edit access id, key value to search for
// RETURN: false for not found or string for found data
// DESC : searchs in the data set for the unit for the data key and returns the value asociated with it
public function login_set_edit_access_data($edit_access_id, $data_key)
public function loginSetEditAccessData($edit_access_id, $data_key)
{
if (!$_SESSION['UNIT'][$edit_access_id]['data'][$data_key]) {
return false;
@@ -977,3 +1011,5 @@ EOM;
}
}
} // close class
# __END__

View File

@@ -1,8 +1,8 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2006/08/15
* VERSION: 0.1.0
* VERSION: 1.0.0
* RELEASED LICENSE: GNU GPL 3
* DESCRIPTION
* Basic Admin interface backend
@@ -22,10 +22,9 @@
*
*********************************************************************/
// try to include file from LIBS path, or from normal path
_spl_autoload('Class.DB.IO.inc');
namespace CoreLibs\Admin;
class AdminBackend extends db_io
class Backend extends \CoreLibs\DB\IO
{
// page name
public $page_name; // the name of the current page
@@ -61,24 +60,21 @@ class AdminBackend extends db_io
public function __construct($db_config, $lang, $debug = 0, $db_debug = 0, $echo = 1, $print = 0)
{
// get the language sub class & init it
_spl_autoload('Class.l10n.inc');
$this->l = new l10n($lang);
$this->l = new \CoreLibs\Language\L10n($lang);
// init the database class
// $this->db_io($db_config, $debug, $db_debug, $echo, $print);
parent::__construct($db_config, $debug, $db_debug, $echo, $print);
// internal
$this->class_info["adbBackend"] = array(
"class_name" => "Admin Interface Backend",
"class_version" => "0.1.0",
"class_version" => "1.0.0",
"class_created" => "2006/08/15",
"class_author" => "cs/gullevek/jp"
"class_author" => "Clemens Schwaighofer"
);
// set page name
$this->page_name = $this->get_page_name();
$this->page_name = $this->getPageName();
// set the action ids
foreach ($this->action_list as $_action) {
@@ -122,15 +118,15 @@ class AdminBackend extends db_io
// METHOD: adbEditLog()
// PARAMS: event -> any kind of event description, data -> any kind of data related to that event
// RETURN: none
// DESC: writes all action vars plus other info into edit_log table
// DESC : writes all action vars plus other info into edit_log table
public function adbEditLog($event = '', $data = '', $write_type = 'STRING')
{
if ($write_type == 'BINARY') {
$data_binary = $this->db_escape_bytea(bzcompress(serialize($data)));
$data_binary = $this->dbEscapeBytea(bzcompress(serialize($data)));
$data = 'see bzip compressed data_binary field';
}
if ($write_type == 'STRING') {
$data = $this->db_escape_string(serialize($data));
$data = $this->dbEscapeString(serialize($data));
}
$q = "INSERT INTO ".LOGIN_DB_SCHEMA.".edit_log ";
@@ -138,31 +134,24 @@ class AdminBackend extends db_io
$q .= "ip, user_agent, referer, script_name, query_string, server_name, http_host, http_accept, http_accept_charset, http_accept_encoding, session_id, ";
$q .= "action, action_id, action_yes, action_flag, action_menu, action_loaded, action_value, action_error) ";
$q .= "VALUES ";
$q .= "(".@$_SESSION['EUID'].", NOW(), '".$this->db_escape_string($event)."', '".$data."', '".$data_binary."', '".$this->page_name."', ";
$q .= "'".@$_SERVER["REMOTE_ADDR"]."', '".$this->db_escape_string(@$_SERVER['HTTP_USER_AGENT'])."', ";
$q .= "'".$this->db_escape_string(@$_SERVER['HTTP_REFERER'])."', '".$this->db_escape_string(@$_SERVER['SCRIPT_FILENAME'])."', ";
$q .= "'".$this->db_escape_string(@$_SERVER['QUERY_STRING'])."', '".$this->db_escape_string(@$_SERVER['SERVER_NAME'])."', ";
$q .= "'".$this->db_escape_string(@$_SERVER['HTTP_HOST'])."', '".$this->db_escape_string(@$_SERVER['HTTP_ACCEPT'])."', ";
$q .= "'".$this->db_escape_string(@$_SERVER['HTTP_ACCEPT_CHARSET'])."', '".$this->db_escape_string(@$_SERVER['HTTP_ACCEPT_ENCODING'])."', ";
$q .= "(".@$_SESSION['EUID'].", NOW(), '".$this->dbEscapeString($event)."', '".$data."', '".$data_binary."', '".$this->page_name."', ";
$q .= "'".@$_SERVER["REMOTE_ADDR"]."', '".$this->dbEscapeString(@$_SERVER['HTTP_USER_AGENT'])."', ";
$q .= "'".$this->dbEscapeString(@$_SERVER['HTTP_REFERER'])."', '".$this->dbEscapeString(@$_SERVER['SCRIPT_FILENAME'])."', ";
$q .= "'".$this->dbEscapeString(@$_SERVER['QUERY_STRING'])."', '".$this->dbEscapeString(@$_SERVER['SERVER_NAME'])."', ";
$q .= "'".$this->dbEscapeString(@$_SERVER['HTTP_HOST'])."', '".$this->dbEscapeString(@$_SERVER['HTTP_ACCEPT'])."', ";
$q .= "'".$this->dbEscapeString(@$_SERVER['HTTP_ACCEPT_CHARSET'])."', '".$this->dbEscapeString(@$_SERVER['HTTP_ACCEPT_ENCODING'])."', ";
$q .= "'".session_id()."', ";
$q .= "'".$this->db_escape_string($this->action)."', '".$this->db_escape_string($this->action_id)."', ";
$q .= "'".$this->db_escape_string($this->action_yes)."', '".$this->db_escape_string($this->action_flag)."', ";
$q .= "'".$this->db_escape_string($this->action_menu)."', '".$this->db_escape_string($this->action_loaded)."', ";
$q .= "'".$this->db_escape_string($this->action_value)."', '".$this->db_escape_string($this->action_error)."')";
$this->db_exec($q, 'NULL');
$q .= "'".$this->dbEscapeString($this->action)."', '".$this->dbEscapeString($this->action_id)."', ";
$q .= "'".$this->dbEscapeString($this->action_yes)."', '".$this->dbEscapeString($this->action_flag)."', ";
$q .= "'".$this->dbEscapeString($this->action_menu)."', '".$this->dbEscapeString($this->action_loaded)."', ";
$q .= "'".$this->dbEscapeString($this->action_value)."', '".$this->dbEscapeString($this->action_error)."')";
$this->dbExec($q, 'NULL');
}
// ==================================
// ALL THE PAGE RIGHTS/USER RIGHTS/ETC need to fixed and put into one
// proper settings have to be done with the defined top down rights flow
// ==================================
// all ACLs are set in the login class
// METHOD: adbTopMenu
// PARAMS: level
// RETURN: returns an array for the top menu with all correct settings
// DESC: menu creater
// DESC : menu creater
public function adbTopMenu($flag = 0)
{
if ($this->menu_show_flag) {
@@ -174,13 +163,11 @@ class AdminBackend extends db_io
if (!is_array($pages)) {
$pages = array ();
}
//$this->debug('pages', $this->print_ar($pages));
// $this->debug('pages', $this->print_ar($pages));
// if flag is 0, then we show all, else, we show only the matching flagges array points
// array is already sorted after correct order
reset($pages);
for ($i = 0; $i < count($pages); $i ++) {
for ($i = 0, $iMax = count($pages); $i < $iMax; $i ++) {
$show = 0;
// is it visible in the menu & is it online
if ($pages[$i]["menu"] && $pages[$i]["online"]) {
@@ -205,7 +192,7 @@ class AdminBackend extends db_io
}
$query_string = '';
if (count($pages[$i]["query"])) {
for ($j = 0; $j < count($pages[$i]["query"]); $j ++) {
for ($j = 0, $jMax = count($pages[$i]["query"]); $j < $jMax; $j ++) {
if (strlen($query_string)) {
$query_string .= "&";
}
@@ -224,7 +211,7 @@ class AdminBackend extends db_io
$name = $pages[$i]["page_name"];
// if page name matchs -> set selected flag
$selected = 0;
if ($this->get_page_name() == $pages[$i]["filename"]) {
if ($this->getPageName() == $pages[$i]["filename"]) {
$selected = 1;
$this->page_name = $name;
}
@@ -244,7 +231,7 @@ class AdminBackend extends db_io
// METHOD: adbShowMenuPoint
// PARAMS: filename
// RETURN: returns boolean true/false
// DESC: checks if this filename is in the current situation (user id, etc) available
// DESC : checks if this filename is in the current situation (user id, etc) available
public function adbShowMenuPoint($filename)
{
$enabled = 0;
@@ -260,20 +247,20 @@ class AdminBackend extends db_io
// METHOD: adbAssocArray
// PARAMS: db array, key, value part
// RETURN: returns and associative array
// DESC: creates out of a normal db_return array an assoc array
// DESC : creates out of a normal db_return array an assoc array
public function adbAssocArray($db_array, $key, $value)
{
return $this->GenAssocArray($db_array, $key, $value);
return $this->genAssocArray($db_array, $key, $value);
}
// REMARK: below function has moved to "Class.Basic"
// METHOD: adbByteStringFormat
// PARAMS: int
// RETURN: string
// DESC: converts bytes into formated string with KB, MB, etc
// DESC : converts bytes into formated string with KB, MB, etc
public function adbByteStringFormat($number)
{
return $this->ByteStringFormat($number);
return $this->byteStringFormat($number);
}
// REMARK: below function has moved to "Class.Basic"
@@ -285,10 +272,10 @@ class AdminBackend extends db_io
// path -> if source start is not ROOT path, if empty ROOT is choosen
// cache -> cache path, if not given TMP is used
// RETURN: thumbnail name
// DESC: converts picture to a thumbnail with max x and max y size
// DESC : converts picture to a thumbnail with max x and max y size
public function adbCreateThumbnail($pic, $size_x, $size_y, $dummy = false, $path = "", $cache = "")
{
return $this->CreateThumbnail($pic, $size_x, $size_y, $dummy, $path, $cache);
return $this->createThumbnail($pic, $size_x, $size_y, $dummy, $path, $cache);
}
// METHOD: adbMsg
@@ -296,7 +283,7 @@ class AdminBackend extends db_io
// msg -> string, can be printf formated
// var array -> optional data for a possible printf formated msg
// RETURN: none
// DESC: wrapper function to fill up the mssages array
// DESC : wrapper function to fill up the mssages array
public function adbMsg($level, $msg, $vars = array ())
{
if (!preg_match("/^info|warning|error$/", $level)) {
@@ -329,82 +316,47 @@ class AdminBackend extends db_io
// associate -> NULL for free, LOCK for first insert, group key for reference to first entry
// file -> string for special file copy actions; mostyle "test#live;..."
// RETURN: none
// DESC: writes live queue
// DESC : writes live queue
public function adbLiveQueue($queue_key, $type, $target, $data, $key_name, $key_value, $associate = null, $file = null)
{
$q = "INSERT INTO ".GLOBAL_DB_SCHEMA.".live_queue (";
$q .= "queue_key, key_value, key_name, type, target, data, group_key, action, associate, file";
$q .= ") VALUES (";
$q .= "'".$this->db_escape_string($queue_key)."', '".$this->db_escape_string($key_value)."', ";
$q .= "'".$this->db_escape_string($key_name)."', '".$this->db_escape_string($type)."', ";
$q .= "'".$this->db_escape_string($target)."', '".$this->db_escape_string($data)."', ";
$q .= "'".$this->queue_key."', '".$this->action."', '".$this->db_escape_string($associate)."', ";
$q .= "'".$this->db_escape_string($file)."')";
$q .= "'".$this->dbEscapeString($queue_key)."', '".$this->dbEscapeString($key_value)."', ";
$q .= "'".$this->dbEscapeString($key_name)."', '".$this->dbEscapeString($type)."', ";
$q .= "'".$this->dbEscapeString($target)."', '".$this->dbEscapeString($data)."', ";
$q .= "'".$this->queue_key."', '".$this->action."', '".$this->dbEscapeString($associate)."', ";
$q .= "'".$this->dbEscapeString($file)."')";
$this->db_exec($q);
}
// METHOD: adbPrintDateTime
// PARAMS: year, month, day, hour, min: the date and time values
// suffix: additional info printed after the date time variable in the drop down, also used for ID in the on change JS call
// minute steps, can be 1 (default), 5, 10, etc, if invalid (outside 1h range, it falls back to 1min)
// suffix: additional info printed after the date time variable in the drop down,
// also used for ID in the on change JS call
// minute steps: can be 1 (default), 5, 10, etc, if invalid (outside 1h range,
// it falls back to 1min)
// name pos back: default false, if set to true, the name will be printend
// after the drop down and not before the drop down
// RETURN: HTML formated strings for drop down lists of date and time
// DESC: print the date/time drop downs, used in any queue/send/insert at date/time place
public function adbPrintDateTime($year, $month, $day, $hour, $min, $suffix = '', $min_steps = 1)
// DESC : print the date/time drop downs, used in any queue/send/insert at date/time place
// NOTE : Basic class holds exact the same, except the Year/Month/Day/etc strings
// are translated in this call
public function adbPrintDateTime($year, $month, $day, $hour, $min, $suffix = '', $min_steps = 1, $name_pos_back = false)
{
// if suffix given, add _ before
if ($suffix) {
$suffix = '_'.$suffix;
// get the build layout
$html_time = $this->printDateTime($year, $month, $day, $hour, $min, $suffix, $min_steps, $name_pos_back);
// translate the strings inside
foreach (array('Year ', 'Month ', 'Day ', 'Hour ', 'Minute ') as $_time) {
$html_time = str_replace($_time, $this->l->__(str_replace(' ', '', $_time)).' ', $html_time);
}
if ($min_steps < 1 || $min_steps > 59) {
$min_steps = 1;
// replace week days in short
foreach (array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun') as $_date) {
$html_time = str_replace('('.$_date.')', '('.$this->l->__($_date).')', $html_time);
}
$on_change_call = 'dt_list(\''.$suffix.'\');';
// always be 1h ahead (for safety)
$timestamp = time() + 3600; // in seconds
// the max year is this year + 1;
$max_year = date("Y", $timestamp) + 1;
// preset year, month, ...
$year = (!$year) ? date("Y", $timestamp) : $year;
$month = (!$month) ? date("m", $timestamp) : $month;
$day = (!$day) ? date("d", $timestamp) : $day;
$hour = (!$hour) ? date("H", $timestamp) : $hour;
$min = (!$min) ? date("i", $timestamp) : $min; // add to five min?
// max days in selected month
$days_in_month = date("t", strtotime($year."-".$month."-".$day." ".$hour.":".$min.":0"));
// from now to ?
$string = $this->l->__('Year').' ';
$string .= '<select id="year'.$suffix.'" name="year'.$suffix.'" onChange="'.$on_change_call.'">';
for ($i = date("Y"); $i <= $max_year; $i ++) {
$string .= '<option value="'.$i.'" '.(($year == $i) ? 'selected' : '').'>'.$i.'</option>';
}
$string .= '</select> '.$this->l->__('Month').' ';
$string .= '<select id="month'.$suffix.'" name="month'.$suffix.'" onChange="'.$on_change_call.'">';
for ($i = 1; $i <= 12; $i ++) {
$string .= '<option value="'.(($i < 10) ? '0'.$i : $i).'" '.(($month == $i) ? 'selected' : '').'>'.$i.'</option>';
}
$string .= '</select> '.$this->l->__('Day').' ';
$string .= '<select id="day'.$suffix.'" name="day'.$suffix.'" onChange="'.$on_change_call.'">';
for ($i = 1; $i <= $days_in_month; $i ++) {
// set weekday text based on current month ($month) and year ($year)
$string .= '<option value="'.(($i < 10) ? '0'.$i : $i).'" '.(($day == $i) ? 'selected' : '').'>'.$i.' ('.$this->l->__(date('D', mktime(0, 0, 0, $month, $i, $year))).')</option>';
}
$string .= '</select> '.$this->l->__('Hour').' ';
$string .= '<select id="hour'.$suffix.'" name="hour'.$suffix.'" onChange="'.$on_change_call.'">';
for ($i = 0; $i <= 23; $i ++) {
$string .= '<option value="'.(($i < 10) ? '0'.$i : $i).'" '.(($hour == $i) ? 'selected' : '').'>'.$i.'</option>';
}
$string .= '</select> '.$this->l->__('Minute').' ';
$string .= '<select id="min'.$suffix.'" name="min'.$suffix.'" onChange="'.$on_change_call.'">';
for ($i = 0; $i <= 59; $i += $min_steps) {
$string .= '<option value="'.(( $i < 10) ? '0'.$i : $i).'" '.(($min == $i) ? 'selected' : '').'>'.$i.'</option>';
}
$string .= '</select>';
// return the datetime select string
return $string;
// return the datetime select string with strings translated
return $html_time;
}
}
# __END__

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2002/12/17
* VERSION: 0.4.0
* VERSION: 1.0.0
* RELEASED LICENSE: GNU GPL 3
* SHORT DESCRIPTION:
* SHORT DESC :RIPTION:
* DB Array IO Class:
* writes, reads or deletes a complete array (one data set) in/out a
* table from the connected DB.
@@ -14,9 +14,9 @@
*
* PRIVATE VARIABLES
*
* PUBLIC METHODS
* PUBLIC METHOD:S
*
* PRIVATE METHODS
* PRIVATE METHOD:S
*
* HISTORY:
* 2005/07/07 (cs) updated array class for postgres: set 0 & NULL if int field given, insert uses () values () syntax
@@ -36,11 +36,10 @@
// as it actually has nothing to do with this one here ? (or at least
// put into separete function in this class)
// try to include file from LIBS path, or from normal path
_spl_autoload('Class.DB.IO.inc');
namespace CoreLibs\DB\Extended;
// subclass for one array handling
class db_array_io extends db_io
class ArrayIO extends \CoreLibs\DB\IO
{
// main calss variables
public $table_array; // the array from the table to work on
@@ -48,14 +47,14 @@ class db_array_io extends db_io
public $pk_name; // the primary key from this table
public $pk_id; // the PK id
// METHOD db_array_io
// PARAMS db_config -> db_io class init vars
// table_array -> the array from the table
// table_name -> name of the table (for the array)
// db_debug -> turn on db_io debug output (DB_DEBUG as global var does the same)
// RETURN none
// DESC constructor for the array io class, set the
// primary key name automatically (from array)
// METHOD: db_array_io
// PARAMS: db_config -> db_io class init vars
// table_array -> the array from the table
// table_name -> name of the table (for the array)
// db_debug -> turn on db_io debug output (DB_DEBUG as global var does the same)
// RETURN: none
// DESC : constructor for the array io class, set the
// primary key name automatically (from array)
public function __construct($db_config, $table_array, $table_name, $debug = 0, $db_debug = 0, $echo = 1, $print = 0)
{
// instance db_io class
@@ -69,7 +68,7 @@ class db_array_io extends db_io
// set primary key for given table_array
if ($this->table_array) {
while (list($key, $value) = each($table_array)) {
foreach ($table_array as $key => $value) {
if ($value["pk"]) {
$this->pk_name = $key;
}
@@ -78,9 +77,9 @@ class db_array_io extends db_io
// internal
$this->class_info["db_array_io"] = array(
"class_name" => "DB Array IO",
"class_version" => "0.4.0",
"class_version" => "1.0.0",
"class_created" => "2002/12/17",
"class_author" => "cs/gullevek/at"
"class_author" => "Clemens Schwaighofer"
);
}
@@ -90,14 +89,15 @@ class db_array_io extends db_io
parent::__destruct();
}
// METHOD convert_data
// PARAMS string -> the string that should be changed
// RETURN string -> the altered string
// DESC changes all previously alterd HTML code into visible one,
// works for <b>,<i>, and <a> (thought <a> can be / or should
// be handled with the magic links functions
// used with the read function
public function convert_data($text)
// METHOD: convertData
// WAS : convert_data
// PARAMS: string -> the string that should be changed
// RETURN: string -> the altered string
// DESC : changes all previously alterd HTML code into visible one,
// works for <b>,<i>, and <a> (thought <a> can be / or should
// be handled with the magic links functions
// used with the read function
public function convertData($text)
{
$text = str_replace('&lt;b&gt;', '<b>', $text);
$text = str_replace('&lt;/b&gt;', '</b>', $text);
@@ -110,11 +110,12 @@ class db_array_io extends db_io
return $text;
}
// METHOD convert_entities
// PARAMS string -> string to be changed
// RETURN string -> altered string
// DESC changeds all HTML entities into non HTML ones
public function convert_entities($text)
// METHOD: convertEntities
// WAS : convert_entities
// PARAMS: string -> string to be changed
// RETURN: string -> altered string
// DESC : changeds all HTML entities into non HTML ones
public function convertEntities($text)
{
$text = str_replace('&lt;', '<', $text);
$text = str_replace('&gt;', '>', $text);
@@ -124,14 +125,15 @@ class db_array_io extends db_io
return $text;
}
// METHOD db_dump_array
// PARAMS none
// RETURN returns the current array
// DESC dumps the current data
public function db_dump_array($write = 0)
// METHOD: dbDumpArray
// WAS : db_dump_array
// PARAMS: none
// RETURN: returns the current array
// DESC : dumps the current data
public function dbDumpArray($write = 0)
{
reset($this->table_array);
while (list($column, $data_array) = each($this->table_array)) {
foreach ($this->table_array as $column => $data_array) {
$string .= "<b>".$column."</b> -> ".$data_array["value"]."<br>";
}
// add output to internal error_msg
@@ -141,24 +143,12 @@ class db_array_io extends db_io
return $string;
}
// METHOD _db_error
// PARAMS none
// RETURN none
// DESC writes errors to internal error string
/* function _db_error()
{
// if error occured
if ($this->error_id)
{
$this->error_msg['db'] .= "<b>-DB_ARRAY-error-></b> ".$this->error_id.": ".$this->error_string[$this->error_id]." <br>";
}
} */
// METHOD db_check_pk_set
// PARAMS none
// RETURN none
// DESC checks if pk is set and if not, set from pk_id and if this also not set return 0
public function db_check_pk_set()
// METHOD: dbCheckPkSet
// WAS : db_check_pk_set
// PARAMS: none
// RETURN: none
// DESC : checks if pk is set and if not, set from pk_id and if this also not set return 0
public function dbCheckPkSet()
{
// if pk_id is set, overrule ...
if ($this->pk_id) {
@@ -168,21 +158,22 @@ class db_array_io extends db_io
if (!$this->table_array[$this->pk_name]["value"]) {
// if no PK found, error ...
$this->error_id = 21;
$this->_db_error();
$this->__dbError();
return 0;
} else {
return 1;
}
}
// METHOD db_reset_array
// PARAMS reset_pk -> if set reset the pk too
// RETURN none
// DESC resets the whole array
public function db_reset_array($reset_pk = 0)
// METHOD: dbResetArray
// WAS : db_reset_array
// PARAMS: reset_pk -> if set reset the pk too
// RETURN: none
// DESC : resets the whole array
public function dbResetArray($reset_pk = 0)
{
reset($this->table_array);
while (list($column, $data_array) = each($this->table_array)) {
foreach ($this->table_array as $column => $data_array) {
if (!$this->table_array[$column]["pk"]) {
unset($this->table_array[$column]["value"]);
} elseif ($reset_pk) {
@@ -191,16 +182,17 @@ class db_array_io extends db_io
}
}
// METHOD db_delete
// PARAMS optional the table_array, if not given uses class var
// RETURN 1 for successfull delete or 0 for error
// DESC deletes one dataset
public function db_delete($table_array = 0)
// METHOD: dbDelete
// WAS : db_delete
// PARAMS: optional the table_array, if not given uses class var
// RETURN: 1 for successfull delete or 0 for error
// DESC : deletes one dataset
public function dbDelete($table_array = 0)
{
if (is_array($table_array)) {
$this->table_array = $table_array;
}
if (!$this->db_check_pk_set()) {
if (!$this->dbCheckPkSet()) {
return $this->table_array;
}
// delete query
@@ -208,8 +200,8 @@ class db_array_io extends db_io
$q .= $this->pk_name." = ".$this->table_array[$this->pk_name]["value"]." ";
// delete files and build FK query
reset($this->table_array);
while (list($column, $data_array) = each($this->table_array)) {
// suchen nach bildern und löschen ...
foreach ($this->table_array as $column => $data_array) {
// suchen nach bildern und lschen ...
if ($this->table_array[$column]["file"] && file_exists($this->table_array[$column]["url"].$this->table_array[$column]["value"])) {
if (file_exists($this->table_array[$column]["path"].$this->table_array[$column]["value"])) {
unlink($this->table_array[$column]["path"].$this->table_array[$column]["value"]);
@@ -227,7 +219,7 @@ class db_array_io extends db_io
}
$q_where .= $column." = ".$this->table_array[$column]["value"];
}
// allgemeines zurücksetzen des arrays
// allgemeines zurcksetzen des arrays
unset($this->table_array[$column]["value"]);
}
@@ -237,29 +229,30 @@ class db_array_io extends db_io
}
// if 0, error
unset($this->pk_id);
if (!$this->db_exec($q)) {
if (!$this->dbExec($q)) {
$this->error_id=22;
$this->_db_error();
$this->__dbError();
}
return $this->table_array;
}
// METHOD db_read
// PARAMS edit -> if 1 data will not be altered for output, optional the table_array, if not given uses class var
// RETURN true or false for reading
// DESC reads one row into the array
public function db_read($edit = 0, $table_array = 0)
// METHOD: dbRead
// WAS : db_read
// PARAMS: edit -> if 1 data will not be altered for output, optional the table_array, if not given uses class var
// RETURN: true or false for reading
// DESC : reads one row into the array
public function dbRead($edit = 0, $table_array = 0)
{
// if array give, overrules internal array
if (is_array($table_array)) {
$this->table_array = $table_array;
}
if (!$this->db_check_pk_set()) {
if (!$this->dbCheckPkSet()) {
return $this->table_array;
}
reset($this->table_array);
// create select part & addition FK part
while (list($column, $data_array)=each($this->table_array)) {
foreach ($this->table_array as $column => $data_array) {
if ($q_select) {
$q_select .= ", ";
}
@@ -283,12 +276,12 @@ class db_array_io extends db_io
}
// if query was executed okay, else set error
if ($this->db_exec($q)) {
if ($res = $this->db_fetch_array()) {
if ($this->dbExec($q)) {
if ($res = $this->dbFetchArray()) {
reset($this->table_array);
while (list($column, $data_array) = each($this->table_array)) {
// wenn "edit" dann gib daten wie in DB zurück, ansonten aufbereiten für ausgabe
// ?? sollte das nicht draußen ??? man weis ja net was da drin steht --> is noch zu überlegen
foreach ($this->table_array as $column => $data_array) {
// wenn "edit" dann gib daten wie in DB zurck, ansonten aufbereiten fr ausgabe
// ?? sollte das nicht drauen ??? man weis ja net was da drin steht --> is noch zu berlegen
// echo "EDIT: $edit | Spalte: $column | type: ".$this->table_array[$column]["type"]." | Res: ".$res[$column]."<br>";
if ($edit) {
$this->table_array[$column]["value"] = $res[$column];
@@ -297,25 +290,26 @@ class db_array_io extends db_io
$this->table_array[$column]["HIDDEN_value"] = $res[$column];
}
} else {
$this->table_array[$column]["value"] = $this->convert_data(nl2br($res[$column]));
$this->table_array[$column]["value"] = $this->convertData(nl2br($res[$column]));
// had to put out the htmlentities from the line above as it breaks japanese characters
}
}
}
// possible db_fetch_array errors ...
// possible dbFetchArray errors ...
$this->pk_id = $this->table_array[$this->pk_name]["value"];
} else {
$this->error_id = 22;
$this->_db_error();
$this->__dbError();
}
return $this->table_array;
}
// METHOD db_write
// PARAMS addslashes -> if 1 will make an addslashes for each array field, optional the table_array, if not given uses class var
// RETURN true or false on write
// DESC writes on set into DB or updates one set (if PK exists)
public function db_write($addslashes = 0, $table_array = 0)
// METHOD: dbWrite
// WAS : db_write
// PARAMS: addslashes -> if 1 will make an addslashes for each array field, optional the table_array, if not given uses class var
// RETURN: true or false on write
// DESC : writes on set into DB or updates one set (if PK exists)
public function dbWrite($addslashes = 0, $table_array = 0)
{
if (is_array($table_array)) {
$this->table_array = $table_array;
@@ -332,8 +326,7 @@ class db_array_io extends db_io
}
reset($this->table_array);
while (list($column, $data_array) = each($this->table_array)) {
foreach ($this->table_array as $column => $data_array) {
/********************************* START FILE *************************************/
// file upload
if ($this->table_array[$column]["file"]) {
@@ -427,9 +420,9 @@ class db_array_io extends db_io
$q_data .= "'";
// if add slashes do convert & add slashes else write AS is
if ($addslashes) {
$q_data .= $this->db_escape_string($this->convert_entities($this->table_array[$column]["value"]));
$q_data .= $this->dbEscapeString($this->convertEntities($this->table_array[$column]["value"]));
} else {
$q_data .= $this->db_escape_string($this->table_array[$column]["value"]);
$q_data .= $this->dbEscapeString($this->table_array[$column]["value"]);
}
$q_data .= "'";
}
@@ -440,7 +433,7 @@ class db_array_io extends db_io
// get it at the end, cause now we can be more sure of no double IDs, etc
reset($this->table_array);
// create select part & addition FK part
while (list($column, $data_array) = each($this->table_array)) {
foreach ($this->table_array as $column => $data_array) {
// check FK ...
if ($this->table_array[$column]["fk"] && $this->table_array[$column]["value"]) {
if ($q_where) {
@@ -454,7 +447,7 @@ class db_array_io extends db_io
if (!$this->table_array[$this->pk_name]["value"]) {
// max id, falls INSERT
$q = "SELECT MAX(".$this->pk_name.") + 1 AS pk_id FROM ".$this->table_name;
$res = $this->db_return_row($q);
$res = $this->dbReturnRow($q);
if (!$res["pk_id"]) {
$res["pk_id"] = 1;
}
@@ -482,9 +475,9 @@ class db_array_io extends db_io
// $this->pk_id = $this->table_array[$this->pk_name]["value"];
}
// return success or not
if (!$this->db_exec($q)) {
if (!$this->dbExec($q)) {
$this->error_id = 22;
$this->_db_error();
$this->__dbError();
}
// set primary key
if ($insert) {
@@ -494,4 +487,60 @@ class db_array_io extends db_io
// return the table if needed
return $this->table_array;
}
// *************************************************************
// COMPATIBILITY METHODS
// those methods are deprecated function call names
// they exist for backwards compatibility only
// *************************************************************
public function convert_data($text)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->convertData($text);
}
public function convert_entities($text)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->convertEntities($text);
}
public function db_dump_array($write = 0)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbDumpArray($write);
}
public function db_check_pk_set()
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbCheckPkSet();
}
public function db_reset_array($reset_pk = 0)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbResetArray($reset_pk);
}
public function db_delete($table_array = 0)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbDelete($table_array);
}
public function db_read($edit = 0, $table_array = 0)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbRead($edit, $table_array);
}
public function db_write($addslashes = 0, $table_array = 0)
{
error_log('DEPRECATED CALL: '.__METHOD__.', '.__FILE__.':'.__LINE__.', '.debug_backtrace()[0]['file'].':'.debug_backtrace()[0]['line']);
return $this->dbWrite($addslashes, $table_array);
}
} // end of class
# __END__

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,14 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2003/04/09
* SHORT DESCRIPTION:
* 2018/3/23, the whole class system is transformed to namespaces
* also all internal class calls are converted to camel case
*
* pgsql wrapper calls
* HISTORY:
*
* HISTORY:
* 2008/04/16 (cs) wrapper for pg escape string
* 2007/01/11 (cs) add prepare/execute for postgres
* 2006/09/12 (cs) in case db_query retuns false, save the query and run the query through the send/get procedure to get correct error data from the db
@@ -37,7 +41,9 @@
*
*/
class db_pgsql
namespace CoreLibs\DB\SQL;
class PgSQL
{
private $last_error_query;
private $dbh;
@@ -50,7 +56,12 @@ class db_pgsql
{
}
public function _db_last_error_query()
// METHOD: __dbLastErrorQuery
// WAS : _db_last_error_query
// PARAMS: none
// RETURN: true/false if last error is set
// DESC : queries last error query and returns true or false if error was set
public function __dbLastErrorQuery()
{
if ($this->last_error_query) {
return true;
@@ -59,11 +70,12 @@ class db_pgsql
}
}
// METHOD: _db_query
// METHOD: __dbQuery
// WAS : _db_query
// PARAMS: query
// RETURN: query result
// DESC : wrapper for gp_query, catches error and stores it in class var
public function _db_query($query)
public function __dbQuery($query)
{
$this->last_error_query = '';
// read out the query status and save the query if needed
@@ -74,20 +86,22 @@ class db_pgsql
return $result;
}
// METHOD: _db_send_query
// METHOD: __dbSendQuery
// WAS : _db_send_query
// PARAMS: query
// RETURN: true/false if query was sent successful
// DESC : sends an async query to the server
public function _db_send_query($query)
public function __dbSendQuery($query)
{
return pg_send_query($this->dbh, $query);
}
// METHOD: _db_get_result
// METHOD: __dbGetResult
// WAS : _db_get_result
// PARAMS: none
// RETURN: resource handler
// DESC : wrapper for pg_get_result
public function _db_get_result()
public function __dbGetResult()
{
$this->last_error_query = '';
$result = pg_get_result($this->dbh);
@@ -97,11 +111,12 @@ class db_pgsql
return $result;
}
// METHOD: _db_close
// METHOD: __dbClose
// WAS : _db_close
// PARAMS: none
// RETURN: none
// DESC : wrapper for pg_close
public function _db_close()
public function __dbClose()
{
if (is_resource($this->dbh)) {
if (pg_connection_status($this->dbh) === PGSQL_CONNECTION_OK) {
@@ -110,11 +125,12 @@ class db_pgsql
}
}
// METHOD: _db_prepare
// METHOD: __dbPrepare
// WAS : _db_prepare
// PARAMS: prepare name, query
// RETURN: prepared statement handler
// DESC : wrapper for pg_prepare
public function _db_prepare($name, $query)
public function __dbPrepare($name, $query)
{
$result = pg_prepare($this->dbh, $name, $query);
if (!$result) {
@@ -123,11 +139,12 @@ class db_pgsql
return $result;
}
// METHOD: _db_execute
// METHOD: __dbExecute
// WAS : _db_execute
// PARAMS: prepare name, data for query
// RETURN: returns status
// DESC : wrapper for pg_execute for running a prepared statement
public function _db_execute($name, $data)
public function __dbExecute($name, $data)
{
$result = pg_execute($this->dbh, $name, $data);
if (!$result) {
@@ -136,38 +153,42 @@ class db_pgsql
return $result;
}
// METHOD: _db_num_rows
// METHOD: __dbNumRows
// WAS : _db_num_rows
// PARAMS: cursor
// RETURN: rows
// DESC : wrapper for pg_num_rows
public function _db_num_rows($cursor)
public function __dbNumRows($cursor)
{
return pg_num_rows($cursor);
}
// METHOD: _db_num_fields
// METHOD: __dbNumFields
// WAS : _db_num_fields
// PARAMS: cursor
// RETURN: number for fields in query
// DESC : wrapper for pg_num_fields
public function _db_num_fields($cursor)
public function __dbNumFields($cursor)
{
return pg_num_fields($cursor);
}
// METHOD: _db_field_name
// METHOD: __dbFieldName
// WAS : _db_field_name
// PARAMS: cursor, field position
// RETURN: name of field
// DESC : wrapper for pg_field_name
public function _db_field_name($cursor, $i)
public function __dbFieldName($cursor, $i)
{
return pg_field_name($cursor, $i);
}
// METHOD: _db_fetch_array
// METHOD: __dbFetchArray
// WAS : _db_fetch_array
// PARAMS: cursor, opt result type
// RETURN: row
// DESC : wrapper for pg_fetch_array
public function _db_fetch_array($cursor, $result_type = '')
public function __dbFetchArray($cursor, $result_type = '')
{
// result type is passed on as is [should be checked]
if ($result_type) {
@@ -177,32 +198,35 @@ class db_pgsql
}
}
// METHOD: _db_fetch_all
// METHOD: __dbFetchAll
// WAS : _db_fetch_all
// PARAMS: cursor
// RETURN: all rows as array
// DESC : wrapper for pg_fetch_array
public function _db_fetch_all($cursor)
public function __dbFetchAll($cursor)
{
return pg_fetch_all($cursor);
}
// METHOD: _db_affected_ros
// METHOD: __dbAffectedRows
// WAS : _db_affected_rows
// PARAMS: cursor
// RETURN: number for rows
// DESC : wrapper for pg_affected_rows
public function _db_affected_rows($cursor)
public function __dbAffectedRows($cursor)
{
return pg_affected_rows($cursor);
}
// METHOD: _db_insert_id
// METHOD: __dbInsertId
// WAS : _db_insert_id
// PARAMS: query, primary key name
// RETURN: last insert primary key
// DESC : reads the last inserted primary key for the query
// if ther is no pk_name tries to auto built it from the table name
// this only works if db schema is after "no plural names. and pk name is table name + _id
// detects schema prefix in table name
public function _db_insert_id($query, $pk_name)
public function __dbInsertId($query, $pk_name)
{
// only if an insert has been done
if (preg_match("/^insert /i", $query)) {
@@ -227,8 +251,8 @@ class db_pgsql
$seq = (($schema) ? $schema.'.' : '').$table."_".$pk_name."_seq";
$q = "SELECT CURRVAL('$seq') AS insert_id";
// I have to do manually or I overwrite the original insert internal vars ...
if ($q = $this->_db_query($q)) {
list($id) = $this->_db_fetch_array($q);
if ($q = $this->__dbQuery($q)) {
list($id) = $this->__dbFetchArray($q);
} else {
$id = array(-1, $q);
}
@@ -236,19 +260,20 @@ class db_pgsql
}
}
// METHOD: _db_primary_key
// METHOD: __dbPrimaryKey
// WAS : _db_primary_key
// PARAMS: table and optional schema
// RETURN: primary key name OR false if not possible
// DESC : queries database for the primary key name to this table in the selected schema
public function _db_primary_key($table, $schema = '')
public function __dbPrimaryKey($table, $schema = '')
{
if ($table) {
// check if schema set is different from schema given, only needed if schema is not empty
$table_prefix = '';
if ($schema) {
$q = "SHOW search_path";
$cursor = $this->_db_query($q);
$search_path = $this->_db_fetch_array($cursor)['search_path'];
$cursor = $this->__dbQuery($q);
$search_path = $this->__dbFetchArray($cursor)['search_path'];
if ($search_path != $schema) {
$table_prefix = $schema.'.';
}
@@ -271,9 +296,9 @@ class db_pgsql
$q .= "pg_attribute.attrelid = pg_class.oid AND ";
$q .= "pg_attribute.attnum = any(pg_index.indkey) ";
$q .= "AND indisprimary";
$cursor = $this->_db_query($q);
$cursor = $this->__dbQuery($q);
if ($cursor) {
return $this->_db_fetch_array($cursor)['column_name'];
return $this->__dbFetchArray($cursor)['column_name'];
} else {
return false;
}
@@ -282,11 +307,12 @@ class db_pgsql
}
}
// METHOD: _db_connect
// METHOD: __dbConnect
// WAS : _db_connect
// PARAMS: host name, user name, password, database name, optional port (defaults to default postgres port), optional ssl (default allow)
// RETURN: database handler
// DESC : wrapper for pg_connect, writes out failure to screen if error occurs (hidden var)
public function _db_connect($db_host, $db_user, $db_pass, $db_name, $db_port = 5432, $db_ssl = 'allow')
public function __dbConnect($db_host, $db_user, $db_pass, $db_name, $db_port = 5432, $db_ssl = 'allow')
{
// to avoid empty db_port
if (!$db_port) {
@@ -299,11 +325,12 @@ class db_pgsql
return $this->dbh;
}
// METHOD: _db_print_error
// METHOD: __dbPrintError
// WAS : _db_print_error
// PARAMS: database handler, cursor
// RETURN: error string (HTML)
// DESC : reads the last error for this cursor
public function _db_print_error($cursor = '')
public function __dbPrintError($cursor = '')
{
// run the query again for the error result here
if (!$cursor && $this->last_error_query) {
@@ -316,47 +343,52 @@ class db_pgsql
}
}
// METHOD: _db_meta_data
// METHOD: __dbMetaData
// WAS : _db_meta_data
// PARAMS: table name
// RETURN: array with table data
// DESC : wrapper for pg_emta_data
public function _db_meta_data($table)
public function __dbMetaData($table)
{
return pg_meta_data($this->dbh, $table);
}
// METHOD: _db_escape_string
// METHOD: __dbEscapeString
// WAS : _db_escape_string
// PARAMS: string
// RETURN: escaped string for postgres
// DESC : wrapper for pg_escape_string
public function _db_escape_string($string)
public function __dbEscapeString($string)
{
return pg_escape_string($this->dbh, $string);
}
// METHOD: _db_escape_bytea
// METHOD: __dbEscapeBytea
// WAS : _db_escape_bytea
// PARAMS: string
// RETURN: escape bytes for postgres
// DESC : wrapper for pg_escape_bytea
public function _db_escape_bytea($bytea)
public function __dbEscapeBytea($bytea)
{
return pg_escape_bytea($this->dbh, $bytea);
}
// METHOD: _db_connection_busy
// METHOD: __dbConnectionBusy
// WAS : _db_connection_busy
// PARAMS: none
// RETURN: true/false for busy connection
// DESC : wrapper for pg_connection_busy
public function _db_connection_busy()
public function __dbConnectionBusy()
{
return pg_connection_busy($this->dbh);
}
// METHOD: _db_version
// METHOD: __dbVersion
// WAS : _db_version
// PARAMS: none
// RETURN: databse version
// DESC : wrapper for pg_version
public function _db_version()
public function __dbVersion()
{
// array has client, protocol, server
// we just need the server
@@ -364,13 +396,14 @@ class db_pgsql
return $v['server'];
}
// METHOD: _db_array_parse
// METHOD: __dbArrayParse
// WAS : _db_array_parse
// PARAMS: input text, output array [needed]
// [internal] limit: are we at the end of the parse
// [internal] offset: shift for {}
// RETURN: array with the elements
// DESC : postgresql array to php array
public function _db_array_parse($text, &$output, $limit = false, $offset = 1)
public function __dbArrayParse($text, &$output, $limit = false, $offset = 1)
{
if (false === $limit) {
$limit = strlen($text) - 1;
@@ -393,3 +426,5 @@ class db_pgsql
return $output;
}
}
# __END__

View File

@@ -0,0 +1,48 @@
<?php
/*
Copyright (c) 2003, 2005, 2006, 2009 Danilo Segan <danilo@kvota.net>.
This file is part of PHP-gettext.
PHP-gettext is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
PHP-gettext is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PHP-gettext; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace CoreLibs\Language\Core;
// Preloads entire file in memory first, then creates a StringReader
// over it (it assumes knowledge of StringReader internals)
class CachedFileReader extends CoreLibs\Language\Core\StringReader
{
public function __construct($filename)
{
if (file_exists($filename)) {
$length = filesize($filename);
$fd = fopen($filename, 'rb');
if (!$fd) {
$this->error = 3; // Cannot read file, probably permissions
return false;
}
$this->_str = fread($fd, $length);
fclose($fd);
} else {
$this->error = 2; // File doesn't exist
return false;
}
}
}
# __END__

View File

@@ -0,0 +1,91 @@
<?php
/*
Copyright (c) 2003, 2005, 2006, 2009 Danilo Segan <danilo@kvota.net>.
This file is part of PHP-gettext.
PHP-gettext is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
PHP-gettext is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PHP-gettext; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace CoreLibs\Language\Core;
class FileReader
{
public $fr_pos;
public $fr_fd;
public $fr_length;
public function __construct($filename)
{
if (file_exists($filename)) {
$this->fr_length = filesize($filename);
$this->fr_pos = 0;
$this->fr_fd = fopen($filename, 'rb');
if (!$this->fr_fd) {
$this->error = 3; // Cannot read file, probably permissions
return false;
}
} else {
$this->error = 2; // File doesn't exist
return false;
}
}
public function read($bytes)
{
if ($bytes) {
fseek($this->fr_fd, $this->fr_pos);
// PHP 5.1.1 does not read more than 8192 bytes in one fread()
// the discussions at PHP Bugs suggest it's the intended behaviour
$data = '';
while ($bytes > 0) {
$chunk = fread($this->fr_fd, $bytes);
$data .= $chunk;
$bytes -= strlen($chunk);
}
$this->fr_pos = ftell($this->fr_fd);
return $data;
} else {
return '';
}
}
public function seekto($pos)
{
fseek($this->fr_fd, $pos);
$this->fr_pos = ftell($this->fr_fd);
return $this->fr_pos;
}
public function currentpos()
{
return $this->fr_pos;
}
public function length()
{
return $this->fr_length;
}
public function close()
{
fclose($this->fr_fd);
}
}
# __END__

View File

@@ -20,6 +20,8 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace CoreLibs\Language\Core;
/**
* Provides a simple gettext replacement that works independently from
* the system's gettext abilities.
@@ -32,7 +34,7 @@
* second parameter in the constructor (e.g. whenusing very large MO files
* that you don't want to keep in memory)
*/
class gettext_reader
class GetTextReader
{
// public:
public $error = 0; // public variable that holds error code (0 if no error)
@@ -454,3 +456,5 @@ class gettext_reader
}
}
}
# __END__

View File

@@ -0,0 +1,54 @@
<?php
/*
Copyright (c) 2003, 2005, 2006, 2009 Danilo Segan <danilo@kvota.net>.
This file is part of PHP-gettext.
PHP-gettext is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
PHP-gettext is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PHP-gettext; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace CoreLibs\Language\Core;
// Simple class to wrap file streams, string streams, etc.
// seek is essential, and it should be byte stream
class StreamReader
{
// should return a string [FIXME: perhaps return array of bytes?]
public function read($bytes)
{
return false;
}
// should return new position
public function seekto($position)
{
return false;
}
// returns current position
public function currentpos()
{
return false;
}
// returns length of entire stream (limit for seekto()s)
public function length()
{
return false;
}
}
# __END__

View File

@@ -0,0 +1,67 @@
<?php
/*
Copyright (c) 2003, 2005, 2006, 2009 Danilo Segan <danilo@kvota.net>.
This file is part of PHP-gettext.
PHP-gettext is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
PHP-gettext is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PHP-gettext; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace CoreLibs\Language\Core;
class StringReader
{
public $sr_pos;
public $sr_str;
public function __construct($str = '')
{
$this->sr_str = $str;
$this->sr_pos = 0;
}
public function read($bytes)
{
$data = substr($this->sr_str, $this->sr_pos, $bytes);
$this->sr_pos += $bytes;
if (strlen($this->sr_str) < $this->sr_pos) {
$this->sr_pos = strlen($this->sr_str);
}
return $data;
}
public function seekto($pos)
{
$this->sr_pos = $pos;
if (strlen($this->sr_str) < $this->sr_pos) {
$this->sr_pos = strlen($this->sr_str);
}
return $this->sr_pos;
}
public function currentpos()
{
return $this->sr_pos;
}
public function length()
{
return strlen($this->sr_str);
}
}
# __END__

View File

@@ -1,8 +1,8 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2004/11/18
* VERSION: 0.1.1
* VERSION: 1.0.0
* RELEASED LICENSE: GNU GPL 3
* SHORT DESCRIPTION:
* init class for gettext. Original was just a function & var setting include for wordpress.
@@ -14,7 +14,7 @@
*
* PUBLIC METHODS
* __: returns string (translated or original if not found)
* _e: echos out string (translated or original if not found)
* __e: echos out string (translated or original if not found)
* __ngettext: should return plural. never tested this.
*
* PRIVATE METHODS
@@ -23,10 +23,12 @@
* 2005/10/17 (cs) made an on the fly switch method (reload of lang)
*********************************************************************/
// try to include file from LIBS path, or from normal path
_spl_autoload('Class.Basic.inc');
namespace CoreLibs\Language;
class l10n extends basic
use \CoreLibs\Language\Core\FileReader;
use \CoreLibs\Language\Core\GetTextReader;
class L10n extends \CoreLibs\Basic
{
private $lang = '';
private $mofile = '';
@@ -35,10 +37,6 @@ class l10n extends basic
public function __construct($lang = '', $path = DEFAULT_TEMPLATE)
{
foreach (array('streams.php', 'gettext.php') as $include_file) {
_spl_autoload($include_file);
}
if (!$lang) {
$this->lang = 'en';
} else {
@@ -60,7 +58,7 @@ class l10n extends basic
$this->input = false;
}
$this->l10n = new gettext_reader($this->input);
$this->l10n = new GetTextReader($this->input);
}
// reloads the mofile, if the location of the lang file changes
@@ -82,7 +80,7 @@ class l10n extends basic
// check if get a readable mofile
if (is_readable($this->mofile)) {
$this->input = new FileReader($this->mofile);
$this->l10n = new gettext_reader($this->input);
$this->l10n = new GetTextReader($this->input);
} else {
// else fall back to the old ones
$this->mofile = $old_mofile;
@@ -95,7 +93,7 @@ class l10n extends basic
return $this->l10n->translate($text);
}
public function _e($text)
public function __e($text)
{
echo $this->l10n->translate($text);
}
@@ -106,12 +104,12 @@ class l10n extends basic
return $this->l10n->ngettext($single, $plural, $number);
}
public function __get_lang()
public function __getLang()
{
return $this->lang;
}
public function __get_mofile()
public function __getMoFile()
{
return $this->mofile;
}

View File

@@ -1,8 +1,8 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2002/10/22
* VERSION: 2.4.9
* VERSION: 3.0.0
* RELEASED LICENSE: GNU GPL 3
* SHORT DESCRIPTION:
* ~ 2003/02/26: decided to move away from single class and change this
@@ -210,10 +210,9 @@
* save data, loads data, etc
*********************************************************************/
// try to include file from LIBS path, or from normal path
_spl_autoload('Class.DB.Array.IO.inc');
namespace CoreLibs\Output\Form;
class form extends db_array_io
class Generate extends \CoreLibs\DB\Extended\ArrayIO
{
// rest
public $field_array = array (); // for the load statetment describes which elements from the load query should be shown and i which format
@@ -244,23 +243,20 @@ class form extends db_array_io
// now some default error msgs (english)
public $language_array = array ();
// METHOD constructor
// PARAMS $db_config -> connect to DB
// $lang -> language code ("en", "ja", etc)
// $table_width -> width of table
// $db_debug -> turns db_io debug on/off (DB_DEBUG as global var does the same)
// METHOD: constructor
// PARAMS: $db_config -> connect to DB
// $lang -> language code ("en", "ja", etc)
// $table_width -> width of table
// $db_debug -> turns db_io debug on/off (DB_DEBUG as global var does the same)
public function __construct($db_config, $lang, $table_width = 750, $debug = 0, $db_debug = 0, $echo = 1, $print = 0)
{
$this->my_page_name = $this->get_page_name(1);
$this->my_page_name = $this->getPageName(1);
// init the language class
_spl_autoload('Class.l10n.inc');
$this->l = new l10n($lang);
$this->l = new \CoreLibs\Language\L10n($lang);
// load config array
// get table array definitions for current page name
// WARNING: auto spl load does not work with this as it is an array and not a function/object
// $flag = _spl_autoload('array_'.$this->my_page_name.'.inc');
include(TABLE_ARRAYS."array_".$this->my_page_name.".inc");
$config_array = ${$this->my_page_name};
// start the array_io class which will start db_io ...
@@ -309,14 +305,14 @@ class form extends db_array_io
// internal
$this->class_info["form"] = array(
"class_name" => "Form create",
"class_version" => "2.4.9",
"class_version" => "3.0.0",
"class_created" => "2002-10-22",
"class_author" => "cs/gullevek/at"
"class_author" => "Clemens Schwaighofer"
);
}
// dumps all values into output (for error msg)
public function form_dump_table_array()
public function formDumpTableArray()
{
if (!is_array($this->table_array)) {
$this->table_array = array ();
@@ -338,49 +334,14 @@ class form extends db_array_io
parent::__destruct();
}
/*****************************************************
Along here are wrapper functions for the former, old names
*/
public function form_load()
{
return $this->form_create_load();
}
public function form_new($hide_new_checkbox = 0)
{
return $this->form_create_new($hide_new_checkbox);
}
public function form_delete_save($hide_delete = 0, $hide_delete_checkbox = 0)
{
return $this->form_create_save_delete($hide_delete, $hide_delete_checkbox);
}
public function form_error_msg()
{
return $this->form_print_msg();
}
public function form_show_reference_table($table_name)
{
return $this->form_create_element_reference_table($table_name);
}
public function form_show_list_table($table_name)
{
return $this->form_create_element_list_table($table_name);
}
// END wrapper
// METHOD form_get_col_name_from_key
// PARAMS $want_key: the key where u want the data from
// $key_value: if set searches for special right value
// RETURN the value of the $want_key array field
// works only with fields that appear only ONCE
// if multiple gets only FIRST
public function form_get_col_name_from_key($want_key, $key_value = "")
// METHOD: formGetColNameFromKey
// WAS : form_get_col_name_from_key
// PARAMS: $want_key: the key where u want the data from
// $key_value: if set searches for special right value
// RETURN: the value of the $want_key array field
// works only with fields that appear only ONCE
// if multiple gets only FIRST
public function formGetColNameFromKey($want_key, $key_value = "")
{
if (!is_array($this->table_array)) {
$this->table_array = array ();
@@ -395,11 +356,12 @@ class form extends db_array_io
}
}
// METHOD form_get_col_name_array_from_key
// PARAMS $want_key: the key where u want the data from
// $key_value: if set searches for special right value
// RETURN array of fields
public function form_get_col_name_array_from_key($want_key, $key_value = "")
// METHOD: formGetColNameArrayFromKey
// WAS : form_get_col_name_array_from_key
// PARAMS: $want_key: the key where u want the data from
// $key_value: if set searches for special right value
// RETURN: array of fields
public function formGetColNameArrayFromKey($want_key, $key_value = "")
{
$key_array = array();
if (!is_array($this->table_array)) {
@@ -417,10 +379,11 @@ class form extends db_array_io
return $key_array;
}
// METHOD form_print_msg
// PARAMS none
// RETURN formated output for the error && warning msg
public function form_print_msg()
// METHOD: formPrintMsg
// WAS : form_print_msg
// PARAMS: none
// RETURN: formated output for the error && warning msg
public function formPrintMsg()
{
if ($this->error) {
$class = "error";
@@ -432,27 +395,29 @@ class form extends db_array_io
}
// next for functions are pre_test fkts for easier default new,load, etc handling
// METHOD form_procedure_load
// PARAMS archive_id - which ID should be loaded
// RETURN none
// DESC default load procedure
public function form_procedure_load($archive_id)
// METHOD: formProcedureLoad
// WAS : form_procedure_load
// PARAMS: archive_id - which ID should be loaded
// RETURN: none
// DESC : default load procedure
public function formProcedureLoad($archive_id)
{
if ($this->archive && $archive_id && $this->group_level_user <= $this->security_level["load"]) {
$this->form_load_table_array($archive_id);
$this->formLoadTableArray($archive_id);
$this->yes = 1;
}
}
// METHOD form_procedure_new
// PARAMS none
// RETURN none
// DESC default new procedure
public function form_procedure_new()
// METHOD: formProcedureNew
// WAS : form_procedure_new
// PARAMS: none
// RETURN: none
// DESC : default new procedure
public function formProcedureNew()
{
if ($this->new && $this->group_level_user <= $this->security_level["new"]) {
if ($this->really_new == "yes") {
$this->form_unset_table_array();
$this->formUnsetTablearray();
} else {
$this->msg .= $this->l->__("You have to select the <b>Checkbox for New</b>!<br>");
$this->error = 2;
@@ -461,26 +426,28 @@ class form extends db_array_io
}
}
// METHOD form_procedure_save
// PARAMS none
// RETURN none
// DESC default save procedure
public function form_procedure_save()
// METHOD: formProcedureSave
// WAS : form_procedure_save
// PARAMS: none
// RETURN: none
// DESC : default save procedure
public function formProcedureSave()
{
if ($this->save && $this->group_level_user <= $this->security_level["save"]) {
$this->form_error_check();
$this->formErrorCheck();
if (!$this->error) {
$this->form_save_table_array();
$this->formSaveTableArray();
}
$this->yes = 1;
}
}
// METHOD form_procedure_delete
// PARAMS none
// RETURN none
// DESC default delete procedure
public function form_procedure_delete()
// METHOD: formProcedureDelete
// WAS : form_procedure_delete
// PARAMS: none
// RETURN: none
// DESC : default delete procedure
public function formProcedureDelete()
{
// delete is also by "protected"
if ($this->delete && $this->group_level_user <= $this->security_level["delete"] && !$this->table_array["protected"]["value"]) {
@@ -489,7 +456,7 @@ class form extends db_array_io
$this->error = 2;
}
if ($this->really_delete == "yes") {
$this->form_delete_table_array();
$this->formDeleteTableArray();
} else {
$this->msg .= $this->l->__("You have to select the <b>Checkbox for Delete</b>!<br>");
$this->error = 2;
@@ -498,16 +465,17 @@ class form extends db_array_io
}
}
// METHOD form_procedure_delete_from_element_list
// PARAMS none
// RETURN none
// DESC default delete procedure
public function form_procedure_delete_from_element_list($element_list, $remove_name)
// METHOD: formProcedureDeleteFromElementList
// WAS : form_procedure_delete_from_element_list
// PARAMS: none
// RETURN: none
// DESC : default delete procedure
public function formProcedureDeleteFromElementList($element_list, $remove_name)
{
// only do if the user is allowed to delete
if ($this->group_level_user <= $this->security_level["delete"] && !$this->table_array["protected"]["value"] && !$this->error) {
for ($i = 0; $i < count($element_list); $i ++) {
//$this->debug('form_error', "Array: ".is_array($this->element_list[$element_list[$i]]["read_data"])." | ".$this->element_list[$element_list[$i]]["delete"]);
// $this->debug('form_error', "Array: ".is_array($this->element_list[$element_list[$i]]["read_data"])." | ".$this->element_list[$element_list[$i]]["delete"]);
// if prefix, set it
$prfx = ($this->element_list[$element_list[$i]]["prefix"]) ? $this->element_list[$element_list[$i]]["prefix"]."_" : '';
// get the primary key
@@ -524,7 +492,7 @@ class form extends db_array_io
if ($_POST[$flag] == "true") {
$q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$id];
$this->db_exec($q);
$this->dbExec($q);
$this->msg .= $this->l->__("Removed entry from list<br>");
$this->warning = 1;
} // post okay true -> delete
@@ -534,20 +502,20 @@ class form extends db_array_io
if (!$_POST[$remove_name[$i]][$j]) {
$q = "UPDATE ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j];
// $this->debug('edit_db', "UP: $q");
// $this->db_exec($q);
// $this->dbExec($q);
$this->msg .= $this->l->__("Disabled deselected entries from list<br>");
$this->warning = 1;
}
}
} elseif (is_array($this->element_list[$element_list[$i]]["read_data"]) && $this->element_list[$element_list[$i]]["delete"]) {
//$this->debug('form_clean', "ID [$id] [$prfx.$pk_name]");
//$this->debug('form_clean', "ID arr: ".$this->print_ar($_POST[$id]));
//$this->debug('form_clean', "PK arr: ".$this->print_ar($_POST[$prfx.$pk_name]));
// $this->debug('form_clean', "ID [$id] [$prfx.$pk_name]");
// $this->debug('form_clean', "ID arr: ".$this->print_ar($_POST[$id]));
// $this->debug('form_clean', "PK arr: ".$this->print_ar($_POST[$prfx.$pk_name]));
for ($j = 0; $j < count($_POST[$prfx.$pk_name]); $j ++) {
if (!$_POST[$remove_name[$i]][$j] && $_POST[$prfx.$pk_name][$j]) {
$q = "DELETE FROM ".$element_list[$i]." WHERE ".$pk_name." = ".$_POST[$prfx.$pk_name][$j];
// $this->debug('edit_db', "DEL: $q");
$this->db_exec($q);
// $this->debug('edit_db', "DEL: $q");
$this->dbExec($q);
$this->msg .= $this->l->__("Deleted deselected entries from list<br>");
$this->warning = 1;
}
@@ -560,17 +528,18 @@ class form extends db_array_io
}
}
// METHOD form_create_load
// PARAMS none
// RETURN string from "load" part of form ...
public function form_create_load()
// METHOD: formCreateLoad
// WAS : form_create_load
// PARAMS: none
// RETURN: string from "load" part of form ...
public function formCreateLoad()
{
// when security leve is okay ...
if ($this->group_level_user <= $this->security_level["load"]) {
$t_pk_name = $this->archive_pk_name;
// lade liste
$this->db_exec($this->load_query);
$this->dbExec($this->load_query);
while ($res = $this->db_fetch_array()) {
$pk_ids[] = $res[$this->int_pk_name];
if ($res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]["value"]) {
@@ -590,19 +559,17 @@ class form extends db_array_io
$t_string .= $res[$this->field_array[$i]["name"]];
}
}
/*
//<? echo $res["question"]." (Lang: ".$res["lang_name"].", Freigeschalten: ".ucfirst($res["enabled"]?"ja":"nein").")"; ?>
*/
$pk_names[] = $t_string;
}
} // show it at all
return array('t_pk_name' => $t_pk_name, 'pk_ids' => $pk_ids, 'pk_names' => $pk_names, 'pk_selected' => $pk_selected);
}
// METHOD form_create_new
// PARAMS none
// RETURN part for new
public function form_create_new($hide_new_checkbox = 0)
// METHOD: formCreateNew
// WAS : form_create_new
// PARAMS: none
// RETURN: part for new
public function formCreateNew($hide_new_checkbox = 0)
{
// when security level is okay
if ($this->group_level_user <= $this->security_level["new"]) {
@@ -619,10 +586,11 @@ class form extends db_array_io
return array('new_name' => $new_name, 'show_checkbox' => $show_checkbox);
}
// METHOD form_create_save_delete
// PARAMS none
// RETURN string for delete / save part
public function form_create_save_delete($hide_delete = 0, $hide_delete_checkbox = 0)
// METHOD: formCreateSaveDelete
// WAS : form_create_save_delete
// PARAMS: none
// RETURN: string for delete / save part
public function formCreateSaveDelete($hide_delete = 0, $hide_delete_checkbox = 0)
{
if ($this->group_level_user <= $this->security_level["save"] || $this->group_level_user <= $this->security_level["delete"]) {
$old_school_hidden = 0;
@@ -647,13 +615,14 @@ class form extends db_array_io
return array('seclevel_okay' => $seclevel_okay, 'save' => $save, 'pk_name' => $pk_name, 'pk_value' => $pk_value, 'show_delete' => $show_delete, 'hide_delete_checkbox' => $hide_delete_checkbox);
} // end of function
// METHOD form_create_element
// PARAMS $element_name: the name from the array, you want to have build
// $query: can overrule internal query data,
// for drop down, as data comes from a reference table
// for drop_down_text it has to be an array with $key->$value
// RETURN element in HTML
public function form_create_element($element_name, $query = "")
// METHOD: formCreateElement
// WAS : form_create_element
// PARAMS: $element_name: the name from the array, you want to have build
// $query: can overrule internal query data,
// for drop down, as data comes from a reference table
// for drop_down_text it has to be an array with $key->$value
// RETURN: element in HTML
public function formCreateElement($element_name, $query = "")
{
// special 2nd color for "binary" attribut
if ($this->table_array[$element_name]["type"] == "binary" && !$this->table_array[$element_name]["value"]) {
@@ -824,13 +793,14 @@ class form extends db_array_io
return array('output_name' => $output_name, 'color' => $EDIT_FGCOLOR_T, 'type' => $type, 'data' => $data);
}
// METHOD form_error_check
// PARAMS none
// RETURNS full error message string for output
// METHOD: formErrorCheck
// WAS : form_error_check
// PARAMS: none
// RETURN: full error message string for output
// should be cought like this ...
// if ($msg=$form->form_error_check())
// $error=1;
public function form_error_check()
public function formErrorCheck()
{
if (!is_array($this->table_array)) {
$this->table_array = array ();
@@ -841,7 +811,7 @@ class form extends db_array_io
// if error value set && somethign input, check if input okay
if ($value["error_check"] && $this->table_array[$key]["value"]) {
// each error check can be a piped seperated value, lets split it
//$this->debug('edit', $value["error_check"]);
// $this->debug('edit', $value["error_check"]);
foreach (explode('|', $value["error_check"]) as $error_check) {
switch ($error_check) {
case "number":
@@ -878,7 +848,7 @@ class form extends db_array_io
if ($this->table_array[$this->int_pk_name]["value"]) {
$q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"];
}
list($$key) = $this->db_return_row($q);
list($$key) = $this->dbReturnRow($q);
if ($$key) {
$this->msg .= sprintf($this->l->__("The field <b>%s</b> can be used only once!<br>"), $this->table_array[$key]["output_name"]);
}
@@ -889,20 +859,20 @@ class form extends db_array_io
}
break;
case "alphanumericspace":
//$this->debug('edit', 'IN Alphanumericspace');
// $this->debug('edit', 'IN Alphanumericspace');
if (!preg_match("/^[0-9A-Za-z\ ]+$/", $this->table_array[$key]["value"])) {
$this->msg .= sprintf($this->l->__("Please enter a valid alphanumeric (Numbers and Letters, spaces allowed) value for the <b>%s</b> Field!<br>"), $this->table_array[$key]["output_name"]);
}
break;
case "alphanumeric":
//$this->debug('edit', 'IN Alphanumeric');
// $this->debug('edit', 'IN Alphanumeric');
if (!preg_match("/^[0-9A-Za-z_\-]+$/", $this->table_array[$key]["value"])) {
$this->msg .= sprintf($this->l->__("Please enter a valid alphanumeric (Numbers and Letters only also - and _, no spaces) value for the <b>%s</b> Field!<br>"), $this->table_array[$key]["output_name"]);
}
break;
// this one also allows @ and .
case "alphanumericextended":
//$this->debug('edit', 'IN Alphanumericextended');
// $this->debug('edit', 'IN Alphanumericextended');
if (!preg_match("/^[0-9A-Za-z_\-@\.]+$/", $this->table_array[$key]["value"])) {
$this->msg .= sprintf($this->l->__("Please enter a valid alphanumeric extended (Numbers, Letters, -, _, @ and . only, no spaces) value for the <b>%s</b> Field!<br>"), $this->table_array[$key]["output_name"]);
}
@@ -928,7 +898,7 @@ class form extends db_array_io
// main if end
) {
// if mandatory && no input
//$this->debug('form', "A: ".$this->table_array[$key]["type"]." -- ".$this->table_array[$key]["input_value"]." -- ".$this->table_array[$key]["value"]);
// $this->debug('form', "A: ".$this->table_array[$key]["type"]." -- ".$this->table_array[$key]["input_value"]." -- ".$this->table_array[$key]["value"]);
if (!$this->table_array[$key]["value"] && $this->table_array[$key]["type"] != "binary") {
$this->msg .= sprintf($this->l->__("Please enter something into the <b>%s</b> field!<br>"), $this->table_array[$key]["output_name"]);
}
@@ -964,7 +934,7 @@ class form extends db_array_io
}
}
}
//$this->debug('edit_error', "QS: <pre>".print_r($_POST, 1)."</pre>");
// $this->debug('edit_error', "QS: <pre>".print_r($_POST, 1)."</pre>");
if (is_array($this->element_list)) {
// check the mandatory stuff
// if mandatory, check that at least on pk exists or if at least the mandatory field is filled
@@ -988,10 +958,10 @@ class form extends db_array_io
if (count($_POST[$prfx.$key]) > $max) {
$max = count($_POST[$prfx.$key]);
}
//$this->debug('edit_error_chk', "KEY: $prfx$key | count: ".count($_POST[$prfx.$key])." | M: $max");
//$this->debug('edit_error_chk', "K: ".$_POST[$prfx.$key]." | ".$_POST[$prfx.$key][0]);
// $this->debug('edit_error_chk', "KEY: $prfx$key | count: ".count($_POST[$prfx.$key])." | M: $max");
// $this->debug('edit_error_chk', "K: ".$_POST[$prfx.$key]." | ".$_POST[$prfx.$key][0]);
}
//$this->debug('post_array', $this->print_ar($_POST));
$this->debug('post_array', $this->print_ar($_POST));
# check each row
for ($i = 0; $i < $max; $i ++) {
// either one of the post pks is set, or the mandatory
@@ -1005,18 +975,18 @@ class form extends db_array_io
}
// we found a mandatory field. check now if one is set to satisfy the main mandatory
// also check, if this field is mandatory and its not set, but any other, throw an error
//$this->debug('edit_error_chk', "RG error - Data[".$prfx.$el_name.": ".$_POST[$prfx.$el_name][$i]." | ".$_POST[$prfx.$el_name]." - ".$reference_array['enable_name']." - ".$_POST[$reference_array['enable_name']][$_POST[$prfx.$el_name][$i]]);
// $this->debug('edit_error_chk', "RG error - Data[".$prfx.$el_name.": ".$_POST[$prfx.$el_name][$i]." | ".$_POST[$prfx.$el_name]." - ".$reference_array['enable_name']." - ".$_POST[$reference_array['enable_name']][$_POST[$prfx.$el_name][$i]]);
if ($data_array["mandatory"] && $_POST[$prfx.$el_name][$i]) {
$mand_okay = 1;
$row_okay[$i] = 1;
} elseif ($data_array['type'] == 'radio_group' && !isset($_POST[$prfx.$el_name])) {
// radio group and set where one not active
//$this->debug('edit_error_chk', "RADIO GROUP");
// $this->debug('edit_error_chk', "RADIO GROUP");
$row_okay[$_POST[$prfx.$el_name][$i]] = 0;
$default_wrong[$_POST[$prfx.$el_name][$i]] = 1;
$error[$_POST[$prfx.$el_name][$i]] = 1;
} elseif ($_POST[$prfx.$el_name][$i] && !$error[$i]) {
//$this->debug('edit_error_chk', "[$i]");
// $this->debug('edit_error_chk', "[$i]");
$element_set[$i] = 1;
$row_okay[$i] = 1;
} elseif ($data_array["mandatory"] && !$_POST[$prfx.$el_name][$i]) {
@@ -1033,7 +1003,7 @@ class form extends db_array_io
if ($this->table_array[$this->int_pk_name]["value"]) {
$q .= " AND ".$this->int_pk_name." <> ".$this->table_array[$this->int_pk_name]["value"];
}
list($$key) = $this->db_return_row($q);
list($$key) = $this->dbReturnRow($q);
if ($$key) {
$this->msg .= sprintf($this->l->__("The field <b>%s</b> in row <b>%s</b> can be used only once!<br>"), $reference_array["output_name"], $i);
}
@@ -1068,38 +1038,40 @@ class form extends db_array_io
}
}
// METHOD form_set_order
// PARAMS none
// RETURN the table array
// DOES sets the order to the maximum, if order flag is set in array
public function form_set_order()
// METHOD: formSetOrder
// WAS: form_set_order
// PARAMS: none
// RETURN: the table array
// DESC : sets the order to the maximum, if order flag is set in array
public function formSetOrder()
{
// get order name
$order_name = $this->form_get_col_name_from_key("order");
$order_name = $this->formGetColNameFromKey("order");
if ($order_name) {
// first check out of order ...
if (!$this->table_array[$order_name]["value"]) {
// set order (read max)
$q = "SELECT MAX(".$order_name.") + 1 AS max_page_order FROM ".$this->table_name;
list($this->table_array[$order_name]["value"]) = $this->db_return_row($q);
list($this->table_array[$order_name]["value"]) = $this->dbReturnRow($q);
// frist element is 0 because NULL gets returned, set to 1
if (!$this->table_array[$order_name]["value"]) {
$this->table_array[$order_name]["value"] = 1;
}
} elseif ($this->table_array[$this->int_pk_name]["value"]) {
$q = "SELECT $order_name FROM ".$this->table_name." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"];
list($this->table_array[$order_name]["value"]) = $this->db_return_row($q);
list($this->table_array[$order_name]["value"]) = $this->dbReturnRow($q);
}
}
return $this->table_array;
}
// METHOD form_unsert_table_array
// PARAMS none
// RETURN none
// DOES resets all values in table_array and in the reference tables
public function form_unset_table_array()
// METHOD: formUnsetTableArray
// WAS : form_unsert_table_array
// PARAMS: none
// RETURN: none
// DESC : resets all values in table_array and in the reference tables
public function formUnsetTableArray()
{
unset($this->pk_id);
if (!is_array($this->table_array)) {
@@ -1127,11 +1099,12 @@ class form extends db_array_io
$this->msg = $this->l->__("Cleared for new Dataset!");
}
// METHOD form_load_table_array
// PARAMS pk_id - overrule pk_id
// RETURN none
// DESC load a table & reference
public function form_load_table_array($pk_id = 0)
// METHOD: formLoadTableArray
// WAS : form_load_table_array
// PARAMS: pk_id - overrule pk_id
// RETURN: none
// DESC : load a table & reference
public function formLoadTableArray($pk_id = 0)
{
if ($pk_id) {
$this->pk_id = $pk_id;
@@ -1165,11 +1138,12 @@ class form extends db_array_io
$this->msg = $this->l->__("Dataset has been loaded!<br>");
}
// METHOD form_save_table_array
// PARAMS addslashes - if one, passes 1 to the db_write function
// RETURN none
// DESC save a table, reference and all input fields
public function form_save_table_array($addslashes = 0)
// METHOD: formSaveTableArray
// WAS : form_save_table_array
// PARAMS: addslashes - if one, passes 1 to the db_write function
// RETURN: none
// DESC : save a table, reference and all input fields
public function formSaveTableArray($addslashes = 0)
{
// global $_FILES;
// for drop_down_db_input check if text field is filled and if, if not yet in db ...
@@ -1189,20 +1163,20 @@ class form extends db_array_io
if ($this->table_array[$key]["where"]) {
$q .= " AND ".$this->table_array[$key]["where"];
}
list($pk_name_temp) = $this->db_return_row($q);
list($pk_name_temp) = $this->dbReturnRow($q);
if ($this->num_rows >= 1) {
$this->table_array[$key]["value"] = $pk_name_temp;
} else {
// if a where was given, set this key also [dangerous!]
// postgreSQL compatible insert
$q = "INSERT INTO ".$this->table_array[$key]["table_name"]." (".$this->table_array[$key]["input_name"].") VALUES ('".$this->db_escape_string($this->table_array[$key]["input_value"])."')";
$this->db_exec($q);
$this->dbExec($q);
if ($this->table_array[$key]["where"]) {
// make an update on the just inseted data with the where data als update values
$q = "UPDATE ".$this->table_array[$key]["table_name"]." SET ";
$q .= $this->table_array[$key]["where"]." ";
$q .= "WHERE ".$this->table_array[$key]["pk_name"]." = ".$this->insert_id;
$this->db_exec($q);
$this->dbExec($q);
}
$this->table_array[$key]["value"] = $this->insert_id;
} // set value from DB through select or insert
@@ -1218,7 +1192,7 @@ class form extends db_array_io
if ($this->table_array[$key]["where"]) {
$q .= " AND ".$this->table_array[$key]["where"];
}
list($temp) = $this->db_return_row($q);
list($temp) = $this->dbReturnRow($q);
// nothing found in table, use new inserted key
if (!$temp) {
$this->table_array[$key]["value"] = $this->table_array[$key]["input_value"];
@@ -1276,9 +1250,9 @@ class form extends db_array_io
} // go through each field
// set object order (if necessary)
$this->form_set_order();
$this->formSetOrder();
// write the object
$this->db_write($addslashes);
$this->dbWrite($addslashes);
// write reference array(s) if necessary
if (is_array($this->reference_array)) {
if (!is_array($this->reference_array)) {
@@ -1287,11 +1261,11 @@ class form extends db_array_io
reset($this->reference_array);
foreach ($this->reference_array as $reference_array) {
$q = "DELETE FROM ".$reference_array["table_name"]." WHERE ".$this->int_pk_name."=".$this->table_array[$this->int_pk_name]["value"];
$this->db_exec($q);
$this->dbExec($q);
$q = "INSERT INTO ".$reference_array["table_name"]." (".$reference_array["other_table_pk"].", ".$this->int_pk_name.") VALUES ";
for ($i = 0; $i < count($reference_array["selected"]); $i ++) {
$t_q = "(".$reference_array["selected"][$i].", ".$this->table_array[$this->int_pk_name]["value"].")";
$this->db_exec($q.$t_q);
$this->dbExec($q.$t_q);
}
} // foreach reference arrays
} // if reference arrays
@@ -1409,7 +1383,7 @@ class form extends db_array_io
$this->debug('edit', "Pos[$i] => ".$type[$i]." Q: ".$q."<br>");
// write the dataset
if ($q) {
$this->db_exec($q);
$this->dbExec($q);
}
}
} // for each created query
@@ -1419,11 +1393,12 @@ class form extends db_array_io
$this->msg = $this->l->__("Dataset has been saved!<Br>");
}
// METHOD form_delete_table_array
// PARAMS none
// RETURN none
// DESC delete a table and reference fields
public function form_delete_table_array()
// METHOD: formDeleteTableArray
// WAS : form_delete_table_array
// PARAMS: none
// RETURN: none
// DESC : delete a table and reference fields
public function formDeleteTableArray()
{
// remove any reference arrays
if (is_array($this->reference_array)) {
@@ -1433,7 +1408,7 @@ class form extends db_array_io
reset($this->reference_array);
foreach ($this->reference_array as $reference_array) {
$q = "DELETE FROM ".$reference_array["table_name"]." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"];
$this->db_exec($q);
$this->dbExec($q);
}
}
// remove any element list references
@@ -1444,7 +1419,7 @@ class form extends db_array_io
reset($this->element_list);
while (list($table_name, $data_array) = each($this->element_list)) {
$q = "DELETE FROM ".$table_name." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"];
$this->db_exec($q);
$this->dbExec($q);
}
}
// unlink ALL files
@@ -1462,11 +1437,12 @@ class form extends db_array_io
$this->msg = $this->l->__("Dataset has been deleted!");
}
// METHOD form_create_hidden_fields
// PARAMS $hidden_array
// RETURNS the input fields (html)
// creates HTML hidden input fields out of an hash array
public function form_create_hidden_fields($hidden_array = "")
// METHOD: formCreateHiddenFields
// WAS : form_create_hidden_fields
// PARAMS: $hidden_array
// RETURN: the input fields (html)
// DESC : creates HTML hidden input fields out of an hash array
public function formCreateHiddenFields($hidden_array = "")
{
$hidden = array ();
if (!is_array($this->table_array)) {
@@ -1487,11 +1463,12 @@ class form extends db_array_io
return $hidden;
}
// METHOD form_create_element_reference_table
// PARAMS show which reference table
// RETURN array for output
// DESC creates the multiple select part for a reference_table
public function form_create_element_reference_table($table_name)
// METHOD: formCreateElementReferenceTable
// WAS : form_create_element_reference_table
// PARAMS: show which reference table
// RETURN: array for output
// DESC : creates the multiple select part for a reference_table
public function formCreateElementReferenceTable($table_name)
{
$output_name = $this->reference_array[$table_name]["output_name"];
if ($this->reference_array[$table_name]["mandatory"]) {
@@ -1508,13 +1485,14 @@ class form extends db_array_io
return array('output_name' => $output_name, 'type' => $type, 'color' => 'edit_fgcolor', 'data' => $data);
}
// METHOD form_create_element_list
// PARAMS show which element list
// RETURN array for output
// DESC create list of elements next to each other for a group of data in an input field
// this currently only works for a list that is filled from a sub table and creates only a connection to this one
// new version will allow a sub list with free input fields to directly fill a sub table to a master table
public function form_create_element_list_table($table_name)
// METHOD: formCreateElementListTable
// WAS : form_create_element_list_table
// PARAMS: show which element list
// RETURN: array for output
// DESC : create list of elements next to each other for a group of data in an input field
// this currently only works for a list that is filled from a sub table and creates only a connection to this one
// new version will allow a sub list with free input fields to directly fill a sub table to a master table
public function formCreateElementListTable($table_name)
{
// output name for the viewable left table td box, prefixed with * if mandatory
$output_name = $this->element_list[$table_name]["output_name"];
@@ -1547,7 +1525,7 @@ class form extends db_array_io
// generic data read in (counts for all rows)
// visible list data output
while (list($el_name, $data_array) = each($this->element_list[$table_name]["elements"])) {
// $this->debug('CFG', 'El: '.$el_name.' -> '.$this->print_ar($data_array));
$this->debug('CFG', 'El: '.$el_name.' -> '.$this->print_ar($data_array));
// if the element name matches the read array, then set the table as a name prefix
$q_select[] = $el_name; // this is for reading the data
// prefix the name for any further data parts
@@ -1566,7 +1544,7 @@ class form extends db_array_io
if ($data_array['type'] == 'drop_down_db') {
$md_q = md5($data_array['query']);
while ($res = $this->db_return($data_array['query'])) {
//$this->debug('edit', "Q[$md_q] pos: ".$this->cursor_ext[$md_q]["pos"]." | want: ".$data_array["preset"]." | set: ".$data['preset'][$el_name]);
$this->debug('edit', "Q[$md_q] pos: ".$this->cursor_ext[$md_q]["pos"]." | want: ".$data_array["preset"]." | set: ".$data['preset'][$el_name]);
// first is default for this element
if (!$data['preset'][$el_name] && ($this->cursor_ext[$md_q]["pos"] == $data_array['preset'])) {
$data['preset'][$el_name] = $res[0];
@@ -1580,11 +1558,11 @@ class form extends db_array_io
}
$proto[$el_name] = ($this->error) ? $_POST[$el_name][(count($_POST[$el_name]) - 1)] : ''; // this is for the new line
}
// $this->debug('CFG DATA', 'Data: '.$this->print_ar($data));
// $this->debug('CFG PROTO', 'Proto: '.$this->print_ar($proto));
// $this->debug('CFG SELECT', 'Proto: '.$this->print_ar($q_select));
// $this->debug('CFG DATA', 'Data: '.$this->print_ar($data));
// $this->debug('CFG PROTO', 'Proto: '.$this->print_ar($proto));
// $this->debug('CFG SELECT', 'Proto: '.$this->print_ar($q_select));
// query for reading in the data
//$this->debug('edit_error', "ERR: ".$this->error);
$this->debug('edit_error', "ERR: ".$this->error);
// if we got a read data, build the read select for the read, and read out the "selected" data
if ($this->element_list[$table_name]["read_data"]) {
// we need a second one for the query build only
@@ -1604,18 +1582,18 @@ class form extends db_array_io
$data['type'][$data["prefix"].$this->element_list[$table_name]["read_data"]["name"]] = 'string';
// build the read query
$q = "SELECT ";
// if (!$this->table_array[$this->int_pk_name]["value"])
// $q .= "DISTINCT ";
// if (!$this->table_array[$this->int_pk_name]["value"])
// $q .= "DISTINCT ";
// prefix join key with table name, and implode the query select part
$q .= str_replace($table_name.'.'.$this->element_list[$table_name]["read_data"]["pk_id"], $this->element_list[$table_name]["read_data"]["table_name"].'.'.$this->element_list[$table_name]["read_data"]["pk_id"], implode(', ', $_q_select)).' ';
// if (!$this->table_array[$this->int_pk_name]["value"] && $this->element_list[$table_name]["read_data"]["order"])
// $q .= ", ".$this->element_list[$table_name]["read_data"]["order"]." ";
// if (!$this->table_array[$this->int_pk_name]["value"] && $this->element_list[$table_name]["read_data"]["order"])
// $q .= ", ".$this->element_list[$table_name]["read_data"]["order"]." ";
// read from the read table as main, and left join to the sub table to read the actual data
$q .= "FROM ".$this->element_list[$table_name]["read_data"]["table_name"]." ";
$q .= "LEFT JOIN ".$table_name." ";
$q .= "ON (";
$q .= $this->element_list[$table_name]["read_data"]["table_name"].".".$this->element_list[$table_name]["read_data"]["pk_id"]." = ".$table_name.".".$this->element_list[$table_name]["read_data"]["pk_id"]." ";
// if ($this->table_array[$this->int_pk_name]["value"])
// if ($this->table_array[$this->int_pk_name]["value"])
$q .= "AND ".$table_name.".".$this->int_pk_name." = ".(($this->table_array[$this->int_pk_name]["value"]) ? $this->table_array[$this->int_pk_name]["value"] : 'NULL')." ";
$q .= ") ";
if ($this->element_list[$table_name]["read_data"]["order"]) {
@@ -1628,7 +1606,7 @@ class form extends db_array_io
$q = "SELECT ".implode(", ", $q_select)." FROM ".$table_name." WHERE ".$this->int_pk_name." = ".$this->table_array[$this->int_pk_name]["value"];
}
}
// $this->debug('CFG QUERY', 'Q: '.$q);
// $this->debug('CFG QUERY', 'Q: '.$q);
// only run if we have query strnig
if ($q) {
$pos = 0; // position in while for overwrite if needed
@@ -1640,7 +1618,7 @@ class form extends db_array_io
for ($i = 0; $i < count($q_select); $i ++) {
// query select part, set to the element name
$el_name = $q_select[$i];
//$this->debug('edit_error', "[$i] ELNAME: $el_name | POS[$prfx$el_name]: ".$_POST[$prfx.$el_name][$pos]." | RES: ".$res[$el_name]);
// $this->debug('edit_error', "[$i] ELNAME: $el_name | POS[$prfx$el_name]: ".$_POST[$prfx.$el_name][$pos]." | RES: ".$res[$el_name]);
// if we have an error, we take what we have in the vars, if not we take the data from the db
if ($this->error) {
// if we have a radio group, set a bit different
@@ -1700,8 +1678,10 @@ class form extends db_array_io
if ($data['delete_name']) {
$data['content'][] = $proto;
}
//$this->debug('edit', "A:<pre>".print_r($data, 1)."</pre>");
// $this->debug('edit', "A:<pre>".print_r($data, 1)."</pre>");
$type = 'element_list';
return array('output_name' => $output_name, 'type' => $type, 'color' => 'edit_fgcolor', 'data' => $data);
}
} // end of class
# __END__

View File

@@ -8,9 +8,13 @@
* Update: Clemens Schwaighofer
* Date: 2012.9.5 [stacked output]
* Date: 2013.2.21 [proper class formatting]
* Date: 2017.4.13 [no output fix with cache overload]
* Date: 2018.3.28 [PHPCS + namespace]
*
*/
namespace CoreLibs\Output;
class ProgressBar
{
// private vars
@@ -80,13 +84,13 @@ class ProgressBar
$this->height = $height;
}
// needs to be called twice or I do not get any output
$this->_flushCache($this->clear_buffer_size_init);
$this->_flushCache($this->clear_buffer_size_init);
$this->__flushCache($this->clear_buffer_size_init);
$this->__flushCache($this->clear_buffer_size_init);
}
// private functions
private function _flushCache($clear_buffer_size = 0)
private function __flushCache($clear_buffer_size = 0)
{
if (!$clear_buffer_size) {
$clear_buffer_size = $this->clear_buffer_size;
@@ -96,7 +100,7 @@ class ProgressBar
flush();
}
private function _calculatePercent($step)
private function __calculatePercent($step)
{
// avoid divison through 0
if ($this->max - $this->min == 0) {
@@ -109,7 +113,7 @@ class ProgressBar
return $percent;
}
private function _calculatePosition($step)
private function __calculatePosition($step)
{
switch ($this->direction) {
case 'right':
@@ -162,7 +166,7 @@ class ProgressBar
return $position;
}
private function _setStep($step)
private function __setStep($step)
{
if ($step > $this->max) {
$step = $this->max;
@@ -300,7 +304,7 @@ class ProgressBar
public function setLabelPosition($name, $left, $top, $width, $height, $align = '')
{
// print "SET POSITION[$name]: $left<br>";
// print "SET POSITION[$name]: $left<br>";
// if this is percent, we ignore anything, it is auto positioned
if ($this->label[$name]['type'] != 'percent') {
foreach (array('top', 'left', 'width', 'height') as $pos_name) {
@@ -323,7 +327,7 @@ class ProgressBar
$output .= 'document.getElementById("plbl'.$name.$this->code.'").style.align="'.$this->label[$name]['align'].'";';
$output .= '</script>'."\n";
echo $output;
$this->_flushCache();
$this->__flushCache();
}
}
@@ -332,7 +336,7 @@ class ProgressBar
$this->label[$name]['color'] = $color;
if ($this->status != 'new') {
echo '<script type="text/JavaScript">document.getElementById("plbl'.$name.$this->code.'").style.color="'.$color.'";</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -341,7 +345,7 @@ class ProgressBar
$this->label[$name]['bgr_color'] = $color;
if ($this->status != 'new') {
echo '<script type="text/JavaScript">document.getElementById("plbl'.$name.$this->code.'").style.background="'.$color.'";</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -359,7 +363,7 @@ class ProgressBar
if ($this->label[$name]['type'] == 'percent') {
$this->label[$name]['top'] = round(($this->height - intval($size)) / log($this->height - intval($size), 7), 0) - $this->pedding;
}
// print "HEIGHT: ".$this->height.", Size: ".intval($size).", Pedding: ".$this->pedding.", Calc: ".round($this->height - intval($size)).", Log: ".log($this->height - intval($size), 7)."<br>";
// print "HEIGHT: ".$this->height.", Size: ".intval($size).", Pedding: ".$this->pedding.", Calc: ".round($this->height - intval($size)).", Log: ".log($this->height - intval($size), 7)."<br>";
// then set like usual
$this->label[$name]['font-size'] = intval($size);
if ($family != '') {
@@ -376,17 +380,17 @@ class ProgressBar
$output .= 'document.getElementById("plbl'.$name.$this->code.'").style.font-weight="'.$this->label[$name]['font-weight'].'";';
$output .= '</script>'."\n";
echo $output;
$this->_flushCache();
$this->__flushCache();
}
}
public function setLabelValue($name, $value)
{
$this->label[$name]['value'] = $value;
// print "NAME[$name], Status: ".$this->status.": ".$value."<Br>";
// print "NAME[$name], Status: ".$this->status.": ".$value."<Br>";
if ($this->status != 'new') {
echo '<script type="text/JavaScript">PBlabelText'.$this->code.'("'.$name.'","'.$this->label[$name]['value'].'");</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -395,7 +399,7 @@ class ProgressBar
$this->color = $color;
if ($this->status != 'new') {
echo '<script type="text/JavaScript">document.getElementById("pbar'.$this->code.'").style.background="'.$color.'";</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -404,7 +408,7 @@ class ProgressBar
$this->bgr_color = $color;
if ($this->status != 'new') {
echo '<script type="text/JavaScript">document.getElementById("pbrd'.$this->code.'").style.background="'.$color.'";</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -413,7 +417,7 @@ class ProgressBar
$this->direction = $direction;
if ($this->status != 'new') {
$this->position = $this->_calculatePosition($this->step);
$this->position = $this->__calculatePosition($this->step);
echo '<script type="text/JavaScript">';
echo 'PBposition'.$this->code.'("left",'.$this->position['left'].');';
@@ -421,7 +425,7 @@ class ProgressBar
echo 'PBposition'.$this->code.'("width",'.$this->position['width'].');';
echo 'PBposition'.$this->code.'("height",'.$this->position['height'].');';
echo '</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -431,8 +435,8 @@ class ProgressBar
$js = '';
$html_button = '';
$this->_setStep($this->step);
$this->position = $this->_calculatePosition($this->step);
$this->__setStep($this->step);
$this->position = $this->__calculatePosition($this->step);
if ($this->top || $this->left) {
$style_master = 'position:relative;top:'.$this->top.'px;left:'.$this->left.'px;width:'.($this->width + 10).'px;';
@@ -477,7 +481,7 @@ class ProgressBar
$js .= ' }'."\n";
$js .= '}'."\n";
//print "DUMP LABEL: <br><pre>".print_r($this->label, 1)."</pre><br>";
// print "DUMP LABEL: <br><pre>".print_r($this->label, 1)."</pre><br>";
foreach ($this->label as $name => $data) {
// set what type of move we do
$move_prefix = $data['type'] == 'button' ? 'margin' : 'padding';
@@ -522,13 +526,13 @@ class ProgressBar
break;
case 'percent':
// only one inner percent
// print "STYLE[$name]: ".$style_lbl."<br>";
// print "STYLE[$name]: ".$style_lbl."<br>";
if (!$html_percent) {
$html_percent = '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;line-height:1;text-shadow: 0 0 .2em white, 0 0 .5em white;">'.$this->_calculatePercent($this->step).'%</div>'."\n";
$html_percent = '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;line-height:1;text-shadow: 0 0 .2em white, 0 0 .5em white;">'.$this->__calculatePercent($this->step).'%</div>'."\n";
}
break;
case 'percentlbl':
$html .= '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;">'.$this->_calculatePercent($this->step).'%</div>'."\n";
$html .= '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'width:'.$data['width'].'px;">'.$this->__calculatePercent($this->step).'%</div>'."\n";
break;
case 'crossbar':
$html .= '<div id="plbl'.$name.$this->code.'" style="'.$style_lbl.'">'.$data['value'].'</div>'."\n";
@@ -578,16 +582,16 @@ class ProgressBar
{
$this->status = 'show';
echo $this->getHtml();
$this->_flushCache();
$this->__flushCache();
}
public function moveStep($step)
{
$last_step = $this->step;
$this->_setStep($step);
$this->__setStep($step);
$js = '';
$new_position = $this->_calculatePosition($this->step);
$new_position = $this->__calculatePosition($this->step);
if ($new_position['width'] != $this->position['width'] && ($this->direction == 'right' || $this->direction == 'left')) {
if ($this->direction=='left') {
$js .= 'PBposition'.$this->code.'("left",'.$new_position['left'].');';
@@ -603,7 +607,7 @@ class ProgressBar
$this->position = $new_position;
foreach ($this->label as $name => $data) {
if (array_key_exists('type', $data)) {
switch($data['type']) {
switch ($data['type']) {
case 'step':
if ($this->step != $last_step) {
$js .= 'PBlabelText'.$this->code.'("'.$name.'","'.$this->step.'/'.$this->max.'");';
@@ -611,8 +615,8 @@ class ProgressBar
break;
case 'percentlbl':
case 'percent':
$percent = $this->_calculatePercent($this->step);
if ($percent != $this->_calculatePercent($last_step)) {
$percent = $this->__calculatePercent($this->step);
if ($percent != $this->__calculatePercent($last_step)) {
$js .= 'PBlabelText'.$this->code.'("'.$name.'","'.$percent.'%");';
}
break;
@@ -624,7 +628,7 @@ class ProgressBar
}
if ($js != '') {
echo '<script type="text/JavaScript">'.$js.'</script>'."\n";
$this->_flushCache();
$this->__flushCache();
}
}
@@ -647,7 +651,7 @@ class ProgressBar
$output .= 'document.getElementById("pbm'.$this->code.'").style.visibility="hidden";document.getElementById("pbm'.$this->code.'").style.display="none";';
$output .= '</script>'."\n";
echo $output;
$this->_flushCache();
$this->__flushCache();
}
}
@@ -660,7 +664,10 @@ class ProgressBar
$output .= 'document.getElementById("pbm'.$this->code.'").style.visibility="visible";document.getElementById("pbm'.$this->code.'").style.visibility="block";';
$output .= '</script>'."\n";
echo $output;
$this->_flushCache();
$this->__flushCache();
}
}
}
# __END__

View File

@@ -1,4 +1,4 @@
<?
<?php
/********************************************************************
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
* CREATED: 2004/12/21
@@ -8,12 +8,14 @@
* 2005/06/22 (cs) include smarty class here, so there is no need to include it in the main file
*********************************************************************/
// read in the Smarty class for definition
// use smarty BC for backwards compability
// try to include file from LIBS path, or from normal path
_spl_autoload('SmartyBC.class.php');
namespace CoreLibs\Template;
class SmartyML extends SmartyBC
// I need to manually load Smarty BC here (it is not namespaced)
require_once(BASE.LIB.SMARTY.'SmartyBC.class.php');
// So it doesn't start looking around in the wrong naemspace as smarty doesn't have one
use SmartyBC;
class SmartyExtend extends SmartyBC
{
public $l10n;
@@ -21,9 +23,10 @@ class SmartyML extends SmartyBC
public function __construct($lang)
{
SmartyBC::__construct();
_spl_autoload('Class.l10n.inc');
$this->l10n = new l10n($lang);
$this->l10n = new \CoreLibs\Language\L10n($lang);
// variable variable register
$this->register_modifier('getvar', array(&$this, 'get_template_vars'));
}
}
# __END__

View File

@@ -0,0 +1,31 @@
<?php
namespace CoreLibs\Upload\Core;
/**
* Handle file uploads via regular form post (uses the $_FILES array)
*/
class qqUploadedFileForm
{
/**
* Save the file to the specified path
* @return boolean TRUE on success
*/
public function save($path)
{
if (!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)) {
return false;
}
return true;
}
public function getName()
{
return $_FILES['qqfile']['name'];
}
public function getSize()
{
return $_FILES['qqfile']['size'];
}
}
# __END__

View File

@@ -0,0 +1,46 @@
<?php
namespace CoreLibs\Upload\Core;
/**
* Handle file uploads via XMLHttpRequest
*/
class qqUploadedFileXhr
{
/**
* Save the file to the specified path
* @return boolean TRUE on success
*/
public function save($path)
{
$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);
if ($realSize != $this->getSize()) {
return false;
}
$target = fopen($path, "w");
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target);
return true;
}
public function getName()
{
return $_GET['qqfile'];
}
public function getSize()
{
if (isset($_SERVER["CONTENT_LENGTH"])) {
return (int)$_SERVER["CONTENT_LENGTH"];
} else {
throw new Exception('Getting content length is not supported.');
}
}
}
# __END__

View File

@@ -1,71 +1,9 @@
<?php
/**
* Handle file uploads via XMLHttpRequest
*/
class qqUploadedFileXhr
{
/**
* Save the file to the specified path
* @return boolean TRUE on success
*/
public function save($path)
{
$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);
namespace CoreLibs\Upload;
if ($realSize != $this->getSize()) {
return false;
}
$target = fopen($path, "w");
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target);
return true;
}
public function getName()
{
return $_GET['qqfile'];
}
public function getSize()
{
if (isset($_SERVER["CONTENT_LENGTH"])) {
return (int)$_SERVER["CONTENT_LENGTH"];
} else {
throw new Exception('Getting content length is not supported.');
}
}
}
/**
* Handle file uploads via regular form post (uses the $_FILES array)
*/
class qqUploadedFileForm
{
/**
* Save the file to the specified path
* @return boolean TRUE on success
*/
public function save($path)
{
if (!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)) {
return false;
}
return true;
}
public function getName()
{
return $_FILES['qqfile']['name'];
}
public function getSize()
{
return $_FILES['qqfile']['size'];
}
}
use \CoreLibs\Upload\Core\qqUploadedFileForm;
use \CoreLibs\Upload\Core\qqUploadedFileXhr;
class qqFileUploader
{
@@ -170,3 +108,5 @@ class qqFileUploader
}
}
}
# __END__

View File

@@ -1,4 +1,4 @@
<?
<?php
/*********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2011/2/8

6
www/lib/SMARTY_UPDATE Normal file
View File

@@ -0,0 +1,6 @@
* copy
plugins/block.t.php
plugins/function.popup*.php
* check & copy
plugins/function.html_checkboxes.php
plugins/function.html_options.php

1
www/lib/Smarty Symbolic link
View File

@@ -0,0 +1 @@
smarty-3.1.30/

57
www/lib/autoloader.php Normal file
View File

@@ -0,0 +1,57 @@
<?php
namespace Autoloader;
// shall implement an auto loader
if (class_exists('Autoload', false) === false) {
// define the auto loader class
class Autoload
{
// we do it simple here
// passes on the class to load and we search here in namespace
// to load that class
public static function load($class)
{
// print "(1) Class: $class / DIR: ".__DIR__."<br>";
// set directory seperator (we need to replace from namespace)
$ds = DS ?? DIRECTORY_SEPARATOR;
// base lib
$LIB = LIB ?? 'lib';
// if lib is in path, do not add lib again
if (strpos(__DIR__, $LIB) !== false) {
$LIB .= DS;
} else {
$LIB = '';
}
// default path is unset
$path = false;
// set path on full dir
// if we have the namespace in the class, strip it out
$len = 0;
if (strpos($class, __NAMESPACE__) !== false) {
$len = strlen(__NAMESPACE__);
}
// set default extension
$extension = '.inc';
// set full include path
$path = __DIR__.$ds.$LIB.substr($class, $len);
// replace namespace \ with dir sepeator
$path = str_replace('\\', $ds, $path).$extension;
// print "(2) Class clean: $path<br>";
// if path is set and a valid file
if ($path !== false && is_file($path)) {
// echo "<b>(3)</b> Load Path: $path<br>";
// we should sub that
// self::loadFile($path);
include $path;
return true;
}
return false;
}
} // end class define
spl_autoload_register('Autoloader\Autoload::load', true, true);
} // end check for already defined
# __END__

Some files were not shown because too many files have changed in this diff Show More