ly) && !empty($current_user->ly) ) { $ly = $current_user->ly; } if ( isset($_GET['ly']) || isset($_POST['ly']) ) { if ( isset($_GET['ly']) ) { $ly = basename($_GET['ly']); } else { $ly = basename($_POST['ly']); } } if ( file_exists(getcwd()."/".$tutos['base'].'/layout/'. $ly .'.pinc') ) { require_once $calpath .'layout/'. $ly .'.pinc'; } else { require_once $calpath .'layout/classic_layout.pinc'; } } /** * Read ISO Country Codes. * HC * */ Function ReadISOCntryCde() { global $tutos,$lang ,$current_user; if ( file_exists(getcwd()."/". $tutos['base'] ."/iso_cntrycodes.p3") && is_readable(getcwd()."/".$tutos['base'] ."/iso_cntrycodes.p3") ) { include_once $calpath .'iso_cntrycodes.p3'; } return; } /** * Select a country code */ Function SelectCntryCde($field,$default) { global $lang ,$current_user; echo " \n"; return; } /** * Read a custom language file. */ Function ReadCustomLang(&$lang,$key,$path) { global $tutos; # error_log($_SERVER["REQUEST_URI"] .">ReadCustomLang:".count($lang)." ". $key ." ". $path ."
\n",3,$tutos[errlog]); if ($key == "en-us") { ReadCustomLang($lang,"en",$path); } if ( file_exists(getcwd()."/".$path ."/lang_custom.p3") && is_readable(getcwd()."/".$path ."/lang_custom.p3") ) { include_once $path ."/lang_custom.p3"; } if ( file_exists(getcwd()."/".$path ."/". $key ."_custom.p3") && is_readable(getcwd()."/".$path ."/". $key."_custom.p3") ) { include_once $path ."/". $key."_custom.p3"; } return; } /** * some standard procedures after reading */ Function ReadLangFinish(&$lang,$type) { # echo ">ReadFinish:".count($lang). " ". $type ."
\n"; # Set the common fields # Object Types $lang['team'] = $lang['Team']; $lang['product'] = $lang['ProductP']; $lang['address'] = $lang['Address']; $lang['user'] = $lang['User']; $lang['appointment'] = $lang['Appointment']; $lang['department'] = $lang['Department']; $lang['company'] = $lang['Company']; $lang['task'] = $lang['Task']; $lang['timetrack'] = $lang['Timetrack']; $lang['database'] = $lang['DB']; $lang['location'] = $lang['Location']; # Aliases if (isset($lang['ProdRole'])) { foreach ($lang['ProdRole'] as $r => $x) { $lang['ProdRole'.$r] = &$lang['ProdRole'][$r]; } } return($type); } /** --------------------------------------------------------------------------- * Read the language files. * Language is determined by looking at HTTP_ACCEPT_LANGUAGE in automatic mode */ Function ReadLang1(&$lang,$path,&$user) { global $tutos,$current_language; # error_log($_SERVER["REQUEST_URI"] ." > ReadLang1:".count($lang)." ". $path ." ". $user->f_name ." ". $user->l_name ." ". $user->lang ."
\n",3,$tutos[errlog]); /* if (! isset($user) ) { $user = new tutos_user($dbconn); } if ($user->getType() != "user") { echo "User Object required:".$user->getType() ." ". $user->getFullName() ."
\n"; } */ if ( isset($_GET['lg']) || isset($_POST['lg']) ) { if ( isset($_GET['lg']) ) { $lg = strtolower($_GET['lg']); } else { $lg = strtolower($_POST['lg']); } } else if ($current_language != "auto" ) { $lg = $current_language; } if (isset($lg)) { $ok = false; if ( ("en-us" == $lg) && file_exists(getcwd()."/".$path ."/en.p3") && is_readable(getcwd()."/".$path ."/en.p3") ) { include_once $path ."/". "en.p3"; $ok = true; } if ( file_exists(getcwd()."/".$path ."/". $lg .".p3") && is_readable(getcwd()."/".$path ."/". $lg .".p3") ) { include_once $path ."/". $lg .".p3"; $ok = true; } if ($ok) { ReadCustomLang($lang,$lg,$path); return ReadLangFinish($lang,$lg); } } $langs = ""; if ( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { $langs = $_SERVER['HTTP_ACCEPT_LANGUAGE']; } $tok = trim(strtok($langs,",")); $l = 0; while($tok && ($l == 0)) { if ( strpos($tok,";") > 0) { $tok = substr($tok,0,strpos($tok,";")); } $tok = strtolower($tok); if ( file_exists(getcwd()."/".$path ."/". $tok .".p3") && is_readable(getcwd()."/".$path ."/". $tok .".p3") ) { if ( "en-us" == $tok ) { include_once $path ."/en.p3"; include_once $path ."/en-us.p3"; } else { include_once $path ."/". $tok. ".p3"; } ReadCustomLang($lang,$tok,$path); return ReadLangFinish($lang,$tok); } if ( ereg("^en", $tok ) && file_exists(getcwd()."/".$path ."/en.p3") ) { include_once $path ."/en.p3"; if ( ereg("^en-us", $tok ) && file_exists(getcwd()."/".$path ."/en-us.p3") ) { include_once $path ."/en-us.p3"; } ReadCustomLang($lang,"en",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^it", $tok ) && file_exists(getcwd()."/".$path ."/it.p3") ) { include_once $path ."/it.p3"; ReadCustomLang($lang,"it",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^de", $tok ) && file_exists(getcwd()."/".$path ."/de.p3") ) { include_once $path ."/de.p3"; ReadCustomLang($lang,"de",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^es-mx", $tok ) && file_exists(getcwd()."/".$path ."/es-mx.p3") ) { include_once $path ."/es-mx.p3"; ReadCustomLang($lang,"es-mx",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^es-ni", $tok ) && file_exists(getcwd()."/".$path ."/es-ni.p3") ) { include_once $path ."/es-ni.p3"; ReadCustomLang($lang,"es-mx",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^es", $tok ) && file_exists(getcwd()."/".$path ."/es.p3") ) { include_once $path ."/es.p3"; ReadCustomLang($lang,"es",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^fr", $tok ) && file_exists(getcwd()."/".$path ."/fr.p3") ) { include_once $path ."/fr.p3"; ReadCustomLang($lang,"fr",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^ru", $tok ) && file_exists(getcwd()."/".$path ."/ru.p3") ) { include_once$path ."/ru.p3"; ReadCustomLang($lang,"ru",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^pt", $tok ) && file_exists(getcwd()."/".$path ."/pt-br.p3") ) { include_once $path ."/pt-br.p3"; ReadCustomLang($lang,"pt",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^pt-br", $tok ) && file_exists(getcwd()."/".$path ."/pt-br.p3") ) { include_once $path ."/pt-br.p3"; ReadCustomLang($lang,"pt-br",$path); return ReadLangFinish($lang,$tok); } if ( (ereg("^zh-tw", $tok ) || ereg("^zh-hk", $tok )) && file_exists(getcwd()."/".$path ."/tw.p3")) { include_once $path ."/tw.p3"; ReadCustomLang($lang,"tw",$path); return ReadLangFinish($lang,$tok); } if ( (ereg("^zh-cn", $tok ) || ereg("^zh-sg", $tok )) && file_exists(getcwd()."/".$path ."/zh.p3") ) { include_once $path ."/zh.p3"; ReadCustomLang($lang,"zh",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^zh", $tok ) && file_exists(getcwd()."/".$path ."/zh.p3") ) { include_once $path ."/zh.p3"; ReadCustomLang($lang,"zh",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^tw", $tok ) && file_exists(getcwd()."/".$path ."/tw.p3") ) { include_once $path ."/tw.p3"; ReadCustomLang($lang,"tw",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^ko", $tok ) && file_exists(getcwd()."/".$path ."/ko.p3") ) { include_once $path ."/ko.p3"; ReadCustomLang($lang,"ko",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^pl", $tok ) && file_exists(getcwd()."/".$path ."/pl.p3") ) { include_once $path ."/pl.p3"; ReadCustomLang($lang,"pl",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^nl", $tok ) && file_exists(getcwd()."/".$path ."/nl.p3")) { include_once $path ."/nl.p3"; ReadCustomLang($lang,"nl",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^sv", $tok ) && file_exists(getcwd()."/".$path ."/sv.p3") ) { include_once $path ."/sv.p3"; ReadCustomLang($lang,"sv",$path); return ReadLangFinish($lang,$tok); } if ( ereg("^el", $tok ) && file_exists(getcwd()."/".$path ."/el.p3")) { include_once $path ."/el.p3"; ReadCustomLang($lang,"el",$path); return ReadLangFinish($lang,$tok); } $tok = trim(strtok(",")); } if (file_exists(getcwd()."/".$path ."/en.p3")) { include_once $path ."/en.p3"; ReadCustomLang($lang,"en",$path); } return ReadLangFinish($lang,$tok); }; /** * Read the preffered language */ Function ReadLang(&$lang) { global $tutos , $current_user; $tutos['df'] = 0; if (!isset($lang)) $lang = array(); # define twodimensional part of languages $tutos[lang] = ReadLang1($lang,$tutos['base'] ."/localization",$current_user); } /** --------------------------------------------------------------------------- * A Fatal Error has occured and we stop via exit giving some useful info */ Function PHP_Error ($errno,$errstr,$errfile, $errline) { global $dbconn , $HTTP_POST_FILES, $tutos; if ($errno == 2048) return; # deprecated an other stuff # switch ($errno) { # case 2: # case 8: # return; # } # Fatal_Error($errno,$errstr ."
File: ". $errfile ."
Line:". $errline); $msg = "--------------------------\n"; $msg .= "DateTime:\t". Date("d.M.Y H:i:s T") ."\n"; $msg .= "Errno:\t\t". $errno ."\n"; $msg .= "\t\t". $errstr ."\n"; if (isset($dbconn->lastquery)) { $msg .= "LastQuery:\t". $dbconn->lastquery . "\n"; } $msg .= "File:\t\t". $errfile ." +". $errline ."\n"; if ( isset($_SERVER["HTTP_USER_AGENT"]) ) { $msg .= "Browser:\t". $_SERVER["HTTP_USER_AGENT"] ."\n"; } if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) ) { $msg .= "Language:\t". $_SERVER["HTTP_ACCEPT_LANGUAGE"] ."\n"; } $msg .= "URL:\t\t". $_SERVER["PHP_SELF"] ."\n"; if (isset($_SERVER["REQUEST_URI"])) { $msg .= "Request:\t". $_SERVER["REQUEST_URI"] ."\n"; } foreach($tutos[activemodules] as $i => $f) { $msg.= "activemodule:\t".$f."\n"; } if ( count($_POST) ) { foreach($_POST as $i => $f) { if ( is_Array($f) ) { foreach ($f as $i1 => $f1) { if (''.$i1 == 'pw') { $f1 = "xxx"; } $msg .= "POST:\t\t". $i ."[". $i1 ."]\t--> ". $f1 ."\n"; } } else { if (''.$i == 'pw') { $f = "xxx"; } $msg .= "POST:\t\t". $i . "\t--> ". $f ."\n"; } } } if ( count($HTTP_POST_FILES) ) { @reset($HTTP_POST_FILES); while ( list ($i,$f) = @each ($HTTP_POST_FILES) ) { if ( is_Array($f) ) { foreach ($f as $i1 => $f1) { $msg .= "FILES:\t\t". $i ."[". $i1 ."]\t--> ". $f1 ."\n"; } } else { $msg .= "FILES:\t\t". $i . "\t--> ". $f ."\n"; } } } if (isset($_SERVER['REMOTE_ADDR'])) { $msg .= "RemoteAddr:\t". $_SERVER['REMOTE_ADDR'] ."\n"; } if ( isset($_SERVER['HTTP_REFERER']) ) { $msg .= "Referer:\t". $_SERVER['HTTP_REFERER'] ."\n"; } $msg .= "TUTOS Version:\t". $tutos[version] ."\n"; if ( isset($dbconn) ) { $msg .= "Database:\t". $dbconn->getfullname() ."\n"; if ( $dbconn->db->alias != "" ) { $msg .= "DB Alias :\t". $dbconn->db->alias ."\n"; } } $msg .= "PHP Version:\t". phpversion() ." ". PHP_OS ."\n"; $msg .= "PHP Config:\t". get_cfg_var('cfg_file_path') ."\n"; if ( isset($_SERVER['SERVER_SOFTWARE']) ) { $msg .= "APACHE Version:\t". $_SERVER['SERVER_SOFTWARE'] ."\n"; } # Backtrace if (function_exists('debug_backtrace')) { $x = debug_backtrace(); $msg .= "STACKTRACE:\n"; foreach( $x as $s) { if (isset($s["function"])) { $msg .= " ". $s["function"]; } if (isset($s["args"])) { $msg .= " ("; $sep = ""; foreach( $s["args"] as $a) { $t = gettype($a); if ( $t == "object" && method_exists($a,"gettype")) { $t = $a->getType(); } $msg .= $sep ."<". $t .">".$a; $sep = ","; } $msg .= ")"; } if (isset($s["type"])) { $msg .= "\t". $s["type"]; } if (isset($s["file"])) { $msg .= "\t\t". $s["file"] ." +". $s["line"]; } $msg .= "\n"; } } error_log($msg,3,$tutos[errlog]); return; } /* --------------------------------------------------------------------------- * A Fatal Error has occured and we stop via exit giving some useful info */ Function Fatal_Error ($text1,$text2 = "") { global $current_user,$lang,$tutos,$dbconn,$HTTP_POST_FILES; if ( ! headers_sent() ) { # @ob_end_clean(); loadlayout(); $l = new layout($current_user); echo $l->PrintHeader("FATAL ERROR"); } else { /* End possible Tables ... echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; */ } echo "\n"; echo "Error:
 ". $text1 ."
\n"; echo "Detail:
 ". $text2 ."
\n"; echo "

\n"; echo "TUTOS Version: ". $tutos[version] ."
\n"; echo "PHP Version: ". phpversion() ." ". PHP_OS ."
\n"; echo "PHP Config: ". get_cfg_var('cfg_file_path') ."
\n"; if ( isset($_SERVER['SERVER_SOFTWARE']) ) { echo "APACHE Version: ". $_SERVER['SERVER_SOFTWARE'] ."
\n"; } if ( isset($_SERVER["HTTP_USER_AGENT"]) ) { echo "Browser: ". $_SERVER["HTTP_USER_AGENT"] ."
\n"; } if ( isset($dbconn) && is_object($dbconn) ) { echo "Database: ". makelink ("admin/update.php?id=".$dbconn->db->id,$dbconn->getFullname()) ." (". $dbconn->gettype() .") ". $dbconn->conn ."
\n"; echo "DB User : ". $dbconn->db->user ."
\n"; if ( $dbconn->db->alias != "" ) { echo "DB Alias : ". $dbconn->db->alias ."
\n"; } } echo "URL: ". $_SERVER["PHP_SELF"] ."
\n"; foreach($tutos[activemodules] as $i => $f) { echo "activemodule: ".$f."
\n"; } if (isset($_SERVER["REQUEST_URI"])) { echo "Request: ". $_SERVER["REQUEST_URI"] ."
\n"; } if ( isset($_SERVER['HTTP_REFERER']) ) { echo "Called from: ". $_SERVER['HTTP_REFERER'] ."
\n"; } if ( count($_POST) ) { foreach($_POST as $i => $f) { if ( is_Array($f) ) { foreach ($f as $i1 => $f1) { if (''.$i1 == 'pw') { $f1 = "xxx"; } echo "POST: ". $i ."[". $i1 ."]  = ". $f1 ."
\n"; } } else { if (''.$i == 'pw') { $f = "xxx"; } echo "POST: ". $i . "  = ". $f ."
\n"; } } } if ( count($HTTP_POST_FILES) ) { @reset($HTTP_POST_FILES); while ( list ($i,$f) = @each ($HTTP_POST_FILES) ) { if ( is_Array($f) ) { foreach ($f as $i1 => $f1) { echo "FILES:\t\t". $i ."[". $i1 ."]\t--> ". $f1 ."
\n"; } } else { echo "FILES:\t\t". $i . "\t--> ". $f ."
\n"; } } } if (isset($_SERVER['REMOTE_ADDR'])) { echo "Called by: ". $_SERVER['REMOTE_ADDR'] ."
\n"; } echo "PHP Info Page
\n"; echo "Included Files:
\n"; $included_files = get_included_files(); foreach($included_files as $filename) { echo $filename ."
\n"; } # Stop recursion if ( ! isset($tutos[errlevel]) ) { $tutos[errlevel] = 0; } if ( $tutos[errlevel] < 1 ) { $tutos[errlevel]++; if ( isset($dbconn) && is_object($dbconn) ) { $dbconn->Abort("WORK"); } } if(!is_object($dbconn)) if ( isset($dbconn) && is_object($dbconn) ) { $dbconn->Close(); } echo ""; // show it in the debug trigger_error("FATAL Error:\n\t".$text1."\n\t".$text2); exit; } /** * Print the parts of header neccessary for overlib */ Function Overlib_Header () { global $tutos; if ( !isset($_SERVER['HTTP_USER_AGENT']) || ereg("Lynx",$_SERVER['HTTP_USER_AGENT']) || ereg("w3m",$_SERVER['HTTP_USER_AGENT']) ) { $tutos[useoverlib] = 0; return; } if ( ($tutos[useoverlib] == 1) && file_exists(getcwd()."/".$tutos['base']. "/". $tutos[overlib]) && is_readable(getcwd()."/".$tutos['base']."/".$tutos[overlib]) ) { $tutos[useoverlib] = 1; echo "

\n"; echo " \n"; # $d = dirname(getcwd()."/".$tutos['base']. "/". $tutos[overlib]); # if (file_exists($d."/overlib_shadow.js")) { # echo " \n"; # } else { # } } else { $tutos[useoverlib] = 0; #echo "\n\n\n\n"; } } /** * The start of a double table */ Function DoubleTableStart($innersp = 0, $innerpad = 2) { echo "
\n"; echo "\n"; } /* * The start of a double table */ Function DoubleTableEnd() { echo "
\n"; echo "
\n"; } /** * return the baseurl * useconfig = true will use the $tutos[baseurl] config variable to determine the baseurl * this will be used for urls in mails and other output * the string will end with a / */ Function getBaseURL($useconfig = false) { global $tutos; if ($useconfig && isset($tutos[baseurl][$_SESSION['dbnr']])) { # the given variable must include the tutos part of the url $d = explode('/',dirname($_SERVER['PHP_SELF'])); foreach($d as $i => $f) { if ($f == 'php' ) break; unset($d[$i]); } $dir = implode($d,'/'); if ( $dir == "/" ) { $dir = ""; } $r = sprintf("%s/%s/",$tutos[baseurl][$_SESSION['dbnr']],$dir); return $r; } else if ( function_exists('getBaseURL_special')) { // You may change generation of BaseURL in function 'getBaseURL_special' in // file 'webelements_special.p3'. return( getBaseURL_special()); } else { // Base URL generation. Jim Lieb // Calculate a base url that will work for port translating firewalls // and sites that are strictly SSL (port 443) based. // We use HTTP_HOST to let the virtual host and client header tell us // what they want. Uncomment the following line and comment the if stmt // to return to original functionality. // $tutos[baseurl] = sprintf("http://%s:%s%s/", // $SERVER_NAME, $SERVER_PORT, dirname($PHP_SELF); $dir = dirname($_SERVER['PHP_SELF']); if ( $dir == "/" ) { $dir = ""; } if($_SERVER['SERVER_PORT'] == 443) { $r = sprintf("https://%s%s/",$_SERVER['HTTP_HOST'],$dir); } else if(isset($_SERVER['HTTPS'])) { $r = sprintf("http".($_SERVER['HTTPS']=="on"?"s":"")."://%s%s/",$_SERVER['HTTP_HOST'], $dir); } else { $r = sprintf("http://%s%s/",$_SERVER['HTTP_HOST'], $dir); } return $r; } } /* * substitute urls in the given text */ Function urlReplace($b,$mode = 1) { if ( $mode == 1 ) { $b = myentities($b); } $b = eregi_replace("(&)","&",$b); $b = eregi_replace("(<BR />)","
",$b); $b = eregi_replace("(<BR>)","
",$b); $b = eregi_replace("<([BIU])>","<\\1>",$b); $b = eregi_replace("</([BIU])>","",$b); $b = eregi_replace("(ftp://[a-z,0-9:/?&=_.+-]*)","\\1",$b); $b = eregi_replace("(file:/[a-z,0-9:/?&=_.+-]*)","\\1",$b); $b = eregi_replace("(http://[a-z,0-9:/?&=_.+-]*)","\\1",$b); $b = eregi_replace("(https://[a-z,0-9:/?&=_.+-]*)","\\1",$b); $b = eregi_replace("(mailto:[a-z,0-9:/?&=_.@-]*)","\\1",$b); return $b; } /** * A function to make a mailto reference * $adr = addressobject or string displayed in link * $email = email address * $name = fullname of the email address owner (not displayed, used for mailto link) * $subject = email default subject */ Function asEmail($adr,$email,$name,$subject = "TUTOS") { global $lang, $tutos, $current_user; if ( ! isset($email) ) { return; } if ( $email=='' ) { return; } if ( is_Object($adr) ) { $fn = $adr->getFullname() ; } else { $fn = $adr; } if ( $current_user->feature_ok(usemail,PERM_NEW) && ($tutos[usemail] == 1) ) { return makelink("mail_new.php?to[]=". UrlEncode($email)."&subject=".UrlEncode($subject) ,$fn,sprintf($lang['MailSendTo'],$email)); } else if ( $tutos[usemail] == 2 ) { return makelink($tutos[squirrelurl]."src/compose.php?send_to=". UrlEncode(trim($email))."&subject=".UrlEncode($subject) ,$fn,sprintf($lang['MailSendTo'],$email), '', '_blank'); } else { return makelink("mailto:". $name ."<". trim($email) .">?subject=".$subject ,$fn,sprintf($lang['MailSendTo'],$email) ); } } /** * remove a key from a url * */ Function delUrlParameter($href,$key) { $href = ereg_replace("[&]". $key ."=[^&]*","",$href); $href = ereg_replace("[?]". $key ."=[^&]*[&]","?",$href); return $href; } /** * add keys to a url * $http true = http protocol (used for redirect links) * $html false (default) = html format (used in links) */ Function addUrlParameter($href,$key,$http = false) { if ( ! strstr($href,"?") ) { $pre = "?"; } else { if ($http == false) { $pre = htmlentities("&"); } else { $pre = "&"; } } $href .= $pre . $key; return $href; } /** * store message for display on next page * */ Function addMessage($gotourl,$msg,$http = false) { if ($msg != "") { $_SESSION['MSGID'.strlen($msg)] = UrlEncode($msg); return addUrlParameter($gotourl,"msgid=MSGID". strlen($msg),$http); } return $gotourl; } /** * add keys to a url * */ Function addSessionKey($href,$http = false) { global $tutos; if ( strstr($href,"mailto:") ) { return $href; } if ( strstr($href,"file:") ) { return $href; } if ( strstr($href,"ftp:") ) { return $href; } if ( eregi("^javascript:",$href) ) { return $href; } if ($http == false) { $pre2 = htmlentities("&"); } else { $pre2 = "&"; } if ( ! strstr($href,"?") ) { $pre = "?"; } else { $pre = $pre2; } if ( strpos($href,"#") ) { $add = substr($href,strpos($href,"#")); $href = substr($href,0,strpos($href,"#")); } else { $add = ""; } if ( isset($_GET['lg']) && ($_GET['lg'] != "") ) { $href = $href . $pre . "lg=".$_GET['lg']; $pre = "&"; } else if ( isset($_POST['lg']) && ($_POST['lg'] != "") ) { $href .= $pre . "lg=".$_POST['lg']; $pre = $pre2; } if ( isset($_GET['ly']) && ($_GET['ly'] != "") ) { $href .= $pre . "ly=".$_GET['ly']; $pre = $pre2; } else if ( isset($_POST['ly']) && ($_POST['ly'] != "") ) { $href .= $pre . "ly=".$_POST['ly']; $pre = $pre2; } if ( isset($_GET['th']) && ($_GET['th'] != "") ) { $href .= $pre . "th=".$_GET['th']; $pre = $pre2; } else if ( isset($_POST['th']) && ($_POST['th'] != "") ) { $href .= $pre . "th=".$_POST['th']; $pre = $pre2; } if ( (isset($tutos['SESSID'])) && (!isset($_COOKIE['TUTOS'])) ) { if ( session_id() != "" ) { $href .= $pre . session_name() ."=". session_id(); $pre = $pre2; } } return $href . $add; } /** * print the hidden Form Elements * */ Function hiddenFormElements() { global $tutos; if ( isset($_GET['lg']) && ($_GET['lg'] != "") ) { echo " \n"; } else if ( isset($_POST['lg']) && ($_POST['lg'] != "") ) { echo " \n"; } if ( isset($_GET['ly']) && ($_GET['ly'] != "") ) { echo " \n"; } else if ( isset($_POST['ly']) && ($_POST['ly'] != "") ) { echo " \n"; } if ( isset($_GET['th']) && ($_GET['th'] != "") ) { echo " \n"; } else if ( isset($_POST['th']) && ($_POST['th'] != "") ) { echo " \n"; } if ( (isset($tutos['SESSID'])) && (!isset($_COOKIE['TUTOS'])) ) { if ( SID != "" ) { echo " \n"; } } } /** * create a link in navigation menu */ Function menulink ( $href , $text , $info = "" ,$plus = "", $attr = "") { global $tutos, $current_user; if ( $href == "" ) { return $text; } $href = addSessionKey($href,false); if ( ! eregi("^(JavaScript:|http:|https:|mailto:|ftp:|gopher:|\./)",$href) ) { #$href = $tutos['base'] ."/". $href; $href = $href; } #if ( $current_user->feature_ok(useoverlib,PERM_SEE) && ($plus != "") ) { return sprintf ("%s",$href,$attr,myentities($plus,1),myentities($info,1),$text); #} else { # return sprintf ("%s",$href,$attr,myentities($info,1),myentities($info),$text); #} } /** * create a link */ Function makelink ( $href , $text , $info = "" ,$plus = "", $target = "") { global $tutos, $current_user; if (empty($text)) { return; } if (empty($href)) { return $text; } if ((!empty($target)) && (!eregi("^target=",$target))) { $target = 'target="'.$target.'"'; } $href = addSessionKey($href,false); if ( ! eregi("^(JavaScript:|http:|https:|mailto:|ftp:|gopher:|\./)",$href) ) { #$href = $tutos['base'] ."/". $href; $href = $href; } #if ( $current_user->feature_ok(useoverlib,PERM_SEE) && ($plus != "") ) { # return sprintf ("%s",$href,myentities($plus,1),myentities($info,1),$text); #} else { return sprintf ("%s",$href,myentities($info,1),myentities($info),$text); #} } /** * create a link with confirmation * */ Function confirmlink ( $href , $text , $info = "" ,$plus = "") { global $tutos, $current_user; $href = addSessionKey($href,false); if ( ! ereg("^(http:|https:|mailto:|ftp:|gopher:|\./)",$href) ) { $href = $tutos['base'] ."/". $href; } if ( $current_user->feature_ok(useoverlib,PERM_SEE) && ($plus != "") ) { return sprintf ("%s",$href,myentities($plus),myentities($info),myentities($info),$text); } else { return sprintf ("%s",$href,myentities($info,1),myentities($info,1),myentities($info),$text); } } /** * check a field for a float * the reformated float is stored in the given variable */ function checkfloat(&$value,$allowempty = true) { global $lang; if ($allowempty && empty($value)) { return true; } if ($lang['ThousandPoint'] == ".") { $p = "\."; } else { $p = $lang['ThousandPoint']; } $x = eregi_replace($p,"",$value); # Set a decimal point that sscanf understand if ($lang['DecPoint'] != ".") { $x = eregi_replace($lang['DecPoint'],".",$x); } $f = 0.0; list($f) = sscanf($x,"%f"); # echo $value ." => ". $x ."=". $f ." using " .$lang['ThousandPoint'] ."
"; if (!is_double($f)) { return false; } $value = $f; return true; } /* --------------------------------------------------------------------------- * check a given name * field = name in url * field2 = arrayname for selections url * mode = where to search * a = addresses * t = teams * c = companies * d = departments * p = products * i = installations */ Function check_field($name,$field,$field2,$mode = "at") { global $tutos,$dbconn,$msg,$gotourl,$lang,$current_user; $gotourl= addUrlParameter($gotourl,$field."=".UrlEncode($name),true); if ( empty($name) ) { return 0; } $n = 0; $n1 = 0; $n2 = 0; $n3 = 0; $n4 = 0; $n5 = 0; $n6 = 0; if ( strstr($mode,"a") != FALSE ) { $q1 = "SELECT * from ". $dbconn->prefix ."addresses WHERE". $dbconn->Like ("f_name",$name,"m_name","l_name"); $q1 .= " OR ". $dbconn->Like ("l_name",$name,"f_name","m_name"); check_dbacl( $q1, $current_user->id); $r1 = $dbconn->Exec($q1); $n1 = $r1->numrows(); $n += $n1; } if ( strstr($mode,"t") != FALSE ) { $q2 = "SELECT * from ". $dbconn->prefix ."teams WHERE". $dbconn->Like ("name",$name); check_dbacl( $q2, $current_user->id); $r2 = $dbconn->Exec($q2); $n2 = $r2->numrows(); $n += $n2; } if ( strstr($mode,"d") != FALSE ) { # in order to find equally named departement within companies we try # to use the second word as a company search string $pos = strpos($name," / "); if ( $pos == false ) { $q3 = "SELECT * from ". $dbconn->prefix ."departments WHERE". $dbconn->Like("name",$name); check_dbacl( $q3, $current_user->id); } else { $dname = substr($name,0,$pos); $cname = substr($name,$pos + 3); $q3 = "SELECT d.* from ". $dbconn->prefix ."departments d , ". $dbconn->prefix ."companies c WHERE (c.id = d.c_id) AND (". $dbconn->Like("d.name",$dname) .") AND (". $dbconn->Like("c.name",$cname) .")"; # echo $dname . " | ". $cname ."
".$q3; } $r3 = $dbconn->Exec($q3); $n3 = $r3->numrows(); $n += $n3; } if ( strstr($mode,"c") != FALSE ) { $q4 = "SELECT * from ". $dbconn->prefix ."companies WHERE". $dbconn->Like("name",$name); check_dbacl( $q4, $current_user->id); $r4 = $dbconn->Exec($q4); $n4 = $r4->numrows(); $n += $n4; } if ( strstr($mode,"p") != FALSE ) { $q5 = "SELECT * from ". $dbconn->prefix ."products WHERE". $dbconn->Like("name",$name,"version"); check_dbacl( $q5, $current_user->id); $r5 = $dbconn->Exec($q5); $n5 = $r5->numrows(); $n += $n5; } if ( class_exists( 'installation') && (strstr($mode,"i") != FALSE) ) { $q6 = "SELECT * from ". $dbconn->prefix ."installations WHERE". $dbconn->Like("id",$name); check_dbacl( $q6, $current_user->id); $r6 = $dbconn->Exec($q6); $n6 = $r6->numrows(); $n += $n6; } if ( 0 == $n) { if ( strstr($mode,"c") != FALSE ) { $msg .= sprintf($lang['Err0012'],$lang['Company'],$name) ."
"; $r4->free(); } if ( strstr($mode,"d") != FALSE ) { $msg .= sprintf($lang['Err0012'],$lang['Department'],$name) ."
"; $r3->free(); } if ( strstr($mode,"t") != FALSE ) { $msg .= sprintf($lang['Err0012'],$lang['Team'],$name) ."
"; $r2->free(); } if ( strstr($mode,"a") != FALSE ) { $msg .= sprintf($lang['Err0012'],$lang['Address'],$name) ."
"; $r1->free(); } if ( strstr($mode,"p") != FALSE ) { $msg .= sprintf($lang['Err0012'],$lang['ProductP'],$name) ."
"; $r5->free(); } if ( class_exists( 'installation') && (strstr($mode,"i") != FALSE) ) { $msg .= sprintf($lang['Err0012'],$lang['Installation'],$name) ."
"; $r6->free(); } return 0; } if ( $n > $tutos[maxselect] ) { # Valid for xx entries $msg .= sprintf($lang['Err0018'],$name,$n) ."
"; # Ask for detailed selection $msg .= $lang['Err0006'] ."
"; return 0; } if ( $n > 1) { $msg .= sprintf($lang['Err0018'],$name,$n) ."
"; # Ask for detailed selection $msg .= $lang['Err0006'] ."
"; if ( strstr($mode,"a") != FALSE ) { $a = 0; while ( $a < $n1 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r1->get($a, "id"),true); $a++; } $r1->free(); } if ( strstr($mode,"t") != FALSE ) { $a = 0; while ( $a < $n2 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r2->get($a, "id"),true); $a++; } $r2->free(); } if ( strstr($mode,"d") != FALSE ) { $a = 0; while ( $a < $n3 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r3->get($a, "id"),true); $a++; } $r3->free(); } if ( strstr($mode,"c") != FALSE ) { $a = 0; while ( $a < $n4 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r4->get($a, "id"),true); $a++; } $r4->free(); } if ( strstr($mode,"p") != FALSE ) { $a = 0; while ( $a < $n5 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r5->get($a, "id"),true); $a++; } $r5->free(); } if ( class_exists( 'installation') && (strstr($mode,"i") != FALSE) ) { $a = 0; while ( $a < $n6 ) { $gotourl = addUrlParameter($gotourl,$field2."[]=".$r6->get($a, "id"),true); $a++; } $r6->free(); } return 0; } if ( $n1 == 1 ) { $a = new tutos_address($dbconn); $a->read_result($r1,0); } else if ( $n2 == 1 ) { $a = new team($dbconn); $a->read_result($r2,0); } else if ( $n3 == 1 ) { $a = new department($dbconn); $a->read_result($r3,0); } else if ( $n4 == 1 ) { $a = new company($dbconn); $a->read_result($r4,0); } else if ( $n5 == 1 ) { $a = new product($dbconn); $a->read_result($r5,0); } else if ( class_exists( 'installation') && ($n6 == 1) ) { $a = new installation($dbconn); $a->read_result($r6,0); } if ( strstr($mode,"a") != FALSE ) { $r1->free(); } if ( strstr($mode,"t") != FALSE ) { $r2->free(); } if ( strstr($mode,"d") != FALSE ) { $r3->free(); } if ( strstr($mode,"c") != FALSE ) { $r4->free(); } if ( strstr($mode,"p") != FALSE ) { $r5->free(); } if ( class_exists( 'installation') && (strstr($mode,"i") != FALSE) ) { $r6->free(); } if (! $a->see_ok()) { $msg .= sprintf($lang['Err0012'],$lang[$a->getType()],$name) ."
"; return 0; } if (! $a->use_ok()) { $msg .= sprintf($lang['Err0001'],$lang[$a->getType()],$a->getFullname()) ."
"; return 0; } return $a; } /* --------------------------------------------------------------------------- * enter a tax rate * */ Function TAX_Select($name,$def) { global $tutos; $t = split(" ",$tutos[vatlist]); if ( count($t) > 0 ) { $found = 0; echo "\n"; } else { echo ""; } } /* --------------------------------------------------------------------------- * enter a currency * */ Function Currency_Select($name,$def) { global $lang , $tutos; $found = 0; echo "\n"; } /** * compare objects for sorting */ function obj_cmp(&$a,&$b) { if (!is_object($a)) return 0; if (!is_object($b)) return 0; return strcasecmp($a->getFullName(),$b->getFullName()); } /* --------------------------------------------------------------------------- * find the object from a given id by scanning the tables * */ Function scanObject(&$dbconn,$id) { $type = noobject; $tutos[tables]['calendar'] = usecalendar; $tutos[tables]['products'] = useprojects; $tutos[tables]['addresses'] = useaddressbook; $tutos[tables]['companies'] = usecompany; $tutos[tables]['departments'] = usedepartment; $tutos[tables]['teams'] = useteams; $tutos[tables]['tasks'] = usetaskmanagement; $tutos[tables]['people'] = useuser; $tutos[tables]['location'] = uselocation; $tutos[tables]['timetrack'] = usetimetrack; $tutos[tables]['tutos_dbs'] = usedbs; $found = false; reset($tutos[tables]); while( list ($i,$type) = @each ($tutos[tables])) { $q = "SELECT id from ". $dbconn->prefix . $i ." where id =". $id; $r = $dbconn->Exec($q,1); $n = $r->numrows(); # echo $q ." ". $n ."
"; $r->free(); if ( 0 != $n) { $found = true; break; } } if ( $found == false ) { $type = noobject; } return $type; } /* --------------------------------------------------------------------------- * find the object from a given id * */ Function getObject(&$dbconn,$id, $usecache = 1) { global $g_hash,$tutos,$calpath; $id = (int)$id; if ( $id == -1 ) return -1; if ( $id == 0 ) return -1; if ( empty($id) ) return -1; if ( $usecache == 1 ) { if ( isset($g_hash[$id]) ) { $g_hash['hits']++; return $g_hash[$id]; } } $found = false; $found_by_hash = false; $q = "select tutostype from ". $dbconn->prefix . $dbconn->db->tablename_hash ." where id = ". $id; $r = $dbconn->Exec($q,1); if ($r->numrows() == 1 ) { $found = true; $found_by_hash = true; $g_hash['hits2']++; $type = $r->get(0,"tutostype"); } $r->free(); if ( ! $found ) { $type = scanObject($dbconn,$id); } switch ($type) { case noobject: # search modules (scan failed) foreach ($tutos[modules] as $r => $x) { loadmodule($r); $ref = &new $x[name]($dbconn); if ( ! method_exists($ref,"read") ) { echo "missing read method .". $id ." ". $r ."
"; } $ref = $ref->read($id,$ref); if ( isset($ref->id) && ($ref->id == $id) ) { break; } $ref = -1; } break; case usecalendar: if ( ! class_exists ("appointment") ) { require($calpath ."appointment.pinc"); } $ref = &new appointment($dbconn); $ref = $ref->read($id,$ref); break; case useprojects: if ( ! class_exists ("product") ) { require($calpath ."product.pinc"); } $ref = &new product($dbconn); $ref = $ref->read($id,$ref); break; case useaddressbook: $ref = &new tutos_address($dbconn); $ref = $ref->read($id,$ref); break; case usecompany: if ( ! class_exists ("company") ) { require($calpath ."company.pinc"); } $ref = &new company($dbconn); $ref = $ref->read($id,$ref); break; case usedepartment: if ( ! class_exists ("department") ) { require($calpath ."department.pinc"); } $ref = &new department($dbconn); $ref = $ref->read($id,$ref); break; case useteams: $ref = &new team($dbconn); $ref = $ref->read($id,$ref); break; case usetaskmanagement: if ( ! class_exists ("task") ) { require($calpath ."task.pinc"); } $ref = &new task($dbconn); $ref = $ref->read($id,$ref); break; case useuser: $ref = &new tutos_user($dbconn); $ref = $ref->read($id,$ref,1); break; case uselocation: if ( ! class_exists ("location") ) { require($calpath ."location.pinc"); } $ref = &new location($dbconn); $ref = $ref->read($id,$ref); break; case usetimetrack: if ( ! class_exists ("timetrack") ) { require($calpath ."timetrack.pinc"); } $ref = &new timetrack($dbconn); $ref = $ref->read($id,$ref); break; case usedbs: $ref = &new database($dbconn); $ref = $ref->read($id,$ref); break; default: # Check module $ref = -1; foreach ($tutos[modules] as $r => $x) { if ( $x['perm'] == $type ) { loadmodule($r); $ref = &new $x[name]($dbconn); if ( ! method_exists($ref,"read") ) { echo "missing read method ". $id ." ". $r ."
"; } $ref = $ref->read($id,$ref); if ( $ref->id == $id ) { break; } $ref = -1; } } break; } # if we are here we have found something that has no entry in # the hashtable if( ($ref != -1) && ! $found_by_hash ) { $ref->save_obj_id(); } if ( $ref == -1 ) { $g_hash[$id] = -1; } return $ref; } /** * preset a object from check_field results */ Function preset_from_array_or_input(&$obj,$field,$name) { if ( isset($_GET[$name .'fn']) ) { $obj->xfn[$name] = StripSlashes($_GET[$name .'fn']); } if ( isset($_GET[$name .'id']) ) { $a = getObject($obj->dbconn,$_GET[$name .'id']); if ( ($a != -1) && $a->use_ok()) { $obj->$field = &$a; } else { $obj->$field = -1; } } # Last call provided a list of possible selections if ( isset($_GET[$name .'l']) ) { @reset($_GET[$name .'l']); while ( list ($x,$f) = @each ($_GET[$name .'l']) ) { $a = getObject($obj->dbconn,$f); if ( ($a != -1) && $a->use_ok()) { $obj->xl[$name][$f] = &$a; unset($a); } } } } /** * make a selection list by given array of form [id] = $obj * obj == Object holding the lists * sobj == Object giving default name */ Function select_from_array_or_input(&$obj,$name,&$sobj,$none = 0) { global $lang; if ( isset($obj->xl[$name]) && (count($obj->xl[$name]) > 0) ) { echo "\n"; } else { if ( isset($sobj->id) && ($sobj->id > 0) ) { if ( $sobj->gettype() == "department" ) { echo "getFullname() ." / ". $sobj->company->getFullName()) ."\" />"; } else { echo "getFullname()) ."\" />"; } } else { if ( ! isset($obj->xfn[$name]) ) { $obj->xfn[$name] = ""; } echo "xfn[$name]) ."\" />"; } } } /** * make a help link if possible * */ Function make_helplink($fn = "") { global $lang , $tutos; if ( $fn == "" ) { $fn = basename($_SERVER['PHP_SELF']); $p = strpos($fn,"."); $fn = substr($fn,0,$p); } $l = addSessionKey($tutos['base'] ."/help.php?p=".$fn,false); if ( !isset($_SERVER['HTTP_USER_AGENT']) || ereg("Lynx",$_SERVER['HTTP_USER_AGENT']) || ereg("w3m",$_SERVER['HTTP_USER_AGENT']) ) { $x = $l; } else { $x = "JavaScript: mywindow = window.open('". $l ."', 'help', 'width=600,height=500,top=100,left=100,scrollbars=1'); mywindow.location.href = '". $l ."'; mywindow.focus();"; } return $x; } /** * show custom database fields (called by the show scripts) * layout = the current layout * section = section $table array * obj = the TUTOS object where the data is stored * cols = number of columns */ function show_custom_fields(&$layout,$section,&$obj,$cols) { global $table,$lang; if (!isset($table[$section])) return; foreach($table[$section] as $i => $x) { if (!is_array($x)) continue; if (!isset($x['custom'])) continue; if (!$x['custom']) continue; if (!isset($x['ftype'])) $x['ftype'] = ""; $fld = "_fld_".$i; echo "\n"; echo $layout->showfield(myentities(isset($lang[$x['lang']]) ? $lang[$x['lang']]:$x['lang'])); echo " \n"; if ($x['ftype'] == "Date") { $xx = &$obj->$fld; echo $xx->getDate(); } else if ($x['ftype'] == "DateTime") { $xx = &$obj->$fld; echo $xx->getDateTime(); } else if ($x['ftype'] == "Boolean") { echo ($obj->$fld > 0 ? $lang['yes'] : $lang['no']); } else if ($x['ftype'] == "SelectOne") { echo myentities(isset($lang[$x['lang'].'_'][$obj->$fld]) ? $lang[$x['lang'].'_'][$obj->$fld]: "??". $x['lang'] ."??"); } else if ($x[type] == "TS_TYPE") { $xx = &$obj->$fld; echo $xx->getDate(); } else if ($x[type] == "float") { echo number_format($obj->$fld,2,$lang['DecPoint'],$lang['ThousandPoint']); } else { echo myentities($obj->$fld) ." "; } echo " \n"; echo "\n"; } } /** * edit custom database fields (called by the new scripts) * layout = the current layout * section = section $table array * obj = the TUTOS object where the data is stored * cols = number of columns */ function edit_custom_fields(&$layout,$section,&$obj,$cols) { global $table,$lang; if (!isset($table[$section])) return; foreach($table[$section] as $i => $x) { if (!is_array($x)) continue; if (!isset($x['custom'])) continue; if (!$x['custom']) continue; if (!isset($x['required'])) $x['required'] = false; if (!isset($x['ftype'])) $x['ftype'] = ""; $fld = "_fld_".$i; $parsename = $section ."_". $i; echo "\n"; echo $layout->showfield(myentities(isset($lang[$x['lang']]) ? $lang[$x['lang']]:$x['lang']),$x['required'],$parsename); if ($x['ftype'] == "Date") { echo " \n"; $xx = &$obj->$fld; $xx->EnterDate($parsename,1); echo " \n"; } else if ($x['ftype'] == "DateTime") { echo " \n"; $xx = &$obj->$fld; $xx->EnterDateTime($parsename,1); echo " \n"; } else if ($x['ftype'] == "Boolean") { echo " \n"; echo " $fld == 1 ? " checked=\"checked\"":"") ." />\n"; echo " \n"; } else if ($x['ftype'] == "SelectOne") { echo " \n"; echo " \n"; echo " \n"; } else if ($x[type] == "VARCHAR") { echo " \n"; echo " $fld) ."\" size=\"". min($x[size],40) ."\" maxlength=\"".$x[size]."\" />\n"; echo " \n"; } else if ($x[type] == "float") { $x[size] = 15; echo " \n"; echo " $fld) ."\" size=\"". min($x[size],10) ."\" maxlength=\"".$x[size]."\" />\n"; echo " \n"; } else if ($x[type] == "TX_TYPE") { echo $layout->textarea($parsename,($cols-1),$obj->dbconn->txtlen,$obj->$fld); } else if ($x[type] == "TS_TYPE") { echo " \n"; $xx = &$obj->$fld; $xx->EnterDate($parsename,1); echo " \n"; } echo "\n"; } } /** * parse and set custom database fields (called by the ins scripts) * section = section $table array * obj = the TUTOS object where the data is stored */ function parse_custom_fields($section,&$obj) { global $gotourl,$table,$lang; $r = ""; if (!isset($table[$section])) return $r; foreach($table[$section] as $i => $x) { if (!is_array($x)) continue; if (!isset($x['custom'])) continue; if (!$x['custom']) continue; if (!isset($x['ftype'])) $x['ftype'] = ""; if (!isset($x['required'])) $x['required'] = false; $parsename = $section ."_". $i; $fld = "_fld_".$i; if ($x['ftype'] == "Date") { $xx = new DateTime(0); $xx->setDateTimeF($parsename); $gotourl= addUrlParameter($gotourl,$parsename ."=". $xx->getYYYYMMDD(),true); $obj->setDateField($fld,$xx,$x['lang']); } else if ($x['ftype'] == "DateTime") { $xx = new DateTime(0); $xx->setDateTimeF($parsename); $gotourl= addUrlParameter($gotourl,$parsename ."=". $xx->getYYYYMMDDHHMM(),true); $obj->setDateTimeField($fld,$xx,$x['lang']); } else if ($x['ftype'] == "Boolean") { if (!isset($_POST[$parsename])) $_POST[$parsename] = 0; $gotourl= addUrlParameter($gotourl,$parsename ."=". $_POST[$parsename],true); $obj->setIntField($fld,$_POST[$parsename],$x['lang']); $x['required'] = false; } else if ($x['ftype'] == "SelectOne") { $gotourl= addUrlParameter($gotourl,$parsename ."=". $_POST[$parsename],true); $obj->setIntField($fld,$_POST[$parsename],$x['lang']); } else if ($x[type] == "TS_TYPE") { $xx = new DateTime(0); $xx->setDateTimeF($parsename); $gotourl= addUrlParameter($gotourl,$parsename ."=". $xx->getYYYYMMDD(),true); $obj->setDateTimeField($fld,$xx,$x['lang']); } else if ($x[type] == "float") { if (!isset($_POST[$parsename])) continue; if ( !checkfloat($_POST[$parsename]) ) { $r .= sprintf($lang['Err0017'],isset($lang[$x['lang']]) ? $lang[$x['lang']]:$x['lang']) ."
"; } $gotourl= addUrlParameter($gotourl,$parsename ."=". $_POST[$parsename],true); $obj->setFloatField($fld,$_POST[$parsename],$x['lang']); } else { if (!isset($_POST[$parsename])) continue; $gotourl= addUrlParameter($gotourl,$parsename."=". UrlEncode(StripSlashes($_POST[$parsename])),true); $obj->setStrField($fld,$_POST[$parsename],$x['lang']); } if ($x['required'] && (!isset($obj->$fld) || (trim($obj->$fld) == "")) ) { $r .= sprintf($lang['Err0009'],myentities(isset($lang[$x['lang']]) ? $lang[$x['lang']]:$x['lang'])) ."
"; } } return $r; } /** * preset custom database fields (called by the new scripts) * section = section $table array * obj = the TUTOS object where the data is stored */ function preset_custom_fields($section,&$obj) { global $table,$lang; foreach($table[$section] as $i => $x) { if (!is_array($x)) continue; if (!isset($x['custom'])) continue; if (!$x['custom']) continue; $parsename = $section ."_". $i; if (!isset($_GET[$parsename])) continue; $fld = "_fld_".$i; if ($x[type] == "TS_TYPE") { $xx = &$obj->$fld; $xx->setDateTime($_GET[$parsename]); } else { $obj->$fld = $_GET[$parsename]; } } } /** * Make some submit reset table entries * */ Function submit_reset($pre,$t1,$f1,$t2,$f2,$f3,$post) { global $lang,$mod_strings,$app_strings; if ( $pre > 0 ) { echo "  \n"; } if ( $t1 > 0 ) { echo "  \n"; } if ( $t1 < 0 ) { echo "  \n"; } if ( $f1 > 0 ) { echo "  \n"; } if ( $t2 > 0 ) { echo "   \n"; } if ( $f2 > 0 ) { echo "  \n"; } if ( $f3 > 0 ) { echo " \n"; } if ( $post > 0 ) { echo "  \n"; } } /** * parse and use the values form the order-header function (see below) */ Function order_parse(&$query,&$link1,&$link2,&$hidden,$def) { if ( isset($_GET['xf']) && isset($_GET['xo']) ) { $query .=" ORDER by " . $_GET['xf']; if ( $_GET['xo'] == 1 ) { $query .= " ASC "; } else { $query .= " DESC "; } $link1 = addUrlParameter($link1,"xf=".UrlEncode($_GET['xf']),false); $link1 = addUrlParameter($link1,"xo=". $_GET['xo'],false); $link2 = addUrlParameter($link2,"xf=".UrlEncode($_GET['xf']),false); $link2 = addUrlParameter($link2,"xo=".$_GET['xo'],false); $hidden .= "\n"; $hidden .= "\n"; } else { $query .= " ORDER by ". $def; } } /** * add task ids of an object to a list */ Function add_task_ids(&$ref,&$q,&$sep) { # Read the tasks $ref->readTasks(); if ( count($ref->fulltasklist) > 0 ) { foreach($ref->fulltasklist as $i => $f) { $q .= $sep . $i; $sep = ","; # echo "[". $f->id ."]"; add_bugs_ids($f,$q,$sep); } } } /** * add bug ids of an object to a list */ Function add_bugs_ids(&$ref,&$q,&$sep) { # Read the bugs if (! class_exists('bug')) { return; } bug::obj_read($ref); if ( count($ref->list[usebugtracking]) > 0 ) { foreach($ref->list[usebugtracking] as $i => $f) { $q .= $sep . $i; $sep = ","; } } } /** * add installation ids of an object to a list */ Function add_inst_ids(&$ref,&$q,&$sep) { # Read the insts if (! class_exists('installation')) { return; } installation::obj_read($ref); if ( count($ref->list[useinstmanagement]) > 0 ) { foreach($ref->list[useinstmanagement] as $i => $f) { $q .= $sep . $i; $sep = ","; # echo "[". $f->id ."]"; add_bugs_ids($f,$q,$sep); } } } /** * format a text line */ function format_asText($label,$info) { return substr($label.str_repeat(" ",20),0,20) .": ". $info ."\n"; } /* --------------------------------------------------------------------------- * Find a suitable mail template file for user $to */ function findMailTemplate($name,&$to,&$body,$path = "/html") { global $current_user,$lang,$tutos,$g_hash; $p = $tutos['base'] .$path; if ( $to->getType() == "address" ) { # get the user data unset($g_hash[$to->id]); $u = new tutos_user($to->dbconn); $to->lg = $lang; $u = $u->read($to->id,$u); ReadLang1($to->lg,$tutos['base'] ."/localization",$u); load_module_langfiles($u,$to->lg); # $to->lg = &$lang; $fn = $p ."/". $name .".". $u->lang; } else if ( $to->getType() == "user" ) { $to->lg = $lang; ReadLang1($to->lg,$tutos['base'] ."/localization",$to); load_module_langfiles($to,$to->lg); $fn = $p ."/". $name .".". $to->lang; } else { $to->lg = &$lang; $fn = $p ."/". $name .".". $current_user->lang; } if ( ! file_exists(getcwd()."/".$fn) ) { $fn = $p ."/". $name .".en"; } if ( ! file_exists(getcwd()."/".$fn) ) { $body = $fn; return false; } $body = join ('', file ($fn)); return true; } /** * */ function myentities($text , $escapequotes = 0) { if ( $escapequotes == 1 ) { return addslashes(htmlspecialchars($text)); } $text = htmlspecialchars($text); $text = eregi_replace("&#([0-9]{3,5});","&#\\1;",$text); return $text; } /** * prepare a search pattern for reg expressions * i.e. escape everything that might be misinterpreted */ function prepare_regpattern($pattern) { $pattern = eregi_replace("\[","\[",$pattern); $pattern = eregi_replace("\]","\]",$pattern); $pattern = eregi_replace("\)","\)",$pattern); $pattern = eregi_replace("\(","\(",$pattern); return $pattern; } /** * Print the parts of header neccessary for debug-outputs */ Function DebugWindow_Header () { global $tutos; if ( $tutos[debugConsole] == 1 ) { $debug = true; } else { return; } if ( !isset($_SERVER['HTTP_USER_AGENT']) || ereg("Lynx",$_SERVER['HTTP_USER_AGENT']) || ereg("Lynx",$_SERVER['HTTP_USER_AGENT']) || ereg("Konqueror",$_SERVER['HTTP_USER_AGENT']) ) { $debug = false; return; } if ( $debug ) { echo " \n"; } } /** * Output Text to debug-window */ Function DebugWindow_Out ( $out_text) { global $tutos; if ( $tutos[debugConsole] == 1 ) { $debug = true; } else { return; } if ( !isset($_SERVER['HTTP_USER_AGENT']) || ereg("Lynx",$_SERVER['HTTP_USER_AGENT']) || ereg("w3m",$_SERVER['HTTP_USER_AGENT']) ) { $debug = false; return; } if ( $debug ) { echo " \n"; } } /** * return n-1 url in stack */ function web_StackPop($back) { if (!isset($_SESSION['web_stack'])) return ""; $arWebStack = $_SESSION['web_stack']; $web_local = end($arWebStack); for ($i = 0; $i<$back; $i++) $web_local = array_pop($arWebStack); if ($web_local) return $web_local['url']; else return $_SESSION['web_stack']['url']; } /** * page stack start */ function web_StackStart ($id, $url, $briefname="", $name="") { if (!isset($_SESSION['web_stack'])) $_SESSION['web_stack'] = array(); $arWebStack = &$_SESSION['web_stack']; // check is this the same page, do nothing $wend = end($arWebStack); if ($wend && $wend['id'] == $id) { $web_local = array_pop($arWebStack); $web_local['url'] = $url; array_push($arWebStack, $web_local); return true; } // check if page already in stack, and find its firts occurence to // restore settings $bFound = false; foreach ($arWebStack as $web_local) { if ($web_local['id'] == $id) { $bFound = true; break; } } if ($bFound) { // need to return back to this page while ($web_local = array_pop($arWebStack)) { if ($web_local['id'] == $id) { $_SESSION['web_local'] = $web_local['data']; $web_local['url'] = $url; array_push($arWebStack, $web_local); return true; } } } // the page is not found, add it to the stack // but store previous page settings if (count($arWebStack)) { $web_local = array_pop($arWebStack); $web_local['data'] = $_SESSION['web_local']; array_push($arWebStack, $web_local); } // prepare new $stackitem = Array('id' => $id, 'url' => $url, 'text' => $briefname, 'info' => $name, 'data' => array()); array_push ($arWebStack,$stackitem); $_SESSION['web_local'] = array (); } function web_StackStartLayout($layout, $id, $url ) { global $lang; if ($layout->stop) return; $x = $layout->name; $url .= "?". $_SERVER['QUERY_STRING']; if ( strlen($x) > 20 ) { $x = substr($x,0,15) ."...". substr($x,-2); } web_StackStart($id, htmlentities($url),$x, $layout->name); } function web_StackStartLayoutObj($layout) { global $lang; if ($layout->stop) return; if (!isset($layout->obj)) return; if (!is_object($layout->obj)) return; $x = $layout->obj->getFullName(); if ( strlen($x) > 20 ) { $x = substr($x,0,15) ."...". substr($x,-2); } web_StackStart($layout->obj->getUrl(), $layout->obj->getUrl(),$x, $layout->obj->getFullName()); } function load_jpgraph($arr) { global $tutos,$msg; $r = 1.11; if ($tutos[usejpgraph] == 0) { return false; } # we try both places if (file_exists (getcwd()."/".$tutos['base']."/". $tutos[jpgraph]."/jpgraph.php") ) { require_once $tutos[jpgraph]."/jpgraph.php"; foreach($arr as $i) { require_once $tutos[jpgraph]."/". $i; } if (!defined('JPG_VERSION') ) { $tutos[jpgraph_old] = 1; } if (!defined('JPG_VERSION') || substr(JPG_VERSION,0,strlen($r)) >= $r) { return true; } $msg .= "JPraph Version " . JPG_VERSION ."
"; } else if (file_exists (getcwd()."/".$tutos['base']."/". $tutos[jpgraph]."/src/jpgraph.php") ) { require_once $tutos[jpgraph]."/src/jpgraph.php"; foreach($arr as $i) { require_once $tutos[jpgraph]."/src/". $i; } if (!defined('JPG_VERSION') ) { $tutos[jpgraph_old] = 1; } if (!defined('JPG_VERSION') || substr(JPG_VERSION,0,strlen($r)) >= $r) { return true; } $msg .= "JPraph Version " . JPG_VERSION ."
"; } $msg .= "No or incorrect Jpgraph in '". $tutos[jpgraph] ."'
"; $msg .= "TUTOS needs $r or newer!
"; $msg .= "See: http://www.aditus.nu/jpgraph/"; $tutos[usejpgraph] = 0; return false; } ?>