Error message displayed when no report file is found.
[fa-stable.git] / includes / main.inc
index b63a86cc173244ada06d060329054d49822ab29b..ee604df88e275e7e3c34b34903353066e787eab0 100644 (file)
@@ -1,69 +1,79 @@
 <?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       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 License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+include_once($path_to_root . "/includes/db/connect_db.inc");
 
-    include_once($path_to_root . "/includes/db/connect_db.inc");
+include_once($path_to_root . "/includes/errors.inc");
+include_once($path_to_root . "/includes/types.inc");
+include_once($path_to_root . "/includes/systypes.inc");
+include_once($path_to_root . "/includes/references.inc");
+include_once($path_to_root . "/includes/db/comments_db.inc");
+include_once($path_to_root . "/includes/db/sql_functions.inc");
+include_once($path_to_root . "/includes/db/audit_trail_db.inc");
+//include_once($path_to_root . "/includes/validation.inc");
 
-    include_once($path_to_root . "/includes/reserved.inc");
-    include_once($path_to_root . "/includes/errors.inc");
-    include_once($path_to_root . "/includes/types.inc");
-    include_once($path_to_root . "/includes/systypes.inc");
-    include_once($path_to_root . "/includes/references.inc");
-    include_once($path_to_root . "/includes/prefs/sysprefs.inc");
-    include_once($path_to_root . "/includes/db/comments_db.inc");
-    include_once($path_to_root . "/includes/db/sql_functions.inc");
-
-    include_once($path_to_root . "/admin/db/users_db.inc");
-    include_once($path_to_root . "/includes/ui/ui_view.inc");
+include_once($path_to_root . "/admin/db/users_db.inc");
+include_once($path_to_root . "/includes/ui/ui_view.inc");
+include_once($path_to_root . "/includes/ui/ui_controls.inc");
        
-       function output_html($text) 
-       {
-         global $before_box;
-         return  in_ajax() ? fmt_errors() : ($before_box.fmt_errors().$text);
-       }
-
-    function page($title, $no_menu=false, $is_index=false, $onload="", $js="")
-    {
+function page($title, $no_menu=false, $is_index=false, $onload="", $js="", $script_only=false)
+{
 
-       global $path_to_root;
+       global $path_to_root, $page_security;
 
-       $hide_menu = $no_menu;
-               // intercept all output to destroy it in case of ajax call
-               register_shutdown_function('ob_end_flush');
-               ob_start('output_html',0);
-               // colect all error msgs
-               set_error_handler('error_handler' /*, errtypes */);
 
-       include($path_to_root . "/includes/page/header.inc");
+       $hide_menu = $no_menu;
 
-       page_header($title, $no_menu, $is_index, $onload, $js);
-               error_box();
-    }
+       include($path_to_root . "/includes/page/header.inc");
 
-    function end_page($no_menu=false, $is_index=false)
-    {
-       global $path_to_root, $Ajax;
+       page_header($title, $no_menu, $is_index, $onload, $js);
+       check_page_security($page_security);
+//     error_box();
+       if($script_only) {              
+               echo '<noscript>';
+               echo display_heading(_('This page is usable only with javascript enabled browsers.'));
+               echo '</noscript>';
+               div_start('_page_body', null, true);
+       } else {
+               div_start('_page_body'); // whole page content for ajax reloading
+       }
+}
 
-       $hide_menu = $no_menu;
+function end_page($no_menu=false, $is_index=false, $hide_back_link=false)
+{
+       global $path_to_root;
 
-       include($path_to_root . "/includes/page/footer.inc");
+       if (!$is_index && !$hide_back_link && function_exists('hyperlink_back'))
+               hyperlink_back(true, $no_menu);
+       div_end();      // end of _page_body section
 
-               $Ajax->run();
-       page_footer($no_menu, $is_index);
-    }
+       include($path_to_root . "/includes/page/footer.inc");
+       page_footer($no_menu, $is_index, $hide_back_link);
+}
 
