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() { 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>'; } }
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)); }
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(); }*/ }
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)); }
public static function str2url($str) { $base = new Model_Base(); return $base->str2url($str); }
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>'); }