Пример #1
0
 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;
 }
Пример #2
0
 public function action_index()
 {
     if ($_FILES['upload']) {
         if ($_FILES['upload'] == "none" or empty($_FILES['upload']['name'])) {
             $message = "Вы не выбрали файл";
         } else {
             if ($_FILES['upload']["size"] == 0 or $_FILES['upload']["size"] > 12050000) {
                 $message = "Размер файла не соответствует нормам";
             } else {
                 if ($_FILES['upload']["type"] != "image/jpeg" and $_FILES['upload']["type"] != "image/jpeg" and $_FILES['upload']["type"] != "image/png") {
                     $message = "Допускается загрузка только картинок JPG и PNG.";
                 } else {
                     if (!is_uploaded_file($_FILES['upload']["tmp_name"])) {
                         $message = "Что-то пошло не так. Попытайтесь загрузить файл ещё раз.";
                     } else {
                         $message = '';
                         $uploadDir = $this->uploads_dir();
                         $ext = explode('.', $_FILES['upload']['name']);
                         $extension = array_pop($ext);
                         $base = new Model_Base();
                         $extarr = explode('.', $_FILES['upload']['name']);
                         $ext = array_pop($extarr);
                         $name = implode('', $extarr);
                         $name = substr(md5(microtime() * time()), 0, rand(20, 10));
                         //$name =rand(1, 1000).'-'.md5($_FILES['upload']['name']).'.'.$ext;
                         $filename = $base->str2url($name) . '.' . $ext;
                         //$filename = substr(md5(microtime() * time()),0,rand(20,10)).'.'.$extension;
                         if (copy($_FILES['upload']['tmp_name'], $uploadDir . "/" . $filename)) {
                             $message = "Файл " . $name . " загружен";
                         }
                         //                $name =rand(1, 1000).'-'.md5($_FILES['upload']['name']).'.'.$this->getex($_FILES['upload']['name']);
                         //                move_uploaded_file($_FILES['upload']['tmp_name'], "/img/user/".$name);
                         //                $full_path = 'http://sp-salon.ru/img/user/'.$name;
                         //                $message = "Файл ".$_FILES['upload']['name']." загружен";
                         //                $size=@getimagesize('/img/user/'.$name);
                         //                if($size[0]<50 OR $size[1]<50){
                         //                    unlink('/img/user/'.$name);
                         //                    $message = "Файл не является допустимым изображением";
                         //                    $full_path="";
                         //                }
                     }
                 }
             }
         }
         $callback = $_REQUEST['CKEditorFuncNum'];
         echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("' . $callback . '", "' . DIRECTORY_SEPARATOR . $this->baseDir . $filename . '", "' . $message . '" );</script>';
     }
 }
Пример #3
0
 public function action_index($subdir = NULL)
 {
     //получаем все папки из папки baseDir
     $dir = $this->uploads_dir();
     if (isset($_POST['delPictures'])) {
         $dirName = $this->request->param('id');
         $arr = $_POST;
         unset($arr['dirName']);
         unset($arr['delPictures']);
         foreach ($arr as $picture => $value) {
             $path = $dir . $dirName . '/' . str_replace('^', '.', $picture);
             //var_dump($path);
             if (file_exists($path)) {
                 // удаляем файл
                 unlink($path);
             }
         }
     }
     if (isset($_POST['deleteDir'])) {
         $dirName = Arr::get($_POST, 'dirName') . '/';
         $result = $this->RemoveDir($dirName);
         //chdir ($parent); //путь где создавать папку
         //mkdir ($folderName, 0770); //имя папки и атрибуты на папку
     }
     if (isset($_POST['add_folder'])) {
         $folderName = Arr::get($_POST, 'folderName');
         $base = new Model_Base();
         $folderName = $base->str2url($folderName);
         $parent = $dir . Arr::get($_POST, 'parentName');
         //var_dump($parent);
         chdir($parent);
         //путь где создавать папку
         mkdir($folderName, 0777);
         //имя папки и атрибуты на папку
     }
     if (isset($_POST['filesUpload'])) {
         //get uploadDir
         $uploadDir = Arr::get($_POST, 'dir');
         //перебираем массив файлов
         for ($i = 0; $i < count($_FILES['file']['name']); ++$i) {
             if ($_FILES['file']['size'][$i] > 3300000) {
                 echo 'Файл не должен быть больше 3 Мб';
             } else {
                 $ext = explode('.', $_FILES['file']['name'][$i]);
                 $extension = array_pop($ext);
                 $base = new Model_Base();
                 $extarr = explode('.', $_FILES['file']['name'][$i]);
                 $ext = array_pop($extarr);
                 $name = implode('', $extarr);
                 $filename = $base->str2url($name) . '.' . $ext;
                 //$filename = substr(md5(microtime() * time()),0,rand(20,10)).'.'.$extension;
                 if (copy($_FILES['file']['tmp_name'][$i], $uploadDir . "/" . $filename)) {
                     $img = $uploadDir . "/" . $filename;
                 }
             }
         }
     }
     $folder = $dir . $this->request->param('id');
     if ($folder) {
         if (is_dir($folder)) {
             if ($dh = opendir($folder)) {
                 while (($file = readdir($dh)) !== false) {
                     if (filetype($folder . '/' . $file) != 'dir') {
                         $this->files[] = array('name' => $file, 'mime' => File::mime($folder . '/' . $file));
                     }
                 }
                 closedir($dh);
             }
         }
     }
     $folders = $this->getFolders();
     $this->template->content = View::factory('admin/admFiles', array('folders' => $folders, 'files' => $this->files, 'basedir' => $folder, 'user' => $this->user));
 }
