]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
detectExtraTemplatePath() cached, ext-network continued:
[mailer.git] / inc / functions.php
index d077a3c7a875919cf5f86af638de2b3b28272b8e..521a3fa7ba782f2ba231f30385f1186abcda4ba2 100644 (file)
@@ -312,7 +312,7 @@ function loadTemplate ($template, $return = false, $content = array()) {
                        eval($GLOBALS['template_eval'][$template]);
                } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
                        // Only admins shall see this warning or when installation mode is active
-                       $ret = '<br /><span class=\\"guest_failed\\">{--TEMPLATE_404--}</span><br />
+                       $ret = '<br /><span class="guest_failed">{--TEMPLATE_404--}</span><br />
 (' . $template . ')<br />
 <br />
 {--TEMPLATE_CONTENT--}
@@ -350,44 +350,53 @@ function detectExtraTemplatePath ($template) {
        // Default is empty
        $extraPath = '';
 
-       // Check for admin/guest/member templates
-       if (substr($template, 0, 6) == 'admin_') {
-               // Admin template found
-               $extraPath = 'admin/';
-       } elseif (substr($template, 0, 6) == 'guest_') {
-               // Guest template found
-               $extraPath = 'guest/';
-       } elseif (substr($template, 0, 7) == 'member_') {
-               // Member template found
-               $extraPath = 'member/';
-       } elseif (substr($template, 0, 8) == 'install_') {
-               // Installation template found
-               $extraPath = 'install/';
-       } elseif (substr($template, 0, 4) == 'ext_') {
-               // Extension template found
-               $extraPath = 'ext/';
-       } elseif (substr($template, 0, 3) == 'la_') {
-               // 'Logical-area' template found
-               $extraPath = 'la/';
-       } elseif (substr($template, 0, 3) == 'js_') {
-               // JavaScript template found
-               $extraPath = 'js/';
-       } elseif (substr($template, 0, 5) == 'menu_') {
-               // Menu template found
-               $extraPath = 'menu/';
-       } else {
-               // Test for extension
-               $test = substr($template, 0, strpos($template, '_'));
+       // Do we have cache?
+       if (!isset($GLOBALS['extra_path'][$template])) {
+               // Check for admin/guest/member/etc. templates
+               if (substr($template, 0, 6) == 'admin_') {
+                       // Admin template found
+                       $extraPath = 'admin/';
+               } elseif (substr($template, 0, 6) == 'guest_') {
+                       // Guest template found
+                       $extraPath = 'guest/';
+               } elseif (substr($template, 0, 7) == 'member_') {
+                       // Member template found
+                       $extraPath = 'member/';
+               } elseif (substr($template, 0, 7) == 'select_') {
+                       // Selection template found
+                       $extraPath = 'select/';
+               } elseif (substr($template, 0, 8) == 'install_') {
+                       // Installation template found
+                       $extraPath = 'install/';
+               } elseif (substr($template, 0, 4) == 'ext_') {
+                       // Extension template found
+                       $extraPath = 'ext/';
+               } elseif (substr($template, 0, 3) == 'la_') {
+                       // 'Logical-area' template found
+                       $extraPath = 'la/';
+               } elseif (substr($template, 0, 3) == 'js_') {
+                       // JavaScript template found
+                       $extraPath = 'js/';
+               } elseif (substr($template, 0, 5) == 'menu_') {
+                       // Menu template found
+                       $extraPath = 'menu/';
+               } else {
+                       // Test for extension
+                       $test = substr($template, 0, strpos($template, '_'));
 
-               // Probe for valid extension name
-               if (isExtensionNameValid($test)) {
-                       // Set extra path to extension's name
-                       $extraPath = $test . '/';
-               } // END - if
-       }
+                       // Probe for valid extension name
+                       if (isExtensionNameValid($test)) {
+                               // Set extra path to extension's name
+                               $extraPath = $test . '/';
+                       } // END - if
+               }
+
+               // Store it in cache
+               $GLOBALS['extra_path'][$template] = $extraPath;
+       } // END - if
 
        // Return result
-       return $extraPath;
+       return $GLOBALS['extra_path'][$template];
 }
 
 // Loads an email template and compiles it
@@ -3815,6 +3824,58 @@ function sendModeMails ($mod, $modes) {
        loadTemplate('admin_settings_saved', false, $content);
 }
 
+// Generates a 'selection box' from given array
+function generateSelectionBoxFromArray ($options, $name, $optionValue, $optionContent) {
+       // Start the output
+       $OUT = '<select name="' . $name . '" size="1" class="admin_select">
+<option value="X" disabled="disabled">{--PLEASE_SELECT--}</option>';
+
+       // Walk through all options
+       foreach ($options as $option) {
+               // Add the <option> entry
+               $OUT .= '<option value="' . $option[$optionValue] . '">' . $option[$optionContent] . '</option>';
+       } // END - foreach
+
+       // Finish selection box
+       $OUT .= '</select>';
+
+       // Prepare output
+       $content = array(
+               'selection_box' => $OUT,
+               'module'        => getModule(),
+               'what'          => getWhat()
+       );
+
+       // Load template and return it
+       return loadTemplate('select_' . $name . '_box', true, $content);
+}
+
+// Get a module from filename and access level
+function getModuleFromFileName ($file, $accessLevel) {
+       // Default is 'invalid';
+       $modCheck = 'invalid';
+
+       // @TODO This is still very static, rewrite it somehow
+       switch ($accessLevel) {
+               case 'admin':
+                       $modCheck = 'admin';
+                       break;
+
+               case 'sponsor':
+               case 'guest':
+               case 'member':
+                       $modCheck = getModule();
+                       break;
+
+               default: // Unsupported file name / access level
+                       debug_report_bug('Unsupported file name=' . basename($file) . '/access level=' . $accessLevel);
+                       break;
+       }
+
+       // Return result
+       return $modCheck;
+}
+
 //////////////////////////////////////////////////
 // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //
 //////////////////////////////////////////////////