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 action_index() { $materialId = $this->request->param('id'); $materials = new Model_Material('groups'); //получить содержимое папки $data = $materials->getMaterial($materialId); $fields = $materials->getFields2($materialId, TRUE); $model = array("photos" => array()); $model["id"] = Arr::get($data, "id"); $model["name"] = Arr::get($data, "name"); $model["article"] = Arr::get($data, "art"); $model["price"] = number_format(Arr::get($fields, 'price'), 0, "", " "); Resources::add_scripts(array("js/modules/material/material.js"), get_class()); // --- Фотки ---------------------------------------------------- // есть фото if (isset($fields["photos"][0])) { $photos = $fields["photos"]; $model["general_photo"] = $photos[0]["value"]; // Фоток больше 1 if (count($photos) > 1) { foreach ($photos as $photo) { $model["photos"][] = array("original" => $photo["value"], "mini" => Route::url("miniimg2", array("filename" => $photo["value"]))); } } } else { $model["general_photo"] = "/img/noimg.png"; } // --- /Фотки ---------------------------------------------------- // --- Коментарии ------------------------------------------------ echo '<script>window.material_id = JSON.parse(\'' . $materialId . '\');</script>'; $this->load_module("comments", "/widgets/Comments/index"); // --- /Коментарии ----------------------------------------------- $this->set_template("/widgets/material/material.php", "twig")->render($model)->body(); }
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 action_index() { $materialId = $this->request->param('id'); $materials = new Model_Material('groups'); //get widget template $widget = new Model_Widget(); $template = $widget->getTempalte('files', $materialId); if ($template) { $this->template = View::factory('widgets/' . $template); } //get data $data = $materials->getMaterial($materialId); $fields = $materials->getFields2($materialId, TRUE); $this->template->material = $data; $this->template->fields = $fields; }
public function action_index() { $materialId = $this->request->param('id'); $materials = new Model_Material('groups'); //получить содержимое папки $data = $materials->getMaterial($materialId); $fields = $materials->getFields2($materialId, TRUE); //смотрим шаблон для виджета $widget = new Model_Widget(); $template = $widget->getTempalte('material', $materialId); if ($template) { $this->template = View::factory('widgets/' . $template); } $group = $materials->getGroup($materials->getGroupFromMid($materialId)); if ($group['name'] == 'Новости') { $this->template = View::factory('widgets/w_news_item'); $this->template->breadcrumbs = Request::factory('widgets/breadcrumb/index/')->execute(); } // if($group['name']=='Диспенсеры') // { // if(isset($fields['type'][0])) // { // $uri = Request::detect_uri(); // $dirs = explode('/', $uri); // array_pop($dirs); // $categoryName = array_pop($dirs); // // $category = new Model_Category('tree'); // $categoryId = $category->getCategoryIdByUrl($categoryName); // // $GLOBALS['categoryId'] = $categoryId; // // $dopdata = $materials->getFullMaterials2($group['id'], 5, 0, NULL, array('type' => array($fields['type'][0]['value']))); // unset($dopdata[$materialId]); // // $this->template->dopdata = array_slice($dopdata, 0, 4); // } // } //получаем комментарии $comments = Request::factory('widgets/comments/index/' . $materialId)->execute(); $callback_form = Request::factory('widgets/callback/index/')->execute(); $this->template->callback = $callback_form; $this->template->material = $data; $this->template->fields = $fields; $this->template->comments = $comments; }
public function action_catalog() { $materials = new Model_Material('groups'); //получаем url материала $materialID = $this->request->param('id'); $material = $materials->getMaterial($materialID); $fields = $materials->getFields2($materialID, TRUE); $this->template->title = $material['name']; $this->template->page_title = $material['name']; $this->template->keywords = $material['keywords']; $this->template->description = $material['description']; $this->template->links = array('<link rel="canonical" href="' . Kohana::$base_url . 'catalog/' . $materialID . '.html"/>'); $this->template->styles = Resources::load_styles(); if (!$material['id']) { throw new HTTP_Exception_404(); } //обновляем просмотры $materials->updateViews($material['id']); $widgets[] = Request::factory('widgets/material/index/' . $materialID)->execute(); $this->template->block_center = $widgets; }
public function action_index() { $errors = array(); $materialId = $this->request->param('id'); $materials = new Model_Material('group'); //смотрим шаблон для виджета $widget = new Model_Widget(); $template = $widget->getTempalte('polls', $materialId); if ($template) { $this->template = View::factory('widgets/' . $template); } $name = 'polls_' . $materialId; $voted = FALSE; //Cookie::delete($name); if (Cookie::get($name)) { $voted = TRUE; } else { if (isset($_POST['save_polls'])) { $polls = new Model_Polls(); //сохраняем результаты голосования $result = $polls->vote($_POST['save_polls'], $_POST['answer']); if ($result) { //создаем куки по данному опросу if (!Cookie::set($name, 'voted', Date::YEAR)) { $errors[] = 'Вероятно в Вашем браузере отключены Cookie.'; } else { $voted = TRUE; } } } } $data = $materials->getMaterial($materialId); $fields = $materials->getFields2($materialId, TRUE); $fields2 = $materials->getFields2($materialId, FALSE); $this->template->data = $data; $this->template->fields = $fields; $this->template->fields2 = $fields2; $this->template->voted = $voted; //Получаем список меню }
public function newParam($mid, $pid, $value, $files = array(), $export = FALSE) { $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); /*ONLY FOR EXPORT OPTION!*/ if ($export == TRUE) { foreach ($value as $val) { $insert = DB::insert('files', array('id', 'value'))->values(array('', $val)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } else { for ($i = 0; $i < count($files['uploads']['name']); ++$i) { if ($files['uploads']['size'][$i] < 50000000 && $files['uploads']['size'][$i] > 100) { //расширение файла $ext = explode('.', $files['uploads']['name'][$i]); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $files['uploads']['name'][$i]); $ext = array_pop($extarr); //$filename = $material['url'] . '_'.substr(md5(microtime() * time()),0,rand(20,10)).'.'.$ext; $filename = $files['uploads']['name'][$i]; $names = explode('/', $filename); $title = array_pop($names); if (copy($files['uploads']['tmp_name'][$i], DOCROOT . $this->dir . $filename)) { $insert = DB::insert('files', array('id', 'value', 'title', 'size', 'ext'))->values(array('', DIRECTORY_SEPARATOR . $this->dir . $filename, $title, $files['uploads']['size'][$i], $ext)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } } } }
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 goSearch($string) { $materials = new Model_Material('groups'); //подключаем библиотеки require_once DOCROOT . 'application/classes/PHPMorphy/src/common.php'; $dir = DOCROOT . 'application/classes/PHPMorphy/dicts/'; $lang = 'ru_RU'; $opts = array('storage' => PHPMORPHY_STORAGE_FILE); try { $morphy = new phpMorphy($dir, $lang, $opts); } catch (phpMorphy_Exception $e) { die('Error occured while creating phpMorphy instance: ' . $e->getMessage()); } $data = array(); $request = null; $errors = null; if (!empty($string)) { // Очищаем от html-тегов и прочего $search = trim(addslashes(strip_tags($string))); $request = $search; } /* Создаем экземпляр phpMorphy */ if (!empty($search)) { // Обрабатываем данные как и в прошлом контроллере if (mb_strlen($search, "UTF-8") > 2) { preg_match_all('/([a-zа-яё]+)/ui', mb_strtoupper($search, "UTF-8"), $search_words); $words = $morphy->lemmatize($search_words[1]); $s_words = array(); $pre_result = array(); $sorter = array(); foreach ($words as $k => $w) { if (!$w) { $w[0] = $k; } if (mb_strlen($w[0], "UTF-8") > 2) { $s_words[] = $w[0]; } } if (!count($s_words)) { // Обрабатываем ошибку (нет ни одного слова длиннее 2 символов) } else { //перебираем каждое слово foreach ($s_words as $s_word) { //сначала ищем в названиях материалов $search_index = ORM::factory('Materials')->where('name', 'LIKE', '%' . $s_word . '%')->find_all(); foreach ($search_index as $si) { //если в другом слове было совпадение if (isset($pre_result[$si->id])) { //добавляем вес $sorter[$si->id] = $sorter[$si->id] + 2; $pre_result[$si->id]['weight'] = $pre_result[$si->id]['weight'] + 2; $pre_result[$si->id]['s_text'] = str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($pre_result[$si->id]['s_text'])); } else { $sorter[$si->id] = 2; $material = $materials->getMaterial($si->id); $pre_result[$si->id] = array('weight' => 2, 's_text' => str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($si->name))); } } //ищем в текстах $search_index = ORM::factory('Texts')->where('value', 'LIKE', '%' . $s_word . '%')->find_all(); foreach ($search_index as $si) { //получаем mid для материала $mid = $materials->getMidFromFieldId($si->id, 'texts'); if (isset($pre_result[$mid])) { $sorter[$mid] = $sorter[$mid] + 1; $pre_result[$mid]['weight'] = $pre_result[$mid]['weight'] + 1; $pre_result[$mid]['s_text'] = str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($pre_result[$mid]['s_text'])); } else { $pre_result[$mid] = array('weight' => 2, 's_text' => str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($si->value))); $sorter[$mid] = 1; } } //ищем в текстах $search_index = ORM::factory('Chars')->where('value', 'LIKE', '%' . $s_word . '%')->find_all(); foreach ($search_index as $si) { //получаем mid для материала $mid = $materials->getMidFromFieldId($si->id, 'chars'); if (isset($pre_result[$mid])) { $sorter[$mid] = $sorter[$mid] + 1; $pre_result[$mid]['weight'] = $pre_result[$mid]['weight'] + 1; $pre_result[$mid]['s_text'] = str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($pre_result[$mid]['s_text'])); } else { $pre_result[$mid] = array('weight' => 2, 's_text' => str_ireplace(mb_strtolower($s_word), '<b>' . $s_word . '</b>', strip_tags($si->value))); $sorter[$mid] = 1; } } } arsort($sorter); // Сортируем массив по весу результатов foreach ($sorter as $id => $weight) { // Тут, соответственно, получаем данные о результатах и помещаем в массив $data[] = $id; } } } else { // Обрабатываем ошибку - введен слишком короткий запрос } } else { // Обрабатываем ошибку - пустой поисковый запрос } return $data; }
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)); }
public function newParam($mid, $pid, $value, $files = array(), $export = FALSE) { $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); /*ONLY FOR EXPORT OPTION!*/ if ($export == TRUE) { foreach ($value as $val) { $server_name = Request::parseUrl($val); if ($server_name != Kohana::$base_url && $server_name != '') { $info = getimagesize($val); $ext = image_type_to_extension($info[2]); //смотрим сколько файлов в текущей папке файтов //генерируем имя изображения // $base = new Model_Base(); // $extarr = explode('.', $val); // $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . $ext; // if(exec("cp ".$val." ".DOCROOT . $this->dir . $filename)) if (copy($val, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки // $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(NULL, 90); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $val = DIRECTORY_SEPARATOR . $this->dir . $filename; } } $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', $val)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } else { for ($i = 0; $i < count($files['photos']['name']); ++$i) { if ($files['photos']['size'][$i] < 15000000 && $files['photos']['size'][$i] > 100) { //расширение файла $ext = explode('.', $files['photos']['name'][$i]); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $files['photos']['name'][$i]); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($files['photos']['tmp_name'][$i], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $size = explode(',', $options['upload_size']); if (count($size) == 2) { $size = explode(',', $options['upload_size']); $image->resize($size[0], $size[1]); } $crop = explode(',', $options['upload_crop']); if (count($crop) == 2) { $crop = explode(',', $options['upload_crop']); $image->crop($crop[0], $crop[1]); } //изменение размера по короткой стороне // $watermark=Image::factory(DOCROOT . '/img/watermark.png'); //берем изображение для водяного знака // // $offset_x = $image->width - $watermark->width - 10; // $offset_y = $image->height - $watermark->height - 10; // // $image->watermark($watermark, $offset_x, $offset_y, $opacity = 70); // var_dump($image); //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', DIRECTORY_SEPARATOR . $this->dir . $filename)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } } } }
public function newParam($mid, $pid, $value, $files = array(), $export = FALSE) { $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); /*ONLY FOR EXPORT OPTION!*/ if ($export == TRUE) { foreach ($value as $val) { $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', $val)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } else { for ($i = 0; $i < count($files['photos']['name']); ++$i) { if ($files['photos']['size'][$i] < 5500000 && $files['photos']['size'][$i] > 100) { //расширение файла $ext = explode('.', $files['photos']['name'][$i]); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $files['photos']['name'][$i]); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($files['photos']['tmp_name'][$i], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $size = explode(',', $options['upload_size']); if (count($size) == 2) { $size = explode(',', $options['upload_size']); if ($size[0] != 0 && $size[1] != 0) { $ratio = $image->width / $image->height; // Соотношение сторон нужных размеров $original_ratio = $size[0] / $size[1]; // Размеры, до которых обрежем картинку до масштабирования $crop_width = $image->width; $crop_height = $image->height; // Смотрим соотношения if ($ratio > $original_ratio) { // Если ширина картинки слишком большая для пропорции, // то будем обрезать по ширине $crop_width = round($original_ratio * $crop_height); } else { // Либо наоборот, если высота картинки слишком большая для пропорции, // то обрезать будем по высоте $crop_height = round($crop_width / $original_ratio); } // Обрезаем по высчитанным размерам до нужной пропорции $image->crop($crop_width, $crop_height); // Масштабируем картинку то точных размеров $image->resize($size[0], $size[1], Image::NONE); } else { $image->resize($size[0], $size[1]); } } //изменение размера по короткой стороне // $watermark=Image::factory(DOCROOT . '/img/watermark.png'); //берем изображение для водяного знака // // $offset_x = $image->width - $watermark->width - 10; // $offset_y = $image->height - $watermark->height - 10; // // $image->watermark($watermark, $offset_x, $offset_y, $opacity = 70); // var_dump($image); //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', DIRECTORY_SEPARATOR . $this->dir . $filename)); $result = $insert->execute(); $paramId = $result[0]; $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute(); } } } } }
public function action_fluid() { $this->setopt(array("name" => "material_id", "description" => "Ид статического материала", "default" => 1)); $material_id = $this->getopt('material_id'); $materials = new Model_Material('groups'); //смотрим шаблон для виджета $widget = new Model_Widget(); /* $pathway = Request::factory('widgets/breadcrumb/index') ->execute();*/ //получить содержимое папки $data = $materials->getMaterial($material_id); $fields = $materials->getFields2($material_id, true); $model = array("text" => $fields["text"]); if (isset($fields['files']) && !empty($fields['files'])) { $files = array(); foreach ($fields['files'] as $file) { $file["app_icon"] = "/img/apps_icon/" . strtolower($file['ext'] . ".png"); $file["size"] = round((int) $file['size'] / 1024); $files[] = $file; } $model["files"] = $files; } $this->set_template("widgets/static/fluid.php", "twig")->render($model)->body(); //$this->template->pathway = $pathway; //$this->template->data = array_merge($data, $fields); //$this->template->material = $data; // $this->template->fields = $fields; }
public function newParam($mid, $pid, $value, $files = array()) { $index = 'image_' . $pid; $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); if ($files[$index]['size'] > 0) { foreach ($files as $file_key => $file) { $file_param = explode('_', $file_key); if ($file_param[0] == 'image') { //загружаем изображение if ($file['size'] < 5000000 && $file['size'] > 0) { $ext = explode('.', $file['name']); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $file['name']); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); $size = explode(',', $options['upload_size']); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения if (count($size) == 2) { $size = explode(',', $options['upload_size']); if ($size[0] != 0 && $size[1] != 0) { $ratio = $image->width / $image->height; // Соотношение сторон нужных размеров $original_ratio = $size[0] / $size[1]; // Размеры, до которых обрежем картинку до масштабирования $crop_width = $image->width; $crop_height = $image->height; // Смотрим соотношения if ($ratio > $original_ratio) { // Если ширина картинки слишком большая для пропорции, // то будем обрезать по ширине $crop_width = round($original_ratio * $crop_height); } else { // Либо наоборот, если высота картинки слишком большая для пропорции, // то обрезать будем по высоте $crop_height = round($crop_width / $original_ratio); } // Обрезаем по высчитанным размерам до нужной пропорции $image->crop($crop_width, $crop_height); // Масштабируем картинку то точных размеров $image->resize($size[0], $size[1], Image::NONE); } else { $image->resize($size[0], $size[1]); } } //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } } } } else { $server_name = Request::parseUrl($value); if ($server_name != Kohana::$base_url && $server_name != '') { $ext = explode('.', $value); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $value); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($value, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } else { $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value); } } //сохраняем картинку $insert = DB::insert('images', array('id', 'value'))->values(array('', $value)); $result = $insert->execute(); $insertId = $result[0]; //Добавляем связь материала с папкой $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute(); if ($insert != NULL) { return TRUE; } else { return FALSE; } }
public function newParam($mid, $pid, $value, $files = array()) { $index = 'image_' . $pid; $materials = new Model_Material('group'); $material = $materials->getMaterial($mid); if ($files[$index]['size'] > 0) { foreach ($files as $file_key => $file) { $file_param = explode('_', $file_key); if ($file_param[0] == 'image') { //загружаем изображение if ($file['size'] < 5000000 && $file['size'] > 0) { $ext = explode('.', $file['name']); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $file['name']); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) { $base = new Model_Base(); $options = $base->getOptions(); $size = explode(',', $options['upload_size']); //изменяем картинку //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения // if(count($size)==2) // { // $size = explode(',', $options['upload_size']); // $image->resize($size[0], $size[1]); // } //сохраняем новое изображение $image->save(NULL, $options['image_quality']); //первый параметр - путь, имя и формат изображения. Второй - качество изображения $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } } } } else { $server_name = Request::parseUrl($value); if ($server_name != Kohana::$base_url && $server_name != '') { $ext = explode('.', $value); $extension = array_pop($ext); //генерируем имя изображения $base = new Model_Base(); $extarr = explode('.', $value); $ext = array_pop($extarr); $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext; if (copy($value, DOCROOT . $this->dir . $filename)) { //загружаем их к себе //открываем изображение $image = Image::factory(DOCROOT . $this->dir . $filename); //начинаем работу с нужной картинкой. Путь указан от корня приложения //меняем размер картинки $image->resize(800, 1000); //изменение размера по короткой стороне //сохраняем новое изображение $image->save(); //первый параметр - путь, имя и формат изображения. Второй - качество изображения unset($image); $value = DIRECTORY_SEPARATOR . $this->dir . $filename; } } else { $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value); } } //сохраняем картинку $insert = DB::insert('images', array('id', 'value'))->values(array('', $value)); $result = $insert->execute(); $insertId = $result[0]; //Добавляем связь материала с папкой $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute(); if ($insert != NULL) { return TRUE; } else { return FALSE; } }
public function action_room() { $base = new Model_Base(); $options = $base->getOptions(); if (!isset($options['room']) || $options['room'] != 'TRUE') { Controller::redirect('/'); } $this->template->title = 'Личный кабинет'; $this->template->page_title = 'Личный кабинет'; $this->template->keywords = 'Личный кабинет'; $this->template->description = 'Личный кабинет'; $data = array(); $errors = array(); $widgets = $this->getWidgets(0); $auth = Auth::instance(); // var_dump($auth->hash($_POST['password'])); if (is_array($widgets)) { foreach ($widgets as $position => $widget) { $this->template->{$position} = $widget; } } if (!$auth->logged_in('visitor')) { if (isset($_POST['login'])) { $username = Arr::get($_POST, 'username', ''); $password = Arr::get($_POST, 'password', ''); if ($auth->login($username, $password)) { //print('Залогинен'); $session = Session::instance(); $auth_redirect = $session->get('auth_redirect', ''); $session->delete('auth_redirect'); Controller::redirect('/user'); } else { //print('Ошибка'); $errors[] = 'Не верный логин или пароль.'; } } $this->template->block_center[] = View::factory('widgets/w_auth')->bind('errors', $errors); } else { $param = $this->request->param('act'); $materals = new Model_Material('group'); //получаем пользователя $user = $auth->get_user(); if ($param == 'show') { $user_orders = Module::create(array("controller" => "user/cabinet/orders", "action" => "index", "options" => array())); //echo $user_orders["body"]; //получаем материалы пользователя $data['materials'] = $materals->getUserMaterials($user->id); //$this->template->block_center[] = $user_orders["body"]; //return new View($file, $data); /*$page = View::factory('widgets/w_room') ->bind('errors', $errors) ->bind('messages', $messages) ->bind('data', $data); var_dump($page);*/ // --- tests ------------------------------------------------------------- $this->template->title = 'Личный кабинет'; $this->template->page_title = 'Личный кабинет'; $this->template->keywords = 'Личный кабинет'; $this->template->description = 'Личный кабинет'; $auth = Auth::instance(); if ($auth->logged_in() != 0) { $this->template->content = View::factory('admin/admIndex'); } else { $this->template->content = View::factory('admin/admLogin'); if (isset($_POST['enter'])) { $username = Arr::get($_POST, 'username', ''); $password = Arr::get($_POST, 'password', ''); if ($auth->login($username, $password)) { //print('Залогинен'); $session = Session::instance(); $auth_redirect = $session->get('auth_redirect', ''); $session->delete('auth_redirect'); Controller::redirect($auth_redirect); } else { //print('Ошибка'); $this->template->error = 'Не верный логин или пароль.'; } } } // --- tests ------------------------------------------------------------- //exit(); } elseif ($param == 'edit') { $materialId = $this->request->param('id'); //получаем материал $data['material'] = $materals->getMaterial($materialId, $user->id); if ($data['material']) { $gid = $materals->getGroupFromMid($materialId); $data['fieldset'] = $materals->getFieldsSet($gid); //получаем поля $data['fields'] = $materals->getFields($materialId, TRUE); } else { $errors[] = 'Данный материал не найден'; } } elseif ($param == 'settings') { if (isset($_POST['save_settings'])) { //сохраняем настройки $modelUser = new Model_User(); $res = $modelUser->saveUser($_POST, $user->id); if (is_array($res)) { $errors = $res; } else { $messages[] = $res; } } $data['user'] = ORM::factory('User', array('id' => $user->id)); } $this->template->block_center[] = View::factory('widgets/w_room')->bind('errors', $errors)->bind('messages', $messages)->bind('data', $data); } }