Wo wir gerade dabei sind:Was soll eigentlich das hier in
giftvoucherpreview.php und in
giftvoucherpreview_big.php sein ?
Das muß imho so aussehen:
Ansonsten gibt es Probleme bei mehrzeiligen Texten in "Persönliche Mitteilung".
Mir erscheint außerdem der User-Input welcher in die DB geschrieben wird zu wenig, eigtl. gar nicht, geschützt, weshalb man in
/giftvoucher.php die Funktion
xtc_db_perform() benutzen sollte.
Desweiteren weise ich nochmals darauf hin, daß der
header-Befehl unmittelbar vor die Augabe gehört und
nicht an den Anfang der PHP-Dateien über
include('includes/application_top.php');
also so:
In der /checkout_process.php soll u.a. dieser Code eingebaut werden:
if (file_exists($gv_result['coupon_code'].'.png')) { if(copy($gv_result['coupon_code'].'.png', DIR_FS_DOCUMENT_ROOT
.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png')) { unlink($gv_result['coupon_code'].'.png'); }} if (file_exists($gv_result['coupon_code'].'_big.png')) { if(copy($gv_result['coupon_code'].'_big.png', DIR_FS_DOCUMENT_ROOT
.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png')) { unlink($gv_result['coupon_code'].'_big.png'); }} Wer klärt mich auf wofür das nötig ist ?
Bereits in den Dateien
giftvoucherpreview.php und
giftvoucherpreview_big.php werden die Bilder in den Ordner
/giftvoucher/gifts/ ausgegeben.
Wozu also der oben aufgeführte Code ?; und wieso sollten Files namens
$gv_result['coupon_code'].'(_big).png' ohne Ordner-Bezug existieren ?
Außerdem fiel mir noch auf, daß die zur Coupon-Code-Generierung verwendete Funktion
create_coupon_code() nicht astrein ist, was jedoch mit dem vorliegenden Modul nur bedingt etwas zu tun hat da die Funktion auch für das shop-eigene Coupon-System verwendet wird.
Mir ist nicht klar was der String-Parameter "salt" bewirken soll und ob das
md5() auf
uniqid() förderlich ist ist fraglich:
function create_coupon_code
($salt="secret", $length = SECURITY_CODE_LENGTH
) { $ccid = md5(uniqid("","salt")); $ccid .= md5(uniqid("","salt")); $ccid .= md5(uniqid("","salt")); $ccid .= md5(uniqid("","salt")); srand((double
)microtime()*1000000); // seed the random number generator $random_start = @rand(0, (128-$length)); $good_result = 0; while ($good_result == 0) { $id1=substr($ccid, $random_start,$length); $query = xtc_db_query
("select coupon_code from " . TABLE_COUPONS
. " where coupon_code = '" . $id1 . "'"); if (xtc_db_num_rows
($query) == 0) $good_result = 1; } return $id1; } Ich würde sagen:
- ist der zweite Parameter von uniqid() ein Boolean und kein String
- sollte man mt_rand() und mt_srand() benutzen da es ein wenig schneller ist
- zitiere ich mal das PHP-Manual:
"Hinweis: Seit PHP 4.2.0 besteht keine Notwendigkeit mehr, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht nun automatisch."
Und nun für swolfram und andere die eine "Muster" oder "Vorschau"-Beschriftung auf den Gutschein-Vorschau-Bildern wünschen:(Die von mir oben aufgeführten Änderungen sind bereits eingeflossen. Die modified-eigene Funktion
create_coupon_code() wurde allerdigs belassen wie sie ist.)
Man lege einen weiteren Ordner namens "
temp_gifts" im Root-Ordner
/giftvoucher/ an und ändere folgendes in den diversen Dateien:
1.In
/giftvoucherpreview.php das oben in der Datei suchen:
header("Content-type: image/png"); und so auskommentieren
//header("Content-type: image/png");
In gleicher Datei
/giftvoucherpreview.php unten das suchen
und hiermit ersetzen
//store clean voucher in folder /giftvoucher/gifts/, noRiddleif(isset($gv_result['coupon_code'])) { imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');}//generate sample voucher, noRiddle$image_sample = $image;$sample = 'Vorschau';$bigfontsize = 50;$bigtextfarbe_firByte = hexdec(substr('CC0000',0,2));$bigtextfarbe_secByte = hexdec(substr('CC0000',2,2));$bigtextfarbe_thiByte = hexdec(substr('CC0000',4,2));$bigtranbspindx = 110;$bigfont_color_wert_raw = imagecolorallocatealpha($image_sample, $bigtextfarbe_firByte , $bigtextfarbe_secByte, $bigtextfarbe_thiByte, $bigtranbspindx);$bigfont_color_wert = imagecolortransparent($image_sample, $bigfont_color_wert_raw);imagettftext($image_sample, $bigfontsize, -45, 15, 25, $bigfont_color_wert, $font_path.$font_file_wert, $sample);//header must be here, noRiddleheader("Content-type: image/png");//display sample, noRiddleimagePNG($image_sample);//store sample voucher in folder /giftvoucher/temp_gifts/, noRiddöeif(isset($gv_result['coupon_code'])) { imagePNG($image_sample, 'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'.png');}ImageDestroy ($image);ImageDestroy ($image_sample); 2.In
/giftvoucherpreview_big.php das oben in der Datei suchen:
header("Content-type: image/png"); und so auskommentieren
//header("Content-type: image/png");
In gleicher Datei
/giftvoucherpreview_big.php unten das suchen
und hiermit ersetzen
//store clean voucher in folder /giftvoucher/gifts/, noRiddleif(isset($gv_result['coupon_code'])) { imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png');}//sample, noRiddle$image_sample = $image;$sample = 'Vorschau';$bigfontsize = 120;$bigtextfarbe_firByte = hexdec(substr('CC0000',0,2));$bigtextfarbe_secByte = hexdec(substr('CC0000',2,2));$bigtextfarbe_thiByte = hexdec(substr('CC0000',4,2));$bigtranbspindx = 110;$bigfont_color_wert_raw = imagecolorallocatealpha($image_sample, $bigtextfarbe_firByte , $bigtextfarbe_secByte, $bigtextfarbe_thiByte, $bigtranbspindx);$bigfont_color_wert = imagecolortransparent($image_sample, $bigfont_color_wert_raw);imagettftext($image_sample, $bigfontsize, -45, 35, 65, $bigfont_color_wert, $font_path.$font_file_wert, $sample);//header must be here, noRiddleheader("Content-type: image/png");//display sample, noRiddleimagePNG($image_sample);//store sample voucher in folder /giftvoucher/temp_gifts/, noRiddöeif(isset($gv_result['coupon_code'])) { imagePNG($image_sample, 'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'_big.png');}ImageDestroy ($image);ImageDestroy ($image_sample); Wer einen mehrsprachigen Shop fährt sollte in beiden Dateien 'Vorschau' mit einer Sprachkonstanten ersetzen, z.B.
VOUCHER_PREVIEW_TAGund die Konstante in
/lang/SPRACHE/SPRACHE.php jeweils definieren.
3.In /checkout_success das suchen
$smarty->assign('LINK_DOWNLOAD', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png');
$smarty->assign('LINK_PREVIEW', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');
und hiermit ersetzen
//BOC changed path to temp_gifts for preview voucher, noRiddle
$smarty->assign('LINK_DOWNLOAD', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'_big.png');
$smarty->assign('LINK_PREVIEW', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'.png');
//EOC changed path to temp_gifts for preview voucher, noRiddle
Damit wird auch auf der checkout_success-Seite der Muster-/Vorschau-Gutschein angezeigt.
Möchte man den Ordner in welchem die Vorschau-Gutscheine liegen (
/giftvoucher/temp_gifts/) nicht immer weiter füllen,
kann man noch folgendes machen in
/admin/orders.php(!! Achtung, nichts vertauschen da verschiedene Code-Teile ähnlich aussehen !!)Suche das
if(file_exists(DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png')) { xtc_php_mail
(EMAIL_BILLING_ADDRESS
, EMAIL_BILLING_NAME
, $coupon_value['emailed_to'], '', '', EMAIL_BILLING_REPLY_ADDRESS
, EMAIL_BILLING_REPLY_ADDRESS_NAME
, DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png', '', $gv_email_subject, $html_mail, $txt_mail ); und ersetze mit
if(file_exists(DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png')) { xtc_php_mail
(EMAIL_BILLING_ADDRESS
, EMAIL_BILLING_NAME
, $coupon_value['emailed_to'], '', '', EMAIL_BILLING_REPLY_ADDRESS
, EMAIL_BILLING_REPLY_ADDRESS_NAME
, DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png', '', $gv_email_subject, $html_mail, $txt_mail ); //BOC delete temporary voucher, noRiddle if(file_exists(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'_big.png')) { unlink(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'_big.png'); } if(file_exists(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png')) { unlink(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png'); } //EOC delete temporary voucher, noRiddle In gleicher Datei
/admin/orders.php suche das
} elseif (file_exists(DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png')) { xtc_php_mail
(EMAIL_BILLING_ADDRESS
, EMAIL_BILLING_NAME
, $coupon_value['emailed_to'], '', '', EMAIL_BILLING_REPLY_ADDRESS
, EMAIL_BILLING_REPLY_ADDRESS_NAME
, DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png', '', $gv_email_subject, $html_mail, $txt_mail ); und ersetze mit
} elseif (file_exists(DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png')) { xtc_php_mail
(EMAIL_BILLING_ADDRESS
, EMAIL_BILLING_NAME
, $coupon_value['emailed_to'], '', '', EMAIL_BILLING_REPLY_ADDRESS
, EMAIL_BILLING_REPLY_ADDRESS_NAME
, DIR_FS_CATALOG
.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png', '', $gv_email_subject, $html_mail, $txt_mail ); //BOC delete temporary voucher, noRiddle if(file_exists(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png')) { unlink(DIR_FS_CATALOG
.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png'); } //EOC delete temporary voucher, noRiddle Damit werden die Vorschau-Gutscheine aus dem neuen Ordner
/giftvoucher/temp_gifts/ gelöscht (*EDIT*), nachdem der jeweilige Gutschein freigegeben und versendet wurde (*END_EDIT*).
Bis auf die letztgenanne Änderung in der
/admin/orders.php ist alles getestet.
Anbei noch ein paar Screenshots.
[ Für Gäste sind keine Dateianhänge sichtbar ]
[ Für Gäste sind keine Dateianhänge sichtbar ]
[ Für Gäste sind keine Dateianhänge sichtbar ]
Die bei entsprechender Status-Änderung in der Bestellung versendeten Gutscheine sind dann ohne das "Vorschau"-Wasserzeichen.
Screenshot 2 und 3 sind der in einem vorigen Post erwähnte Aufruf des vergrößerten Vorschau-Bildes des Gutscheines in der "Thickbox animiert".
Viel Erfolg,
Gruß,
noRiddle
[
EDIT Tomcraft 09.12.2014: Anleitung für Wasserzeichen in
Beitrag 1 verlinkt.]