diff --git a/include/functions.inc b/include/functions.inc
index 8f80afb403ecec0bf14b3a58eaea49a506ab8363..db9cacaf2ac81a75c54745ef6326c8b3b5fd12b2 100644 (file)
--- a/include/functions.inc
+++ b/include/functions.inc
<?php
/*
* This code is part of GOsa (https://gosa.gonicus.de)
- * Copyright (C) 2003-2005 Cajus Pollmeier
+ * Copyright (C) 2003 Cajus Pollmeier
*
* 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
/* Configuration file location */
define ("CONFIG_DIR", "/etc/gosa");
define ("CONFIG_TEMPLATE_DIR", "../contrib/");
+define ("HELP_BASEDIR", "/home/cajus/");
+
+/* Define globals for revision comparing */
+$svn_path = '$HeadURL$';
+$svn_revision = '$Revision$';
/* Include required files */
require_once ("class_ldap.inc");
require_once ("class_tabs.inc");
require_once ("class_mail-methods.inc");
require_once("class_password-methods.inc");
-require_once ("debuglib.inc");
+require_once ("functions_debug.inc");
/* Define constants for debugging */
define ("DEBUG_TRACE", 1);
{
global $config, $BASE_DIR;
- if (!isset($config->data['MAIN']['THEME'])){
+ if (!@isset($config->data['MAIN']['THEME'])){
$theme= 'default';
} else {
$theme= $config->data['MAIN']['THEME'];
}
}
- syslog(LOG_WARNING,"GOsa$username: $message");
+ syslog(LOG_INFO,"GOsa$username: $message");
}
/* user not found */
case 0: return (NULL);
- break;
/* valid uniq user */
case 1:
/* Sanity check */
if ($object == ""){
- print_red(_("Getting the lock from LDAP failed. Parameters are not sed correctly, please check the source!"));
+ print_red(_("Getting the lock from LDAP failed. Parameters are not set correctly, please check the source!"));
return("");
}
/* If DEBUGLEVEL is set, we're in web mode, use textual output in
the other case... */
if (isset($_SESSION['DEBUGLEVEL'])){
- $_SESSION['errors'].= "<div align=center style=\"border-width:5px;".
+ $_SESSION['errors'].= "<div align=\"left\" style=\"border-width:5px;".
"border-style:solid;border-color:red; background-color:black;".
- "margin-bottom:10px; padding:8px;\"><table><tr><td><img src=\"".
+ "margin-bottom:10px; padding:8px;\"><table summary=''><tr><td><img alt=\"\" src=\"".
get_template_path('images/warning.png')."\"></td>".
- "<td width=100% align=center><font color=#FFFFFF>".
+ "<td width=\"100%\" align=\"center\"><font color=\"#FFFFFF\">".
"<b style='font-size:16px;'>$string</b></font></td><td>".
- "<img src=\"".get_template_path('images/warning.png').
+ "<img alt=\"\"src=\"".get_template_path('images/warning.png').
"\"></td></tr></table></div>\n";
} else {
echo "Error: $string\n";
/* Prepare and show template */
$smarty= get_smarty();
$smarty->assign ("dn", $dn);
- $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry '%s' which appears to be used by '%s'. Please contact the person in order to clarify proceedings."), $dn, "<a href=main.php?plug=0&viewid=$uid>$uid</a>"));
+ $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry '%s' which appears to be used by '%s'. Please contact the person in order to clarify proceedings."), $dn, "<a href=\"main.php?plug=0&viewid=$uid\">$uid</a>"));
return ($smarty->fetch (get_template_path('islocked.tpl')));
}
/* CUPS is not available, try lpstat as a replacement */
} else {
- unset ($ar);
+ $ar = false;
exec("lpstat -p", $ar);
foreach($ar as $val){
list($dummy, $printer, $rest)= split(' ', $val, 3);
/* Draw decrement */
if ($start > 0 ) {
- $output.=" <a href= \"main.php?plug=".validate($_GET['plug'])."&start=".
+ $output.=" <a href= \"main.php?plug=".validate($_GET['plug'])."&start=".
(($start-$range))."\">".
- "<img src=\"images/back.png\" border=0 align=\"center\"></a>";
+ "<img alt=\"\" src=\"images/back.png\" border=0 align=\"middle\"></a>";
}
/* Draw pages */
for ($i= $begin; $i < $end; $i++) {
if ($ppage == $i){
$output.= "<a style=\"background-color:#D0D0D0;\" href=\"main.php?plug=".
- validate($_GET['plug'])."&start=".
+ validate($_GET['plug'])."&start=".
($i*$range)."\"> ".($i+1)." </a>";
} else {
$output.= "<a href=\"main.php?plug=".validate($_GET['plug']).
- "&start=".($i*$range)."\"> ".($i+1)." </a>";
+ "&start=".($i*$range)."\"> ".($i+1)." </a>";
}
}
/* Draw increment */
if($start < ($dcnt-$range)) {
- $output.=" <a href= \"main.php?plug=".validate($_GET['plug'])."&start=".
+ $output.=" <a href= \"main.php?plug=".validate($_GET['plug'])."&start=".
(($start+($range)))."\">".
- "<img src=\"images/forward.png\" border=0 align=\"center\"></a>";
+ "<img alt=\"\" src=\"images/forward.png\" border=0 align=\"middle\"></a>";
}
return($output);
{
$apply= "";
- $apply= '<p class="contentboxb" style="border-top:1px solid #B0B0B0">'.
- '<table width="100%"><tr><td width="100%" align="right">'.
- '<input type="submit" name="apply" value="'._("Apply").'"></td></tr></table></p>';
+ $apply= ''.
+ '<table summary="" width="100%" style="background:#EEEEEE;border-top:1px solid #B0B0B0;"><tr><td width="100%" align="right">'.
+ '<input type="submit" name="apply" value="'._("Apply").'"></td></tr></table>';
return ($apply);
}
function in_array_ics($value, $items)
{
+ if (!is_array($items)){
+ return (FALSE);
+ }
+
foreach ($items as $item){
if (strtolower($item) == strtolower($value)) {
return (TRUE);
function get_gosa_version()
{
- /* Variables filled in by subversion */
- $svn_path = '$HeadURL$';
- $svn_revision = '$Revision$';
+ global $svn_revision, $svn_path;
/* Extract informations */
$revision= preg_replace('/^[^0-9]*([0-9]+)[^0-9]*$/', '\1', $svn_revision);
}
}
-function gosaRaiseError($errno, $errstr, $errfile, $errline)
+
+function rmdirRecursive($path, $followLinks=false) {
+ $dir= opendir($path);
+ while($entry= readdir($dir)) {
+ if(is_file($path."/".$entry) || ((!$followLinks) && is_link($path."/".$entry))) {
+ unlink($path."/".$entry);
+ } elseif (is_dir($path."/".$entry) && $entry!='.' && $entry!='..') {
+ rmdirRecursive($path."/".$entry);
+ }
+ }
+ closedir($dir);
+ return rmdir($path);
+}
+
+function scan_directory($path,$sort_desc=false)
+{
+$ret = false;
+
+/* is this a dir ? */
+if(is_dir($path)) {
+
+ /* is this path a readable one */
+ if(is_readable($path)){
+
+ /* Get contents and write it into an array */
+ $ret = array();
+
+ $dir = opendir($path);
+
+ /* Is this a correct result ?*/
+ if($dir){
+ while($fp = readdir($dir))
+ $ret[]= $fp;
+ }
+ }
+ }
+ /* Sort array ascending , like scandir */
+ sort($ret);
+
+ /* Sort descending if parameter is sort_desc is set */
+ if($sort_desc) {
+ $ret = array_reverse($ret);
+ }
+
+ return($ret);
+}
+
+function clean_smarty_compile_dir($directory)
+{
+ global $svn_revision;
+
+ if(is_dir($directory) && is_readable($directory)) {
+ // Set revision filename to REVISION
+ $revision_file= $directory."/REVISION";
+
+ /* Is there a stamp containing the current revision? */
+ if(!file_exists($revision_file)) {
+ // create revision file
+ create_revision($revision_file, $svn_revision);
+ } else {
+ # check for "$config->...['CONFIG']/revision" and the
+ # contents should match the revision number
+ if(!compare_revision($revision_file, $svn_revision)){
+ // If revision differs, clean compile directory
+ foreach(scan_directory($directory) as $file) {
+ if( is_file($directory."/".$file) &&
+ is_writable($directory."/".$file)) {
+ // delete file
+ if(!unlink($directory."/".$file)) {
+ print_red("File ".$directory."/".$file." could not be deleted.");
+ // This should never be reached
+ }
+ } elseif(is_dir($directory."/".$file) &&
+ is_writable($directory."/".$file)) {
+ // Just recursively delete it
+ rmdirRecursive($directory."/".$file);
+ }
+ }
+ // We should now create a fresh revision file
+ clean_smarty_compile_dir($directory);
+ } else {
+ // Revision matches, nothing to do
+ }
+ }
+ } else {
+ // Smarty compile dir is not accessible
+ // (Smarty will warn about this)
+ }
+}
+
+function create_revision($revision_file, $revision)
+{
+ $result= false;
+
+ if(is_dir(dirname($revision_file)) && is_writable(dirname($revision_file))) {
+ if($fh= fopen($revision_file, "w")) {
+ if(fwrite($fh, $revision)) {
+ $result= true;
+ }
+ }
+ fclose($fh);
+ } else {
+ print_red("Can not write to revision file");
+ }
+
+ return $result;
+}
+
+function compare_revision($revision_file, $revision)
{
- global $error_collector;
+ // false means revision differs
+ $result= false;
+
+ if(file_exists($revision_file) && is_readable($revision_file)) {
+ // Open file
+ if($fh= fopen($revision_file, "r")) {
+ // Compare File contents with current revision
+ if($revision == fread($fh, filesize($revision_file))) {
+ $result= true;
+ }
+ } else {
+ print_red("Can not open revision file");
+ }
+ // Close file
+ fclose($fh);
+ }
+
+ return $result;
+}
+
+function progressbar($percentage,$width=100,$height=15,$showvalue=false)
+{
+ $str = ""; // Our return value will be saved in this var
+
+ $color = dechex($percentage+150);
+ $color2 = dechex(150 - $percentage);
+ $bgcolor= $showvalue?"FFFFFF":"DDDDDD";
+
+ $progress = (int)(($percentage /100)*$width);
+
+ /* Abort printing out percentage, if divs are to small */
+
+
+ /* If theres a better solution for this, use it... */
+ $str = "
+ <div style=\" width:".($width)."px;
+ height:".($height)."px;
+ background-color:#000000;
+padding:1px;\">
- $error_collector.= sprintf(_("File %s, line %s: %s"), $errfile, $errline, $errstr)."<br>";
-#debug_backtrace();
- gosa_log ("PHP error: $errstr ($errfile, line $errline)");
+ <div style=\" width:".($width)."px;
+ background-color:#$bgcolor;
+height:".($height)."px;\">
+
+ <div style=\" width:".$progress."px;
+height:".$height."px;
+ background-color:#".$color2.$color2.$color."; \">";
+
+
+ if(($height >10)&&($showvalue)){
+ $str.= "<font style=\"font-size:".($height-2)."px;color:#FF0000;align:middle;padding-left:".((int)(($width*0.4)))."px;\">
+ <b>".$percentage."%</b>
+ </font>";
+ }
+
+ $str.= "</div></div></div>";
+
+ return($str);
}
+
+function search_config($arr, $name, $return)
+{
+ if (is_array($arr)){
+ foreach ($arr as $a){
+ if (isset($a['CLASS']) &&
+ strtolower($a['CLASS']) == strtolower($name)){
+
+ if (isset($a[$return])){
+ return ($a[$return]);
+ } else {
+ return ("");
+ }
+ } else {
+ $res= search_config ($a, $name, $return);
+ if ($res != ""){
+ return $res;
+ }
+ }
+ }
+ }
+ return ("");
+}
+
+
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>