public function getPath($dir) { //первым делом ищем в структуре $category = new Model_Category('tree'); $categoryId = $category->getCategoryIdByUrl($dir); if ($categoryId) { $dirs = []; $categoryData = $category->getCategory($categoryId); $parents = $category->getParents($categoryId); foreach ($parents as $parent) { if ($parent['level'] > 1 && $parent['url'] != 'glavnaya') { $dirs[] = $parent['url']; } } return array('name' => $categoryData['name'], 'path' => implode('/', $dirs)); } //теперь ищем в материалах $materials = new Model_Material('group'); $materialUrl = str_replace('.html', '', $dir); $materialId = $materials->getMaterialIdByUrl($materialUrl); if ($materialId) { $materialData = $materials->getMaterial($materialId); $categoryId = $materials->getTreeIdByMid($materialId); $categoryData = $category->getCategory($categoryId); return array('name' => $materialData['name'], 'path' => $categoryData['url'] . '/' . $dir); } else { return FALSE; } }
public function getCart($userId) { $result = DB::select()->from($this->tableName)->where('user', '=', $userId)->group_by('mid')->execute()->as_array(); $material = new Model_Material('groups'); $category = new Model_Category('tree'); $base = new Model_Base(); $arr = array(); foreach ($result as $item) { //var_dump($item); //название модели $materialData = $material->getMaterial($item['mid']); $arr[$item['mid']]['name'] = $materialData['name']; $arr[$item['mid']]['mid'] = $item['mid']; //url модели $categoryName = $category->getNode($material->getTreeIdByMid($item['mid'])); $categoryName = $base->str2url($categoryName['name']); $arr[$item['mid']]['url'] = $categoryName . '/' . $materialData['url'] . '.html'; //Изображение $fields = $material->getFields($item['mid'], true); $arr[$item['mid']]['img'] = $fields['Photos'][0]; //количество $arr[$item['mid']]['count'] = $this->getCartCount($userId, $item['mid']); //сумма $arr[$item['mid']]['sum'] = $this->getCartPrice($userId, $item['mid']); //размер $arr[$item['mid']]['size'] = $item['size']; //цвет $arr[$item['mid']]['color'] = $item['color']; } return $arr; }
public function getOrder($orderId) { $order = ORM::factory("Orders")->where("id", "=", $orderId)->find()->as_array(); $items = DB::select()->from("order_materials")->where("order_id", "=", $orderId)->execute()->as_array(); $materials = new Model_Material("groups"); $catalog = new Model_Category("tree"); foreach ($items as $item) { $material = $materials->getMaterial($item["mid"]); $fields = $materials->getFields2($item["mid"], TRUE); $categoryId = $materials->getTreeIdByMid($item["mid"]); $parents = $catalog->getParents($categoryId); $node = ""; foreach ($parents as $key => $parent) { if ($parent["url"] == "glavnaya") { $node .= $parents[$key + 1]["url"] . "/"; break; } } $order["items"][$item["mid"]] = array_merge($material, $fields); $order["items"][$item["mid"]]["cnt"] = $item["cnt"]; $order["items"][$item["mid"]]["node"] = $node; } return $order; }
public function action_cart() { /* Добавление товара в корзину $data: $item_id* - id товара $item_count* - кол-во товара $order_id - id заказа */ $methods['add_item'] = function ($data) { PC::debug($data, 'add item data'); $model_orders = new Model_Orders(); $materials = new Model_Material('groups'); // Добавление товара к существующему заказу if (isset($data['order_id'])) { PC::debug(1, 1); $res = $model_orders->addGood(Arr::get($data, 'order_id'), Arr::get($data, 'item_id'), Arr::get($data, 'item_count')); } else { PC::debug(2, 1); $item_count = Arr::get($data, 'item_count'); $res = $model_orders->newOrder(Arr::get($data, 'item_id'), $item_count); $new_count = $item_count; } $material = $materials->getMaterial(Arr::get($data, 'item_id')); $fields = $materials->getFields2(Arr::get($data, 'item_id'), TRUE); $catalog = new Model_Category('tree'); $categoryId = $materials->getTreeIdByMid(Arr::get($data, 'item_id')); $parents = $catalog->getParents($categoryId); $node = ''; foreach ($parents as $parent) { if ($parent['level'] > 1 && $parent['url'] != 'glavnaya') { $node .= $parent['url'] . '/'; } } $itemdata = $model_orders->getOrderCount(Arr::get($data, 'order_id'), Arr::get($data, 'item_id')); $item[Arr::get($data, 'item_id')] = array_merge($material, $fields); if (isset($new_count)) { $item[Arr::get($data, 'item_id')]['cnt'] = $new_count; } else { $item[Arr::get($data, 'item_id')]['cnt'] = $itemdata['cnt']; } $item[Arr::get($data, 'item_id')]['node'] = $node; return array('order_id' => $res, 'item' => $item); }; /* Удаление товара из корзины $data: $order_id* - id заказа $item_id* - id товара $item_count* - кол-во товара */ $methods['del_item'] = function ($data) { $model_orders = new Model_Orders(); extract($data); // Удаление товара из корзины $res = $model_orders->deleteItem(Arr::get($data, 'order_id'), Arr::get($data, 'item_id'), Arr::get($data, 'item_count')); return $res; }; /* Получение информации о заказе $data: $order_id* - id заказа */ $mathods['get_order'] = function ($data) { $model_orders = new Model_Orders(); $order_data = $model_orders->getOrder($data['order_id']); return $order_data; }; /* Удаление заказа $data: $order_id* - id заказа */ $mathods['del_order'] = function ($data) { PC::debug($data, 'del_order'); $model_orders = new Model_Orders(); $res = $model_orders->deleteOrder($data['order_id']); return $res; }; /* Получение информации о заказе $data: $order_id* - id заказа */ $methods['get_items'] = function ($data) { $model_orders = new Model_Orders(); //extract($data); $res = $model_orders->getOrder(Arr::get($data, 'order_id', '')); return $res; }; $data = Arr::get($_POST, 'data', ''); if ($data == '') { $data = Arr::get($_GET, 'data', ''); } extract(json_decode($data, true)); $res = false; if (isset($methods[$method])) { $res = $methods[$method]($data); PC::debug($res, 'Ajax: "' . $method . '"'); } exit(json_encode($res)); }