public function action_index() { $string = urldecode($this->request->param('id')); $materials = new Model_Material('groups'); $pageNum = intval(Arr::get($_GET, 'page', 0)); if (strlen($string) > 2) { $cat_counter = $materials->getCountFullMaterials2(0, $string); $pagination = Pagination::factory(array('total_items' => $cat_counter)); if (isset($param_array['page']) && $param_array['page'] == 'all') { $pagination->items_per_page = 20; $pagination->offset = 0; } $pagination->current_page = $pageNum; $data = $materials->getFullMaterials2(0, $pagination->items_per_page, $pagination->offset, $string); $this->template->pagination = $pagination; $this->template->data = $data; } else { $this->template->pagination = ''; $this->template->data = array(); } }
public function uploadFile($gid) { $material = new Model_Material('groups'); $data = $material->getFullMaterials2($gid, 10000, 0); $phpexcel = new PHPExcel(); // Создаём объект PHPExcel $page = $phpexcel->setActiveSheetIndex(0); // Делаем активной первую страницу и получаем её $letters = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); $header = array('name' => 'Название'); $fields = $material->getFieldsSet($gid); foreach ($fields as $field) { $header[$field['name']] = $field['title']; } $fields = $header; $header = array_values($fields); for ($i = 0; $i < count($header); ++$i) { $page->setCellValue($letters[$i] . "1", $header[$i]); } //echo '<pre>'; $row = 2; foreach ($data as $item) { $col = 0; foreach ($fields as $key => $field) { if (isset($item[$key])) { if (!is_array($item[$key])) { $page->setCellValue($letters[$col] . $row, $item[$key]); } else { $str = ''; $s = 1; foreach ($item[$key] as $val) { $str .= Arr::get($val, 'value'); if ($s < count($item[$key])) { $str .= ', '; } ++$s; } $page->setCellValue($letters[$col] . $row, $str); } } ++$col; } ++$row; } // echo '</pre>'; $page->setTitle("Страница 1"); // Заголовок делаем "Example" /* Начинаем готовиться к записи информации в xlsx-файл */ $objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007'); /* Записываем в файл */ $group = $material->getGroup($gid); $base = new Model_Base(); $filename = $group['id'] . '_' . $base->str2url(Text::limit_chars($group['name'], 20)) . '_' . date("Y.m.d H-i-s"); $objWriter->save(DOCROOT . "/img/user/export/" . $filename . ".xlsx"); return array('Файл ' . $filename . ' успешно создан в директории <a href="/admin/files/export">/export/</a>'); }
public function action_catalog() { $offset = Arr::get($_GET, 'offset', 0); $gid = Arr::get($_GET, 'gid', 0); foreach ($_GET as $key => $value) { $key = Security::encode_php_tags($key); $value = Security::encode_php_tags($value); $ready[$key] = $value; } $catalog = new Model_Material('group'); if (isset($ready['go'])) { unset($ready['go']); } unset($ready['gid']); unset($ready['offset']); $config = Kohana::$config->load('main')->site; if (count($ready) > 0) { $search_string = Arr::get($ready, 'searchtext', NULL); $data = $catalog->getFullMaterials2($gid, $config['materials_on_page'], $offset, $search_string, $ready); } else { $data = $catalog->getFullMaterials2($gid, $config['materials_on_page'], $offset); } $view = View::factory('widgets/w_catalog_items')->bind('data', $data); echo $view; }
public function action_index($options = array("catalog_id" => 4, "items_position_type" => "half")) { $this->setopt(array("name" => "catalog_id", "description" => "Ид каталога", "default" => $options["catalog_id"])); $this->setopt(array("name" => "items_position_type", "description" => "Способ отображения item'ов", "default" => $options["items_position_type"])); // --- tests --------------------------------------------------------------- $model_module = new Model_Module(); $module = $model_module->get_module(176); $module->get_options(); //$module->test(1382); $module->set(array("action" => "index")); // --- /tests -------------------------------------------------------------- $model = array(); $qdata = array(); $param_array = array(); $materials = new Model_Material('groups'); $config = Kohana::$config->load('main')->site; $pageNum = intval(Arr::get($_GET, 'page', 0)); $param = $this->getopt("catalog_id"); //$param = $this->request->param('id'); //PC::debug($pageNum); $params = explode('/', $param); $gid = $params[0]; foreach ($params as $paramName) { if (preg_match("/page(\\d)/", $paramName)) { $pageNum = str_replace('page', '', $paramName); } } $template = $this->request->param('template'); if ($template) { $this->template = View::factory('widgets/' . $template); } //search for template $widget = new Model_Widget(); $widgetData = $this->widget_data; if ($widgetData['template']) { $this->template = View::factory('widgets/' . $widgetData['template']); } $query = Arr::get($widgetData, 'query'); if ($query != '') { $queries = explode('&', $query); foreach ($queries as $q) { $rr = explode('=', $q); if (!isset($param_array[$rr[0]])) { $qdata[$rr[0]][] = $rr[1]; } } } //counters $group = $materials->getGroup($gid); $material_count = $group['materials']; $search_string = Arr::get($param_array, 'art', NULL); //проверяем кодировку $res = mb_detect_encoding($search_string, array('UTF-8', 'Windows-1251')); if ($res != 'UTF-8') { $search_string = iconv($res, 'UTF-8', $search_string); } if (isset($param_array['go'])) { unset($param_array['go']); } if (isset($param_array['price'])) { $pricer = explode(';', $param_array['price']); $qdata['price_from'] = intval(Arr::get($pricer, 0) * 1000); $qdata['price_to'] = intval(Arr::get($pricer, 1) * 1000); unset($param_array['price']); } if (isset($param_array['sort'])) { $qdata['sort'] = addslashes($param_array['sort']); } $qparams = array_keys($param_array); //получаем доступные параметры $params = $materials->getFieldsSet($gid); foreach ($params as $param) { if ($param['for_filters'] == 1) { if (in_array($param['name'], $qparams)) { switch ($param['type']) { case 'select': if (is_array($param_array[$param['name']])) { $selvalues = $materials->getSelectValues($param['id']); $vals = array_values($param_array[$param['name']]); foreach ($selvalues as $value) { if (in_array($value->value, $vals)) { $qdata[$param['name']][] = $value->value; } } } break; case 'price': $arr = explode(';', $param_array[$param['name']]); $qdata[$param['name'] . '_from'] = intval(Arr::get($arr, 0)); $qdata[$param['name'] . '_to'] = intval(Arr::get($arr, 1)); break; case 'chars': $qdata[$param['name']] = addslashes($param_array[$param['name']]); break; } } } } //получаем данные для сортировки //$this->template->searchtext = $search_string; //$this->template->search_params = $param_array; // Сколько найдено материалов? $material_count = $materials->getCountFullMaterials2($gid, $search_string, $qdata); // Номер текущей страницы $current_page = 1; if (isset($_GET["page"])) { //if ($_GET["page"] !== 0) $current_page = $_GET["page"]; } // Вывод всех материалов на одной странице $model["limit"]["text"] = "Показать все на странице"; $model["limit"]["href"] = URL::query(array("limit" => false, "page" => 1)); $material_limit = 24; if (isset($_GET["limit"])) { if (!$_GET["limit"]) { $model["limit"]["text"] = "Постраничное разделение"; $model["limit"]["href"] = URL::query(array("limit" => true)); $material_limit = $material_count; //$current_page = 1; } } else { $material_limit = 24; // Материалов на странице } $max_page = ceil($material_count / $material_limit); // Максимальная страница $material_offset = $material_limit * ($current_page - 1); // Смещение материалов // страница существует if ($current_page <= $max_page) { $items = $materials->getFullMaterials2($gid, $material_limit, $material_offset, $search_string, $qdata); } else { $items = []; } // Хлебные крошки $this->load_module("breadcrumb", "/widgets/Breadcrumb/index"); // --- Выбор способа отображения item'ов --------------------------------------------------- $model["items_position_type"] = Arr::get($_COOKIE, "items_position_type", $this->getopt("items_position_type")); $this->load_module("item_position", "/widgets/ItemPosition/index"); // --- /Выбор способа отображения item'ов --------------------------------------------------- // --- Пагинация -------------------------------------------------------------------------- $this->load_module("pagination", "/widgets/Pagination/index", array("current" => $current_page, "max" => $max_page, "count" => 5)); // --- /Пагинация ------------------------------------------------------------------------- // Для корзины echo '<script>var items = JSON.parse(\'' . json_encode($items) . '\');</script>'; $model["items"] = $items; // Кол-во найденых материалов $model["material_count"] = $material_count; // Изменение модели foreach ($model["items"] as $item_id => $item) { $new_model = array(); // id материала $new_model["id"] = $item_id; // Формат цены $new_model["price"] = number_format($item["price"], 0, '', ' '); // Формат старой цены if (isset($item['old_price'])) { $new_model["old_price"] = number_format($item["old_price"], 0, '', ' '); } // Изображение if (isset($item['photos'][0])) { $new_model["photo"] = Route::url('miniimg3', array('filename' => $item['photos'][0]['value'])); } else { $new_model["photo"] = Route::url('miniimg3', array('filename' => '/img/noimg.png')); } // Акция if (isset($item["stock"])) { $new_model["stock"] = " " . $item["stock"][0]["value"]; } //$new_model["stock"] = "new"; //test // Ссылка на материал $new_model["href"] = "/" . $item["node"] . $item["url"] . ".html"; // --- Обрезаем длинные поля -------------------------------------------------------- // Название $new_model["name"] = $item["name"]; if (strlen($item["name"]) > 80) { $new_model["name"] = Text::limit_chars($item["name"], 77); } // Описание $new_model["description"] = $item["description"]; if (strlen($item["description"]) > 80) { $new_model["description"] = Text::limit_chars($item["description"], 77); } // --- /Обрезаем длинные поля ------------------------------------------------------- $model["items"][$item_id] = array_merge($model["items"][$item_id], $new_model); } if ($material_count == 0) { $Menu = new Controller_Widgets_Menu($this->request, $this->response); $Menu->action_graph(array("parent_id" => Arr::get($GLOBALS, 'categoryId'))); $this->body($Menu->get_body()); /*$this->load_module("graph_menu", "/widgets/Graph_Menu/index", array( "parent_id" => Arr::get($GLOBALS, 'categoryId'), ));*/ } else { $this->set_template("/widgets/w_catalog.php", "twig")->render($model)->body(); } }