From d6ebb363c4ddd8c4ea646d8a6ab7fd561396bf54 Mon Sep 17 00:00:00 2001 From: Miles Lott Date: Sun, 11 Aug 2002 23:54:58 +0000 Subject: [PATCH] Add copy of old template class so setup can work for now. --- setup/applications.php | 2 +- setup/applist.php | 2 +- setup/config.php | 4 +- setup/inc/class.Template.inc.php | 450 +++++++++++++++++++++++++++++++ setup/index.php | 2 +- setup/lang.php | 2 +- setup/ldap.php | 2 +- setup/ldapexport.php | 2 +- setup/ldapimport.php | 2 +- setup/ldapmodify.php | 2 +- setup/manageheader.php | 8 +- setup/schematoy.php | 2 +- setup/setup_demo.php | 2 +- setup/sqltoarray.php | 2 +- 14 files changed, 467 insertions(+), 17 deletions(-) create mode 100644 setup/inc/class.Template.inc.php diff --git a/setup/applications.php b/setup/applications.php index 718bc37a74..bbc188297c 100644 --- a/setup/applications.php +++ b/setup/applications.php @@ -41,7 +41,7 @@ $ConfigDomain = get_var('ConfigDomain',Array('POST','COOKIE')); $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/applist.php b/setup/applist.php index d0876ccd51..cb2f380b7b 100644 --- a/setup/applist.php +++ b/setup/applist.php @@ -30,7 +30,7 @@ // Does not return unless user is authorized $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl' diff --git a/setup/config.php b/setup/config.php index 23d7ba4844..f2279ef2cf 100644 --- a/setup/config.php +++ b/setup/config.php @@ -31,7 +31,7 @@ } $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', @@ -165,7 +165,7 @@ $cfg_apps = array('phpgwapi','admin','preferences'); while(list(,$cfg_app) = each($cfg_apps)) { - $t = CreateObject('phpgwapi.Template',$GLOBALS['phpgw']->common->get_tpl_dir($cfg_app)); + $t = CreateObject('setup.Template',$GLOBALS['phpgw']->common->get_tpl_dir($cfg_app)); $t->set_unknowns('keep'); $t->set_file(array('config' => 'config.tpl')); diff --git a/setup/inc/class.Template.inc.php b/setup/inc/class.Template.inc.php new file mode 100644 index 0000000000..d2e701521d --- /dev/null +++ b/setup/inc/class.Template.inc.php @@ -0,0 +1,450 @@ + remove undefined variables + * 'comment' => replace undefined variables with comments + * 'keep' => keep undefined variables + */ + var $unknowns = 'remove'; + + /* 'yes' => halt, 'report' => report error, continue, 'no' => ignore error quietly */ + var $halt_on_error = 'yes'; + + /* last error message is retained here */ + var $last_error = ''; + + /***************************************************************************/ + /* public: Constructor. + * root: template directory. + * unknowns: how to handle unknown variables. + */ + function Template($root = '.', $unknowns = 'remove') + { + $this->set_root($root); + $this->set_unknowns($unknowns); + } + + /* public: setroot(pathname $root) + * root: new template directory. + */ + function set_root($root) + { + if (!is_dir($root)) + { + $this->halt("set_root: $root is not a directory."); + return false; + } + $this->root = $root; + return true; + } + + /* public: set_unknowns(enum $unknowns) + * unknowns: 'remove', 'comment', 'keep' + * + */ + function set_unknowns($unknowns = 'keep') + { + $this->unknowns = $unknowns; + } + + /* public: set_file(array $filelist) + * filelist: array of handle, filename pairs. + * + * public: set_file(string $handle, string $filename) + * handle: handle for a filename, + * filename: name of template file + */ + function set_file($handle, $filename = '') + { + if (!is_array($handle)) + { + if ($filename == '') + { + $this->halt("set_file: For handle $handle filename is empty."); + return false; + } + $this->file[$handle] = $this->filename($filename); + } + else + { + reset($handle); + while(list($h, $f) = each($handle)) + { + $this->file[$h] = $this->filename($f); + } + } + } + + /* public: set_block(string $parent, string $handle, string $name = '') + * extract the template $handle from $parent, + * place variable {$name} instead. + */ + function set_block($parent, $handle, $name = '') + { + if (!$this->loadfile($parent)) + { + $this->halt("subst: unable to load $parent."); + return false; + } + if ($name == '') + { + $name = $handle; + } + $str = $this->get_var($parent); + $reg = "/(.*)\n\s*/sm"; + preg_match_all($reg, $str, $m); + $str = preg_replace($reg, '{' . "$name}", $str); + $this->set_var($handle, $m[1][0]); + $this->set_var($parent, $str); + } + + /* public: set_var(array $values) + * values: array of variable name, value pairs. + * + * public: set_var(string $varname, string $value) + * varname: name of a variable that is to be defined + * value: value of that variable + */ + function set_var($varname, $value = '') + { + if (!is_array($varname)) + { + if (!empty($varname)) + { + if ($this->debug) + { + print "scalar: set *$varname* to *$value*
\n"; + } + $this->varkeys[$varname] = $this->varname($varname); + $this->varvals[$varname] = $value; + } + } + else + { + reset($varname); + while(list($k, $v) = each($varname)) + { + if (!empty($k)) + { + if ($this->debug) + { + print "array: set *$k* to *$v*
\n"; + } + $this->varkeys[$k] = $this->varname($k); + $this->varvals[$k] = $v; + } + } + } + } + + /* public: subst(string $handle) + * handle: handle of template where variables are to be substituted. + */ + function subst($handle) + { + if (!$this->loadfile($handle)) + { + $this->halt("subst: unable to load $handle."); + return false; + } + + $str = $this->get_var($handle); + reset($this->varkeys); + while (list($k, $v) = each($this->varkeys)) + { + $str = str_replace($v, $this->varvals[$k], $str); + } + return $str; + } + + /* public: psubst(string $handle) + * handle: handle of template where variables are to be substituted. + */ + function psubst($handle) + { + print $this->subst($handle); + return false; + } + + /* public: parse(string $target, string $handle, boolean append) + * public: parse(string $target, array $handle, boolean append) + * target: handle of variable to generate + * handle: handle of template to substitute + * append: append to target handle + */ + function parse($target, $handle, $append = false) + { + if (!is_array($handle)) + { + $str = $this->subst($handle); + if ($append) + { + $this->set_var($target, $this->get_var($target) . $str); + } + else + { + $this->set_var($target, $str); + } + } + else + { + reset($handle); + while(list($i, $h) = each($handle)) + { + $str = $this->subst($h); + $this->set_var($target, $str); + } + } + return $str; + } + + function pparse($target, $handle, $append = false) + { + print $this->parse($target, $handle, $append); + return false; + } + + /* This is short for finish parse */ + function fp($target, $handle, $append = False) + { + return $this->finish($this->parse($target, $handle, $append)); + } + + /* This is a short cut for print finish parse */ + function pfp($target, $handle, $append = False) + { + echo $this->finish($this->parse($target, $handle, $append)); + } + + /* public: get_vars() + */ + function get_vars() + { + reset($this->varkeys); + while(list($k, $v) = each($this->varkeys)) + { + $result[$k] = $this->varvals[$k]; + } + return $result; + } + + /* public: get_var(string varname) + * varname: name of variable. + * + * public: get_var(array varname) + * varname: array of variable names + */ + function get_var($varname) + { + if (!is_array($varname)) + { + return $this->varvals[$varname]; + } + else + { + reset($varname); + while(list($k, $v) = each($varname)) + { + $result[$k] = $this->varvals[$k]; + } + return $result; + } + } + + /* public: get_undefined($handle) + * handle: handle of a template. + */ + function get_undefined($handle) + { + if (!$this->loadfile($handle)) + { + $this->halt("get_undefined: unable to load $handle."); + return false; + } + + preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m); + $m = $m[1]; + if (!is_array($m)) + { + return false; + } + reset($m); + while(list($k, $v) = each($m)) + { + if (!isset($this->varkeys[$v])) + { + $result[$v] = $v; + } + } + + if (count($result)) + { + return $result; + } + else + { + return false; + } + } + + /* public: finish(string $str) + * str: string to finish. + */ + function finish($str) + { + switch ($this->unknowns) + { + case 'keep': + break; + case 'remove': + $str = preg_replace('/{[^ \t\r\n}]+}/', '', $str); + break; + case 'comment': + $str = preg_replace('/{([^ \t\r\n}]+)}/', "", $str); + break; + } + + return $str; + } + + /* public: p(string $varname) + * varname: name of variable to print. + */ + function p($varname) + { + print $this->finish($this->get_var($varname)); + } + + function get($varname) + { + return $this->finish($this->get_var($varname)); + } + + /***************************************************************************/ + /* private: filename($filename) + * filename: name to be completed. + */ + function filename($filename,$root='',$time=1) + { + if($root=='') + { + $root=$this->root; + } + if (substr($filename, 0, 1) != '/') + { + $new_filename = $root.'/'.$filename; + } + else + { + $new_filename = $filename; + } + + if (!file_exists($new_filename)) + { + if($time==2) + { + $this->halt("filename: file $new_filename does not exist."); + } + else + { + $new_root = str_replace($GLOBALS['phpgw_info']['server']['template_set'],'default',$root); + $new_filename = $this->filename(str_replace($root.'/','',$new_filename),$new_root,2); + } + } + return $new_filename; + } + + /* private: varname($varname) + * varname: name of a replacement variable to be protected. + */ + function varname($varname) + { + return '{'.$varname.'}'; + } + + /* private: loadfile(string $handle) + * handle: load file defined by handle, if it is not loaded yet. + */ + function loadfile($handle) + { + if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle])) + { + return true; + } + if (!isset($this->file[$handle])) + { + $this->halt("loadfile: $handle is not a valid handle."); + return false; + } + $filename = $this->file[$handle]; + + $str = implode('', @file($filename)); + if (empty($str)) + { + $this->halt("loadfile: While loading $handle, $filename does not exist or is empty."); + return false; + } + + $this->set_var($handle, $str); + return true; + } + + /***************************************************************************/ + /* public: halt(string $msg) + * msg: error message to show. + */ + function halt($msg) + { + $this->last_error = $msg; + + if ($this->halt_on_error != 'no') + { + $this->haltmsg($msg); + } + + if ($this->halt_on_error == 'yes') + { + echo('Halted.'); + } + + $GLOBALS['phpgw']->common->phpgw_exit(True); + } + + /* public, override: haltmsg($msg) + * msg: error message to show. + */ + function haltmsg($msg) + { + printf("Template Error: %s
\n", $msg); + } + } diff --git a/setup/index.php b/setup/index.php index bd7be8a122..5cfbcb1be3 100644 --- a/setup/index.php +++ b/setup/index.php @@ -31,7 +31,7 @@ @set_time_limit(0); $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/lang.php b/setup/lang.php index bef2a79476..2138ef65c3 100644 --- a/setup/lang.php +++ b/setup/lang.php @@ -162,7 +162,7 @@ if (!@$GLOBALS['included']) { $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/ldap.php b/setup/ldap.php index 5b7a370660..9f60b14549 100644 --- a/setup/ldap.php +++ b/setup/ldap.php @@ -35,7 +35,7 @@ } $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'ldap' => 'ldap.tpl', 'T_head' => 'head.tpl', diff --git a/setup/ldapexport.php b/setup/ldapexport.php index 104e482685..6784610f2e 100644 --- a/setup/ldapexport.php +++ b/setup/ldapexport.php @@ -43,7 +43,7 @@ $phpgw->db = $GLOBALS['phpgw_setup']->db; $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'ldap' => 'ldap.tpl', 'T_head' => 'head.tpl', diff --git a/setup/ldapimport.php b/setup/ldapimport.php index 7568ef2eb7..f5da3c0914 100644 --- a/setup/ldapimport.php +++ b/setup/ldapimport.php @@ -43,7 +43,7 @@ $phpgw->db = $GLOBALS['phpgw_setup']->db; $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'ldap' => 'ldap.tpl', 'T_head' => 'head.tpl', diff --git a/setup/ldapmodify.php b/setup/ldapmodify.php index 1a02a12d40..0fbb220437 100644 --- a/setup/ldapmodify.php +++ b/setup/ldapmodify.php @@ -43,7 +43,7 @@ $phpgw->db = $GLOBALS['phpgw_setup']->db; $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'ldap' => 'ldap.tpl', 'T_head' => 'head.tpl', diff --git a/setup/manageheader.php b/setup/manageheader.php index a561ef521c..d009d546be 100644 --- a/setup/manageheader.php +++ b/setup/manageheader.php @@ -68,7 +68,7 @@ // added these to let the app work, need to templatize still $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', @@ -122,7 +122,7 @@ { case 'download': check_form_values(); - $header_template = CreateObject('phpgwapi.Template','../'); + $header_template = CreateObject('setup.Template','../'); $b = CreateObject('phpgwapi.browser'); $b->content_header('header.inc.php','application/octet-stream'); /* @@ -136,7 +136,7 @@ break; case 'view': check_form_values(); - $header_template = CreateObject('phpgwapi.Template','../'); + $header_template = CreateObject('setup.Template','../'); $GLOBALS['phpgw_setup']->html->show_header('Generated header.inc.php', False, 'header'); echo '
' . lang('Save this text as contents of your header.inc.php') . '

