/** * Handle drawing list of delivery method prices * * @param array $tag_params * @param array $children */ public function tag_DeliveryPricesList($tag_params, $children) { $manager = ShopDeliveryMethodPricesManager::getInstance(); $conditions = array(); $relations = array(); // prepare filtering conditions if (isset($tag_params['method'])) { $conditions['method'] = fix_id($tag_params['method']); } if (isset($_REQUEST['method'])) { $conditions['method'] = fix_id($_REQUEST['method']); } // get relations with shop item if (isset($tag_params['item'])) { $relations_manager = ShopDeliveryItemRelationsManager::getInstance(); $item_id = fix_id($tag_params['item']); $raw_relations = $relations_manager->getItems(array('price'), array('item' => $item_id)); if (count($raw_relations) > 0) { foreach ($raw_relations as $relation) { $relations[] = $relation->price; } } } // get template $template = $this->_parent->loadTemplate($tag_params, 'delivery_method_prices_list_item.xml'); // get items from database $items = $manager->getItems($manager->getFieldNames(), $conditions); if (count($items) > 0) { foreach ($items as $item) { $params = array('id' => $item->id, 'value' => $item->value, 'method' => isset($conditions['method']) ? $conditions['method'] : 0, 'selected' => in_array($item->id, $relations) ? 1 : 0, 'item_change' => url_MakeHyperlink($this->_parent->getLanguageConstant('change'), window_Open('shop_delivery_price_change', 370, $this->_parent->getLanguageConstant('title_delivery_method_price_change'), true, true, url_Make('transfer_control', 'backend_module', array('module', $this->name), array('backend_action', 'delivery_methods'), array('sub_action', 'change_price'), array('id', $item->id)))), 'item_delete' => url_MakeHyperlink($this->_parent->getLanguageConstant('delete'), window_Open('shop_delivery_price_delete', 400, $this->_parent->getLanguageConstant('title_delivery_method_price_delete'), false, false, url_Make('transfer_control', 'backend_module', array('module', $this->name), array('backend_action', 'delivery_methods'), array('sub_action', 'delete_price'), array('id', $item->id))))); $template->setLocalParams($params); $template->restoreXML(); $template->parse(); } } }
/** * Save new or changed item data */ private function saveItem() { $id = isset($_REQUEST['id']) ? fix_id($_REQUEST['id']) : null; $manager = ShopItemManager::getInstance(); $membership_manager = ShopItemMembershipManager::getInstance(); $related_items_manager = ShopRelatedItemsManager::getInstance(); $delivery_item_relation_manager = ShopDeliveryItemRelationsManager::getInstance(); $open_editor = ""; $new_item = is_null($id); $data = array('name' => $this->_parent->getMultilanguageField('name'), 'description' => $this->_parent->getMultilanguageField('description'), 'price' => isset($_REQUEST['price']) && !empty($_REQUEST['price']) ? fix_chars($_REQUEST['price']) : 0, 'colors' => fix_chars($_REQUEST['colors']), 'tax' => isset($_REQUEST['tax']) && !empty($_REQUEST['tax']) ? fix_chars($_REQUEST['tax']) : 0, 'weight' => isset($_REQUEST['weight']) && !empty($_REQUEST['weight']) ? fix_chars($_REQUEST['weight']) : 0, 'size_definition' => isset($_REQUEST['size_definition']) ? fix_id($_REQUEST['size_definition']) : null, 'priority' => isset($_REQUEST['priority']) ? fix_id($_REQUEST['priority']) : 5, 'manufacturer' => isset($_REQUEST['manufacturer']) && !empty($_REQUEST['manufacturer']) ? fix_id($_REQUEST['manufacturer']) : 0); if ($new_item) { // add elements first time $data['author'] = $_SESSION['uid']; $data['uid'] = $this->generateUID(); if (class_exists('gallery')) { $gallery = gallery::getInstance(); $gallery_id = $gallery->createGallery($data['name']); $data['gallery'] = $gallery_id; // create action for opening gallery editor $open_editor = window_Open('gallery_images', 670, $gallery->getLanguageConstant('title_images'), true, true, url_Make('transfer_control', 'backend_module', array('backend_action', 'images'), array('module', 'gallery'), array('group', $gallery_id))); } } else { // remove membership data, we'll update those in a moment $membership_manager->deleteData(array('item' => $id)); // remove delivery methods $delivery_item_relation_manager->deleteData(array('item' => $id)); } // store item data if ($new_item) { // store new data $manager->insertData($data); $window = 'shop_item_add'; $id = $manager->getInsertedID(); } else { // update existing data $manager->updateData($data, array('id' => $id)); $window = 'shop_item_change'; } // update categories and delivery method selection $category_ids = array(); $category_template = 'category_id'; $delivery_ids = array(); $delivery_template = 'delivery_'; foreach ($_REQUEST as $key => $value) { if (substr($key, 0, strlen($category_template)) == $category_template && $value == 1) { $category_ids[] = fix_id(substr($key, strlen($category_template) - 1)); } if (substr($key, 0, strlen($delivery_template)) == $delivery_template) { $delivery_ids[] = fix_id($value); } } // update membership if (count($category_ids) > 0) { foreach ($category_ids as $category_id) { $membership_manager->insertData(array('category' => $category_id, 'item' => $id)); } } // update delivery methods if (count($delivery_ids) > 0) { foreach ($delivery_ids as $delivery_id) { if (!empty($delivery_id)) { $delivery_item_relation_manager->insertData(array('item' => $id, 'price' => $delivery_id)); } } } // store related items if (!$new_item) { $related_items_manager->deleteData(array('item' => $id)); } $related = array(); $keys = array_keys($_REQUEST); foreach ($keys as $key) { if (substr($key, 0, 7) == 'related') { $related[] = substr($key, 8); } } if (count($related) > 0) { foreach ($related as $related_id) { $related_items_manager->insertData(array('item' => $id, 'related' => $related_id)); } } // show message $template = new TemplateHandler('message.xml', $this->path . 'templates/'); $template->setMappedModule($this->name); $params = array('message' => $this->_parent->getLanguageConstant('message_item_saved'), 'button' => $this->_parent->getLanguageConstant('close'), 'action' => window_Close($window) . ";" . window_ReloadContent('shop_items') . ';' . $open_editor); $template->restoreXML(); $template->setLocalParams($params); $template->parse(); }