%PDF- %PDF-
Direktori : /home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/export/ |
Current File : //home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/export/shippingrate.php |
<?php /** * @package CSVI * @subpackage VirtueMart * * @author Roland Dalmulder <contact@csvimproved.com> * @copyright Copyright (C) 2006 - 2015 RolandD Cyber Produksi. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html * @link http://www.csvimproved.com */ defined('_JEXEC') or die; require_once JPATH_ADMINISTRATOR . '/components/com_csvi/models/exports.php'; /** * Export VirtueMart shipping rates. * * @package CSVI * @subpackage VirtueMart * @since 6.0 */ class Com_VirtuemartModelExportShippingrate extends CsviModelExports { /** * Export the data. * * @return bool True if body is exported | False if body is not exported. * * @since 6.0 * * @throws CsviException */ protected function exportBody() { if (parent::exportBody()) { // Check if a language is set $language = $this->template->get('language'); if (!$language) { throw new CsviException(JText::_('COM_CSVI_NO_LANGUAGE_SET')); } // Build something fancy to only get the fieldnames the user wants $userfields = array(); $exportfields = $this->fields->getFields(); // Group by fields $groupbyfields = json_decode($this->template->get('groupbyfields', '', 'string')); $groupby = array(); if (isset($groupbyfields->name)) { $groupbyfields = array_flip($groupbyfields->name); } else { $groupbyfields = array(); } // Sort selected fields $sortfields = json_decode($this->template->get('sortfields', '', 'string')); $sortby = array(); if (isset($sortfields->name)) { $sortbyfields = array_flip($sortfields->name); } else { $sortbyfields = array(); } foreach ($exportfields as $field) { switch ($field->field_name) { case 'virtuemart_shipmentmethod_id': case 'shipment_name': case 'shipment_desc': case 'custom': case 'slug': case 'shopper_group_name': $userfields[] = $this->db->quoteName('#__virtuemart_shipmentmethods.virtuemart_shipmentmethod_id'); if (array_key_exists($field->field_name, $groupbyfields)) { $groupby[] = $this->db->quoteName('#__virtuemart_shipmentmethods.virtuemart_shipmentmethod_id'); } if (array_key_exists($field->field_name, $sortbyfields)) { $sortby[] = $this->db->quoteName('#__virtuemart_shipmentmethods.virtuemart_shipmentmethod_id'); } break; case 'shipment_logos': case 'countries': case 'zip_start': case 'zip_stop': case 'weight_start': case 'weight_stop': case 'weight_unit': case 'nbproducts_start': case 'nbproducts_stop': case 'orderamount_start': case 'orderamount_stop': case 'cost': case 'shipment_cost': case 'package_fee': case 'tax_id': case 'tax': case 'free_shipment': $userfields[] = $this->db->quoteName('#__virtuemart_shipmentmethods.shipment_params'); if (array_key_exists($field->field_name, $groupbyfields)) { $groupby[] = $this->db->quoteName('#__virtuemart_shipmentmethods.shipment_params'); } if (array_key_exists($field->field_name, $sortbyfields)) { $sortby[] = $this->db->quoteName('#__virtuemart_shipmentmethods.shipment_params'); } break; default: $userfields[] = $this->db->quoteName($field->field_name); if (array_key_exists($field->field_name, $groupbyfields)) { $groupby[] = $this->db->quoteName($field->field_name); } if (array_key_exists($field->field_name, $sortbyfields)) { $sortby[] = $this->db->quoteName($field->field_name); } break; } } // Build the query $userfields = array_unique($userfields); $query = $this->db->getQuery(true); $query->select(implode(",\n", $userfields)); $query->from($this->db->quoteName('#__virtuemart_shipmentmethods')); $query->leftJoin( $this->db->quoteName('#__virtuemart_shipmentmethods_' . $language) . ' ON ' . $this->db->quoteName('#__virtuemart_shipmentmethods_' . $language . '.virtuemart_shipmentmethod_id') . ' = ' . $this->db->quoteName('#__virtuemart_shipmentmethods.virtuemart_shipmentmethod_id') ); // Filter by published state $publish_state = $this->template->get('publish_state'); if ($publish_state !== '' && ($publish_state == 1 || $publish_state == 0)) { $query->where($this->db->quoteName('#__virtuemart_manufacturers.published') . ' = ' . (int) $publish_state); } // Group the fields $groupby = array_unique($groupby); if (!empty($groupby)) { $query->group($groupby); } // Sort set fields $sortby = array_unique($sortby); if (!empty($sortby)) { $query->order($sortby); } // Add export limits $limits = $this->getExportLimit(); // Execute the query $this->csvidb->setQuery($query, $limits['offset'], $limits['limit']); $this->log->add('Export query' . $query->__toString(), false); // Check if there are any records $logcount = $this->csvidb->getNumRows(); if ($logcount > 0) { $shipment_params = array(); while ($record = $this->csvidb->getRow()) { $this->log->incrementLinenumber(); // Check if the shipment params need to be converted if (isset($record->shipment_params)) { $ship_params = explode('|', $record->shipment_params); array_pop($ship_params); foreach ($ship_params as $param) { list($name, $value) = explode('=', $param); $shipment_params[$name] = $value; } } foreach ($exportfields as $field) { $fieldname = $field->field_name; // Set the field value if (isset($record->$fieldname)) { $fieldvalue = $record->$fieldname; } else { $fieldvalue = ''; } // Process the field switch ($fieldname) { case 'shipment_name': case 'shipment_desc': case 'slug': $query = $this->db->getQuery(true) ->select($this->db->quoteName($fieldname)) ->from($this->db->quoteName('#__virtuemart_shipmentmethods_' . $language)) ->where($this->db->quoteName('virtuemart_shipmentmethod_id') . ' = ' . (int) $record->virtuemart_shipmentmethod_id); $this->db->setQuery($query); $fieldvalue = $this->db->loadResult(); break; case 'shipment_logos': if (isset($shipment_params[$fieldname])) { $fieldvalue = json_decode($shipment_params[$fieldname]); } else { $fieldvalue = ''; } break; case 'countries': if (isset($shipment_params[$fieldname])) { $countries = json_decode($shipment_params[$fieldname]); } else { $countries = ''; } if (!empty($countries)) { if (!is_array($countries)) { $countries = (array) $countries; } $fieldvalue = array(); foreach ($countries as $countryid) { // Retrieve the country names $query = $this->db->getQuery(true) ->select($this->db->quoteName('country_name')) ->from($this->db->quoteName('#__virtuemart_countries')) ->where($this->db->quoteName('virtuemart_country_id') . ' = ' . (int) $countryid); $this->db->setQuery($query); $fieldvalue[] = $this->db->loadResult(); } if (!empty($fieldvalue)) { $fieldvalue = implode(',', $fieldvalue); } else { $fieldvalue = ''; } } else { $fieldvalue = ''; } break; case 'zip_start': case 'zip_stop': case 'weight_start': case 'weight_stop': case 'weight_unit': case 'nbproducts_start': case 'nbproducts_stop': case 'orderamount_start': case 'orderamount_stop': case 'cost': case 'shipment_cost': case 'tax_id': case 'package_fee': case 'free_shipment': if ($fieldname == 'cost') { $fieldname = 'shipment_cost'; } if (isset($shipment_params[$fieldname])) { $fieldvalue = json_decode($shipment_params[$fieldname]); } else { $fieldvalue = ''; } break; case 'shopper_group_name': $query = $this->db->getQuery(true); $query->select($this->db->quoteName($fieldname)); $query->from($this->db->quoteName('#__virtuemart_shoppergroups', 'g')); $query->leftJoin( $this->db->quoteName('#__virtuemart_shipmentmethod_shoppergroups', 's') . ' ON ' . $this->db->quoteName('g.virtuemart_shoppergroup_id') . ' = ' . $this->db->quoteName('s.virtuemart_shoppergroup_id') ); $query->where($this->db->quoteName('s.virtuemart_shipmentmethod_id') . ' = ' . (int) $record->virtuemart_shipmentmethod_id); $this->db->setQuery($query); $fieldvalue = implode('|', $this->db->loadColumn()); break; case 'tax': if (isset($shipment_params[$fieldname])) { $fieldvalue = json_decode($shipment_params['tax_id']); } else { $fieldvalue = '-1'; } switch ($fieldvalue) { case '-1': $fieldvalue = 'norule'; break; case '0': $fieldvalue = 'default'; break; default: $query = $this->db->getQuery(true); $query->select($this->db->quoteName('calc_name')); $query->from($this->db->quoteName('#__virtuemart_calcs')); $query->where($this->db->quoteName('virtuemart_calc_id') . ' = ' . (int) $fieldvalue); $this->db->setQuery($query); $fieldvalue = $this->db->loadResult(); break; } break; } // Store the field value $this->fields->set($field->csvi_templatefield_id, $fieldvalue); } // Output the data $this->addExportFields(); // Output the contents $this->writeOutput(); // Empty the shipment params $shipment_params = null; } } else { $this->addExportContent(JText::_('COM_CSVI_NO_DATA_FOUND')); // Output the contents $this->writeOutput(); } } } }