Source of file api.printcard.php
Size: 9,360 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.printcard.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 | <?php /** * Print card management API */ /** * Returns print card lister with some controls * * @return string */ const IMG_CARD = 'content/documents/card_print/card_print.jpg'; const IMG_CARD_TEMPLATE = 'content/documents/card_print/card_print_template.jpg'; const PRINT_TEMPLATE = 'config/printablecards.tpl'; function web_PrintCardLister($ids) { $cards = zb_GetCardByIds($ids); $cells = wf_TableCell(__('Serial number')); $cells.= wf_TableCell(__('Price')); $rows = wf_TableRow($cells, 'row1'); if (!empty($cards)) { foreach ($cards as $row) { $cells = wf_TableCell($row['serial']); $cells.= wf_TableCell($row['cash']); $rows.= wf_TableRow($cells, 'row3'); } } $result = wf_TableBody($rows, '100%', 0); $idsQuery = http_build_query(array('id' => $ids)); if (file_exists(IMG_CARD)) { $printcheck = wf_tag('a', false, '', 'href="#" onClick="window.open(\'?module=printcards&action=page&'.$idsQuery.'\',\'checkwindow\',\'scrollbars=yes,width=800,height=600\')"'); $printcheck.= wf_img_sized('skins/icon_edit.gif', __('Page'), 24, 24); $printcheck.= wf_tag('a', true); $printcheck.= wf_tag('a', false, '', 'href="#" onClick="window.open(\'?module=printcards&action=print&'.$idsQuery.'\',\'checkwindow\',\'scrollbars=yes,width=800,height=600\')"'); $printcheck.= wf_img_sized('skins/icon_documents.gif', __('Print'), 24, 24); $printcheck.= wf_tag('a', true); } else { $printcheck = wf_Link("?module=printcards&action=setting", wf_img_sized('skins/icon_edit.gif', __('Page'), 24, 24)); $printcheck.= wf_Link("?module=printcards&action=setting", wf_img_sized('skins/icon_documents.gif', __('Page'), 24, 24)); } $printcheck.= wf_SubmitClassed(true, 'back', 'back', __('Back')); $result = wf_Form('?module=cards', 'POST', $result.$printcheck, 'glamour'); return ($result); } /** * Returns print card creation form * * @return string */ function web_PrintCardCreateForm() { $messages = new UbillingMessageHelper(); if (!file_exists(IMG_CARD)) { return web_UploadFileForm(); } $image = IMG_CARD; if (file_exists(IMG_CARD_TEMPLATE)) { $image = IMG_CARD_TEMPLATE; } $sup = wf_tag('sup').'*'.wf_tag('sup', true); $form = wf_img($image).'<br/>'; $form.= $messages->getStyledMessage(__('Available macroses').__(': <b>{number} {serial} {sum}</b>'), 'info').wf_tag('br/', false); $printCardData = zb_SelectAllPrintCardData(); $cells = wf_TableCell(__('Parameter')); $cells.= wf_TableCell(__('Color')); $cells.= wf_TableCell(__('Font size')); $cells.= wf_TableCell(__('Top')); $cells.= wf_TableCell(__('Left')); $cells.= wf_TableCell(__('Text')); $rows = wf_TableRow($cells, 'row1'); foreach ($printCardData as $row) { $cells = wf_TableCell(__($row['title'])); $cells.= wf_TableCell(wf_TextInput('print_card['.$row['field'].'][color]', $sup, $row['color'], false, 12)); $cells.= wf_TableCell(wf_TextInput('print_card['.$row['field'].'][font_size]', $sup, $row['font_size'], false, 3)); $cells.= wf_TableCell(wf_TextInput('print_card['.$row['field'].'][top]', $sup, $row['top'], false, 3)); $cells.= wf_TableCell(wf_TextInput('print_card['.$row['field'].'][left]', $sup, $row['left'], false, 3)); $cells.= wf_TableCell(wf_TextInput('print_card['.$row['field'].'][text]', $sup, $row['text'], true)); $rows.= wf_TableRow($cells, 'row3'); } $iputs = wf_SubmitClassed(true, 'save', 'save', __('Save')); $iputs.= wf_SubmitClassed(true, 'delete', 'delete', __('Delete')); $iputs.= wf_SubmitClassed(true, 'back', 'back', __('Back')); $rows.= wf_TableRow(wf_TableCell($iputs)); $result = wf_TableBody($rows, '100%', 0); $form.= wf_Form('', 'POST', $result, ''); return ($form); } function web_UploadFileForm() { $uploadInputs = wf_HiddenInput('upload', 'true'); $uploadInputs.= __('File').' <input id="fileselector" type="file" name="filename" size="10" /><br>'; $uploadInputs.= wf_Submit('Upload'); $uploadForm = '<form action="" method="POST" class="glamour" enctype="multipart/form-data"> '.$uploadInputs.' </form> <div style="clear:both;"></div> '; return ($uploadForm); } function web_UploadFileCopy($tmpName) { move_uploaded_file($tmpName, IMG_CARD); } function web_CreateTemplateCardPrint() { $printCardData = zb_SelectAllPrintCardData(); $generateCard = new GenerateCard(IMG_CARD); $generateCard ->createStringForImage($printCardData) ->saveImage(IMG_CARD_TEMPLATE); } function web_DeleteImege() { @unlink(IMG_CARD); @unlink(IMG_CARD_TEMPLATE); } function web_PageCard($ids) { $cardList = web_GenerateImages($ids); return (web_ParsePrintable($cardList)); } function web_GenerateImages($ids) { $filePathList = array(); web_ClearDirForGenerate(); $cards = zb_GetCardByIds($ids); $printCardDataFormat = web_PrintCardDataFormatForGenerate(zb_SelectAllPrintCardData()); foreach ($cards as $card) { $printCardData = $printCardDataFormat; $printCardData['number']['text'] = str_replace('{number}', $card['serial'], @$printCardData['number']['text']); $printCardData['serial']['text'] = str_replace('{serial}', $card['part'], @$printCardData['serial']['text']); $printCardData['rating']['text'] = str_replace('{sum}', $card['cash'], @$printCardData['rating']['text']); $filePath = sprintf('content/documents/card_print/tmp/%s.jpg', $card['serial']); $generateCard = new GenerateCard(IMG_CARD); $generateCard ->createStringForImage($printCardData) ->saveImage($filePath); array_push($filePathList, $filePath); } return ($filePathList); } function web_PrintCardDataFormatForGenerate($printCards) { $rc = array(); foreach ($printCards as $printCard) { if (count(array_filter($printCard)) !== count($printCard)) { continue; } $rc[$printCard['field']] = $printCard; } return ($rc); } function web_ClearDirForGenerate() { $dir = 'content/documents/card_print/tmp'; removeRmdir($dir); mkdir($dir); } function removeRmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir."/".$object) == "dir") { removeRmdir($dir."/".$object); } else { unlink($dir."/".$object); } } } reset($objects); rmdir($dir); } } /** * @return array|string */ function zb_SelectAllPrintCardData() { $query = "SELECT * FROM `print_card` ORDER BY `id` ASC"; $allData = simple_queryall($query); $allData = !empty($allData) ? $allData : array(); return ($allData); } /** * @param $printCardData */ function zb_SaveCardPrint($printCardData) { foreach ($printCardData as $key => $row) { $field = mysql_real_escape_string($key); $text = mysql_real_escape_string($row['text']); $fontSize = vf($row['font_size'], 3); $top = vf($row['top'], 3); $left = vf($row['left'], 3); $color = mysql_real_escape_string($row['color']); if (count(explode('.', $color)) !== 3) { $color = '0.0.0'; } $query = sprintf( "UPDATE `print_card` SET `text` = '%s', `color` = '%s', `font_size` = '%u', `top` = '%u', `left` = '%u' WHERE `field` = '%s'; ", $text, $color, $fontSize, $top, $left, $field ); nr_query($query); log_register(sprintf('UPDATE PrintCard [%s] `%s` `%s` `%u` `%u` `%u`', $field, $text, $color, $fontSize, $top, $left)); } } function web_ParsePrintable($cardList, $title = '') { $data = ''; foreach ($cardList as $card) { $data.= wf_img($card); } if (file_exists(PRINT_TEMPLATE)) { $template = file_get_contents(PRINT_TEMPLATE); $template = str_replace('{PAGE_TITLE}', $title, $template); $result = $template . $data; } else { $result = $data; $result.= wf_tag('body', true); $result.= wf_tag('html', true); } return ($result); } function web_CreatePdf($cardList) { $indentWidth = 15; $indentHeight = 3; $paperWidth = 210; $paperHeight = 297; $correctiveToMM = 0.265; $geImageInfo = getimagesize($cardList[0]); $width = ($geImageInfo[0] + $indentWidth) * $correctiveToMM; $height = ($geImageInfo[1] + $indentHeight) * $correctiveToMM; //ob_clean(); $pdf = new FPDF('P', 'mm', 'A4'); $pdf->AddPage(); $pdf->SetFont('Arial', 'B', 16); $wPos = $indentWidth; $hPos = $indentHeight; foreach ($cardList as $card) { if ($paperHeight < ($hPos + $height)) { $hPos = $indentHeight; $wPos+= $width; } if ($paperWidth < ($wPos + $width)) { $pdf->AddPage(); $wPos = $indentWidth; $hPos = $indentHeight; } $pdf->Image($card, $wPos, $hPos); $hPos += $height; } $pdf->Output(); } ?> |