diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 78a1e6ef..5553fb40 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -8,6 +8,8 @@ use Option; use Storage; use Session; use App\Models\User; +use App\Models\Closet; +use App\Models\Player; use App\Models\Texture; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; @@ -205,6 +207,8 @@ class SkinlibController extends Controller public function privacy(Request $request) { $t = Texture::find($request->input('tid')); + $type = $t->type; + $uid = session('uid'); if (!$t) return json(trans('skinlib.non-existent'), 1); @@ -212,6 +216,16 @@ class SkinlibController extends Controller if ($t->uploader != $this->user->uid && !$this->user->isAdmin()) return json(trans('skinlib.no-permission'), 1); + foreach (Player::where("tid_$type", $t->tid)->where('uid', '<>', $uid)->get() as $player) { + $player->setTexture(["tid_$type" => 0]); + } + + foreach (Closet::all() as $closet) { + if ($closet->uid != $uid && $closet->has($t->tid)) { + $closet->remove($t->tid); + } + } + if ($t->setPrivacy(!$t->public)) { return json([ 'errno' => 0, diff --git a/app/Models/Closet.php b/app/Models/Closet.php index 1936fd6d..0cfb9b05 100644 --- a/app/Models/Closet.php +++ b/app/Models/Closet.php @@ -238,4 +238,18 @@ class Closet $this->save(); } + /** + * Get all closets. + * + * @return array + */ + public static function all() + { + $result = []; + foreach (DB::table('closets')->lists('uid') as $uid) { + $result[] = new Closet($uid); + } + return $result; + } + }