//
// Template-Ausgabeklasse
//
class Template {
var $_template;
var $_hashData;
var $_hashKeys;
var $_hashValues;
var $output;
function Template()
{
if ((DEBUG & 4) == 4) echo "Template->init
\n";
$this->_resetTemplate();
$this->_resetHash();
}
function add_base_hash(&$data)
{
global $sess_ident;
$data['SESS-IDENT'] = $sess_ident;
$data['URL_PRODUKTE'] = URL_PRODUKTE;
$data['URL_INFO'] = URL_INFO;
$data['URL_KONTAKT'] = URL_KONTAKT;
$data['URL_WEBHOME'] = URL_WEBHOME;
$data['URL_WEBHOME_td'] = URL_WEBHOME_td;
$data['URL_WEBHOME_gs'] = URL_WEBHOME_gs;
$data['URL_WEBHOME_zv'] = URL_WEBHOME_zv;
setlocale(LC_TIME, "de_DE");
$data['ACTDATE'] = strftime("%B %Y");
$data['JSLINK_TINYMCE'] = JSLINK_TINYMCE;
$data['LINK-LOGO1'] = LINK_LOGO1;
$data['URL_IMPRESSUM'] = URL_IMPRESSUM;
$data['DIR_ROOT'] = DIR_ROOT;
$data['DIR_SCRIPTS'] = DIR_SCRIPTS;
$data['DIR_TEMPLATES'] = DIR_TEMPLATES;
$data['DIR_IMAGES'] = DIR_IMAGES;
$data['SELF'] = SELF;
$data['APPLNAME'] = APPLNAME;
$data['URL_ROOT'] = URL_ROOT;
$data['URL_FRONTEND'] = URL_FRONTEND;
$data['URL_WEBSITE'] = URL_WEBSITE; // equal with URL_FRONTEND
$data['URL_HTBASE'] = URL_ROOT.DIR_SCRIPTS."/".SELF."?sess_ident=" .$data['SESS-IDENT']."&cmd=";
$data['URL_BOHTBASE'] = $data['URL_HTBASE'];
$data['URL_NLFE'] = URL_NLFE; // scripts for FrontEnd
$data['URL_SHOPSTART'] = URL_NLFE."/nl_entry.php";
$data['URL_STARTSEITE'] = $data['URL_HTBASE'] ."Startseite";
//$data['URL_USRTEMPLATE'] = $data['URL_HTBASE'] ."UsrTemplate";
$data['URL_NAVIGATION'] = $data['URL_HTBASE'] ."NaviTemplate";
$data['URL_BONLABO'] = $data['URL_BOHTBASE'] ."BONLAbo";
$data['URL_BONLABO_IMPORT'] = $data['URL_BOHTBASE'] ."BONLAboImport";
$data['URL_BONLETTER'] = $data['URL_BOHTBASE'] ."BONLetter";
$data['URL_BOTRANCHE'] = $data['URL_BOHTBASE'] ."BONLTranche";
$data['URL_BOSTAT_NL'] = $data['URL_BOHTBASE'] ."BOStatNL";
$data['URL_BOSTAT_ABO'] = $data['URL_BOHTBASE'] ."BOStatAbo";
$data['URL_BOSTAT_BEISPIELE'] = $data['URL_BOHTBASE'] ."BOStatBeispiele";
$data['URL_BOSTAT_PROSPEKTE'] = $data['URL_BOHTBASE'] ."BOStatProspekte";
}
function _resetTemplate()
{
$this->_template = "";
if ((DEBUG & 4) == 4) echo "Template->_resetTemplate
\n";
}
function _resetHash()
{
if ((DEBUG & 4) == 4) echo "Template->_resetHash
\n";
$_hashData = array();
$_hashKeys = array();
$_hashValues = array();
}
function set_template($tmp)
{
if ((DEBUG & 4) == 4) echo "Template->set_template
\n";
$this->_template = $tmp;
if ((DEBUG & 4) == 4) echo "-Template->set_template
\n";
}
function load_template($fileTemplate)
{
if ((DEBUG & 4) == 4) echo "Template->load_template ($fileTemplate)
\n";
$this->_resetTemplate();
$tplFile=0;
$buffer = "";
$tplFile = fopen ("$fileTemplate", "r");
if (!$tplFile) die("could not open template file '$fileTemplate'");
while (!feof ($tplFile))
{
$buffer = fgets($tplFile, 4096);
$this->_template .= $buffer;
}
fclose ($tplFile);
}
function load_hash($mydatahash = array())
{
if (! function_exists('_conv_keys')) {
function _conv_keys(&$item, $key) { $item = "/<-$item->/"; }
}
if ((DEBUG & 4) == 4) echo "Template->load_hash
\n";
$this->_resetHash();
$this->add_base_hash($mydatahash);
$this->_hashData = $mydatahash;
$this->_hashKeys = array_keys($this->_hashData);
$this->_hashValues = array_values($this->_hashData);
array_walk($this->_hashKeys, '_conv_keys');
}
function load_pieces($mynameHash = array()) //mynameHash[0]=NameOfBaseTemplate, mynameHash[pieceskey=fieldname]=TemplateName
{
if (! function_exists('_conv_pkeys')) {
function _conv_pkeys(&$item, $key) { $item = "/<-".strtoupper($item)."->/"; }
}
$pieces = array();
$baseName = DIR_ROOT.DIR_TEMPLATES."/".$mynameHash[0];
unset($mynameHash[0]);
foreach($mynameHash as $key => $fileTemplate)
{
if($fileTemplate)
{
$this->load_template(DIR_ROOT.DIR_TEMPLATES."/".$fileTemplate);
$pieces[$key] = $this->_template;
}
else
$pieces[$key] = "";
}
$this->load_template($baseName);
$this->_resetHash();
$this->_hashKeys = array_keys($pieces);
$this->_hashValues = array_values($pieces);
array_walk($this->_hashKeys, '_conv_pkeys');
//print_r($this_hashKeys);
$this->compile_template();
$this->_template = $this->output;
}
function show_template()
{
if ((DEBUG & 4) == 4) echo "Template->show_template
\n";
$this->compile_template();
echo $this->output;
}
function _calc2($tmp2in)
{
return ((isset($this->_hashData[$tmp2in]) ? $this->_hashData[$tmp2in] : $tmp2in));
}
function _calc($tmpin)
{
$tmpout = preg_replace("/([^a-zA-Z_0-9])([a-zA-Z_0-9]+)/e", "'\\1'.\$this->_calc2('\\2')", $tmpin);
$tmpout = substr ($tmpout, 1, strlen($tmpout)-1);
eval ("\$tmpout = ($tmpout);");
return ($tmpout);
}
function compile_template()
{
if ((DEBUG & 4) == 4) echo "Template->compile_template
\n";
$tmpTemplate = $this->_template;
$tmpTemplate = preg_replace ($this->_hashKeys, $this->_hashValues, $tmpTemplate);
$tmpTemplate = preg_replace ("/<-(=)\(([a-zA-Z0-9_ +-\/*()]+?)\)->/e", "\$this->_calc ('\\1\\2')", $tmpTemplate);
$this->output = $tmpTemplate;
}
}
?>
class NLinclude{
var $themen_opt = array();
function setup_scrolling($start_url,$found=0,$page=0)
{
global $DB;
$ppage = RESULTS_PER_PAGE;
$nrzeige = 4; // Ausgabe der Seitenanzahlen Links und Rechts
if(! $page) $page=0;
$start = $page * $ppage;
if($start >= $found) // may happen after empfadd
{
$page = 0;
$start = -1;
}
$x = ceil($found) -1;
$x = $x / $ppage;
if($ppage < $found)
{
$pic = "Seite: ";
}
if($page && $page > $nrzeige)
{
$back_end ="« Erste ...";
$back = " « Vorherige ";
}
$nr_start = $page +1;
$nr_left = $nr_start - $nrzeige;
$nr_right = $nr_start + $nrzeige;
for($i=$nr_left;$i<=$nr_right;$i++)
{
if($i > 0)
{
$array[$i] = $i;
$array[1] = 1;
$array[$x] = $x;
ksort($array);
}
if($i >=1 && $i <= $x+1)
{
if($i == $page+1)
{
if ($ppage < $found)
{
$middle .= " $i ";
}
}
else
{
$middle .= " $i ";
}
}
}//end for
//echo "($page != floor($x) && (floor($x) - $nrzeige) > $page)";
if($page != floor($x) && (floor($x) - $nrzeige) > $page)
{
if ($ppage < $found)
{
$forward_end = "... Letzte » ";
$forward =" Nächste » ";
}
}
return(array($start, $pic.$back_end.$back.$middle.$forward.$forward_end));
} // end setup_scrolling
function get_empf_count($nl_id)
{
global $DB2;
$query = "SELECT count(1) AS found FROM nl_newsletter, nl_nl_abo LEFT JOIN nl_tranche ON tr_nr=nlabo_tranche AND tr_nl_id=nlabo_nl_id ";
$query .= " WHERE nl_id= nlabo_nl_id AND nlabo_nl_id ='$nl_id' AND nlabo_tranche < 99 AND ";
$query .= " ((nlabo_tranche=0 AND nl_zu_senden=0) OR (tr_zu_senden=0))";
// $query = "SELECT count(1) AS found FROM nl_nl_abo WHERE nlabo_tranche<99 AND nlabo_nl_id ='$nl_id'";
if(($DB2->query($query)) && ($DB2->rows))
{
$DB2->loadhash();
return($DB2->RSArray['found']);
}
else
return(0);
}
function get_tranche_count($nl_id)
{
global $DB2;
$query = "SELECT count(1) AS found FROM nl_tranche WHERE tr_nl_id ='$nl_id'";
if(($DB2->query($query)) && ($DB2->rows))
{
$DB2->loadhash();
return($DB2->RSArray['found']);
}
else
return(0);
}
function dateformat($datestring)
{
// transform YYYY-MM-DD HH:MM:SS to DD.MM.YYYY
if(strlen($datestring) >=10)
{
return(substr($datestring,8,2).".".substr($datestring,5,2).".".substr($datestring,0,4));
}
else
{
return("");
}
} // end dateformat
// UT 06.02.10 no get_product_opt, but this one. for aisys taken from fabianfr and located in URL_WEBSITE!!
function old_get_link_opt($link_id)
{
/*
$out = ' $link_id="'.$link_id."'; ?>\n";
$tplFile = fopen (DIR_WEBSITE."/links_pdown.php", "r");
if (!$tplFile) die("could not open template file '".DIR_WEBSITE."/links_pdown.php'");
while (!feof ($tplFile))
{
$buffer = fgets($tplFile, 4096);
$out .= $buffer;
}
fclose ($tplFile);
return($out);
*/
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
$out.="\n";
return($out);
}
function get_link_opt($link_id)
{
//$AIDB = new Database("aisys_test",'relaunch_user',"a16ySr3l");
//$AIDB2 = new Database("aisys_test",'relaunch_user',"a16ySr3l");
//$AIDB3 = new Database("aisys_test",'relaunch_user',"a16ySr3l");
#$AIDB = new Database("aisys_www2",'relaunch_user',"a16ySr3l");
#$AIDB2 = new Database("aisys_www2",'relaunch_user',"a16ySr3l");
#$AIDB3 = new Database("aisys_www2",'relaunch_user',"a16ySr3l");
$AIDB = new Database (DB_DSN, DB_LOGIN, DB_PASS, DB_HOST);
$AIDB2 = new Database (DB_DSN, DB_LOGIN, DB_PASS, DB_HOST);
$AIDB3 = new Database (DB_DSN, DB_LOGIN, DB_PASS, DB_HOST);
//altered from BO/templates/startseite_neu.php from ffr
$out.="\n";
$out.="\n";
$sql_nav1 = "SELECT * FROM navigation WHERE sort != '0' ORDER BY sort";
if(($AIDB->query($sql_nav1)) && ($AIDB->rows))
{
for($i=0; $i<$AIDB->rows; $i++)
{
$AIDB->setpos($i);
$AIDB->loadhash();
$out.="\n";
if($AIDB->RSArray['nav'] == "produkte")
{
/* 2008.01.15
$sql_nav2 = "SELECT navigation.*, kategorien.ueberschrift FROM navigation, kategorien ";
$sql_nav2.= " WHERE kategorien.navigation = navigation.id AND navigation.parent='". $AIDB->RSArray['id'] ."' ORDER BY navigation.nav";
$AIDB2->query($sql_nav2);
for($j=0; $j<$AIDB2->rows; $j++)
{
$AIDB2->setpos($j);
$AIDB2->loadhash();
$out .= "\n";
*/
$sql_nav3 = "SELECT navigation.*, produkte.ueberschrift FROM navigation, produkte ";
//$sql_nav3 .= " WHERE produkte.navigation = navigation.id AND navigation.parent = '". $AIDB2->RSArray['id'] ."' ORDER BY produkte.sort";
$sql_nav3 .= " WHERE produkte.navigation = navigation.id AND produkte.aktiv = '1' AND navigation.parent = '". $AIDB->RSArray['id'] ."' ORDER BY produkte.sort";
$AIDB3->query($sql_nav3);
for($ii=0; $ii<$AIDB3->rows; $ii++)
{
$AIDB3->setpos($ii);
$AIDB3->loadhash();
$out .= "\n";
}
//}
}
elseif($AIDB->RSArray['nav'] == "loesungen")
{
$sql_nav3 = "SELECT navigation.*, loesungen.ueberschrift FROM navigation, loesungen ";
$sql_nav3 .= " WHERE loesungen.navigation = navigation.id AND loesungen.aktiv = '1' AND navigation.parent = '". $AIDB->RSArray['id'] ."' ORDER BY loesungen.sort";
$AIDB3->query($sql_nav3);
for($ii=0; $ii<$AIDB3->rows; $ii++)
{
$AIDB3->setpos($ii);
$AIDB3->loadhash();
$out .= "\n";
}
}
elseif($AIDB->RSArray['nav'] == "meldungen")
{
$sql_nav2="SELECT id, ueberschrift FROM meldungen WHERE ablaufdatum > '".date("Y-m-d")."' ORDER BY startdatum DESC";
$AIDB2->query($sql_nav2);
for($j=0; $j<$AIDB2->rows; $j++)
{
$AIDB2->setpos($j);
$AIDB2->loadhash();
$out .= "\n";
}
}
else
{
$sql_nav2 = "SELECT * FROM navigation WHERE parent = '". $AIDB->RSArray['id'] ."' ORDER BY nav";
$AIDB2->query($sql_nav2);
for($j=0; $j<$AIDB2->rows; $j++)
{
$AIDB2->setpos($j);
$AIDB2->loadhash();
$out .= "\n";
$sql_nav3 = "SELECT * FROM navigation WHERE parent = '". $AIDB2->RSArray['id'] ."' ORDER BY nav";
$AIDB3->query($sql_nav3);
for($ii=0; $ii<$AIDB3->rows; $ii++)
{
$AIDB3->setpos($ii);
$AIDB3->loadhash();
$out .= "\n";
}
}
} // end else normal subnavi
}
} // endif AIDB results
return($out);
} // end get_link_opt
function get_produkt_opt($id, $mode)
{
global $DB3;
if(substr($mode,0,4) == "link")
{
if (substr($id,0,7) == "http://")
{
$pulldown = "\n";
$link_name = substr($id,7); $link_cmd="";
}
else
{
$pulldown = "\n";
}
//cms - cmd's fom HTBASE / ROOTSHOP used in nl (newsletter new)
$cms_cmds = array(
"Startseite" => "Startpage",
// "Login" => "LoginPage",
"Startseite Privatkunden" =>"Privatkunden",
"Startseite Geschäftskunden" => "Businesskunden",
"News / Presse" => "NewsPress",
"News - Neue Produkte" => "NewsProductCustomer",
"News - Anwenderberichte" => "NewsUserReports",
"News - Testurteile" => "NewsTestReports",
"Downloads - Einzelplatz" => "DownloadsSupportCustomer",
"Downloads - Netzwerk/Intranet" => "DownloadsSupportBusiness",
"Downloads - Partner" => "DownloadsPartner",
"Downloads - Presse" => "DownloadsPress",
);
foreach ($cms_cmds as $name => $cmd)
{
//if ($id != str_replace("!","<",$cmd))
if($id == $cmd)
{
$pulldown .= "\n";
$link_name = $name; $link_cmd=$id;
}
else
{
$pulldown .= "\n";
}
}
} // endif for_link
else
{
if($id)
$pulldown = "\n";
else
$pulldown = "\n";
}
$query = "SELECT * FROM produkte, produkte_texte where produkte.pro_id = produkte_texte.protex_pro_id ";
if ($DB3->query($query))
{
for ($i=0; $i < $DB3->rows; $i++)
{
$DB3->setpos($i);
$DB3->loadhash();
if ($DB3->RSArray['pro_id'] > 0)
{
if($DB3->RSArray['pro_id'] == $id)
{
$pulldown .= "\n";
$link_name=$DB3->RSArray['protex_name']; $link_cmd="ProductView/".$id;
}
else
{
$pulldown .= "\n";
}
}
}
}
if($mode == "link")
return($link_name);
else
return($pulldown);
} // end get_produkt_opt
function get_date_opt($von_datestring="",$bis_datestring="",$past=0) // as "YYYY-MM-DD $past = years past (negative !!!!)
{
if(!($von_datestring) || ($von_datestring == "0000-00-00"))
$von = array(date("Y")+$past,date("m"),date("d"));
else
$von=explode("-",$von_datestring);
if(!($bis_datestring) || ($bis_datestring == "0000-00-00"))
$bis=array(date("Y")+1,date("m"),date("d"));
else
$bis=explode("-",$bis_datestring);
//print_r($von); print_r($bis);
return(array(
"VON-TAG-OPT"=>$this->_makeopt($von[2],31),
"VON-MONAT-OPT"=>$this->_makeopt($von[1],12),
"VON-JAHR-OPT"=>$this->_makeopt($von[0],$past),
"BIS-TAG-OPT"=>$this->_makeopt($bis[2],31),
"BIS-MONAT-OPT"=>$this->_makeopt($bis[1],12),
"BIS-JAHR-OPT"=>$this->_makeopt($bis[0],$past)
));
} // end get_date_opt
function _makeopt($selval,$max=0)
{
$min=1;
$sel="";
if(! $max) // nur bei Jahr
{
$min = date("Y");
$max = $min + 5;
if(! $selval) $selval = $max; // aktuelle Jahr selektiert
}
elseif($max < 0) // Jahre bis zu heute
{
$min = date("Y") + $max;
$max = date("Y");
if(! $selval) $selval = $min; // aktuelle Jahr selektiert
}
if(! $selval)
{
$selval = $min;
}
for($i=$min; $i<=$max; $i++)
{
if($min == 1) //Tag, oder Monat
{
$value = sprintf("%02d",$i);
}
else
{
$value = sprintf("%4d",$i);
}
if($i == $selval)
{
$options .= "\n";
}
else
{
$options .= "\n";
}
}
return($options);
} // end _makeopt
function get_themen_opt($abo_id=0)
{
global $DB2;
if(! $this->themen_opt)
$this->_set_themen_opt();
$opt_arr=$this->themen_opt;
$query = "SELECT abothema_thema_id FROM nl_abo_themen WHERE abothema_abo_id=$abo_id ";
if(($DB2->query($query)) && ($DB2->rows))
{
for($i=0; $i<$DB2->rows; $i++)
{
$DB2->setpos($i);
$DB2->loadhash();
$opt_arr[$DB2->RSArray['abothema_thema_id']]=str_replace("'>","' selected>",$this->themen_opt[$DB2->RSArray['abothema_thema_id']]);
}
}
return(implode('',$opt_arr));
}// end get_themen_opt
function _set_themen_opt()
{
global $DB2;
$query = "SELECT * FROM nl_thema ORDER BY thema_id";
if(($DB2->query($query)) && ($DB2->rows))
{
for($i=0; $i<$DB2->rows; $i++)
{
$DB2->setpos($i);
$DB2->loadhash();
$this->themen_opt[$DB2->RSArray['thema_id']]="\n";
}
}
} // end _set_themen_opt
} // end class
?>