Exemplo n.º 1
0
 function cacheXTPL($file, $cache_file, $preview_file = false)
 {
     global $beanList;
     //now if we have a backup_file lets use that instead of the original
     if ($preview_file) {
         $file = $preview_file;
     }
     if (!isset($the_module)) {
         $the_module = $_SESSION['studio']['module'];
     }
     $files = StudioParser::getFiles($the_module);
     $xtpl = $files[$_SESSION['studio']['selectedFileId']]['php_file'];
     $originalFile = $files[$_SESSION['studio']['selectedFileId']]['template_file'];
     $type = StudioParser::getFileType($files[$_SESSION['studio']['selectedFileId']]['type']);
     $buffer = sugar_file_get_contents($xtpl);
     $cache_file = create_cache_directory('studio/' . $file);
     $xtpl_cache = create_cache_directory('studio/' . $xtpl);
     $module = $this->workingModule;
     $form_string = "require_once('modules/" . $module . "/Forms.php');";
     if ($type == 'edit' || $type == 'detail') {
         if (empty($_REQUEST['record'])) {
             $buffer = preg_replace('(\\$xtpl[\\ ]*=)', "\$focus->assign_display_fields('{$module}'); \$0", $buffer);
         } else {
             $buffer = preg_replace('(\\$xtpl[\\ ]*=)', "\$focus->retrieve('" . $_REQUEST['record'] . "');\n\$focus->assign_display_fields('{$module}');\n \$0", $buffer);
         }
     }
     $_REQUEST['query'] = true;
     if (substr_count($file, 'SearchForm') > 0) {
         $temp_xtpl = new XTemplate($file);
         if ($temp_xtpl->exists('advanced')) {
             global $current_language;
             $mods = return_module_language($current_language, 'DynamicLayout');
             $mod = BeanFactory::getBean($module);
             $this->populateRequestFromBuffer($file);
             $mod->assign_display_fields($module);
             $buffer = str_replace(array('echo $lv->display();', '$search_form->parse("advanced");', '$search_form->out("advanced");', '$search_form->parse("main");', '$search_form->out("main");'), '', $buffer);
             $buffer = str_replace('echo get_form_footer();', '$search_form->parse("main");' . "\n" . '$search_form->out("main");' . "\necho '<br><b>" . translate('LBL_ADVANCED', 'DynamicLayout') . "</b><br>';" . '$search_form->parse("advanced");' . "\n" . '$search_form->out("advanced");' . "\n \$sugar_config['list_max_entries_per_page'] = 1;", $buffer);
         }
     } else {
         if ($type == 'detail') {
             $buffer = str_replace('header(', 'if(false) header(', $buffer);
         }
     }
     $buffer = str_replace($originalFile, $cache_file, $buffer);
     $buffer = "<?php\n\$sugar_config['list_max_entries_per_page'] = 1;\n ?>" . $buffer;
     $buffer = str_replace($form_string, '', $buffer);
     $buffer = $this->disableInputs($buffer);
     $xtpl_fp_cache = sugar_fopen($xtpl_cache, 'w');
     fwrite($xtpl_fp_cache, $buffer);
     fclose($xtpl_fp_cache);
     return $xtpl_cache;
 }
