コード例 #1
0
 /**
  * Public function that creates a single instance
  */
 public static function getInstance()
 {
     if (!isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
コード例 #2
0
 /**
  * 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();
         }
     }
 }
コード例 #3
0
ファイル: shop_item_handler.php プロジェクト: tareqy/Caracal
 /**
  * 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();
 }