Seite 1 von 1
Versionsabfrage
Verfasst: Sa 27. Jul 2013, 09:18
von Silvia.Lauss
Hallo,
wir versuchen momentan ein script zu schreiben, um CAO mit Magento zu verbinden.
Leider scheitert es an der Versionsabfrage im CAO.
Kann man das abschalten?
Oder wie kann man die Scriptversion so abfragen, dass sie wie gefordert, an die URL angehängt wird?
Code sieht so aus:
Code: Alles auswählen
$version_nr = '1.56';
$version_datum = '2009.08.26';
if ($_GET['action'] == 'read_version') {
$schema = '<?xml version="1.0" encoding="' . CHARSET . '"?>' . "\n" .
'<STATUS>' . "\n" .
'<STATUS_DATA>' . "\n" .
'<ACTION>' . $_GET['action'] . '</ACTION>' . "\n" .
'<CODE>' . '111' . '</CODE>' . "\n" .
'<SCRIPT_VER>' . $version_nr . '</SCRIPT_VER>' . "\n" .
'<SCRIPT_DATE>' . $version_datum . '</SCRIPT_DATE>' . "\n" .
'</STATUS_DATA>' . "\n" .
'</STATUS>' . "\n\n";
echo $schema;
}
Oder habe ich einen Denkfehler?
Re: Versionsabfrage
Verfasst: Sa 27. Jul 2013, 10:49
von redone
Moin,
ich vermute einen Denkfehler.
In der aufzurufenden Datei, bei XTC ist es z.B. die cao_xtc.php, fragt man per switch den Request für
action ab und reagiert auf den Wert
version . Beispiel:
Code: Alles auswählen
switch ($_GET['action']) {
case 'version': // Ausgabe Scriptversion
SendXMLHeader ();
SendScriptVersion ();
exit;
...
Du fragst nach
'read_version', welches es nicht gibt. Es muss nach
'version' gefragt werden. Bei jeglicher Komunikation mit dem Script wird immer erst
action=version gesendet und die Rückgabe der Parameter ausgewertet. Abstellen kann man das nicht, da damit die bestimmte Prüfungen in CAO verbunden sind.
Im übrigen würde ich dringend raten, nicht die alten Sourcen anzupassen, sondern das ganze in Klassen zu packen und wenn möglich Teile des Shop einzubauen und auf die entsprechenden Klassen zurück greifen, z.B. für die Datenbankabfragen. Das macht das Ganze wesentlich einfacher. Beispielauszug aus COI:
Code: Alles auswählen
/**
* XML-Ausgabestring
* @access protected
* @var string $_sXMLout
*/
protected $_sXMLout;
/**
* XML-Header für Ausgabe vorbereiten
* @param string $sXMLHeader - Erstes TAG für die Ausgabe
*/
public function XMLHeader($sXMLheader)
{
if($this->_iUtfMode) $sXMLEncode="<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n".$sXMLheader."\n";
else $sXMLEncode="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"."\n".$sXMLheader."\n";
header("Last-Modified: ". gmdate ("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: text/xml");
echo $sXMLEncode;
}
/**
* XML-Tags ausgeben
* @access protected
* @param string $sXMLstring - XLM-Tags
*/
protected function _doXMLout($sXMLstring)
{
echo $sXMLstring;
}
/**
* Scriptversion ausgeben
* wird bei jeder Aktion von CAO abgefragt
* param array $action
*/
public function GetScript($action)
{
if($this->xmlversion)
{
$this->XMLHeader('<STATUS>');
$this->_sXMLout=("<STATUS_DATA>\n".
"<ACTION>".$action."</ACTION>\n".
"<CODE>111</CODE>\n".
"<SCRIPT_VER>".Config::$sCOVERSION."</SCRIPT_VER>\n".
"<SCRIPT_DATE>".Config::$sSCRIPTDATE."</SCRIPT_DATE>\n".
"</STATUS_DATA></STATUS>\n\n");
$this->_doXMLout($this->_sXMLout);
}
}
Re: Versionsabfrage
Verfasst: Sa 27. Jul 2013, 11:56
von Silvia.Lauss
Hallo Thoren,
danke für den code, leider ist ein Fehler drinnen:
protected $_sXMLout; erzeugt ==>syntax error: unexpected T_Puplic
Re: Versionsabfrage
Verfasst: Sa 27. Jul 2013, 13:20
von redone
Moin,
das ist nur ein Teil des Ganzen und kann nicht 1 zu 1 übernommen werden. Ist nur als Beispiel gedacht. Da mußt du dein Hirn schon selbst anstrengen und deine Klassen aufbauen

Re: Versionsabfrage
Verfasst: Sa 27. Jul 2013, 13:31
von Silvia.Lauss
redone hat geschrieben:Moin,
das ist nur ein Teil des Ganzen und kann nicht 1 zu 1 übernommen werden. Ist nur als Beispiel gedacht. Da mußt du dein Hirn schon selbst anstrengen und deine Klassen aufbauen

wär ja auch zu einfach gewesen...
Leider übersteigt das meine php Kenntisse.