shell bypass 403
<?php namespace Modules\CourseSetting\Entities; use App\Traits\Tenantable; use Illuminate\Support\Str; use Illuminate\Support\Facades\Cache; use Modules\OrgInstructorPolicy\Entities\OrgPolicyCategory; use Modules\Quiz\Entities\OnlineQuiz; use Illuminate\Database\Eloquent\Model; use Spatie\Translatable\HasTranslations; class Category extends Model { use Tenantable; protected $fillable = ['name', 'status', 'show_home', 'position_order', 'image', 'thumbnail', 'description']; protected $appends = ['courseCount']; use HasTranslations; public $translatable = ['name', 'description']; public function subcategories() { return $this->hasMany(Category::class, 'parent_id', 'id')->select('id', 'parent_id', 'name')->orderBy('position_order'); } public function activeSubcategories() { return $this->hasMany(Category::class, 'parent_id', 'id')->select('id', 'parent_id', 'name')->where('status', 1)->orderBy('position_order'); } public function courses() { return $this->hasMany(Course::class, 'category_id', 'id')->where('status', 1); } public function getcourseCountAttribute() { return $this->courses()->count(); } public function totalCourses() { return $this->courses()->count(); } public function getSlugAttribute() { return Str::slug($this->name) == "" ? str_replace(' ', '-', $this->name) : Str::slug($this->name); } public static function boot() { parent::boot(); self::created(function ($model) { if (function_exists('clearAllLangCache')) { clearAllLangCache('categories_'); } }); self::updated(function ($model) { if (function_exists('clearAllLangCache')) { clearAllLangCache('categories_'); } }); self::deleted(function ($model) { if (function_exists('clearAllLangCache')) { clearAllLangCache('categories_'); } }); } public function parent() { return $this->belongsTo(Category::class, 'parent_id')->with('parent')->withDefault(); } public function childs() { return $this->hasMany(Category::class, 'parent_id')->orderBy('position_order')->with('childs'); } public function quizzesCategoryCount() { return $this->hasMany(OnlineQuiz::class, 'category_id', 'id'); } public function quizzesSubCategoryCount() { return $this->hasMany(OnlineQuiz::class, 'sub_category_id', 'id'); } public function getQuizzesCountAttribute() { if (!$this->relationLoaded('quizzesCategoryCount')) { $this->load('quizzesCategoryCount'); } if (!$this->relationLoaded('quizzesSubCategoryCount')) { $this->load('quizzesSubCategoryCount'); } return $this->quizzesCategoryCount->count() + $this->quizzesSubCategoryCount->count(); } public function totalEnrolled() { return $this->hasManyThrough('Modules\CourseSetting\Entities\Course', 'Modules\CourseSetting\Entities\CourseEnrolled', 'course_id', 'id'); } public function getAllChildIds($child, $pathCode = []) { if (isset($child->childs)) { if (count($child->childs) != 0) { foreach ($child->childs as $child) { $pathCode[] = $child->id; $pathCode = $this->getAllChildIds($child, $pathCode); } return $pathCode; } } return $pathCode; } public function getFullPathAttribute() { $codes = $this->getAllParent($this); $sort = array_reverse($codes, true); $sort[] = $this->id; return implode("/", $sort); } public function getAllParent($child, $pathCode = []) { if (!empty($child->parent->id)) { $pathCode[] = $child->parent->id; return $this->getAllParent($child->parent, $pathCode); } return $pathCode; } public function assignCategoryInGroupPolicy() { return $this->hasMany(OrgPolicyCategory::class, 'category_id', 'id'); } public function categoryInstructor() { if (isModuleActive('Appointment')) { return $this->hasMany('Modules\Appointment\Entities\InstructorTeachingCategory', 'category_id', 'id'); } return null; } }