Пример #1
0
 /**
  * Construct Closet object with owner's uid.
  *
  * @param int $uid
  */
 public function __construct($uid)
 {
     $this->uid = $uid;
     $this->db = DB::table('closets');
     // create a new closet if not exists
     if (!$this->db->where('uid', $uid)->get()) {
         $this->db->insert(['uid' => $uid, 'textures' => '']);
     }
     // load items from json string
     $this->textures = json_decode($this->db->where('uid', $uid)->get()[0]->textures, true);
     $this->textures = is_array($this->textures) ? $this->textures : [];
     $textures_invalid = [];
     // traverse items in the closet
     foreach ($this->textures as $texture) {
         $result = Texture::find($texture['tid']);
         if ($result) {
             // set user custom texture name
             $result->name = $texture['name'];
             // push instances of App\Models\Texture to the bag
             if ($result->type == "cape") {
                 $this->textures_cape[] = $result;
             } else {
                 $this->textures_skin[] = $result;
             }
         } else {
             $textures_invalid[] = $texture['tid'];
             continue;
         }
     }
     // remove invalid textures from closet
     foreach ($textures_invalid as $tid) {
         $this->remove($tid);
     }
     unset($textures_invalid);
 }
Пример #2
0
 /**
  * Get specific texture of player.
  *
  * @param  string $type steve|alex|cape
  * @return string       Sha256-hash of texture file.
  */
 public function getTexture($type)
 {
     if ($type == "skin") {
         $type = $this->getPreference() == "default" ? "steve" : "alex";
     }
     if (in_array($type, self::$models)) {
         return Texture::find($this["tid_{$type}"])['hash'];
     }
     return false;
 }
 public function remove(Request $request)
 {
     $this->validate($request, ['tid' => 'required|integer']);
     if ($this->closet->remove($request->tid)) {
         $t = Texture::find($request->tid);
         $t->likes = $t->likes - 1;
         $t->save();
         return json(trans('user.closet.remove.success'), 0);
     } else {
         return json(trans('user.closet.remove.non-existent'), 0);
     }
 }