function get_xtpl_file_and_cache($file)
{
    include 'modules/DynamicLayout/HTMLPHPMapping.php';
    global $beanList;
    if (!empty($html_php_mapping_subpanel[$file])) {
        $xtpl = $html_php_mapping_subpanel[$file];
    } else {
        if (!empty($html_php_mapping_edit[$file])) {
            $xtpl = $html_php_mapping_edit[$file];
        } else {
            if (!empty($html_php_mapping_detail[$file])) {
                $xtpl = $html_php_mapping_detail[$file];
            } else {
                if (!empty($html_php_mapping_other[$file])) {
                    $xtpl = $html_php_mapping_other[$file];
                } else {
                    $xtpl = $file;
                }
            }
        }
    }
    $xtpl = str_replace(array('.html', 'SearchForm'), array('.php', 'ListView'), $xtpl);
    $xtpl_fp = fopen($xtpl, 'r');
    $buffer = fread($xtpl_fp, filesize($xtpl));
    fclose($xtpl_fp);
    $cache_file = create_cache_directory('layout/' . $file);
    $xtpl_cache = create_cache_directory('layout/' . $xtpl);
    $module = get_module($file);
    $form_string = "require_once('modules/" . $module . "/Forms.php');";
    if (substr_count($file, 'DetailView') > 0) {
        $buffer = str_replace('header(', 'if(false) header(', $buffer);
    }
    if (substr_count($file, 'DetailView') > 0 || substr_count($file, 'EditView') > 0) {
        if (empty($_REQUEST['record'])) {
            $buffer = preg_replace('(\\$xtpl[\\ ]*=)', "\$focus->assign_display_fields('{$module}'); \$0", $buffer);
        } else {
            $buffer = preg_replace('(\\$xtpl[\\ ]*=)', "\$focus->retrieve('" . $_REQUEST['record'] . "');\n\$focus->assign_display_fields('{$module}');\n \$0", $buffer);
        }
    }
    $_REQUEST['query'] = true;
    if (substr_count($file, 'SearchForm') > 0) {
        $temp_xtpl = new XTemplate($file);
        if ($temp_xtpl->exists('advanced')) {
            global $current_language;
            $mods = return_module_language($current_language, 'DynamicLayout');
            $class_name = $beanList[$module];
            if ($class_name == 'aCase') {
                $class_file = 'Case';
            } else {
                $class_file = $class_name;
            }
            require_once "modules/{$module}/{$class_file}.php";
            $mod = new $class_name();
            populate_request_from_buffer($file);
            $mod->assign_display_fields($module);
            $buffer = str_replace(array('$search_form->parse("advanced");', '$search_form->out("advanced");', '$search_form->parse("main");', '$search_form->out("main");'), array('', '', '', ''), $buffer);
            $buffer = str_replace('echo get_form_footer();', '$search_form->parse("main");' . "\n" . '$search_form->out("main");' . "\necho '<br><b>" . translate('LBL_ADVANCED', 'DynamicLayout') . "</b><br>';" . '$search_form->parse("advanced");' . "\n" . '$search_form->out("advanced");' . "\necho get_form_footer();\n \$sugar_config['list_max_entries_per_page'] = 1;", $buffer);
        }
    }
    if (!empty($html_php_mapping_subpanel[$file])) {
        global $beanList;
        if (!empty($_REQUEST['mod_class'])) {
            $bean = $beanList[$_REQUEST['mod_class']];
        } else {
            $bean = $beanList[$module];
        }
        $buffer = str_replace('replace_file_name', $file, $buffer);
        if (empty($_REQUEST['record'])) {
            $buffer = str_replace('global $focus_list;', "global \$focus_list;\n\$focus_list = new {$bean}();\n\$focus_list->assign_display_fields('{$module}');", $buffer);
        } else {
            $buffer = str_replace('global $focus_list;', "global \$focus_list;\n\$focus_list = new {$bean}();\n\$focus_list->retrieve('" . $_REQUEST['record'] . "');", $buffer);
        }
    }
    if (!empty($html_php_mapping_subpanel[$file])) {
        foreach ($html_php_mapping_subpanel as $key => $val) {
            if ($val == $xtpl) {
                $buffer = str_replace($key, $cache_file, $buffer);
            }
        }
    } else {
        $buffer = str_replace($file, $cache_file, $buffer);
    }
    $buffer = "<?php\n\$sugar_config['list_max_entries_per_page'] = 1;\n ?>" . $buffer;
    $buffer = str_replace($form_string, '', $buffer);
    $buffer = replace_inputs($buffer);
    $xtpl_fp_cache = fopen($xtpl_cache, 'w');
    fwrite($xtpl_fp_cache, $buffer);
    fclose($xtpl_fp_cache);
    return $xtpl_cache;
}