cookie; if (isset($cookie->dpdpoland_packages_ids)) { if (version_compare(_PS_VERSION_, '1.5', '<')) $package_ids = unserialize(Context::getContext()->cookie->dpdpoland_packages_ids); else $package_ids = Tools::unSerialize(Context::getContext()->cookie->dpdpoland_packages_ids); unset($cookie->dpdpoland_packages_ids); $cookie->write(); $separated_packages = DpdPolandPackage::separatePackagesBySession($package_ids); $international_packages = $separated_packages['INTERNATIONAL']; $domestic_packages = $separated_packages['DOMESTIC']; $manifest_ids = array(); if ($international_packages) $manifest_ids[] = DpdPolandManifest::getManifestIdWsByPackageIdWs($international_packages[0]); if ($domestic_packages) $manifest_ids[] = DpdPolandManifest::getManifestIdWsByPackageIdWs($domestic_packages[0]); require_once(_DPDPOLAND_CONTROLLERS_DIR_.'manifestList.controller.php'); $manifest_controller = new DpdPolandManifestListController(); return $manifest_controller->printManifest($manifest_ids); } if ($package_ids = Tools::getValue('PackagesBox')) { if (!DpdPolandManifest::validateSenderAddresses($package_ids)) { $error_message = $module_instance->l('Manifests can not have different sender addresses', self::FILENAME); $error = $module_instance->displayError($error_message); return $module_instance->outputHTML($error); } $separated_packages = DpdPolandPackage::separatePackagesBySession($package_ids); $international_packages = $separated_packages['INTERNATIONAL']; $domestic_packages = $separated_packages['DOMESTIC']; if ($international_packages) { $manifest = new DpdPolandManifest; if (!$manifest->generateMultiple($international_packages)) { $error = $module_instance->displayError(reset(DpdPolandManifestWS::$errors)); return $module_instance->outputHTML($error); } } if ($domestic_packages) { $manifest = new DpdPolandManifest; if (!$manifest->generateMultiple($domestic_packages)) { $error = $module_instance->displayError(reset(DpdPolandManifestWS::$errors)); return $module_instance->outputHTML($error); } } $cookie->dpdpoland_packages_ids = serialize($package_ids); $redirect_uri = $module_instance->module_url.'&menu=packages_list'; die(Tools::redirectAdmin($redirect_uri)); } } /** * Creates label from packages list * * @param object $package Package object * @param object $module_instance Module instance * @param array $packages Packages IDs * @param string $printout_format Printout format (label, A4) * @param string $filename Label file name * @return bool Label created successfully */ private static function createLabelPDFDocument($package, $module_instance, $packages, $printout_format, $filename) { if (!$pdf_file_contents = $package->generateLabelsForMultiplePackages($packages, 'PDF', $printout_format)) { $error = $module_instance->displayError(reset(DpdPolandPackageWS::$errors)); return $error; } if (file_exists(_PS_MODULE_DIR_.'dpdpoland/'.$filename) && !unlink(_PS_MODULE_DIR_.'dpdpoland/'.$filename)) { $error_message = $module_instance->l('Could not delete old PDF file. Please check module folder permissions', self::FILENAME); $error = $module_instance->displayError($error_message); return $error; } $international_pdf = fopen(_PS_MODULE_DIR_.'dpdpoland/'.$filename, 'w'); if (!$international_pdf) { $error_message = $module_instance->l('Could not create PDF file. Please check module folder permissions', self::FILENAME); $error = $module_instance->displayError($error_message); return $error; } fwrite($international_pdf, $pdf_file_contents); fclose($international_pdf); return true; } /** * Prints multiple label for selected packages * * @param string $printout_format Printout format (label, A4) * @return mixed Error messages */ public static function printLabels($printout_format) { $module_instance = Module::getinstanceByName('dpdpoland'); if ($package_ids = Tools::getValue('PackagesBox')) { $package = new DpdPolandPackage; $separated_packages = DpdPolandPackage::separatePackagesBySession($package_ids); $international_packages = $separated_packages['INTERNATIONAL']; $domestic_packages = $separated_packages['DOMESTIC']; if ($international_packages) { $result = self::createLabelPDFDocument($package, $module_instance, $international_packages, $printout_format, 'international_labels.pdf'); if ($result !== true) return $module_instance->outputHTML($result); } if ($domestic_packages) { $result = self::createLabelPDFDocument($package, $module_instance, $domestic_packages, $printout_format, 'domestic_labels.pdf'); if ($result !== true) return $module_instance->outputHTML($result); } include_once(_PS_MODULE_DIR_.'dpdpoland/libraries/PDFMerger/PDFMerger.php'); $pdf = new PDFMerger; if ($international_packages && $domestic_packages) { if (file_exists(_PS_MODULE_DIR_.'dpdpoland/labels_multisession.pdf') && !unlink(_PS_MODULE_DIR_.'dpdpoland/labels_multisession.pdf')) { $error_message = $module_instance->l('Could not delete old PDF file. Please check module folder permissions', self::FILENAME); $error = $module_instance->displayError($error_message); return $module_instance->outputHTML($error); } $international_pdf_path = _PS_MODULE_DIR_.'dpdpoland/international_labels.pdf'; $domestic_pdf_path = _PS_MODULE_DIR_.'dpdpoland/domestic_labels.pdf'; $multisession_pdf_path = _PS_MODULE_DIR_.'dpdpoland/labels_multisession.pdf'; $pdf->addPDF($international_pdf_path, 'all')->addPDF($domestic_pdf_path, 'all')->merge('file', $multisession_pdf_path); } ob_end_clean(); header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="labels_'.time().'.pdf"'); if ($international_packages && $domestic_packages) readfile(_PS_MODULE_DIR_.'dpdpoland/labels_multisession.pdf'); elseif ($international_packages) readfile(_PS_MODULE_DIR_.'dpdpoland/international_labels.pdf'); elseif ($domestic_packages) readfile(_PS_MODULE_DIR_.'dpdpoland/domestic_labels.pdf'); else { $error_message = $module_instance->l('No labels were found', self::FILENAME); $error = $module_instance->displayError($error_message); return $module_instance->outputHTML($error); } self::deletePDFFiles(); } } /** * Deletes existing PDF files which were used to merge them onto a single document */ private static function deletePDFFiles() { $labels = array('labels_multisession', 'international_labels', 'domestic_labels'); foreach ($labels as $label) if (file_exists(_PS_MODULE_DIR_.'dpdpoland/'.$label.'.pdf') && is_writable(_PS_MODULE_DIR_.'dpdpoland/'.$label.'.pdf')) unlink(_PS_MODULE_DIR_.'dpdpoland/'.$label.'.pdf'); } /** * Prepares list data to be displayed in page * * @return string Page content in HTML */ public function getList() { $keys_array = array('date_add', 'id_order', 'package_number', 'count_parcel', 'receiver', 'country', 'postcode', 'city', 'address'); $this->prepareListData($keys_array, 'Packages', new DpdPolandPackage, self::DEFAULT_ORDER_BY, self::DEFAULT_ORDER_WAY, 'packages_list'); $this->context->smarty->assign('order_link', 'index.php?controller=AdminOrders&vieworder&token='.Tools::getAdminTokenLite('AdminOrders')); if (version_compare(_PS_VERSION_, '1.6', '>=')) return $this->context->smarty->fetch(_DPDPOLAND_TPL_DIR_.'admin/package_list_16.tpl'); return $this->context->smarty->fetch(_DPDPOLAND_TPL_DIR_.'admin/package_list.tpl'); } }