Jak zprovoznit SuperQC 1.4.2 a SuperCart 2.0.7 na novějším PHP

(návod pro programátora)

poslední aktualizace: 7.9.2017 pro PHP 7.0

Podrobný postup, jak upravit zdrojové kódy aplikace SuperQC verze 1.4.2 a SuperCart 2.0.7 tak, aby fungovala i na novějších verzích PHP.
Návod je určen výhradně pro programátora a může být použit i jako jeho zadání práce. Nadále ovšem platí, že verze SuperQC 1.4.2 je zastaralá, obsahuje bezpečnostní chyby a nedoporučuje se pro provoz důležitých aplikací.


V případě, že si chcete tuto službu objednat, pište na adresu info@itprostor.cz
Podmínkou je poskytnutí FTP přístupu ke zdrojovým kódům vašeho eshopu.
Cena 1000 Kč (platba předem, cena je konečná - neplátce DPH)

Při objednání služby obdržíte krom níže uvedených úprav navíc i několik oprav vážných bezpečnostních chyb, které jsou v systému již od jeho vzniku.
Z logických důvodů tyto chyby a jejich opravu zde zveřejnit nemohu.


SuperQC 1.4.2 SuperCart 2.0.7 Poznámky

vytvořit soubor "mysqli.php" ve složce "sqc/include/odb/driver" pro SuperQC 1.x (nebo "core/include/odb/driver" pro SuperCart 2.x)
soubor vytvořte zkopírováním souboru mysql.php, který tam najdete již vytvořený
obsah nového souboru mysqli.php upravte tak, že:
název třídy "Odb_Driver_Mysql" přepište na "Odb_Driver_Mysqli"
všechny mysql funkce nahraďte odpovídajícími funkcemi mysqli
pozor - mysqli funkce mají jiné pořadí parametrů (více viz. manuál PHP)

v "sqc/include/core.php" řádek 440 pro SuperQC 1.x nebo 453 pro SuperCart 2.x - přepsat 'mysql' na 'mysqli'
původně: $db_type = 'mysql';
nově: $db_type = 'mysqli';

nutné pro PHP 5.6 a výše

v "sqc/include/def.php" na řádku 115 nastavit 'odb':
původně: Core::$def['db_library'] = version_compare(PHP_VERSION, '5.3', '<') ? 'odb' : 'notorm';
nově: Core::$def['db_library'] = 'odb';

v SuperCart 2.0.7
již provedeno
nutné pro PHP 5.6 a výše
v "sqc/include/core.php" zakomentovat nebo odmazat řádek 395
původně: require_once(APPROOT.'vendor/notorm/NotORM.php');
odmazat nebo nově: //require_once(APPROOT.'vendor/notorm/NotORM.php');
v SuperCart 2.0.7
již provedeno
nutné pro PHP 5.6 a výše
aktualizace knihovny PHPMailer (https://github.com/Synchro/PHPMailer)
(tato úprava je nutná pro zprovození odesílání emailů v PHP 5.6)
  • stáhněte zdrojové soubory knihovy PHPMailer na výše uvedeném odkazu - tlačítko "Download ZIP" vpravo
  • archív ZIP rozbalte a do složky "sqc/vendor/phpmailer" zkopírujte celý jeho obsah, jde hlavně o tyto soubory:
    - class.phpmailer.php
    - class.pop3.php
    - class.smtp.php
    - PHPMailerAutoload.php
  • následně upravte soubor "sqc/include/helpers.php" na řádku 284 u SuperQC 1.x (nebo "core/include/helpers.php" na řádku 307 pro SuperCart 2.x):
    původně: require_once APPROOT.'vendor/phpmailer/class.phpmailer.php';
    nově: require_once APPROOT.'vendor/phpmailer/PHPMailerAutoload.php';
nutné pro PHP 5.6 a výše
úprava souboru "sqc/admin/controller/dataimport.php" na řádku 976 pro SuperQC 1.x (nebo "core/admin/controller/dataimport.php" na řádku 975 pro SuperCart 2.x)
původně: public function _updateProduct($product, $data, $orig_data)
nově: public function _updateProduct(&$product, &$data, $orig_data)

tato úprava není bezpodmínečně nutná
pouze pokud používáte importy
pro PHP 5.6 a výše

úprava souboru "sqc/include/zip.php" na řádku 114 pro SuperQC 1.x (nebo "core/include/zip.php" na řádku 113 pro SuperCart 2.x)
původně: if($this->driver->open($this->archive, ZipArchive::OVERWRITE)){
nově: if($this->driver->open($this->archive, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)){
tato úprava už není bezpodmínečně nutná
pouze pokud využíváte zálohy aplikace v administraci
pro PHP 5.6 a výše
úprava souboru "sqc/include/odb/single.php" na řádku 12 pro SuperQC 1.x (nebo "core/include/odb/single.php" na řádku 11 pro SuperCart 2.x)
původně: public function update($data, $toString = false)
nově: public function update($data, $toString = false, $single_row = null)
pro PHP 5.6 a výše

SuperQC 1.x tento instalační soubor neobsahuje, takže úpravu není třeba implementovat v této verzi

úprava souboru "install.php" na řádku 402 pro SuperCart 2.x buď pouze zakomentovat příkaz "continue":
původně: continue;
nově: //continue;

nebo úplně odmazat/odstranit funkci "copyFile" počínaje řádkem 388 až 423

tato funkce řeší instalaci ze vzdáleného úložiště, které stejně není v provozu, takže odstranění této funkce ničemu nevadí

zprovoznění instalace
pouze pro SuperCart 2.x
pro PHP 7
aktualizace knihovny FPDF (http://www.fpdf.org) - potřebná pro generování PDF s fakturami
knihovnu stáhněte z výše uvedené webové stránky a soubory zkopírujte do složky "sqc/vendor/fpdf" pro SuperQC 1.x nebo "core/vendor/fpdf" pro SuperCart 2.x
pro PHP 7.0