/**
* HTMLConvert
*
* @author Stefan Ruestmann
* @version 1.1
*/
class HTMLConvert{
var $filename = "temp.html";
var $HTMLTEXTxml;
var $HTMLTEXausgabe;
var $HTMLTEXstatus=array();
var $HTMLTEXstatus_name="";
/**
* Konvertiert HTMLText zu Text
*
* @param string html
* @return string text
*/
function HTML2Text($HTML){
$HTML = strip_tags($HTML);
$HTML = html_entity_decode($HTML);
$HTML = trim(str_replace("€","€",$HTML));
return $HTML;
}
/**
* Konvertiert einen Text zum HTML Zeichen
* @param string $text
* @return string $HTML
*/
function Text2HTML($text){
$text = str_replace("Š","ä",$text);
$text = str_replace("Ÿ","ü",$text);
$text = str_replace("š","ö",$text);
$text = str_replace("€","Ä",$text);
$text = str_replace("†","Ü",$text);
$text = str_replace("…","Ö",$text);
$text = str_replace("§","ß",$text);
return $text;
}
/**
* Entfernt HTML Tags
*
* @param String html
* @param String tag
* @return String bereingtes HTML
*/
function DeleteTag($html,$tag){
$Status=0;
$TempHTML="";
if ($tag == "*"){
/*
$html = preg_replace("/\<(.*?)\>/si", "", $html);
$html = preg_replace("/\<\/(.*?)\>/si", "", $html);
*/
$TempHTML=strip_tags($html);
}else{
$html = preg_replace("/<$tag(.*?)>/si", "", $html);
$html = preg_replace("/<\/$tag(.*?)>/si", "", $html);
$TempHTML=$html;
/*
for ($i=0 ; $i<=strlen($html); $i++){
if (strtolower(substr($html,$i,strlen($tag) + 1)) == "<" . strtolower($tag)){$Status=1;$i=$i+strlen($tag) + 1;}
if (strtolower(substr($html,$i,strlen($tag) + 2)) == "" . strtolower($tag)){$Status=0;$i=$i+strlen($tag) + 3;}
if ($Status != 1){
$TempHTML.=substr($html,$i,1);
}else{
//if (substr($html,$i,1) == ">"){$Status=0;}
}
}
*/
}
return $TempHTML;
}
/**
* Liefert den Inhalt eines Tags
*
* TODO: Muss noch besser ausgebaut werden
*/
function getHTMLTag($html, $tag){
$Inhalt="";
for ($i = 0 ; $i <= strlen($html) ; $i++){
if (strtolower(substr($html,$i,(strlen($tag)+2) )) == "<" . strtolower($tag) . ">"){$status=1;$i=$i+strlen($tag)+2;}
if (strtolower(substr($html,$i,(strlen($tag)+3) )) == "" . strtolower($tag) . ">"){$status=0;break;}
if ($status==1){$Inhalt .= substr($html,$i,1);}
}
return $Inhalt;
}
/**
* Konvertiert Text zu HTML Konformen Text
*
* @param String wert
* @return String html
**/
function HTMLencode($wert){
$Sonderzeichen = get_html_translation_table(HTML_ENTITIES);
$Sonderzeichen["<"]="<";
$Sonderzeichen[">"]=">";
return strtr($wert,$Sonderzeichen);
}
/**
* Konvertiert HTML zu Text
*
* @param String wert
* @return String text
**/
function HTMLdecode($wert){
$Sonderzeichen = get_html_translation_table(HTML_ENTITIES);
$Sonderzeichen["<"]="<";
$Sonderzeichen[">"]=">";
foreach ($Sonderzeichen as $id => $value){
$SonderzeichenAnders[$value]=$id;
}
return strtr($wert,$SonderzeichenAnders);
}
function FlashHTMLencode($wert){
$Sonderzeichen["\""]=""";
$$Sonderzeichen["/"]="/";
$Sonderzeichen[";"]=";";
$Sonderzeichen["<"]="<";
$Sonderzeichen[">"]=">";
$Sonderzeichen[";"]=";";
$Sonderzeichen["="]="=";
$Sonderzeichen["#"]="#";
$Sonderzeichen["&"]="&";
$Sonderzeichen["!"]="!";
$Sonderzeichen["$"]="$";
$Sonderzeichen["%"]="%";
$Sonderzeichen["'"]="'";
$Sonderzeichen["("]="(";
$Sonderzeichen[")"]=")";
$Sonderzeichen["*"]="*";
$Sonderzeichen["+"]="+";
$Sonderzeichen[","]=",";
$Sonderzeichen["-"]="-";
$Sonderzeichen["."]=".";
$Sonderzeichen[":"]=":";
$Sonderzeichen["?"]="?";
$Sonderzeichen["@"]="@";
$Sonderzeichen["["]="[";
$Sonderzeichen["\\"]="\";
$Sonderzeichen["]"]="]";
$Sonderzeichen["^"]="^";
$Sonderzeichen["_"]="_";
$Sonderzeichen["`"]="`";
$Sonderzeichen[""]="";
$Sonderzeichen["-"]="";
$Sonderzeichen["'"]="´";
$Sonderzeichen[","]="¸";
$temp = $wert;
foreach ($Sonderzeichen as $id => $value){
$temp = str_replace($id,$value,$temp);
}
return $temp;
}
function FlashHTMLdecode($wert){
$Sonderzeichen["\""]=""";
$$Sonderzeichen["/"]="/";
$Sonderzeichen[";"]=";";
$Sonderzeichen["<"]="<";
$Sonderzeichen[">"]=">";
$Sonderzeichen[";"]=";";
$Sonderzeichen["="]="=";
$Sonderzeichen["#"]="#";
$Sonderzeichen["&"]="&";
$Sonderzeichen["!"]="!";
$Sonderzeichen["$"]="$";
$Sonderzeichen["%"]="%";
$Sonderzeichen["'"]="'";
$Sonderzeichen["("]="(";
$Sonderzeichen[")"]=")";
$Sonderzeichen["*"]="*";
$Sonderzeichen["+"]="+";
$Sonderzeichen[","]=",";
$Sonderzeichen["-"]="-";
$Sonderzeichen["."]=".";
$Sonderzeichen[":"]=":";
$Sonderzeichen["?"]="?";
$Sonderzeichen["@"]="@";
$Sonderzeichen["["]="[";
$Sonderzeichen["\\"]="\";
$Sonderzeichen["]"]="]";
$Sonderzeichen["^"]="^";
$Sonderzeichen["_"]="_";
$Sonderzeichen["`"]="`";
$Sonderzeichen[""]="";
$Sonderzeichen["|"]="¦";
$Sonderzeichen["-"]="";
$Sonderzeichen["'"]="´";
$Sonderzeichen[","]="¸";
$temp = $wert;
foreach ($Sonderzeichen as $id => $value){
$temp = str_replace($value,$id,$temp);
}
return $temp;
}
}
?>
/**
* HTMLObjekte
*
* @author Stefan Ruestmann
* @version 1.1
*/
class HTMLObjekte{
var $db;
/**
* Konstruktor
*/
function __construct(){$this->HTMLObjekte();}
function HTMLObjekte(){
$c = new Connection();
$this->db=$c->get();
$this->db->SetFetchMode(ADODB_FETCH_BOTH);
}
/**
* getSelectBySQL
*/
function getSelectBySQL($name,$sql,$selected,$size=1,$addData=array()){
$HTML="";
if ($sql){
$rs = $this->db->Execute($sql);
if (!$rs->EOF && $rs){
$HTML="";
}
}
return $HTML;
}
function getSelectByArray($name,$daten=array(),$selected,$size=1){
$html="";
return $html;
}
/**
* Liefert einen Wert aus der Datenbank zurueck
*/
function getWert($sql){
$wert="";
$rs = $this->db->Execute($sql);
if (!$rs->EOF && $rs){
$wert = $rs->fields(0);
}
return $wert;
}
/**
* Liefert eine STab View zurueck
*
* @param $elemente
* @return string $html
*/
function getSTab($elemente){
}
/**
* Erzeugt eine Tabelle, die farbliche Zeilen hat
* @return unknown_type
*/
function getTable($header=array(),$daten=array(),$optionen=array()){
// Header
$HTML="
";
foreach ($header as $id => $value){
$HTML.="
" . $value . "
";
}
$HTML.="
";
// Daten
$Zaehler=0;
$HTML.="";
foreach ($daten as $id => $value){
foreach ($value as $id1 => $value1){
$HTML.="
" . $value1 . "
";
if ($Zaehler >= 1){$Zaehler=0;}
}
}
$HTML.="";
}
}
?>
/**
* HTMLTemplate
*
* @author Stefan Ruestmann
* @version 1.1
*/
class HTMLTemplate{
/**
* Konstruktor
*/
function HTMLTemplate(){
}
/**
* get - Liefert ein geparstes Template
*/
function get($filename,$austauschen=array()){
$HTML="";
if (file_exists($filename)){
$F=new Filesystem();
$HTML=$F->fread($filename);
if (is_array($austauschen)){
foreach ($austauschen as $id => $value){
$HTML=str_replace("{\$".$id."}",$value,$HTML);
$HTML=str_replace($id,$value,$HTML);
}
}
}
return $HTML;
}
}
?>
/**
* Erweiterung der Klassen FPDF
*
* @author Stefan R�stmann
* @version 0.2
*/
class PDF_MC_Table extends FPDF{
var $widths;
var $aligns;
var $Empfaenger="Stefan Ruestmann";
var $Absender;
var $Grafik=false;
var $Netto=false;
var $Leer=false;
var $Config;
var $StatusZeileFarbe=false;
var $TabellenRahmen=1;
function SetWidths($w){
//Set the array of column widths
$this->widths=$w;
}
function SetAligns($a){
//Set the array of column alignments
$this->aligns=$a;
}
function Header($line=0){
global $MyXStarConf;
// Nettorechnung??
if ($this->Netto){
$TempFilename = DIR_FS_CATALOG . "includes/modules/XStar/images/rechnung_bg_netto.jpg";
if (file_exists($TempFilename)){
$this->Image($TempFilename,-5,50);
}
}
if ($this->Leer==true){
}else{
// Header Logo setzten
if ($this->Grafik){
$TempFilename = DIR_FS_CATALOG . "templates/" . CURRENT_TEMPLATE . "/img/fpdf_head.jpg";
if (file_exists($TempFilename)){
$this->image($TempFilename,-5,0,220);
}
if ($this->page == 1){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_absender"],'U',$MyXStarConf["xstar_pdfrechnung_fontsize_absender"]);
$this->text(25,53,$this->Absender);
//$this->text(25,40,$this->Absender); NEU TODO: NACH ISO
if ($MyXStarConf["xstar_pdfrechnung_anrede_in_anschriftbox"] == 1){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_absender"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_absender"]);
$this->text(25,57,"Herr / Frau / Firma");
//$this->text(25,44,"Herr / Frau / Firma"); NEU TODO: NACH ISO
}
}
}
// Anschrift Platzieren
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_anschrift"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_anschrift"]);
if ($line >= 1){
$this->Ln($line);
}else{
if ($this->page == 1){
//$this->Ln(37); NEU TODO: NACH ISO
$this->Ln(50);
$this->MultiCell(100,5,$this->Empfaenger);
//$this->Ln(10); NEU TODO: NACH ISO
}else{
$this->Ln(30);
}
}
// Falzmarken setzten
$this->SetDrawColor(0);
$this->Line(3,95,0,95);
$this->Line(5,150,0,150);
}
}
function Footer($line=0){
global $MyXStarConf;
// Sonstige FooterInformationen setzten
if ($this->Grafik){
$TempFilename = DIR_FS_CATALOG . "templates/" . CURRENT_TEMPLATE . "/img/fpdf_foot.jpg";
if (file_exists($TempFilename)){
$this->image($TempFilename,-5,260,220);
}
$Elemente=0;
if ($MyXStarConf["xstar_pdfrechnung_fuss_1_1"]){$Elemente++;}
if ($MyXStarConf["xstar_pdfrechnung_fuss_2_1"]){$Elemente++;}
if ($MyXStarConf["xstar_pdfrechnung_fuss_3_1"]){$Elemente++;}
if ($MyXStarConf["xstar_pdfrechnung_fuss_4_1"]){$Elemente++;}
//print $Elemente;exit();
switch ($Elemente){
case 1:
$Left1=10;
break;
case 2:
$Left1=10;
$Left2=$Left1+110;
break;
case 3:
$Left1=10;
$Left2=$Left1+50;
$Left3=$Left2+50;
break;
case 4:
$Left1=10;
$Left2=$Left1+50;
$Left3=$Left2+50;
$Left4=$Left3+50;
break;
}
$Top=278;
if ($MyXStarConf["xstar_pdfrechnung_fuss_top"]>0){$Top=$MyXStarConf["xstar_pdfrechnung_fuss_top"];}
if ($MyXStarConf["xstar_pdfrechnung_fuss_1_1"]){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_fusszeile"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_fusszeile"]);
$this->text ($Left1,$Top,$MyXStarConf["xstar_pdfrechnung_fuss_1_1"]);
$this->text ($Left1,$Top+3,$MyXStarConf["xstar_pdfrechnung_fuss_1_2"]);
$this->text ($Left1,$Top+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_1_3"]);
$this->text ($Left1,$Top+3+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_1_4"]);
}
if ($MyXStarConf["xstar_pdfrechnung_fuss_2_1"]){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_fusszeile"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_fusszeile"]);
$this->text ($Left2,$Top,$MyXStarConf["xstar_pdfrechnung_fuss_2_1"]);
$this->text ($Left2,$Top+3,$MyXStarConf["xstar_pdfrechnung_fuss_2_2"]);
$this->text ($Left2,$Top+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_2_3"]);
$this->text ($Left2,$Top+3+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_2_4"]);
}
if ($MyXStarConf["xstar_pdfrechnung_fuss_3_1"]){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_fusszeile"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_fusszeile"]);
$this->text ($Left3,$Top,$MyXStarConf["xstar_pdfrechnung_fuss_3_1"]);
$this->text ($Left3,$Top+3,$MyXStarConf["xstar_pdfrechnung_fuss_3_2"]);
$this->text ($Left3,$Top+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_3_3"]);
$this->text ($Left3,$Top+3+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_3_4"]);
}
if ($MyXStarConf["xstar_pdfrechnung_fuss_4_1"]){
$this->SetFont($MyXStarConf["xstar_pdfrechnung_fontfamiliy_fusszeile"],'',$MyXStarConf["xstar_pdfrechnung_fontsize_fusszeile"]);
$this->text ($Left4,$Top,$MyXStarConf["xstar_pdfrechnung_fuss_4_1"]);
$this->text ($Left4,$Top+3,$MyXStarConf["xstar_pdfrechnung_fuss_4_2"]);
$this->text ($Left4,$Top+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_4_3"]);
$this->text ($Left4,$Top+3+3+3,$MyXStarConf["xstar_pdfrechnung_fuss_4_4"]);
}
}
// Seitenummer setzten
if ($line){
}else{
if(!$this->footerset[$this->page]) {
$this->SetY(-25);
$this->Ln(7);
//$this->Cell(175,5,$this->page,0,0,C);
}
}
}
function Row($data){
//Calculate the height of the row
$nb=0;
for($i=0;$iNbLines($this->widths[$i], $data[$i]));
$h=(4*$nb);
if (isset($this->Config->Conf["descriptioninorder"])){
if ($this->Config->Conf["descriptioninorder"] == "true"){
//$h=(2.5*$nb);
$h=(4*$nb);
}else{
$h=(5*$nb);
}
}
$h=(5*$nb);
//Issue a page break first if needed
$this->CheckPageBreak($h);
//Draw the cells of the row
// Hintergrund
$this->SetFillColor(227, 227, 227);
for($i=0;$iwidths[$i];
$a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
//Save the current position
$x=$this->GetX();
$y=$this->GetY();
//Draw the border
if($this->TabellenRahmen == 1){
$this->Rect($x, $y, $w, $h);
}
//Print the text
$this->MultiCell($w, 5, $data[$i], 0, $a, 0);
//Put the position to the right of the cell
$this->SetXY($x+$w, $y);
}
if ($this->StatusZeileFarbe==true){
$this->StatusZeileFarbe=false;
}else{
$this->StatusZeileFarbe=true;
}
//Go to the next line
$this->Ln($h);
}
function CheckPageBreak($h){
//If the height h would cause an overflow, add a new page immediately
if($this->GetY()+$h>$this->PageBreakTrigger)
$this->AddPage($this->CurOrientation);
}
function NbLines($w, $txt){
//Computes the number of lines a MultiCell of width w will take
$cw=&$this->CurrentFont['cw'];
if($w==0)
$w=$this->w-$this->rMargin-$this->x;
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
$s=str_replace("\r", '', $txt);
$nb=strlen($s);
if($nb>0 and $s[$nb-1]=="\n")
$nb--;
$sep=-1;
$i=0;
$j=0;
$l=0;
$nl=1;
while($i<$nb)
{
$c=$s[$i];
if($c=="\n")
{
$i++;
$sep=-1;
$j=$i;
$l=0;
$nl++;
continue;
}
if($c==' ')
$sep=$i;
$l+=$cw[$c];
if($l>$wmax)
{
if($sep==-1)
{
if($i==$j)
$i++;
}
else
$i=$sep+1;
$sep=-1;
$j=$i;
$l=0;
$nl++;
}
else
$i++;
}
return $nl;
}
var $B=0;
var $I=0;
var $U=0;
var $HREF='';
var $ALIGN='';
function WriteHTML($html){
//HTML parser
$html=str_replace("\n", ' ', $html);
$a=preg_split('/<(.*)>/U', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Text
if($this->HREF)
$this->PutLink($this->HREF, $e);
elseif($this->ALIGN == 'center')
$this->Cell(0, 5, $e, 0, 1, 'C');
else
$this->Write(5, $e);
}
else
{
//Tag
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e, 1)));
else
{
//Extract properties
$a2=split(' ', $e);
$tag=strtoupper(array_shift($a2));
$prop=array();
foreach($a2 as $v)
if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$', $v, $a3))
$prop[strtoupper($a3[1])]=$a3[2];
$this->OpenTag($tag, $prop);
}
}
}
}
function OpenTag($tag, $prop){
//Opening tag
if($tag=='STRONG'){
$this->SetStyle('B', true);
}
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag, true);
if($tag=='A')
$this->HREF=$prop['HREF'];
if($tag=='BR')
$this->Ln(5);
if($tag=='P')
$this->Ln(5);
$this->ALIGN=$prop['ALIGN'];
if($tag=='HR')
{
if( $prop['WIDTH'] != '' )
$Width = $prop['WIDTH'];
else
$Width = $this->w - $this->lMargin-$this->rMargin;
$this->Ln(2);
$x = $this->GetX();
$y = $this->GetY();
$this->SetLineWidth(0.4);
$this->Line($x, $y, $x+$Width, $y);
$this->SetLineWidth(0.2);
$this->Ln(2);
}
}
function CloseTag($tag){
//Closing tag
if($tag=='STRONG'){
$this->SetStyle('B', false);
}
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag, false);
if($tag=='A')
$this->HREF='';
if($tag=='P')
$this->ALIGN='';
}
function SetStyle($tag, $enable){
//Modify style and select corresponding font
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B', 'I', 'U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('', $style);
}
function PutLink($URL, $txt){
//Put a hyperlink
$this->SetTextColor(0, 0, 255);
$this->SetStyle('U', true);
$this->Write(5, $txt, $URL);
$this->SetStyle('U', false);
$this->SetTextColor(0);
}
}
?>
/**
* Synchronisiert Daten zwischen der ERP Mercator und dem XTCommerce
*
* @author Stefan Ruestmann
* @version 1.5
*
* Anpassungen SQL:
*
* Die categorie_id und parent_id muss von int auf bigint in den Tabellen (categories, categories_description und products_to_categories) angepasst werden
*
* Version 1.4
* - Bilder werden auf veraenderung geprueft und nicht grundsaetzlich neu erzeugt
* - Nach einem Import werden restliche Bilder geloescht
* - loeschen.xml - ALLESLOESCHEN wird beruecksichtigt
*
* Version 1.5
* - komplette Startmethode wurde angepasst (Parameter: START, TODO, INFO)
*
* Version 1.5.1
* - Preismenge wird im XTC angelegt und auch befuellt. Beim Datenexport wird die Preismenge mit exportiert.
*
* Version 1.5.2
* - Produktfilter im __construct angepasst, so dass nicht immer alles komplett aktualisiert wird
* - cleanDatabase hinzugef�gt
**/
/*
error_reporting(E_ALL & ~E_NOTICE);
ini_set("display_errors", 1);
*/
class SyncMercator{
var $Programmname="Synchronisationsmodul Mercator - XTCommerce v 1.5.3";
var $TODID=0;
var $Counts=array();
var $Debug=false;
var $db;
var $fs;
var $Meldungen=array();
var $PathImport="";
var $PathExport="";
var $Status_PRODUCTS_TO_CATEGORIES=false;
var $TimeFileOrder="";
var $TimeFileCron="";
var $ArtikelKinder=array();
var $DeleteFiles=false;
var $Config;
var $SendStatusEmail=false;
var $StdKundengruppe=0;
var $ModulMindesbestellmenge=false;
var $CSSFileLink;
function __construct($leise=false, $cron=false){$this->SyncMercator($leise,$cron);}
function __destruct(){
if ($this->Debug){$this->setStatus(date("r",time()));}
}
function SyncMercator($leise=false, $cron=false){
if (isset($_GET["DEBUG"])){$this->Debug=true;}
if ($this->Debug){$this->setStatus(date("r",time()));}
// Datenbankverbindung
$temp = new Connection();
$this->db = $temp->get();
//$this->db->debug=true;
$this->createTables();
// erstmal einiges definieren
$this->fs = new Filesystem();
$this->Config = new Config();
// Optimierungen durchfuerhen, wenn noch nicht geschehen
$TempSyncOpt=$this->Config->get("xstar_sync_mercator_opt");
if ($TempSyncOpt<1){
$sql = "CREATE INDEX syncwawi_idx USING BTREE ON syncwawi (sort , erledigt, in_bearbeitung);";
$this->db->Execute($sql);
$sql = "CREATE INDEX products_idx USING BTREE ON products (products_model);";
$this->db->Execute($sql);
$sql = "CREATE INDEX products_vpe_idx USING BTREE ON products_vpe (products_vpe_id, products_vpe_name);";
$this->db->Execute($sql);
$sql = "CREATE INDEX products_options_values_idx USING BTREE ON products_options_values (products_options_values_name);";
$this->db->Execute($sql);
$sql = "CREATE INDEX products_options_idx USING BTREE ON products_options (products_options_name);";
$this->db->Execute($sql);
$sql = "CREATE INDEX products_options_values_to_products_options_idx USING BTREE ON products_options_values_to_products_options (products_options_id, products_options_values_id);";
$this->db->Execute($sql);
$sql = "CREATE INDEX temp_xtc_warnhinweise_idx USING BTREE ON temp_xtc_warnhinweise (products_id);";
$this->db->Execute($sql);
for ($i=0; $i<=15; $i++){
$sql = "CREATE INDEX personal_offers_by_customers_status_" . $i . "_idx USING BTREE ON personal_offers_by_customers_status_" . $i . " ( products_id , quantity);";
$this->db->Execute($sql);
}
$sql = "CREATE INDEX products_images_idx USING BTREE ON products_images (products_id);";
$this->db->Execute($sql);
$this->Config->set("xstar_sync_mercator_opt",1);
}
// Stylen
$this->CSSFileLink=DIR_WS_DOCUMENT_ROOT_XSTAR."/style/SyncMercator.css";
// Verzeichnisse definieren
if ($_SERVER["HTTP_HOST"] == "mobabau.de" ||
$_SERVER["HTTP_HOST"] == "www.mobabau.de" ||
$_SERVER["HTTP_HOST"] == "www.mobabau.com" ||
$_SERVER["HTTP_HOST"] == "mobabau.com" ||
$_SERVER["HTTP_HOST"] == "www.hmw-teich.de" ||
$_SERVER["HTTP_HOST"] == "hmw-teich.de"){
$this->PathImport=DIR_FS_DOCUMENT_ROOT."/mercator/import/";
$this->PathExport=DIR_FS_DOCUMENT_ROOT."/mercator/export/";
$this->TimeFileOrder=DIR_FS_DOCUMENT_ROOT_XSTAR."/includes/modules/sync_mercator_ordertime.txt";
$this->TimeFileCron=DIR_FS_DOCUMENT_ROOT."/mercator/import/status.txt";
}else{
$this->PathImport=DIR_FS_DOCUMENT_ROOT."/import/mercator/";
$this->PathExport=DIR_FS_DOCUMENT_ROOT."/export/mercator/";
$this->TimeFileOrder=DIR_FS_DOCUMENT_ROOT_XSTAR."/includes/modules/sync_mercator_ordertime.txt";
$this->TimeFileCron=DIR_FS_DOCUMENT_ROOT."/import/mercator/status.txt";
}
// Sind alle Verzeichnisse vorhanden
if (!is_dir($this->PathImport)){mkdir($this->PathImport,0777);}
if (!is_dir($this->PathImport."/daten/")){mkdir($this->PathImport."/daten/",0777);}
if (!is_dir($this->PathImport."/bilder/")){mkdir($this->PathImport."/bilder/",0777);}
if (!is_dir($this->PathExport)){mkdir($this->PathExport,0777);}
if (!is_dir($this->PathExport."/daten/")){mkdir($this->PathExport."/daten/",0777);}
if (!is_dir($this->PathExport."/logs/")){mkdir($this->PathExport."/logs/",0777);}
// HTML Startkopf
$HTMLStartkopf=$this->getCSS();
$HTMLStartkopf.="
";
// Los geht es - Neustart?
if (isset($_GET["START"])){
$this->TODOID=time();
print $HTMLStartkopf;
$this->setStatus("Sync wurde gestartet");
// Datenbank bereinigen
$sql = "DELETE FROM syncwawi";
$this->db->Execute($sql);
$this->addTODO("ID",$this->TODOID,0);
// Was ist zu tun - Dateien lesen
$PathInhalt=$this->fs->readDir($this->PathImport."/daten/");
if (count($PathInhalt) > 0){
// Neu sortieren
$CountArtikelDatei=0;
$CountLoeschDatei=0;
$CountHerstellerDatei=0;
$CountKundenDatei=0;
$CountKategorienDatei=0;
$TempPathInhalt=array();
foreach ($PathInhalt as $id => $value){
$TempZahl=explode("_",$value["name"]);
$TempPathInhalt[$TempZahl[0].str_pad($TempZahl[1], 10 ,'0', STR_PAD_LEFT)]=$value;
}
ksort ($TempPathInhalt);
$PathInhalt=$TempPathInhalt;
// existiert eine komplett Loeschdatei und Dateien durchzählen
foreach ($PathInhalt as $id => $value){
if (substr($value["name"],0,8)=="loeschen"){
$CountLoeschDatei++;
$filename=$this->PathImport."daten/" . $value["name"];
if (file_exists($filename)){
$temp=$this->readXML($filename);
if ($temp->ALLE_LOESCHEN == 1){
$this->setStatus("!!! ALLE ARTIKEL WERDEN GELÖSCHT","Fehler");
$this->addTODO("DELETEALL",1,-1);
}
}
}
// Hersteller
if (substr($value["name"],0,14) == "temphersteller" || substr($value["name"],0,10) == "hersteller"){
$CountHerstellerDatei++;
$this->addTODO("FILE",$value["name"],30);
}
// Lieferanten
if (preg_match("/lieferanten/",$value["name"])){
$CountHerstellerDatei++;
$this->addTODO("FILE",$value["name"],30);
}
// Katgeorien
if (preg_match("/kategorien/",$value["name"])){
$this->addTODO("FILE",$value["name"],40);
$CountKategorienDatei++;
}
// Artikel
if (preg_match("/artikel/",$value["name"])){
$this->addTODO("FILE",$value["name"],10);
$CountArtikelDatei++;
}
// Auftragstati
if (preg_match("/auftraege/",$value["name"])){
$this->addTODO("FILE",$value["name"],10);
$CountAuftragstatuDatei++;
}
// Kunden
if (preg_match("/kunden/",$value["name"])){
$this->addTODO("FILE",$value["name"],20);
$CountKundenDatei++;
}
// Loeschen
if (preg_match("/loeschen/",$value["name"])){
$this->addTODO("FILE",$value["name"],-1);
$CountLoeschDatei++;
}
}
$this->setStatus("Anzahl Herstellerdateien: " . $CountHerstellerDatei);
$this->setStatus("Anzahl Artikeldateien: " . $CountArtikelDatei);
$this->setStatus("Anzahl Kundendateien: " . $CountKundenDatei);
$this->setStatus("Anzahl Kategoriendateien: " . $CountKategorienDatei);
$this->setStatus("Anzahl Loeschdateien: " . $CountKategorienDatei);
$this->setStatus("Anzahl Auftragstati: " . $CountAuftragstatuDatei);
}
// Weitere TODOS erstellen
if ($this->Config->get("xstar_syncmercator_bestellexport_separat") != 1){$this->addTODO("ORDER_EXPORT", "1",1);}
$this->addTODO("ADDON", "addVarianten",900);
$this->addTODO("ADDON", "sortVarianten",901);
$this->addTODO("ADDON", "checkKategorien",902);
$this->addTODO("ADDON", "sortKategorien",903);
$this->addTODO("ADDON", "checkKundengruppen",904);
$this->addTODO("ADDON", "deleteBildVerzeichnisse",905);
$this->addTODO("ADDON", "checkImages",906);
$this->addTODO("ADDON", "checkImagesDuplikate",907);
$this->addTODO("ADDON", "clearDatabase",908);
// Statusmeldung, dass CRON uebernimmt
print "
";
print "
Daten wurden gesammelt.
";
print "
Cron übernimmt nun die Arbeit.
";
print "
Sie werden per Email benachrichtigt.
";
print "
";
exit();
}
// Infos zeigen
if (isset($_GET["INFO"])){
print $HTMLStartkopf;
$sql = "SELECT *
FROM syncwawi
WHERE erledigt = 0
AND art <> 'ID'
ORDER BY sort, wert";
$rs = $this->db->Execute($sql);
if (!$rs->EOF && $rs){
print "
";
print "
Folgende Aufgaben müssen noch durchgeführt werden.
";
print "
";
while (!$rs->EOF){
if ($rs->fields("in_bearbeitung") == 1){
print "
nachfolgende Anzahl von Dateien wurden verarbeitet:
";
$body.="";
foreach ($Dateien as $id => $value){
$sql = "SELECT COUNT(*) AS anzahl
FROM syncwawi
WHERE wert LIKE '%" . strtolower($value) . "%'
AND art = 'FILE'
AND erledigt = 1";
$rs = $this->db->Execute($sql);
if (!$rs->EOF && $rs){
if ($rs->fields("anzahl")>0){
$body.="