Ejemplo n.º 1
0
 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;
 }