-    function flush_dir($path) {
+function flush_dir($path, $wipe = false) 
+{
        $dir = opendir($path);
        while(false !== ($fname = readdir($dir))) {
-               if($fname=='.' || $fname=='..') continue;
+               if($fname=='.' || $fname=='..' || $fname=='CVS' || (!$wipe && $fname=='index.php')) continue;
                if(is_dir($path.'/'.$fname)) {
-                   flush_dir($path.'/'.$fname);
-                   @rmdir($path.'/'.$fname);
+                   flush_dir($path.'/'.$fname, $wipe);
+                   if ($wipe) @rmdir($path.'/'.$fname);
                } else
                    @unlink($path.'/'.$fname);
-       }
-    }
+       }
+}
 
-    function cache_js_file($fpath, $text) 
-    {
+function cache_js_file($fpath, $text) 
+{
        global $go_debug;
 
        if(!$go_debug) $text = js_compress($text);
        if (!fwrite($file, $text)) return false;
        return fclose($file);
 
-    }
+}
 
-    function add_js_file($filename) 
-    {
+function add_js_file($filename) 
+{
          global $js_static;
 
          $search = array_search($filename, $js_static);
          if ($search === false || $search === null) // php>4.2.0 returns null
                $js_static[] = $filename;       
-    }
+}
 
-    function add_js_ufile($filename) 
-    {
+function add_js_ufile($filename) 
+{
          global $js_userlib;
 
          $search = array_search($filename, $js_userlib);
          if ($search === false || $search === null) // php>4.2.0 returns null
                $js_userlib[] = $filename;
-    }
+}
 
-    function add_js_source($text) 
-    {
+function add_js_source($text) 
+{
          global $js_lib;
          
          $search = array_search($text, $js_lib);
          if ($search === false || $search === null) // php>4.2.0 returns null
                $js_lib[] = $text;
-    }
+}
 
 /**
  * Compresses the Javascript code for more efficient delivery.
@@ -133,10 +143,11 @@ function js_compress($sJS)
                $inNormalComment = false;
        
                //loop through line's characters and take out any literal strings, replace them with ___i___ where i is the index of this string
-               for($j=0;$j<strlen($line);$j++)
+               $len = strlen($line);
+               for($j=0;$j<$len;$j++)
                {
-                       $c = substr($line,$j,1);
-                       $d = substr($line,$j,2);
+                       $c = $line[$j];         // this is _really_ faster than subst
+                       $d = $c.$line[$j+1];
        
                        //look for start of quote
                        if(!$inQuote && !$inComment)
@@ -250,4 +261,56 @@ function js_compress($sJS)
        }
        return $sJS;
 }
+
+/*
+       Check if file can be updated, restoring subdirectories 
+       if needed. Returns 1 when no confilcts, -1 when file exists and is writable
+*/
+function check_write($path)
+{
+       if ($path == ''//|| $path == '.' || $path == '..'
+       ) return 0;
+       
+       return is_writable($path) ? (is_dir($path) ? 1 : -1) 
+               : ($path =='.' ? 0 : check_write(dirname($path)));
+}
+
+/*
+       Copies set of files. When $strict is set
+       also removes files from the $to which 
+       does not exists in $from directory but arelisted in $flist.
+*/
+function copy_files($flist, $from, $to, $strict=false)
+{
+       foreach ($flist as $file) {
+               if (file_exists($from.'/'.$file))
+                       if (!copy_file($file, $from, $to))
+                               return false;
+               if ($strict && !is_file($from.'/'.$file)) // if 
+                               unlink($to.'/'.$file);
+       }
+       return true;
+}
+
+/*
+       Copies file from base to target directory, restoring subdirectories 
+       if needed.
+*/
+function copy_file($file, $from, $to)
+{
+
+       if (!is_dir(dirname($file=='.' ? $to : ($to.'/'.$file)))) {
+               if (!copy_file(dirname($file), null, $to))
+                       return false;
+       }
+       if (!$from) {
+       //              error_log( 'dodanie katalogu '.$to.'/'.$file);
+               return @mkdir($file=='.' ? $to : ($to.'/'.$file));
+       }
+       else {
+       //              error_log( 'skopiowanie '.$to.'/'.$file);
+               return @copy($from.'/'.$file, $to.'/'.$file);
+       }
+}
+
 ?>
\ No newline at end of file