+ // Sort array
+ asort($INCs);
+
+ // Return array with include files
+ return $INCs;
+}
+
+// Load more reset scripts
+function runResetIncludes () {
+ // Is the reset set or old sql_patches?
+ if ((!isResetModeEnabled()) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) {
+ // Then abort here
+ DEBUG_LOG(__FUNCTION__, __LINE__, "Cannot run reset! Please report this bug. Thanks");
+ } // END - if
+
+ // Get more daily reset scripts
+ $INC_POOL = GET_DIR_AS_ARRAY("inc/reset/", "reset_");
+
+ // Update database
+ if (!defined('DEBUG_RESET')) UPDATE_CONFIG("last_update", time());
+
+ // Is the config entry set?
+ if (GET_EXT_VERSION("sql_patches") >= "0.4.2") {
+ // Create current week mark
+ $currWeek = date("W", time());
+
+ // Has it changed?
+ if (getConfig('last_week') != $currWeek) {
+ // Include weekly reset scripts
+ $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/weekly/", "weekly_"));
+
+ // Update config
+ if (!defined('DEBUG_WEEKLY')) UPDATE_CONFIG("last_week", $currWeek);
+ } // END - if
+
+ // Create current month mark
+ $currMonth = date("m", time());
+
+ // Has it changed?
+ if (getConfig('last_month') != $currMonth) {
+ // Include monthly reset scripts
+ $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/monthly/", "monthly_"));
+
+ // Update config
+ if (!defined('DEBUG_MONTHLY')) UPDATE_CONFIG("last_month", $currMonth);
+ } // END - if
+ } // END - if
+
+ // Run the filter
+ runFilterChain('load_includes', $INC_POOL);
+}
+
+// Handle extra values
+function HANDLE_EXTRA_VALUES ($filterFunction, $value, $extraValue) {
+ // Default is the value itself
+ $ret = $value;
+
+ // Do we have a special filter function?
+ if (!empty($filterFunction)) {
+ // Does the filter function exist?
+ if (function_exists($filterFunction)) {
+ // Do we have extra parameters here?
+ if (!empty($extraValue)) {
+ // Put both parameters in one new array by default
+ $args = array($value, $extraValue);
+
+ // If we have an array simply use it and pre-extend it with our value
+ if (is_array($extraValue)) {
+ // Make the new args array
+ $args = merge_array(array($value), $extraValue);
+ } // END - if
+
+ // Call the multi-parameter call-back
+ $ret = call_user_func_array($filterFunction, $args);
+ } else {
+ // One parameter call
+ $ret = call_user_func($filterFunction, $value);
+ }
+ } // END - if
+ } // END - if
+
+ // Return the value
+ return $ret;
+}
+
+// Check if given FQFN is a readable file
+function FILE_READABLE ($FQFN) {
+ // Check all...
+ return ((file_exists($FQFN)) && (is_file($FQFN)) && (is_readable($FQFN)));
+}
+
+// Converts timestamp selections into a timestamp
+function CONVERT_SELECTIONS_TO_TIMESTAMP (&$POST, &$DATA, &$id, &$skip) {
+ // Init test variable
+ $test2 = "";
+
+ // Get last three chars
+ $test = substr($id, -3);
+
+ // Improved way of checking! :-)
+ if (in_array($test, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) {
+ // Found a multi-selection for timings?
+ $test = substr($id, 0, -3);
+ if ((isset($POST[$test."_ye"])) && (isset($POST[$test."_mo"])) && (isset($POST[$test."_we"])) && (isset($POST[$test."_da"])) && (isset($POST[$test."_ho"])) && (isset($POST[$test."_mi"])) && (isset($POST[$test."_se"])) && ($test != $test2)) {
+ // Generate timestamp
+ $POST[$test] = CREATE_TIMESTAMP_FROM_SELECTIONS($test, $POST);
+ $DATA[] = sprintf("%s='%s'", $test, $POST[$test]);
+
+ // Remove data from array
+ foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) {
+ unset($POST[$test."_".$rem]);
+ } // END - foreach
+
+ // Skip adding
+ unset($id); $skip = true; $test2 = $test;
+ } // END - if