'; $newheader = $GLOBALS['phpgw_setup']->html->generate_header(); @@ -152,7 +152,7 @@ break; case 'write config': check_form_values(); - $header_template = CreateObject('phpgwapi.Template','../'); + $header_template = CreateObject('setup.Template','../'); if(is_writeable('../header.inc.php') || (!file_exists('../header.inc.php') && is_writeable('../'))) { $newheader = $GLOBALS['phpgw_setup']->html->generate_header(); diff --git a/setup/schematoy.php b/setup/schematoy.php index d2f9558969..67defe8ef6 100644 --- a/setup/schematoy.php +++ b/setup/schematoy.php @@ -31,7 +31,7 @@ // Does not return unless user is authorized $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $GLOBALS['setup_tpl'] = CreateObject('phpgwapi.Template',$tpl_root); + $GLOBALS['setup_tpl'] = CreateObject('setup.Template',$tpl_root); $GLOBALS['setup_tpl']->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/setup_demo.php b/setup/setup_demo.php index 76acc8bd34..2d7bed92c5 100644 --- a/setup/setup_demo.php +++ b/setup/setup_demo.php @@ -48,7 +48,7 @@ if(!get_var('submit',Array('POST'))) { $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/sqltoarray.php b/setup/sqltoarray.php index f243489c4f..8ecde568e7 100644 --- a/setup/sqltoarray.php +++ b/setup/sqltoarray.php @@ -29,7 +29,7 @@ // Does not return unless user is authorized $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + $setup_tpl = CreateObject('setup.Template',$tpl_root); $download = get_var('download',Array('GET','POST')); $submit = get_var('submit',Array('GET','POST'));