Пример #4
0
 public function detail(Product $product)
 {
     $breadcrumbs = [["name" => "home", "url" => "/"], ["name" => "producten", "url" => "/producten"], ["name" => $product->title, "url" => "/producten/" . $product->id]];
     $detail_preview_photos = DB::table('product_photos')->where("product_id", "=", $product->id)->where("is_detail_preview", "=", 1)->get();
     //if product has preview photos, show first preview photo on initial load. Else show colour images
     if (count($detail_preview_photos) > 0) {
         $product->colour_img = $detail_preview_photos[0];
     } else {
         $firstColourImg = DB::table('product_photos')->where("product_id", "=", $product->id)->where("is_colour_img", "=", 1)->first();
         //COLOUR IMAGE
         if ($firstColourImg) {
             $privot_photo_colour_first = DB::table('photos_colours')->where("photo_id", "=", $firstColourImg->id)->first();
             $product->colour_img = $firstColourImg;
             $firstColour = ProductColour::find($privot_photo_colour_first->colour_id);
             $product->colour = $firstColour;
             //TEXTURE
             $textures = DB::table('textures')->where("colour_id", "=", $firstColour->id)->get();
             if ($textures) {
                 foreach ($textures as $texture) {
                     $tmp = DB::table('product_textures')->where("product_id", "=", $product->id)->where('texture_id', '=', $texture->id)->get();
                     if ($tmp) {
                         $product->texture = Texture::find($tmp[0]->texture_id);
                         break;
                     }
                 }
             }
         }
     }
     if ($detail_preview_photos) {
         $product->detail_preview_photos = $detail_preview_photos;
     }
     //get all available colours for this product through colour images
     $available_colours_array = [];
     $colourImagesOfProduct = DB::table('product_photos')->where("product_id", "=", $product->id)->where("is_colour_img", "=", 1)->get();
     foreach ($colourImagesOfProduct as $colourImage) {
         $privot_photo_colour_first = DB::table('photos_colours')->where("photo_id", "=", $colourImage->id)->first();
         $colour = ProductColour::find($privot_photo_colour_first->colour_id);
         $available_colours_array[] = $colour;
     }
     //all font colour
     $font_colours = ["#252b5a", "#293477", "#3f509e", "#4a69b1", "#273575", "#262d5f", "#191b36", "#f18515", "#f49919", "#fab432", "#f2a202", "#b96b15", "#c49209", "#d1870c", "#fcc72f", "#edd48c", "#fdc50a", "#ffda10", "#fae514", "#aa8b12", "#433014", "#671725", "#c53c3d", "#f08176", "#f4a3ac", "#d1312f", "#ed6f24", "#9a2417", "#032f2d", "#1d411d", "#95c15f", "#275c29", "#498331", "#0f754b", "#5fb87f", "#1d4b4e", "#8cc9ba", "#0a8880", "#319abb", "#2680a2", "#8fb6e2", "#c83256", "#eb5a6a", "#c83159", "#ea5093", "#ef7fa1", "#ef81a4", "#932162", "#65236a", "#b596c6", "#7b4594", "#6c2477", "#412b86", "#322873", "#777dbb", "#8e70a6", "#767cbb", "#431d4b", "#27170d", "#8c6215", "c8b26f", "#422529", "#aa9796", "#c0b9b5", "#75463d", "#6b3e46", "#999083", "#e3a365", "#973d15", "#492911", "#dddccf", "#dbdbda", "#989799", "#1d1d1b"];
     return view('products/detail')->with(array("product" => $product, "breadcrumbs" => $breadcrumbs, "available_colours" => $available_colours_array, "font_colours" => $font_colours));
 }
 public function raw($tid)
 {
     if ($t = Texture::find($tid)) {
         if (Storage::disk('textures')->has($t->hash)) {
             return Response::png(Storage::disk('textures')->get($t->hash));
         } else {
             abort(404, '请求的材质文件已经被删除');
         }
     } else {
         abort(404, '材质不存在');
     }
 }
 /**
  * A wrapper of Player::setTexture()
  */
 public function setTexture(Request $request)
 {
     foreach ($request->input('tid') as $key => $value) {
         if (!($texture = Texture::find($value))) {
             return json(trans('skinlib.un-existent'), 6);
         }
         $field_name = "tid_{$texture->type}";
         $this->player->setTexture([$field_name => $value]);
     }
     return json(trans('user.player.set.success', ['name' => $this->player->player_name]), 0);
 }
 /**
  * Set Avatar for User
  *
  * @param Request $request
  */
 public function setAvatar(Request $request)
 {
     $this->validate($request, ['tid' => 'required|integer']);
     $result = Texture::find($request->input('tid'));
     if ($result) {
         if ($result->type == "cape") {
             return json(trans('user.profile.avatar.wrong-type'), 1);
         }
         if ($this->user->setAvatar($request->input('tid'))) {
             return json(trans('user.profile.avatar.success'), 0);
         }
     } else {
         return json(trans('user.profile.avatar.non-existent'), 1);
     }
 }
 /**
  * Handle ajax request from /admin/players
  */
 public function playerAjaxHandler(Request $request, UserRepository $users)
 {
     $action = isset($_GET['action']) ? $_GET['action'] : "";
     $player = Player::find($request->input('pid'));
     if (!$player) {
         abort(404, trans('general.unexistent-player'));
     }
     if ($action == "preference") {
         $this->validate($request, ['preference' => 'required|preference']);
         if ($player->setPreference($request->input('preference'))) {
             return json('角色 ' . $player->player_name . ' 的优先模型已更改至 ' . $request->input('preference'), 0);
         }
     } elseif ($action == "texture") {
         $this->validate($request, ['model' => 'required|model', 'tid' => 'required|integer']);
         if (!Texture::find($request->tid)) {
             return json("材质 tid.{$request->tid} 不存在", 1);
         }
         if ($player->setTexture(['tid_' . $request->model => $request->tid])) {
             return json("角色 {$player->player_name} 的材质修改成功", 0);
         }
     } elseif ($action == "owner") {
         $this->validate($request, ['pid' => 'required|integer', 'uid' => 'required|integer']);
         $user = $users->get($request->input('uid'));
         if (!$user) {
             return json('不存在的用户', 1);
         }
         if ($player->setOwner($request->input('uid'))) {
             return json("角色 {$player->player_name} 已成功让渡至 " . $user->getNickName(), 0);
         }
     } elseif ($action == "delete") {
         if ($player->delete()) {
             return json('角色已被成功删除', 0);
         }
     } else {
         return json('非法参数', 1);
     }
 }
 public function rename(Request $request)
 {
     $this->validate($request, ['tid' => 'required|integer', 'new_name' => 'required|no_special_chars']);
     $t = Texture::find($request->input('tid'));
     if (!$t) {
         return json(trans('skinlib.non-existent'), 1);
     }
     if ($t->uploader != $this->user->uid && !$this->user->isAdmin()) {
         return json(trans('skinlib.no-permission'), 1);
     }
     $t->name = $request->input('new_name');
     if ($t->save()) {
         return json(trans('skinlib.rename.success', ['name' => $request->input('new_name')]), 0);
     }
 }
Пример #10
0
 public function colours()
 {
     $response = "";
     $colour_id = Input::get("colour_id");
     $product_id = Input::get("product_id");
     //GET COLOUR IMAGE
     $colour_images = DB::table('product_photos')->where("product_id", "=", $product_id)->where("is_colour_img", "=", 1)->get();
     $colour_image_result = false;
     foreach ($colour_images as $colour_image) {
         $result = DB::table('photos_colours')->where("photo_id", "=", $colour_image->id)->where("colour_id", "=", $colour_id)->first();
         if ($result) {
             $colour_image_result = DB::table('product_photos')->where("id", "=", $result->photo_id)->first();
             break;
         }
     }
     $response["colour_image"] = $colour_image_result;
     //GET TEXTURE
     $textures = DB::table('textures')->where("colour_id", "=", $colour_id)->get();
     $texture_result = false;
     if ($textures) {
         foreach ($textures as $texture) {
             $tmp = DB::table('product_textures')->where("product_id", "=", $product_id)->where('texture_id', '=', $texture->id)->get();
             if ($tmp) {
                 $texture_result = Texture::find($tmp[0]->texture_id);
                 break;
             }
         }
     }
     $response["texture"] = $texture_result;
     return $response;
 }