1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/luob-reportico

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
swutil.php 41 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
luobin Отправлено 29.01.2015 19:06 af77027
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553
<?php
/*
Reportico - PHP Reporting Tool
Copyright (C) 2010-2011 Peter Deed
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* File: swutil.php
*
* Contains utility functions required during Reportico operation
*
* @link http://www.reportico.org/
* @copyright 2010-2011 Peter Deed
* @author Peter Deed <info@reportico.org>
* @package Reportico
* @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @version $Id: swutil.php,v 1.38 2014/05/16 23:03:00 peter Exp $
*/
global $g_error_status;
// System Error Handling and Debug Tracking Variables
$g_system_errors = array();
$g_code_area = "";
$g_system_debug = array();
$g_debug_mode = false;
$g_error_status = false;
// Debug Levels
define('SW_DEBUG_NONE', 0);
define('SW_DEBUG_LOW', 1);
define('SW_DEBUG_MEDIUM', 2);
define('SW_DEBUG_HIGH', 3);
define('SW_DEFAULT_IND', '.');
global $g_session_namespace;
// Ensure that sessions from different browser windows on same devide
// target separate SESSION_ID
function set_up_reportico_session()
{
// Get current session
$session_name = session_id();
// Check for Posted Session Name and use that if specified
if (isset($_REQUEST['reportico_session_name']))
{
$session_name = $_REQUEST['reportico_session_name'];
if ( preg_match("/_/", $session_name ) )
{
$ar = explode("_", $session_name);
global $g_session_namespace;
global $g_session_namespace_key;
$g_session_namespace = $ar[1];
if ( $g_session_namespace )
$g_session_namespace_key = "reportico_".$g_session_namespace;
// Set session to join only if it is not NS meaning its called from framework and existing session
// should be used
if ( $ar[0] != "NS" )
$session_name = $ar[0];
}
}
// If the session_name starts with NS_ then it is a namespace for reportico
// embedded in a framework or for multiple concurrent reportico instances
// , so set the current namespace. All sessiion variables for this namespace
// will be stored in a namspaces specific session array
if ( strlen($session_name) >= 3 && substr($session_name, 0, 3) == "NS_" )
{
if ( !$session_name || !isset($_SESSION))
session_start();
global $g_session_namespace;
global $g_session_namespace_key;
$g_session_namespace = substr($session_name, 3);
// IF NS_NEW passed then autogenerate session namespace from current time
if ( $g_session_namespace == "NEW" )
{
$g_session_namespace = date("YmdHis");
}
if ( $g_session_namespace )
$g_session_namespace_key = "reportico_".$g_session_namespace;
if (isset($_REQUEST['clear_session']) && isset($_SESSION))
{
initialize_reportico_namespace(reportico_namespace());
}
return;
}
// If no current session start one, or if request to clear session (it really means clear namespace)
// then clear this out
if ( !$session_name || isset($_REQUEST['clear_session']))
{
// If no session current then create a new one
if ( !$session_name || !isset($_SESSION))
{
session_start();
}
if ( isset($_REQUEST['new_session']) && $_REQUEST['new_session'])
session_regenerate_id(false);
//unset_reportico_session_param("template");
//session_regenerate_id(false);
$session_name = session_id();
if (isset($_REQUEST['clear_session']))
{
initialize_reportico_namespace(reportico_namespace());
}
}
else
{
if ( session_id() != $session_name )
{
session_id($session_name);
session_start();
}
$session_name = session_id();
}
}
/*
* Cleanly shuts doen session
*/
function close_reportico_session()
{
}
function convertYMDtoLocal($in_time, $from_format, $to_format)
{
$from_format = get_locale_date_format ( $from_format );
$to_format = get_locale_date_format ( $to_format );
if ( !class_exists("DateTime", false ) || !method_exists("DateTime", "createFromFormat" ) )
{
//handle_error("This version of PHP does not have the DateTime class. Must be PHP >= 5.3 to use date criteria");
//return false;
$retval = reformatDate($from_format, $to_format, $in_time );
return $retval;
}
try {
$datetime = DateTime::createFromFormat($from_format, $in_time);
if ( !$datetime )
{
handle_error("Date value '$in_time' is expected in date format $from_format");
return false;
}
$retval =$datetime->format ( $to_format );
}
catch(Exception $e) {
handle_error("Error in date formatting<BR>".$e->getMessage());
return "";
}
return $retval;
}
// Based on the users working language, returns the language code
// for loading the apprpriate data picket
function get_datepicker_language($in_format)
{
$retval = "";
switch ( $in_format )
{
case "en-GB": $retval = "en-GB"; break;
case "ar-DZ": $retval = "ar-DZ"; break;
case "en-AU": $retval = "en-AU"; break;
case "en-NZ": $retval = "en-NZ"; break;
case "fr-CN": $retval = "fr-CH"; break;
case "pt-BR": $retval = "pt-BR"; break;
case "sr-SR": $retval = "sr-SR"; break;
case "zh-HK": $retval = "zh-HK"; break;
case "zh-TW": $retval = "zh-TW"; break;
case "zh-CN": $retval = "zh-CN"; break;
case "en_gb": $retval = "en-GB"; break;
case "ar_dz": $retval = "ar-DZ"; break;
case "en_au": $retval = "en-AU"; break;
case "en_nz": $retval = "en-NZ"; break;
case "fr_cn": $retval = "fr-CH"; break;
case "pt_br": $retval = "pt-BR"; break;
case "sr_sr": $retval = "sr-SR"; break;
case "zh_hk": $retval = "zh-HK"; break;
case "zh_tw": $retval = "zh-TW"; break;
case "zh_cn": $retval = "zh-CN"; break;
default:
$retval = substr($in_format, 0, 2);
}
return $retval;
}
// Based on the users working date format, returns the appropriate format
// for the JUI date picker routine
function get_datepicker_format($in_format)
{
$retval = "";
switch ( $in_format )
{
case "d-m-Y": $retval = "dd-mm-yy"; break;
case "d/m/Y": $retval = "dd/mm/yy"; break;
case "m/d/Y": $retval = "mm/dd/yy"; break;
case "m-d-Y": $retval = "mm-dd-yy"; break;
case "Y/m/d": $retval = "yy/mm/dd"; break;
case "Y-m-d": $retval = "yy-mm-dd"; break;
default:
$retval = "dd/mm/yy";
}
return $retval;
}
function parse_date($in_keyword, $in_time = false, $in_mask = "%d/%m/%Y" )
{
$in_mask = get_locale_date_format ( $in_mask );
if ( !$in_time )
{
$in_time = time();
}
$now = localtime($in_time, true);
// Begin calculating the required data/time value
switch ( $in_keyword )
{
case "FIRSTOFLASTMONTH":
$now["tm_mday"] = 1;
$now["tm_mon"]--;
if ( $now["tm_mon"] < 0 )
{
$now["tm_year"]--;
$now["tm_mon"]=11;
}
break;
case "FIRSTOFYEAR":
$now["tm_mday"] = 1;
$now["tm_mon"] = 0;
break;
case "FIRSTOFLASTYEAR":
$now["tm_mday"] = 1;
$now["tm_mon"] = 0;
$now["tm_year"]--;
break;
case "LASTOFYEAR":
$now["tm_mday"] = 31;
$now["tm_mon"] = 11;
break;
case "LASTOFLASTYEAR":
$now["tm_mday"] = 31;
$now["tm_mon"] = 11;
$now["tm_year"]--;
break;
case "LASTOFLASTMONTH":
case "FIRSTOFMONTH":
$now["tm_mday"] = 1;
break;
case "LASTOFMONTH":
$now["tm_mday"]= 1;
$now["tm_mon"]++;
if ( $now["tm_mon"] == 12 )
{
$now["tm_year"]++;
$now["tm_mon"]=0;
}
break;
case "STARTOFWEEK":
case "ENDOFWEEK":
case "STARTOFLASTWEEK":
case "ENDOFLASTWEEK":
case "YESTERDAY":
case "TOMORROW":
case "TODAY":
break;
default:
return $in_keyword;
}
if ( $now["tm_year"] < 1000 )
$now["tm_year"] += 1900;
// Convert the modified date time values back to to UNIX time
$new_time = mktime($now["tm_hour"], $now["tm_min"],
$now["tm_sec"], $now["tm_mon"] + 1,
$now["tm_mday"], $now["tm_year"]);
//$now["tm_isdst"] );
// Apply any element transformations to get the reuqired UNIX date
switch ( $in_keyword )
{
case "YESTERDAY":
$new_time -= 60 * 60 * 24;
break;
case "TOMORROW":
$new_time += 60 * 60 * 24;
break;
case "LASTOFLASTMONTH":
case "LASTOFMONTH":
$new_time -= 60 * 60 * 24;
break;
case "STARTOFWEEK":
///$new_time = strtotime("last Saturday");
$new_time = strtotime("this week");
break;
case "ENDOFWEEK":
$new_time = strtotime("next week - 1 day");
break;
case "STARTOFLASTWEEK":
///$new_time = strtotime("last Saturday");
$new_time = strtotime("last week");
break;
case "ENDOFLASTWEEK":
$new_time = strtotime("this week - 1 day");
break;
case "FIRSTOFMONTH":
default:
break;
}
if ( !class_exists("DateTime", false ) )
{
handle_error("This version of PHP does not have the DateTime class. Must be PHP >= 5.3 to use date criteria");
return false;
}
try {
$datetime = new DateTime("@$new_time");
}
catch(Exception $e) {
handle_error("Error in date formatting<BR>".$e->getMessage());
return "";
}
$ret =$datetime->format ( $in_mask );
return($ret);
}
// -----------------------------------------------------------------------------
// Function : convert_date_range_defaults_to_dates
// Takes a date default string and converts to an array of dates
// Handles the fact that dates may contain "-" characters and the date range specifier
// is indicated by a "-" too
// -----------------------------------------------------------------------------
function convert_date_range_defaults_to_dates($in_type, $in_string, &$range_start, &$range_end)
{
$retval = true;
if ( $in_type == "DATE" )
{
$elar = preg_split("/-/", $in_string);
if ( count($elar) == 1 )
$range_start = $in_string;
else if ( count($elar) == 3 ) // Specified in xx-xx-xx format
$range_start = $elar[0]."-".$elar[1]."-".$elar[2];
else
{
$retval = false;
$range_start = "TODAY";
}
}
if ( $in_type == "DATERANGE" )
{
$range_start = "TODAY";
$range_end = "TODAY";
$elar = preg_split("/-/", $in_string);
if ( count($elar) == 2 )
{
$range_start = $elar[0];
$range_end = $elar[1];
}
else if ( count($elar) == 6 ) // Specified in xx-xx-xx format
{
$range_start = $elar[0]."-".$elar[1]."-".$elar[2];
$range_end = $elar[3]."-".$elar[4]."-".$elar[5];
}
else if ( count($elar) == 4 && is_numeric($elar[0]) && is_numeric($elar[1]) && is_numeric($elar[2]) && !is_numeric($elar[3] ) ) // Specified in xx-xx-xx format
{
$range_start = $elar[0]."-".$elar[1]."-".$elar[2];
$range_end = $elar[3];
}
else if ( count($elar) == 4 && is_numeric($elar[1]) && is_numeric($elar[2]) && is_numeric($elar[3]) && !is_numeric($elar[0] ) ) // Specified in xx-xx-xx format
{
$range_start = $elar[0];
$range_end = $elar[1]."-".$elar[2]."-".$elar[3];
}
else
{
$retval = false;
$range_start = "TODAY";
$range_end = "TODAY";
}
}
return $retval;
}
function get_query_column_value( $name, &$arr )
{
$ret = "NONE";
foreach($arr as $val)
{
if ( $val->query_name == $name )
{
return $val->column_value;
}
}
//foreach($arr as $val)
//{
//return $val->column_value;
//}
//return $name;
}
function get_query_column( $name, &$arr )
{
foreach($arr as $k => $val)
{
if ( $val->query_name == $name )
return $arr[$k];
}
return false;
}
function get_group_column( $name, &$arr )
{
foreach($arr as $k => $val)
{
if ( $val->group_name == $name )
return $arr[$k];
}
return false;
}
function &get_db_image_string(
$in_driver,
$in_dbname,
$in_hostname,
$in_sql,
$in_conn = false
)
{
$rs = false;
if ( !$in_conn )
{
$hostname = $in_hostname;
$dbname = $in_dbname;
$driver = $in_driver;
$ado_connection = NewADOConnection($driver);
$ado_connection->SetFetchMode(ADODB_FETCH_ASSOC);
$ado_connection->PConnect($hostname,'','',$dbname);
$rs = $ado_connection->Execute($in_sql)
or die("Query failed : " . $ado_connection->ErrorMsg());
}
else
{
$rs = $in_conn->Execute($in_sql)
or die("Query failed : " . $in_conn->ErrorMsg());
}
$line = $rs->FetchRow();
if ( $line )
foreach ( $line as $col )
{
$data = $col;
break;
}
else
$data = false;
return $data;
$rs->Close();
}
function key_value_in_array($in_arr, $in_key)
{
if ( array_key_exists($in_key, $in_arr) )
$ret = $in_arr[$in_key];
else
$ret = false;
return ( $ret );
}
function get_request_item($in_val, $in_default = false, $in_default_condition = true)
{
if ( array_key_exists($in_val, $_REQUEST) )
$ret = $_REQUEST[$in_val];
else
$ret = false;
if ( $in_default && $in_default_condition && !$ret )
$ret = $in_default;
return ( $ret );
}
function session_item($in_item, $in_default = false)
{
$ret = false;
if ( isset_reportico_session_param ($in_item ) )
$ret = get_reportico_session_param($in_item);
if ( !$ret )
$ret = false;
if ( $in_default && !$ret )
$ret = $in_default;
set_reportico_session_param($in_item, $ret);
return ( $ret );
}
function session_request_item($in_item, $in_default = false, $in_default_condition = true)
{
$ret = false;
if ( isset_reportico_session_param ($in_item ) )
$ret = get_reportico_session_param($in_item);
if ( array_key_exists($in_item, $_REQUEST) )
$ret = $_REQUEST[$in_item];
if ( !$ret )
$ret = false;
if ( $in_default && $in_default_condition && !$ret )
$ret = $in_default;
set_reportico_session_param($in_item, $ret);
return ( $ret );
}
function get_checkbox_value($in_tag)
{
if ( array_key_exists($in_tag, $_REQUEST) )
return true;
else
return false;
}
function hhmmss_to_seconds($in_hhmmss)
{
$ar = explode(":", $in_hhmmss);
if ( count($ar) != 3 )
return(0);
if ( preg_match( "/ /", $in_hhmmss ) )
return(0);
$secs = (int)$ar[0] * 3600;
$secs += (int)$ar[1] * 60;
$secs += (int)$ar[2];
$first = substr($in_hhmmss, 0, 1);
if ( $first == "-" )
$secs = -$secs;
return($secs);
}
// Debug Message Handler
function handle_debug($dbgstr, $in_level)
{
global $g_system_debug;
global $g_code_area;
global $g_debug_mode;
//if ( $g_debug_mode )
//{
if ( $g_debug_mode >= $in_level )
{
$g_system_debug[] = array (
"dbgstr" => $dbgstr,
"dbgarea" => $g_code_area
);
}
//}
}
// User Error Handler
function handle_error($errstr, $type = E_USER_ERROR)
{
global $g_system_debug;
global $g_code_area;
global $g_errors;
$g_errors = true;
trigger_error($errstr, $type);
}
// exception handler function
function ExceptionHandler($exception)
{
echo "<PRE>";
echo $exception->getMessage();
echo $exception->getTraceAsString();
echo "</PRE>";
}
// error handler function
function ErrorHandler($errno, $errstr, $errfile, $errline)
{
global $g_system_errors;
global $g_error_status;
global $g_code_area;
global $g_code_source;
switch ( $errno )
{
case E_ERROR:
$errtype = sw_translate("Error");
break;
case E_NOTICE:
$errtype = sw_translate("Notice");
break;
case E_USER_ERROR:
$errtype = sw_translate("Error");
break;
case E_USER_WARNING:
$errtype = sw_translate("");
break;
case E_USER_NOTICE:
$errtype = sw_translate("");
break;
case E_WARNING:
$errtype = sw_translate("");
break;
default :
$errtype = sw_translate("Fatal Error");
}
// Avoid adding duplicate errors
if ( !$g_system_errors )
$g_system_errors = array();
foreach ( $g_system_errors as $k => $val )
{
if ( $val["errstr"] == $errstr )
{
$g_system_errors[$k]["errct"]++;
return;
}
}
$g_system_errors[] = array (
"errno" => $errno,
"errstr" => $errstr,
"errfile" => $errfile,
"errline" => $errline,
"errtype" => $errtype,
"errarea" => $g_code_area,
"errsource" => $g_code_source,
"errct" => 1
);
//echo "<PRE>";
//var_dump($g_system_errors);
//echo "</PRE>";
$g_error_status = 1;
}
// error handler function
function has_default($in_code)
{
if ( substr($in_code, 0, 1) == SW_DEFAULT_IND )
{
return true;
}
return false;
}
function get_default($in_code)
{
$out_val = false;
if ( defined("SW_DEFAULT_".$in_code) )
{
$out_val = constant("SW_DEFAULT_".$in_code);
}
return $out_val;
}
// error handler function
function check_for_default($in_code, $in_val)
{
$out_val = $in_val;
if ( !$in_val )
{
$out_val = $in_val;
if ( defined("SW_DEFAULT_".$in_code) )
{
$out_val = constant("SW_DEFAULT_".$in_code);
}
}
else
if ( substr($in_val, 0, 1) == SW_DEFAULT_IND )
{
$out_val = substr($in_val, 1);
if ( defined("SW_DEFAULT_".$in_code) )
{
$out_val = constant("SW_DEFAULT_".$in_code);
}
}
return $out_val;
}
// Look for a file in the include path, or the path of the current source file
function find_file_to_include($file_path, &$new_file_path, &$rel_to_include = "")
{
// First look in path of current file
static $_path_array = null;
if ( __FILE__ )
{
$selfdir = dirname(__FILE__);
$new_file_path = $selfdir. "/" . $file_path;
if (file_exists($new_file_path) || is_dir($new_file_path) )
{
$new_file_path = $selfdir . "/" . $file_path;
return true;
}
}
// else look in incude path
if(!isset($_path_array))
{
$_ini_include_path = get_include_path();
if ( defined ( "__DIR __" ) )
$selfdir = __DIR__;
else
$selfdir = dirname(__FILE__);
if(strstr($_ini_include_path,';'))
{
$_ini_include_path = $selfdir.";".$_ini_include_path;
$_path_array = explode(';',$_ini_include_path);
}
else
{
$_ini_include_path = $selfdir.":".$_ini_include_path;
$_path_array = explode(':',$_ini_include_path);
}
}
// Turn off Error handling for the following to avoid open_basedir errors
$old_error_handler = set_error_handler("ErrorHandler", 0);
foreach ($_path_array as $_include_path) {
if (file_exists($_include_path . "/" . $file_path))
{
$new_file_path = $_include_path . "/" . $file_path;
$old_error_handler = set_error_handler("ErrorHandler");
return true;
}
}
$old_error_handler = set_error_handler("ErrorHandler");
$new_file_path = $file_path;
return false;
}
// Translate string into another language using the g_translations global array
function &sw_translate($in_string)
{
global $g_language;
global $g_translations;
$out_string =& $in_string;
if ( $g_translations )
if ( array_key_exists( $g_language, $g_translations ) )
{
$langset =& $g_translations[$g_language];
if ( isset ( $langset[$in_string] ) )
$out_string =& $langset[$in_string];
}
return $out_string;
}
// Translate string into another language using the g_translations global array
function &sw_translate_report_desc($in_report)
{
global $g_language;
global $g_report_desc;
$in_report = preg_replace("/\.xml$/", "", $in_report);
$out_string = false;
if ( $g_report_desc )
if ( array_key_exists( $g_language, $g_report_desc ) )
{
$langset =& $g_report_desc[$g_language];
if ( isset ( $langset[$in_report] ) )
$out_string =& $langset[$in_report];
}
return $out_string;
}
// Load the relevant localisation strings from the language folder
function load_mode_language_pack($mode, $output_encoding = "utf-8", $replace = false)
{
global $g_language;
global $g_locale;
$langfile = find_best_location_in_include_path( "language" );
// Look for encoding specific language file
if ( defined("SW_OUTPUT_ENCODING") && SW_OUTPUT_ENCODING != "UTF8" && is_dir($langfile."/".$g_language."/".SW_OUTPUT_ENCODING) )
{
$langfile = $langfile."/".$g_language."/".SW_OUTPUT_ENCODING."/".$mode.".php";
require($langfile);
}
else
{
$langfile = $langfile."/".$g_language."/".$mode.".php";
if ( !is_file($langfile) )
{
trigger_error ( "Language pack for mode $mode, language $g_language not found", E_USER_ERROR );
}
else
{
require($langfile);
// Convert UTF-8 mode to output character set if differen from native language pack
if ( strtolower($output_encoding) != "utf-8" )
{
foreach ( $locale_arr["template"] as $k => $v )
{
$locale_arr["template"][$k] = iconv("utf-8", $output_encoding, $v);
}
}
if ( !$g_locale || !is_array($g_locale) || $replace )
{
$g_locale = $locale_arr;
}
else
{
if ( is_array($g_locale["template"]) && is_array($locale_arr) && is_array($locale_arr["template"]) )
{
$g_locale["template"] = array_merge($g_locale["template"], $locale_arr["template"]);
}
}
}
}
}
// Load the users custom translations strings from the project
function load_project_language_pack($project, $output_encoding = "utf-8")
{
global $g_translations;
global $g_report_desc;
global $g_locale;
global $g_language;
$g_translations = array();
// Include project specific language translations these could be
// held in the file lang.php or lang_<language>.php
$langfile = "projects/$project/lang_".$g_language.".php";
if ( is_file($langfile) )
{
include($langfile);
}
else
{
find_file_to_include($langfile, $langfile);
if ( is_file($langfile) )
{
include($langfile);
}
else
{
$langfile = "projects/$project/lang.php";
if ( !is_file($langfile) )
find_file_to_include($langfile, $langfile);
if ( is_file($langfile) )
{
include($langfile);
}
}
}
if ( $g_translations && is_array($g_translations) && isset ( $g_translations[$g_language] ) && is_array($g_translations[$g_language]) )
{
// Convert UTF-8 mode to output character set if differen from native language pack
if ( strtolower($output_encoding) != "utf-8" )
{
foreach ( $g_translations[$g_language] as $k => $v )
{
$g_translations["template"][$k] = iconv("utf-8", $output_encoding, $v);
}
}
}
}
// Set local language strings in templates
function localise_template_strings(&$in_smarty, $in_template = "")
{
global $g_locale;
if ( $g_locale )
{
foreach($g_locale["template"] as $key => $string)
{
$in_smarty->assign($key, $string);
}
}
// Now set the HTML META tag for identifying the HTML encoding character set
$in_smarty->assign("OUTPUT_ENCODING",get_output_encoding_html());
}
// Fetched translation for a template string
function template_xlate($in_string)
{
if (!$in_string ) return $in_string;
$out_string = "T_".$in_string;
global $g_locale;
if ( $g_locale )
{
if ( array_key_exists ( $out_string, $g_locale["template"] ) )
{
$out_string = $g_locale["template"][$out_string];
}
}
return $out_string;
}
// Is path executable and writeable?
function sw_path_executable($in_path)
{
global $g_language;
global $g_report_desc;
$perms = fileperms($in_path);
if ( !is_dir ( $in_path ) )
return false;
if (!strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && is_executable ( $in_path ) )
return false;
if ( !is_writeable ( $in_path ) )
return false;
return true;
}
// Search currentl directory and include for best absolute poistion
// of a file path
function find_best_url_in_include_path( $path )
{
$newpath = $path;
$reltoinclude;
//if ( !is_file ( $newpath ) && !is_dir ( $newpath ) )
//{
$found = find_file_to_include($newpath, $newpath, $reltoinclude);
$newpath = get_relative_path(str_replace ("/", "\\", realpath($newpath)), dirname(__FILE__));
if ( !$found )
return false;
//}
return $newpath;
}
function find_best_location_in_include_path( $path )
{
$newpath = $path;
$reltoinclude;
if ( substr($newpath, 0, 1) == "/" || substr($newpath, 0, 1) == "\\" )
{
if ( is_file ( $newpath ) || is_dir ( $newpath ) )
return $newpath;
else
return false;
}
//if ( !is_file ( $newpath ) && !is_dir ( $newpath ) )
//{
$found = find_file_to_include($newpath, $newpath, $reltoinclude);
$newpath = get_relative_path(str_replace ("/", "\\", realpath($newpath)), dirname(realpath($_SERVER["SCRIPT_FILENAME"])));
if ( !$found )
return false;
//}
return $newpath;
}
// Builds the base URL elements to HTML links produced in HTML
// created from :-
// 1 - the http://.....
// 2 - extra GET parameters
function build_forward_url_get_params($path, $forward_url_get_params, $remainder)
{
$urlpath = find_best_location_in_include_path($path);
if ( $forward_url_get_params || $remainder )
$urlpath .= "?";
if ( $forward_url_get_params )
$urlpath .= $forward_url_get_params;
if ( $remainder )
$urlpath .= "&";
if ( $remainder )
$urlpath .= $remainder;
return $urlpath;
}
// For backward compatibility ensures that date formats anything expressed in
// formats sutiable for the date function ( e.g. Y-m-d ) are converted to
// locale formats ( e.g. %Y-%m-%d )
function get_locale_date_format( $in_format ) {
$out_format = $in_format;
if ( $in_format == "%d/%m/%Y" ) $out_format = "d-m-Y";
if ( $in_format == "%Y/%m/%d" ) $out_format = "Y-m-d";
if ( $in_format == "%m/%Y/%d" ) $out_format = "m-Y-d";
if ( $in_format == "%d-%m-%Y" ) $out_format = "d-m-Y";
if ( $in_format == "%Y-%m-%d" ) $out_format = "Y-m-d";
if ( $in_format == "%m-%Y-%d" ) $out_format = "m-Y-d";
if ( !$in_format )
$in_format = "d-m-Y";
return ( $out_format );
}
// Calculates the URL path to reportico, ie the URL you
// would type into a browser address path to get to reportico
// This can be used to then find reportico images, links, runners etc
function get_reportico_url_path()
{
$newpath = "reportico.php";
$found = find_file_to_include($newpath, $newpath, $reltoinclude);
$newpath = get_relative_path(str_replace ("/", "\\", realpath($newpath)), dirname(realpath($_SERVER["SCRIPT_FILENAME"])));
$above = dirname($_SERVER["SCRIPT_NAME"]);
if ( $above == "/" )
$above = "";
$url_path = $above."/".session_request_item('reporticourl', dirname($newpath));
// If reportico source files are installed in root directory or in some other
// scenarios such as an invalid linkbaseurl parameter the dirname of the
// the reportico files returns just a slash (backslash on windows) so
// return a true path
if ( $url_path == "/" || $url_path == "\\" )
$url_path = "/";
else
$url_path = $url_path . "/";
return $url_path;
}
// available_languages for each folder in language create an entry.
// Used to generate language selection box
function available_languages()
{
$langs = array();
global $g_language;
$lang_dir = find_best_location_in_include_path( "language" );
if ( is_dir ( $lang_dir ) )
{
// Place english at the start
if ($dh = opendir($lang_dir))
{
while (($file = readdir($dh)) !== false)
{
if ( $file == "en_gb" || $file == "en_us" )
if ( is_dir ( $lang_dir."/".$file ) )
{
$langs[] = array("label" => template_xlate($file), "value" => $file, "active" => ($file == $g_language) );
}
}
closedir($dh);
}
if ($dh = opendir($lang_dir))
{
while (($file = readdir($dh)) !== false)
{
if ( $file != "." && $file != ".." && $file != "CVS" && $file != "packs" && $file != "en_us" && $file != "en_gb" )
if ( is_dir ( $lang_dir."/".$file ) )
{
$langs[] = array("label" => template_xlate($file), "value" => $file, "active" => ($file == $g_language) );
}
}
closedir($dh);
}
}
// No languages found at all - default to en_gb
if ( count ($langs) == 0 )
{
$langs[] = array ( "label" => template_xlate("en_gb"), "value" => "en_gb" );
}
return $langs;
}
// Takes project SW_DB_ENCODING and converts it to PHP representation for iconv
function db_charset_to_php_charset ($in)
{
$out = $in;
switch ( $in )
{
case "None" : $out = false; break;
case "UTF8" : $out = "UTF-8"; break;
case "LATIN1" : $out = "ISO-8859-1"; break;
case "LATIN2" : $out = "ISO-8859-2"; break;
case "LATIN3" : $out = "ISO-8859-3"; break;
case "LATIN4" : $out = "ISO-8859-4"; break;
case "LATIN4" : $out = "ISO-8859-4"; break;
case "LATIN5" : $out = "ISO-8859-9"; break;
case "LATIN6" : $out = "ISO-8859-10"; break;
case "LATIN7" : $out = "ISO-8859-13"; break;
case "LATIN8" : $out = "ISO-8859-14"; break;
case "LATIN9" : $out = "ISO-8859-15"; break;
case "LATIN9" : $out = "ISO-8859-16"; break;
case "LATIN9" : $out = "ISO-8859-16"; break;
case "ISO-8859-1" :
case "ISO-8859-2" :
case "ISO-8859-3" :
case "ISO-8859-4" :
case "ISO-8859-5" :
case "ISO-8859-6" :
case "ISO-8859-7" :
case "ISO-8859-8" :
case "ISO-8859-8-I" :
case "ISO-8859-9" :
case "ISO-8859-10" :
case "ISO-8859-11" :
case "ISO-8859-12" :
case "ISO-8859-13" :
case "ISO-8859-14" :
case "ISO-8859-15" :
case "ISO-8859-16" : $out = $in; break;
case "GB18030" :
case "GB2312" :
case "GBK" :
case "BIG5" : $out = strtolower($in); break;
case "WIN1250" : $out = "Windows-1250"; break;
case "WIN1251" : $out = "Windows-1251"; break;
case "WIN1252" : $out = "Windows-1252"; break;
case "WIN1253" : $out = "Windows-1253"; break;
case "WIN1254" : $out = "Windows-1254"; break;
case "WIN1255" : $out = "Windows-1255"; break;
case "WIN1256" : $out = "Windows-1256"; break;
case "WIN1257" : $out = "Windows-1257"; break;
case "WIN1258" : $out = "Windows-1258"; break;
case "TIS620" : $out = "tis-620"; break;
case "SJIS" : $out = "shift-jis"; break;
default : $out = false;
}
return $out;
}
// Takes project SW_OUTPUT_ENCODING and converts it to PHP representation for iconv
function output_charset_to_php_charset ($in)
{
$out = $in;
switch ( $in )
{
case "None" : $out = false; break;
case "UTF8" : $out = "UTF-8"; break;
case "ISO-8859-1" :
case "ISO-8859-2" :
case "ISO-8859-3" :
case "ISO-8859-4" :
case "ISO-8859-5" :
case "ISO-8859-6" :
case "ISO-8859-7" :
case "ISO-8859-8" :
case "ISO-8859-8-I" :
case "ISO-8859-9" :
case "ISO-8859-10" :
case "ISO-8859-11" :
case "ISO-8859-12" :
case "ISO-8859-13" :
case "ISO-8859-14" :
case "ISO-8859-15" :
case "ISO-8859-16" : $out = $in; break;
case "GB18030" :
case "GB2312" :
case "GBK" :
case "Big5" :
case "BIG5" : $out = strtolower($in); break;
case "Windows-1250" : $out = "Windows-1250"; break;
case "Windows-1251" : $out = "Windows-1251"; break;
case "Windows-1252" : $out = "Windows-1252"; break;
case "Windows-1253" : $out = "Windows-1253"; break;
case "Windows-1254" : $out = "Windows-1254"; break;
case "Windows-1255" : $out = "Windows-1255"; break;
case "Windows-1256" : $out = "Windows-1256"; break;
case "Windows-1257" : $out = "Windows-1257"; break;
case "Windows-1258" : $out = "Windows-1258"; break;
case "Shift_JIS" : $out = "shift-jis"; break;
case "TIS-620" : $out = "tis-620"; break;
default : $out = false;
}
return $out;
}
// Gets HTML META tag for setting HTML encoding based on project SW_OUTPUT_ENCODING tag
function get_output_encoding_html ()
{
$txt = '';
$tmp1 = '<meta http-equiv="Content-Type" content="text/html; charset=';
$tmp2 = '" />';
switch ( SW_OUTPUT_ENCODING )
{
case "None" : $txt = ''; break;
case "UTF8" : $txt = $tmp1 . "utf-8". $tmp2; '<meta charset="utf-8">'; break;
default : $txt = $tmp1 . SW_OUTPUT_ENCODING. $tmp2; break;
}
return $txt;
}
// Converts absolute path or a file we want to access with the absolute path
// of the calling script so we can get the relative location
function get_relative_path( $path, $compareTo ) {
// On some windows machines the SCRIPT_FILENAME may be lower or upper case
// compared to the target path which could be lower, upper or a mixture
// so convert every thing lower for the comparison
// Work out if it's Windows by looking for a back slash or a leading
// driver specifier eg "C:"
if ( preg_match ("/\\\/", $compareTo ) || preg_match ("/^[A-Za-z]:/", $compareTo ) )
{
$compareTo = strtolower ( $compareTo );
$path = strtolower ( $path );
}
// Convert Windows paths with "\" delimiters to forward delimiters
$path = preg_replace ("+\\\+", "/", $path );
$compareTo = preg_replace ("+\\\+", "/", $compareTo );
// clean arguments by removing trailing and prefixing slashes
if ( substr( $path, -1 ) == '/' ) {
$path = substr( $path, 0, -1 );
}
if ( substr( $path, 0, 1 ) == '/' ) {
$path = substr( $path, 1 );
}
if ( substr( $compareTo, -1 ) == '/' ) {
$compareTo = substr( $compareTo, 0, -1 );
}
if ( substr( $compareTo, 0, 1 ) == '/' ) {
$compareTo = substr( $compareTo, 1 );
}
// simple case: $compareTo is in $path
if ( strpos( $path, $compareTo ) === 0 ) {
$offset = strlen( $compareTo ) + 1;
return substr( $path, $offset );
}
$relative = array( );
$pathParts = explode( '/', $path );
$compareToParts = explode( '/', $compareTo );
foreach( $compareToParts as $index => $part ) {
if ( isset( $pathParts[$index] ) && $pathParts[$index] == $part ) {
continue;
}
$relative[] = '..';
}
foreach( $pathParts as $index => $part ) {
if ( isset( $compareToParts[$index] ) && $compareToParts[$index] == $part ) {
continue;
}
$relative[] = $part;
}
return implode( '/', $relative );
}
//
// Converts a string in HTML color format #rrggbb to an RGB array for use in pChart
function htmltorgb_pchart($color)
{
if ( is_array($color) )
{
return $color;
}
if ($color[0] == '#')
$color = substr($color, 1);
if (strlen($color) == 6)
list($r, $g, $b) = array($color[0].$color[1],
$color[2].$color[3],
$color[4].$color[5]);
elseif (strlen($color) == 3)
list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
else
return array("R" => 0,"G" => 0,"B" => 0);
$r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
return array("R" => $r, "G" => $g, "B" => $b);
}
//
// Converts a string in HTML color format #rrggbb to an RGB array
function htmltorgb($color)
{
if ( is_array($color) )
{
return $color;
}
if ($color[0] == '#')
$color = substr($color, 1);
if (strlen($color) == 6)
list($r, $g, $b) = array($color[0].$color[1],
$color[2].$color[3],
$color[4].$color[5]);
elseif (strlen($color) == 3)
list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
else
return array(0,0,0);
$r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
return array($r, $g, $b);
}
//
// Loads an existing report in to a reportico class instance
function &load_existing_report ( $reportfile, $projects_folder = "projects" )
{
$q = new reportico();
global $g_project;
$q->reports_path = $projects_folder."/".$g_project;
$q->projects_folder = $projects_folder;
$reader = new reportico_xml_reader($q, $reportfile, false);
$reader->xml2query();
return $q;
}
/*
PHP pre 5.3 function for converting a date string from one format
to another
*/
function reformatDate($informat, $outformat, $date) {
// echo "Function start $informat, $outformat, $date <BR>";
if ( preg_match("=/=", $date ) )
$arr = explode('/', $date);
else
$arr = explode('-', $date);
switch ($informat)
{
case "d-m-Y":
case "d/m/Y":
$inDay = $arr[0]; $inMonth = $arr[1]; $inYear = $arr[2];
break;
case "m-d-Y":
case "m/d/Y":
$inDay = $arr[1]; $inMonth = $arr[0]; $inYear = $arr[2];
break;
case "Y-m-d":
case "Y/m/d":
$inDay = $arr[2]; $inMonth = $arr[1]; $inYear = $arr[0];
break;
}
switch ($outformat)
{
case "d-m-Y":
$dt = $inDay.'-'.$inMonth.'-'.$inYear;
break;
case "m-d-Y":
$dt = $inMonth.'-'.$inDay.'-'.$inYear;
break;
case "Y-m-d":
$dt = $inYear.'-'.$inMonth.'-'.$inDay;
break;
case "d/m/Y":
$dt = $inDay.'/'.$inMonth.'/'.$inYear;
break;
case "m/d/Y":
$dt = $inMonth.'/'.$inDay.'/'.$inYear;
break;
case "Y/m/d":
$dt = $inYear.'/'.$inMonth.'/'.$inDay;
break;
}
return $dt;
}
// Converts a database column name into a label
// by converting any _ to spaces and upper casing the
// initial letter of each word
function column_name_to_label($columnname)
{
$retstring = str_replace("_", " ", $columnname);
$retstring = ucwords(mb_strtolower($retstring,output_charset_to_php_charset(SW_OUTPUT_ENCODING)));
return $retstring;
}
/*
** Returns if a particular reeportico session parameter is set
** using current session namespace
*/
function isset_reportico_session_param($param)
{
global $g_session_namespace_key;
return isset($_SESSION[$g_session_namespace_key][$param]);
}
/*
** Sets a reportico session_param
** using current session namespace
*/
function set_reportico_session_param($param, $value)
{
global $g_session_namespace_key;
$_SESSION[$g_session_namespace_key][$param] = $value;
}
/*
** Gets the value of a reportico session_param
** using current session namespace
*/
function get_reportico_session_param($param)
{
global $g_session_namespace_key;
if ( isset ( $_SESSION[$g_session_namespace_key][$param] ) )
{
return $_SESSION[$g_session_namespace_key][$param];
}
else
return false;
}
/*
** Clears a reportico session_param
** using current session namespace
*/
function unset_reportico_session_param($param)
{
global $g_session_namespace_key;
if ( isset ( $_SESSION[$g_session_namespace_key][$param] ) )
unset ($_SESSION[$g_session_namespace_key][$param]);
}
/*
**
** Register a session variable which will remain persistent throughout session
*/
function register_session_param($param, $value)
{
if ( !isset_reportico_session_param($param) )
set_reportico_session_param($param, $value );
return get_reportico_session_param($param);
}
/*
** Returns the current session name.
** Session variables exist
** using current session namespace
*/
function reportico_session_name()
{
global $g_session_namespace;
//if ( $g_session_namespace )
if ( get_reportico_session_param("framework_parent" ) )
return "NS_".$g_session_namespace;
else
return session_id()."_".$g_session_namespace;
}
/*
** Returns the current namespace
*/
function reportico_namespace()
{
global $g_session_namespace_key;
return $g_session_namespace_key;
}
/*
** initializes a reportico namespace
**
*/
function initialize_reportico_namespace($namespace)
{
if ( isset($_SESSION[$namespace]) )
unset($_SESSION[$namespace]);
$_SESSION[$namespace] = array();
$_SESSION[$namespace]["awaiting_initial_defaults"] = true;
$_SESSION[$namespace]["firsttimeIn"] = true;
}
?>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/luob-reportico.git
git@api.gitlife.ru:oschina-mirror/luob-reportico.git
oschina-mirror
luob-reportico
luob-reportico
master