/* ---------- C) GENERATOR: lager PNG med footer ---------- */ add_action('wp_ajax_tvh_gavekort', 'tvh_ajax_gavekort'); add_action('wp_ajax_nopriv_tvh_gavekort', 'tvh_ajax_gavekort'); function tvh_ajax_gavekort(){ global $TVH_BG,$TVH_FONT_ITAL,$TVH_FONT_REG; // ---- Inndata ---- $mottaker = sanitize_text_field($_GET['mottaker'] ?? ''); $produkt = sanitize_text_field($_GET['produkt'] ?? 'Årsabonnement TVH'); $hilsen = sanitize_textarea_field($_GET['hilsen'] ?? ''); $giver = sanitize_text_field($_GET['giver'] ?? ''); $y_rel = isset($_GET['y']) ? floatval($_GET['y']) : 0.52; $scale = isset($_GET['scale']) ? floatval($_GET['scale']) : 1.0; if ($mottaker === '' || $produkt === '') { wp_die('Mangler mottaker/produkt.'); } if (!function_exists('imagecreatetruecolor')) { wp_die('GD library mangler.'); } if (!file_exists($TVH_FONT_ITAL) || !file_exists($TVH_FONT_REG)) { wp_die('Font mangler i /wp-content/uploads/tvh-gavekort/.'); } // ---- Bakgrunn ---- $bg = @file_get_contents($TVH_BG); if (!$bg) { wp_die('Kan ikke hente bakgrunn.'); } $bg_img = @imagecreatefromstring($bg); if (!$bg_img) { wp_die('Ugyldig bakgrunn.'); } $W=imagesx($bg_img); $H=imagesy($bg_img); $im=imagecreatetruecolor($W,$H); imagesavealpha($im,true); $trans=imagecolorallocatealpha($im,0,0,0,127); imagefill($im,0,0,$trans); imagecopy($im,$bg_img,0,0,0,0,$W,$H); imagedestroy($bg_img); // ---- Farger/font ---- $dark=imagecolorallocate($im,34,34,34); // #222 $lightS=imagecolorallocatealpha($im,255,255,255,100); // diskret hvit skygge $FONT_B=$TVH_FONT_ITAL; // “bold” oppleves som italic-varianten $FONT_R=$TVH_FONT_REG; // regular // ---- Hjelpere ---- $draw_line=function($text,$y,$size,$bold=true)use($im,$W,$dark,$lightS,$FONT_B,$FONT_R){ $font=$bold?$FONT_B:$FONT_R; $bb=imagettfbbox($size,0,$font,$text); $tw=$bb[2]-$bb[0]; $x=(int)(($W-$tw)/2); imagettftext($im,$size,0,$x,$y+1,$lightS,$font,$text); imagettftext($im,$size,0,$x,$y, $dark, $font,$text); }; $draw_multi=function($text,$cy,$size,$lh,$bold=false)use($im,$W,$dark,$lightS,$FONT_B,$FONT_R){ $font=$bold?$FONT_B:$FONT_R; $maxW=(int)($W*0.70); $words=preg_split('/\s+/',trim((string)$text)); $lines=['']; $i=0; foreach($words as $w){ $t=trim(($lines[$i]??'').' '.$w); $bb=imagettfbbox($size,0,$font,$t); $tw=$bb[2]-$bb[0]; if($tw>$maxW){ $i++; $lines[$i]=$w; } else { $lines[$i]=$t; } } $lines=array_values(array_filter(array_map('trim',$lines))); if(!$lines) return; $n=count($lines); $tot=$n*$lh; $startY=(int)($cy-$tot/2+$lh); foreach($lines as $k=>$line){ $bb=imagettfbbox($size,0,$font,$line); $tw=$bb[2]-$bb[0]; $x=(int)(($W-$tw)/2); $y=$startY+$k*$lh; imagettftext($im,$size,0,$x,$y+1,$lightS,$font,$line); imagettftext($im,$size,0,$x,$y, $dark, $font,$line); } }; // Footer med smalere bredde og liten skrift $draw_footer=function($text,$bottom_margin,$size,$lineheight)use($im,$W,$H,$dark,$lightS,$FONT_R){ $font=$FONT_R; $maxW=(int)($W*0.86); // litt bredere enn vanlig // Del i to linjer manuelt: før og etter linebreak hvis du vil $parts = preg_split("/\r\n|\r|\n/", trim($text)); if(!$parts) return; $lines=[]; foreach($parts as $p){ $words=preg_split('/\s+/',trim($p)); $line=''; foreach($words as $w){ $test=trim($line.' '.$w); $bb=imagettfbbox($size,0,$font,$test); $tw=$bb[2]-$bb[0]; if($tw>$maxW){ $lines[]=$line; $line=$w; } else { $line=$test; } } if($line!=='') $lines[]=$line; } $n=count($lines); $total=$n*$lineheight; $startY=(int)($H - $bottom_margin - $total + $lineheight); foreach($lines as $i=>$ln){ $bb=imagettfbbox($size,0,$font,$ln); $tw=$bb[2]-$bb[0]; $x=(int)(($W-$tw)/2); $y=$startY + $i*$lineheight; imagettftext($im,$size,0,$x,$y+1,$lightS,$font,$ln); imagettftext($im,$size,0,$x,$y,$dark,$font,$ln); } }; // ---- Posisjon / skalering ---- $centerY=(int)($H*(is_numeric($y_rel)?max(0,min(1,$y_rel)):0.52)); $step =(int)($H*0.05); $scale =(is_numeric($scale)&&$scale>0)?max(0.5,min(1.5,$scale)):1.0; // ---- Tekst (som før) ---- $draw_line('TIL : '.$mottaker, $centerY-$step, (int)(42*$scale), true); $draw_line('Årsabonnement TVH', $centerY, (int)(48*$scale), true); $draw_line('Gyldighet: 12 måneder fra aktivering', $centerY+$step, (int)(30*$scale), false); if($hilsen!=='') $draw_multi('“'.$hilsen.'”', $centerY+(int)($step*2.2), (int)(36*$scale),(int)(36*1.17*$scale), false); if($giver!=='') $draw_line('– '.$giver, $centerY+(int)($step*3.2), (int)(32*$scale), true); // ---- Footer (NY) ---- $footer_text = "For aktivering av gavekortet send e-post til abo@tvh.as eller ring kundesupport på Tlf: 400 00 936\nWWW.TVH.AS • LOKAL-TV FOR HELE FAMILIEN"; // nederst med 36px margin, liten men tydelig skrift $draw_footer($footer_text, 36, 18, 22); // ---- Output ---- $filename='Gavekort-Tvh-'.preg_replace('/[^a-z0-9-_]+/i','-',$mottaker).'.png'; header('Content-Type: image/png'); header('Content-Disposition: attachment; filename="'.$filename.'"'); imagepng($im); imagedestroy($im); exit; } Fant ikke siden – TVH AS

404

Oisann! Denne siden eksisterer ikke, eller er flyttet.