Пример #4
0
 public function createFromGroups($parentId, $groupId)
 {
     $material = new Model_Material('groups');
     $base = new Model_Base();
     //получаем дерево групп
     $groups = $material->getTree($groupId);
     // 1. Получаем количество групп
     $groupCount = count($groups);
     // 2. Получаем крайний правый ключ
     $parentGroup = $material->getNode($groupId);
     $rightKey = (int) $parentGroup['right_key'] + 1;
     // 3. Получаем левый ключ
     $parentNode = $this->nstree->getNode($parentId);
     // получаем левел
     $level = (int) $parentNode['level'];
     $leftKey = (int) $parentNode['left_key'] + 1;
     //echo $leftKey.'-'.$rightKey;
     $this->nstree->modifyNodes($leftKey, $rightKey);
     $parent_node_lk = $parentNode["left_key"];
     $parent_node_rk = $parentNode["right_key"];
     $parent_node_level = $parentNode["level"];
     $parent_group_lk = $parentGroup["left_key"];
     $parent_group_rk = $parentGroup["left_key"];
     $parent_group_level = $parentGroup["level"];
     foreach ($groups as $group) {
         // Преобразование level'a группы для ноды
         $level_offset = $parent_node_level - $parent_group_level;
         $url = $base->str2url($group["name"]);
         while (!$this->unique_url($url)) {
             $url = $url . "-";
         }
         $node = array("name" => $group["name"], "url" => $url, "id" => NULL, "left_key" => $group["left_key"] + $leftKey, "right_key" => $group["right_key"] + $leftKey, "level" => $group["level"] + $level_offset);
         list($insert_id, $tmp) = DB::insert("tree", array_keys($node))->values(array_values($node))->execute();
         DB::query(NULL, "COMMIT")->execute();
         //Подключаем материалы
         $action = "sidebar";
         $left_menu = array("id" => NULL, "node_id" => $insert_id, "widget_id" => 2, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_parent_id":"' . $parentId . '"}', "position" => "left_block", "title" => "Меню", "ordering" => 10);
         //list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute();
         DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute();
         $action = "index";
         $catalog = array("id" => NULL, "node_id" => $insert_id, "widget_id" => 1, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_catalog_id":"' . $group['id'] . '"}', "position" => "right_block", "title" => "Каталог", "ordering" => 10);
         //list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute();
         DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute();
     }
     /*foreach ($groups as $group)
     		{
     			//берем узел
     			//var_dump($group);
     			//обновляем данные
     			
     			$url = $base->str2url($group["name"]);
     
     			while(!$this->unique_url($url))
     			{
     				$url = $url."-";
     			}
     
     			$extrafields = array("name" => $group["name"], "url" =>$url);
     			$node = array(
     				"id" => NULL,
     				"left_key" => $group["left_key"] + $leftKey,
     				"right_key" => $group["right_key"] + $leftKey,
     				"level" => $group["level"] + $level
     			);
     			$node = $node + $extrafields;
     			list($insert_id, $tmp) = DB::insert("tree", array_keys($node))->values(array_values($node))->execute();
     
     			DB::query(NULL, "COMMIT")->execute();
     			
     			//Подключаем материалы
     
     			$action = "sidebar";
     
     			$left_menu = array(
     				"id" => NULL,
     				"node_id" => $insert_id,
     				"widget_id" => 1,
     				"param"     => "twig",
     				"action" => $action,
     				"options" => '{"' . $action . '_parent_id":"' . $parentId . '"}',
     				"position"  => "left_block",
     				"title"     => "Меню",
     				"ordering"  => 10,
     			);
     
     			list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute();
     
     			$action = "index";
     			
     			$catalog = array(
     				"id" => NULL,
     				"node_id" => $insert_id,
     				"widget_id" => 1,
     				"param"     => "twig",
     				"action" => $action,
     				"options" => '{"' . $action . '_catalog_id":"' . $group['id'] . '"}',
     				"position"  => "right_block",
     				"title"     => "Каталог",
     				"ordering"  => 10,
     			);
     
     			list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute();
     			
     		}*/
 }
Пример #5
0
 public function action_index()
 {
     $id = $this->request->param('id');
     if ($id == 'export') {
         $query = 'SELECT * FROM vz_catalog ORDER BY act DESC LIMIT 700, 100';
         $result = DB::query(Database::SELECT, $query)->execute()->as_array();
         $types = array('', 'База отдыха', 'Загородный отель', 'Санаторий', 'Кемпинг', 'Гостиница', 'Конно - спортивный клуб', 'Коттедж');
         $region = array('0' => '', '66' => 'Свердловская область', '74' => 'Челябинская область', '72' => 'Тюменская область', '59' => 'Пермский край', '2' => 'Башкортостан');
         $facialities = array('0' => '', '1' => 'Баня', '3' => 'Баня, Бассейн', '4' => 'Бильярд', '5' => 'Баня, Бильярд', '7' => 'Баня, Бассейн, Бильярд', '9' => 'Баня, Лес', '11' => 'Баня, Бассейн, Лес', '13' => 'Баня, Бильярд, Лес', '15' => 'Баня, Бассейн, Бильярд, Лес', '17' => 'Баня, Водоем', '20' => 'Бильярд, Водоем', '21' => 'Баня, Бильярд, Водоем', '23' => 'Баня, Бассейн, Бильярд, Водоем', '24' => 'Лес, Водоем', '25' => 'Баня, Лес, Водоем', '27' => 'Баня, Бассейн, Лес, Водоем', '29' => 'Баня, Бильярд, Лес, Водоем', '31' => 'Баня, Бассейн, Бильярд, Лес, Водоем', '33' => 'Баня, Питание', '35' => 'Баня, Бассейн, Питание', '37' => 'Баня, Бильярд, Питание', '39' => 'Баня, Бассейн, Бильярд, Питание', '40' => 'Лес, Питание', '41' => 'Баня, Лес, Питание', '43' => 'Баня, Бассейн, Лес, Питание', '44' => 'Бильярд, Лес, Питание', '45' => 'Баня, Биллиард, Лес, Питание', '47' => 'Баня, Бассейн, Бильярд, Лес, Питание', '49' => 'Баня, Лес, Питание', '51' => 'Баня, Бассейн, Лес, Питание', '53' => 'Баня, Бильярд, Лес, Питание', '56' => 'Лес, Водоем, Питание', '57' => 'Баня, Лес, Водоем, Питание', '58' => 'Бассейн, Лес, Водоем, Питание', '59' => 'Баня, Бассейн, Лес, Водоем, Питание', '60' => 'Бильярд, Лес, Водоем, Питание', '61' => 'Баня, Бильярд, Лес, Водоем, Питание', '63' => 'Баня, Бассейн, Бильярд, Лес, Водоем, Питание', '65' => 'Баня, Бассейн, Бильярд, Лес, Водоем, Питание');
         $base = new Model_Base();
         $material = new Model_Material('group');
         $counter = 0;
         foreach ($result as $item) {
             $photos = array();
             $dates = array();
             $faciality = array();
             $dquery = 'SELECT busy_date FROM vz_calendar WHERE cottage_id =' . $item['id'];
             $dresult = DB::query(Database::SELECT, $dquery)->execute()->as_array();
             if (isset($facialities[$item['opt']])) {
                 $ifaciality = explode(',', $facialities[$item['opt']]);
             } else {
                 $ifaciality = array();
             }
             foreach ($ifaciality as $fitem) {
                 $faciality[] = trim($fitem);
             }
             foreach ($dresult as $date) {
                 $dates[] = $date['busy_date'];
             }
             $pquery = 'SELECT id, title FROM vz_images WHERE top = ' . $item['id'] . ' ORDER by ord';
             $presult = DB::query(Database::SELECT, $pquery)->execute()->as_array();
             foreach ($presult as $pitem) {
                 $id = intval($pitem['id']);
                 if ($id < 1000) {
                     $folder = 0;
                 }
                 if ($id > 999 && $id < 10000) {
                     $folder = substr($id, 0, 1);
                 }
                 if ($id > 9999) {
                     $folder = substr($id, 0, 2);
                 }
                 $photos[] = '/img/user/catalog/' . $folder . '/' . $pitem['id'] . 'b.jpg';
             }
             if ($item['act'] == 1) {
                 $sleep = 0;
             } else {
                 $sleep = 1;
             }
             $insert = array('title' => $item['name'], 'url' => $base->str2url($item['name']), 'description' => $item['description'], 'sleep' => $sleep, 'date_241' => $dates, 'select_223' => array($types[$item['object_type']]), 'chars_224' => $item['pagetitle'], 'chars_225' => $item['spec_offer'], 'chars_226' => $item['spec_price'], 'chars_227' => $item['city'], 'select_228' => array($region[$item['region']]), 'chars_229' => $item['len'], 'chars_230' => $item['path'], 'select_231' => $faciality, 'chars_232' => $item['bad1'], 'chars_233' => $item['bad2'], 'chars_234' => $item['rooms'], 'price_235' => $item['cost'], 'chars_236' => $item['dayprice'], 'chars_237' => $item['people'], 'chars_238' => $item['mincapacity'], 'chars_239' => $item['capacity'], 'photoalbum_243' => $photos, 'texts_242' => $item['content']);
             $res = $material->newMaterial($insert, '33', array(), TRUE);
             if ($res) {
                 ++$counter;
             } else {
                 $this->data['errors'][] = 'Материал ' . $item['name'] . ' не был добавлен';
             }
             //
             //                echo '<pre>';
             //                var_dump($insert);
             //                echo '<pre>';
         }
         $this->data['messages'][] = 'Добавлено ' . $counter . ' материалов';
     } elseif ($id == 'comments') {
         //перебираем все отзывы
         $query = 'SELECT a.*, b.name AS obj_name FROM vz_reviews a, vz_catalog b WHERE a.object_id = b.id ORDER BY object_id DESC LIMIT 0, 1000';
         $result = DB::query(Database::SELECT, $query)->execute()->as_array();
         $cnt = 0;
         foreach ($result as $comment) {
             $q = 'SELECT id FROM materials WHERE name =\'' . $comment['obj_name'] . '\'';
             $res = DB::query(Database::SELECT, $q)->execute()->current();
             if ($res) {
                 $q1 = "UPDATE vz_reviews SET object_id = " . $res['id'] . ' WHERE id =' . $comment['id'];
                 $res1 = DB::query(Database::UPDATE, $q1)->execute();
                 if (!$res1) {
                     $this->data['errors'][] = $q1;
                 } else {
                     ++$cnt;
                 }
             }
         }
         $this->data['messages'][] = 'Обновлено ' . $cnt . ' комментариев';
     } elseif ($id == 'update_id') {
         $cnt = 0;
         //ПЕРЕБИРАЕМ ВСЕ КОТТЕДЖИ
         $query = 'SELECT * FROM vz_catalog WHERE act!=0 ORDER BY act DESC LIMIT 0, 500';
         $result = DB::query(Database::SELECT, $query)->execute()->as_array();
         foreach ($result as $item) {
             //делаем запрос по названию
             $q = 'UPDATE materials SET old_id = ' . $item['id'] . ' WHERE name = \'' . $item['name'] . '\'';
             $res = DB::query(Database::UPDATE, $q)->execute();
             if (!$res) {
                 $this->data['errors'][] = $q;
             } else {
                 ++$cnt;
             }
         }
     }
     $this->template->content = View::factory('admin/admScripts', array('data' => $this->data, 'user' => $this->user));
 }
Пример #6
0
 public static function str2url($str)
 {
     $base = new Model_Base();
     return $base->str2url($str);
 }
Пример #7
0
 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>');
 }