public function edit($id, $fromAdmin = false) { global $mysql, $langArray, $attributes; //作品详情 $item_info = $this->get($id); $user_id = $_SESSION['user']['user_id']; if (!$user_id) { return false; } //临时文件目录 $temporary_dir = DATA_SERVER_PATH . 'uploads/temporary/' . $user_id . '/'; if (!isset($_POST['description']) || trim($_POST['description']) == '') { $error['description'] = $langArray['error_not_set_description']; } if ($fromAdmin && (!isset($_POST['price']) || trim($_POST['price']) == '' || $_POST['price'] == '0')) { $error['price'] = $langArray['error_not_set_price']; } if (isset($_POST['demo_url']) && trim($_POST['demo_url']) && filter_var($_POST['demo_url'], FILTER_VALIDATE_URL) === false) { $error['demo_url'] = $langArray['error_demo_url']; } if (!isset($_POST['category'])) { $error['category'] = $langArray['error_not_set_category']; } elseif (!is_numeric($_POST['category']) && !is_array($_POST['category'])) { $error['category'] = $langArray['error_not_set_category']; } if (!isset($_POST['tags']) || empty($_POST['tags'])) { $error['tags_features'] = $langArray['error_not_set_tags']; } else { $tags_data = explode(',', $_POST['tags']); if (count($tags_data) > 6) { $error['tags_features'] = $langArray['error_not_set_tags_tomore']; } } //作品非active状态禁止修改文件------------ $edit_file_num = 0; //修改文件是否存在 if (file_exists($temporary_dir . $_POST['thumbnail']) || file_exists($temporary_dir . $_POST['first_preview']) || file_exists($temporary_dir . $_POST['main_file'])) { $edit_file_num++; } //预览图 $theme_preview_arr = explode(',', $_POST['theme_preview']); foreach ($theme_preview_arr as $file_exis) { if (file_exists($temporary_dir . $file_exis)) { $edit_file_num++; } } if ($item_info['status'] != 'active' && $edit_file_num > 0) { $error['file_status_error'] = $langArray['file_status_error']; } //(缩略图) if (isset($_POST['thumbnail']) && trim($_POST['thumbnail']) != '') { $file = pathinfo($_POST['thumbnail']); if (!in_array(strtolower($file['extension']), $this->support_format(1))) { $error['thumbnail'] = $langArray['error_thumbnail_jpg']; } } // (预览图) if (isset($_POST['theme_preview'])) { $theme_preview_arr = explode(',', $_POST['theme_preview']); if (!isset($theme_preview_arr) || !is_array($theme_preview_arr)) { $error['theme_preview'] = $langArray['error_not_set_theme_preview']; } else { foreach ($theme_preview_arr as $theme_f) { $theme_file = pathinfo($theme_f); if (!in_array(strtolower($theme_file['extension']), $this->support_format(0))) { $error['theme_preview'] = $langArray['error_theme_preview_jpg']; } } } } // (封面) if (isset($_POST['first_preview']) && trim($_POST['first_preview']) != '') { $file = pathinfo($_POST['first_preview']); if (!in_array(strtolower($file['extension']), $this->support_format(0))) { $error['first_preview'] = $langArray['error_theme_preview_jpg']; } } // (主程序包) if (isset($_POST['main_file']) && trim($_POST['main_file']) != '') { $file = pathinfo($_POST['main_file']); if (strtolower($file['extension']) != 'zip') { $error['main_file'] = $langArray['error_main_file_zip']; } } if (is_array($attributes)) { $attributesError = false; foreach ($attributes as $a) { if (!isset($_POST['attributes'][$a['id']])) { $attributesError = true; break; } } if ($attributesError) { $error['attributes'] = $langArray['error_set_all_attributes']; } } if (isset($error)) { return $error; } $setQuery = ''; if ($fromAdmin) { $setQuery .= " `price` = '" . sql_quote($_POST['price']) . "', "; if (isset($_POST['free_file'])) { $setQuery .= " `free_file` = 'true', "; } //周推荐至-时间 if (isset($_POST['weekly_to']) && trim($_POST['weekly_to']) != '') { $setQuery .= " `weekly_to` = '" . sql_quote($_POST['weekly_to']) . "', "; } } //演示地址 if (!isset($_POST['demo_url'])) { $_POST['demo_url'] = ''; } //作品状态是否为请求免费上架状态 if (!isset($_POST['free_request'])) { $_POST['free_request'] = 'false'; } //更新作品表 $mysql->query("\n\t\t\tUPDATE `items`\n\t\t\tSET `description` = '" . sql_quote($_POST['description']) . "',\n\t\t\t\t\t`free_request` = '" . sql_quote($_POST['free_request']) . "',\n\t\t\t\t\t{$setQuery}\n\t\t\t\t\t`demo_url` = '" . sql_quote($_POST['demo_url']) . "'\n\t\t\tWHERE `id` = '" . intval($id) . "'\n\t\t\tLIMIT 1\n\t\t"); require_once ROOT_PATH . '/apps/categories/models/categories.class.php'; $categoriesClass = new categories(); $allCategories = $categoriesClass->getAll(); $mysql->query("DELETE FROM `items_to_category` WHERE `item_id` = '" . intval($id) . "'"); if (is_array($_POST['category'])) { foreach ($_POST['category'] as $category_id) { $categories = $categoriesClass->getCategoryParents($allCategories, $category_id); $categories = explode(',', $categories); array_pop($categories); $categories = array_reverse($categories); $categories = ',' . implode(',', $categories) . ','; $mysql->query("\n\t\t\t\t\tINSERT INTO `items_to_category` (\n\t\t\t\t\t\t`item_id`,\n\t\t\t\t\t\t`categories`\n\t\t\t\t\t) \n\t\t\t\t\tVALUES (\n\t\t\t\t\t\t'" . intval($id) . "',\n\t\t\t\t\t\t'" . sql_quote($categories) . "'\n\t\t\t\t\t)\n\t\t\t\t"); } } else { $categories = $categoriesClass->getCategoryParents($allCategories, $_POST['category']); $categories = explode(',', $categories); array_pop($categories); $categories = array_reverse($categories); $categories = ',' . implode(',', $categories) . ','; $mysql->query("\n\t\t\t\tINSERT INTO `items_to_category` (\n\t\t\t\t\t`item_id`,\n\t\t\t\t\t`categories`\n\t\t\t\t) \n\t\t\t\tVALUES (\n\t\t\t\t\t'" . intval($id) . "',\n\t\t\t\t\t'" . sql_quote($categories) . "'\n\t\t\t\t)\n\t\t\t"); } //更新属性 $mysql->query("\n\t\t\tDELETE FROM `items_attributes`\n\t\t\tWHERE `item_id` = '" . intval($id) . "'\n\t\t"); $_POST['attributes'] = (array) (isset($_POST['attributes']) ? $_POST['attributes'] : array()); foreach ($_POST['attributes'] as $cID => $a) { if (is_array($a)) { foreach ($a as $ai) { if (!trim($ai)) { continue; } $mysql->query("\n\t\t\t\t\t\tINSERT INTO `items_attributes` (\n\t\t\t\t\t\t\t`item_id`,\n\t\t\t\t\t\t\t`attribute_id`,\n\t\t\t\t\t\t\t`category_id`\n\t\t\t\t\t\t)\n\t\t\t\t\t\tVALUES (\n\t\t\t\t\t\t\t'" . intval($id) . "',\n\t\t\t\t\t\t\t'" . sql_quote($ai) . "',\n\t\t\t\t\t\t\t'" . sql_quote($cID) . "'\n\t\t\t\t\t\t)\n\t\t\t\t\t"); } } else { if (!trim($a)) { continue; } $mysql->query("\n\t\t\t\t\tINSERT INTO `items_attributes` (\n\t\t\t\t\t\t`item_id`,\n\t\t\t\t\t\t`attribute_id`,\n\t\t\t\t\t\t`category_id`\n\t\t\t\t\t)\n\t\t\t\t\tVALUES (\n\t\t\t\t\t\t'" . intval($id) . "',\n\t\t\t\t\t\t'" . sql_quote($a) . "',\n\t\t\t\t\t\t'" . sql_quote($cID) . "'\n\t\t\t\t\t)\n\t\t\t\t"); } } if ($fromAdmin) { //免费 if (isset($_POST['free_file'])) { $this->addUserStatus($id, 'freefile'); $mysql->query("\n\t\t\t\t\tUPDATE `items`\n\t\t\t\t\tSET `free_file` = 'true'\n\t\t\t\t\tWHERE `id` = '" . intval($id) . "'\n\t\t\t\t\tLIMIT 1\n\t\t\t\t"); } else { $mysql->query("\n\t\t\t\t\tUPDATE `items`\n\t\t\t\t\tSET `free_file` = 'false'\n\t\t\t\t\tWHERE `id` = '" . intval($id) . "'\n\t\t\t\t\tLIMIT 1\n\t\t\t\t"); } if (isset($_POST['weekly_to']) && trim($_POST['weekly_to']) != '') { $this->addUserStatus($id, 'featured'); } $key_num = 0; $setQuery_e = ''; //缩略图 if (isset($_POST['thumbnail']) && trim($_POST['thumbnail']) != '' && file_exists($temporary_dir . $_POST['thumbnail'])) { //检测文件是否被修改 $thumbnail_is = $this->is_edit_item_file($id); $path_file_name = pathinfo($thumbnail_is['thumbnail']); if ($_POST['thumbnail'] != $path_file_name['basename']) { unlink(DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $path_file_name['basename']); require_once ENGINE_PATH . '/classes/image.class.php'; $imageClass = new Image(); //缩略图 $temporary_thumbnail_file = $temporary_dir . $_POST['thumbnail']; //裁剪缩略图 $imageClass->crop($temporary_thumbnail_file, 90, 90); copy($temporary_thumbnail_file, DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $_POST['thumbnail']); @unlink($temporary_thumbnail_file); $setQuery_e .= ", `thumbnail` = '" . $_POST['thumbnail'] . "'"; $key_num++; } } //预览图 $theme_preview_arr = explode(',', $_POST['theme_preview']); if (isset($theme_preview_arr) && is_array($theme_preview_arr)) { //获取所有预览图 $all_preview = $this->get_theme_preview($id); //预览图路径 $all_preview_dir = array(); foreach ($all_preview as $pre) { $view = pathinfo($pre['dir']); $all_preview_dir[] = $view['basename']; //文件是否修改 if (!in_array($view['basename'], $theme_preview_arr)) { //删除预览 $this->del_preview_by_id($pre['id']); unlink(DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/preview/' . $view['basename']); } } foreach ($theme_preview_arr as $post_theme_file) { //判断文件是否被修改 if (!in_array($post_theme_file, $all_preview_dir)) { //判断文件格式 copy($temporary_dir . $post_theme_file, DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/preview/' . $post_theme_file); @unlink($temporary_dir . $post_theme_file); #插入预览图 $this->save_theme_preview($id, DATA_SERVER . '/uploads/' . $this->uploadFileDirectory . $id . '/preview/' . $post_theme_file); $key_num++; } } } //封面预览图 if (isset($_POST['first_preview']) && trim($_POST['first_preview']) != '' && file_exists($temporary_dir . $_POST['first_preview'])) { //检测文件是否被修改 $first_preview_is = $this->is_edit_item_file($id); $path_first_file_name = pathinfo($first_preview_is['theme_preview']); if ($_POST['first_preview'] != $path_first_file_name['basename']) { $temporary_first_preview_file = $temporary_dir . $_POST['first_preview']; unlink(DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $path_first_file_name['basename']); copy($temporary_first_preview_file, DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $_POST['first_preview']); @unlink($temporary_first_preview_file); $setQuery_e .= ", `theme_preview` = '" . $_POST['first_preview'] . "'"; $key_num++; } } //主程序包 if (isset($_POST['main_file']) && trim($_POST['main_file']) != '' && file_exists($temporary_dir . $_POST['main_file'])) { //检测文件是否被修改 $main_file_is = $this->is_edit_item_file($id); $path_first_file_name = pathinfo($main_file_is['main_file']); if ($_POST['main_file'] != $path_first_file_name['basename']) { unlink(DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $path_first_file_name['basename']); $temporary_main_file = $temporary_dir . $_POST['main_file']; copy($temporary_main_file, DATA_SERVER_PATH . '/uploads/' . $this->uploadFileDirectory . $id . '/' . $_POST['main_file']); @unlink($temporary_main_file); $key_num++; //更新文件名 $setQuery_e .= ", `main_file` = '" . $_POST['main_file'] . "'"; // $setQuery_e .= ", `main_file_name` = '".sql_quote($_SESSION['temp']['edit_item']['main_file_name'])."' "; } } } if ($key_num > 0) { //更新作品状态 $mysql->query("\n\t\t\t\tUPDATE `items`\n\t\t\t\tSET `status` = 'queue' {$setQuery_e}\n\t\t\t\tWHERE `id` = '" . intval($id) . "'\n\t\t\t\tLIMIT 1\n\t\t\t"); } //编辑推荐标签(删除原有 然后新增) require_once ROOT_PATH . '/apps/tags/models/tags.class.php'; $tags = new tags(); //删除原绑定标签 $tags->del_by_item_id($id); //重写绑定标签 $tags_data = explode(',', $_POST['tags']); $tag_arr = array(); foreach ($tags_data as $val) { $tags->add_tags(array('item_id' => $id, 'tag_id' => $val)); } return true; }
<?php //作品分类ajax接口 if (isset($_POST['categoryID'])) { $categoryID = $_POST['categoryID']; if (is_numeric($categoryID) || $categoryID == 'all') { require_once '../../../config.php'; require_once $config['root_path'] . '/core/functions.php'; include_once $config['system_core'] . "/initEngine.php"; require_once ROOT_PATH . "/apps/categories/models/categories.class.php"; $categoriesClass = new categories(); if (is_numeric($categoryID)) { $allCategories = $categoriesClass->getAll(0, 0, " `visible` = 'true' "); $categoryParent = $categoriesClass->getCategoryParents($allCategories, $categoryID); $categoryParent = explode(',', $categoryParent); $categoryParent = array_reverse($categoryParent); array_shift($categoryParent); $whereQuery = " AND `id` IN (SELECT `item_id` FROM `items_to_category` WHERE `categories` LIKE '%," . intval($categoryID) . ",%') "; } else { $categoryParent = array('data' => ''); } require_once ROOT_PATH . '/apps/items/models/items.class.php'; require_once ROOT_PATH . '/apps/users/models/users.class.php'; $itemsClass = new items(); $users = new users(); $order = '`datetime` DESC'; $items = $itemsClass->getAll(0, 40, " `status` = 'active' " . $whereQuery, $order); $categories = $categoriesClass->getAll(); $res_data = array(); foreach ($items as $data) { //用户信息