Renamed function so it might be more understandable
[mailer.git] / inc / inc-functions.php
index 19570ae2074d8bdd0e6a56364d7b6ee876133b80..163fec15f76069ca49b730fd6b519604329ab076 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /************************************************************************
- * MXChange v0.2.1                                    Start: 03/10/2009 *
- * ===============                              Last change: 03/10/2009 *
+ * Mailer v0.2.1-FINAL                                Start: 03/10/2009 *
+ * ===================                          Last change: 03/10/2009 *
  *                                                                      *
  * -------------------------------------------------------------------- *
  * File              : inc-functions.php                                *
  * $Date::                                                            $ *
  * $Tag:: 0.2.1-FINAL                                                 $ *
  * $Author::                                                          $ *
- * Needs to be in all Files and every File needs "svn propset           *
- * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
  * -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * Copyright (c) 2003 - 2009 by Roland Haeder                           *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team                    *
  * For more information visit: http://www.mxchange.org                  *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
 
 // Some security stuff...
 if (!defined('__SECURITY')) {
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
-       require($INC);
-}
-
-// Check if our config file is writeable or not
-function isIncludeWriteable ($inc) {
-       // Generate FQFN
-       $FQFN = sprintf("%sinc/%s.php", getConfig('PATH'), $inc);
-
-       // Abort by simple test
-       if ((isFileReadable($FQFN)) && (!is_writeable($FQFN))) {
-               return false;
-       } // END - if
-
-       // Test write-access on directory
-       return is_writeable(dirname($FQFN));
-}
+       die();
+} // END - if
 
 // Init INC_POOL
-function INIT_INC_POOL () {
-       $GLOBALS['inc_pool'] = array();
+function initIncludePool ($pool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       $GLOBALS['inc_pool'][$pool] = array();
 }
 
 // Setter for INC_POOL
-function SET_INC_POOL ($includePool) {
-       $GLOBALS['inc_pool'] = (array) $includePool;
+function setIncludePool ($pool, $includePool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       $GLOBALS['inc_pool'][$pool] = (array) $includePool;
 }
 
 // Getter for INC_POOL
-function GET_INC_POOL () {
-       return $GLOBALS['inc_pool'];
+function getIncludePool ($pool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       if (isset($GLOBALS['inc_pool'][$pool])) {
+               // Return found pool (array)
+               return $GLOBALS['inc_pool'][$pool];
+       } else {
+               // Return empty array if not found
+               return array();
+       }
 }
 
 // Count INC_POOL
-function COUNT_INC_POOL () {
-       return count($GLOBALS['inc_pool']);
+function countIncludePool ($pool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       return count($GLOBALS['inc_pool'][$pool]);
 }
 
 // Merge INC_POOL into given
-function MERGE_INC_POOL ($includePool) {
-       SET_INC_POOL(merge_array(GET_INC_POOL(), $includePool));
+function mergeIncludePool ($pool, $includePool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       setIncludePool($pool, merge_array(getIncludePool($pool), $includePool));
 }
 
 // Add single include file to INC_POOL
-function ADD_INC_TO_POOL ($INC) {
-       $GLOBALS['inc_pool'][] = (string) $INC;
+function addIncludeToPool ($pool, $inc) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+       $GLOBALS['inc_pool'][$pool][] = (string) $inc;
 }
 
 // Remove an include file from INC_POOL
-function REMOVE_INC_FROM_POOL ($INC) {
+function removeIncludeFromPool ($pool, $inc) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
        // First look it up
-       $key = array_search($INC, GET_INC_POOL());
+       $key = array_search($inc, getIncludePool($pool));
 
        // Is it valid?
        if ($key !== false) {
                // Then remove it
-               unset($GLOBALS['inc_pool'][$key]);
+               unset($GLOBALS['inc_pool'][$pool][$key]);
 
                // And sort the list
-               asort($GLOBALS['inc_pool']);
+               asort($GLOBALS['inc_pool'][$pool]);
        } // END - if
 }
 
 // Load the whole include pool
-function LOAD_INC_POOL () {
-       foreach (GET_INC_POOL() as $inc) {
+function loadIncludePool ($pool) {
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool.' - START');
+       foreach (getIncludePool($pool) as $inc) {
+               //* DEBUG: */ debugOutput(__FUNCTION__.':inc='.$inc);
                loadIncludeOnce($inc);
        } // END - foreach
+       //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool.' - END');
+
+       // Remove it
+       initIncludePool($pool);
+}
+
+// Loads an include file and logs any missing files for debug purposes
+function loadInclude ($inc) {
+       // Do we have cache?
+       if (!isset($GLOBALS['inc_loaded'][$inc])) {
+               // Add the path. This is why we need a trailing slash in config.php
+               $GLOBALS['inc_loaded'][$inc] = getPath() . $inc;
+
+               // Is the include file there?
+               if (!isIncludeReadable($inc)) {
+                       // Not there so log it
+                       debug_report_bug(__FUNCTION__, __LINE__, sprintf("Include file %s not found.", $inc));
+               } // END - if
+       } // END - if
+
+       // Try to load it
+       include($GLOBALS['inc_loaded'][$inc]);
+}
+
+// Loads an include file once
+function loadIncludeOnce ($inc) {
+       // Remove double path
+       $inc = str_replace(getPath(), '', $inc);
+
+       // Is it not loaded?
+       if (!isset($GLOBALS['load_once'][$inc])) {
+               // Mark it as loaded
+               $GLOBALS['load_once'][$inc] = 'loaded';
+
+               // Then try to load it
+               loadInclude($inc);
+       } // END - if
+}
+
+// Checks wether an include file (non-FQFN better) is readable
+function isIncludeReadable ($inc) {
+       // Do we have cache?
+       if (!isset($GLOBALS['inc_readable'][$inc])) {
+               // Remove double path
+               $inc = str_replace(getPath(), '', $inc);
+
+               // Construct FQFN
+               $FQFN = getPath() . $inc;
+
+               // Is it readable?
+               $GLOBALS['inc_readable'][$inc] = isFileReadable($FQFN);
+       } // END - if
+
+       // Return result
+       return $GLOBALS['inc_readable'][$inc];
 }
 
 // [EOF]