/home/techb158/immovalet.com/vendor/botble/platform/base/src/Supports
NameSizeModeActions
Action.php9550644editdlrm
ActionHookEvent.php21360644editdlrm
Assets.php23640644editdlrm
Avatar.php88450644editdlrm
BaseSeeder.php14380644editdlrm
BreadcrumbsGenerator.php17290644editdlrm
BreadcrumbsManager.php49300644editdlrm
Core.php73240644editdlrm
CustomResourceRegistrar.php31050644editdlrm
DashboardMenu.php60210644editdlrm
Editor.php13410644editdlrm
EmailAbstract.php18170644editdlrm
EmailHandler.php115100644editdlrm
Enum.php55020644editdlrm
Filter.php13240644editdlrm
Gravatar.php5320644editdlrm
Helper.php71290644editdlrm
Language.php176930644editdlrm
MacroableModels.php37510644editdlrm
MembershipAuthorization.php27020644editdlrm
MetaBox.php87200644editdlrm
MountManager.php39940644editdlrm
PageTitle.php6680644editdlrm
PclZip.php2144990644editdlrm
RepositoryHelper.php8190644editdlrm
SortItemsWithChildrenHelper.php22810644editdlrm
SystemManagement.php41620644editdlrm
Edit: /home/techb158/immovalet.com/vendor/botble/platform/base/src/Supports/MacroableModels.php (3751B)
macros; } /** * @param string $model * @param string $name * @param Closure $closure */ public function addMacro(string $model, string $name, Closure $closure) { $this->checkModelSubclass($model); if (!isset($this->macros[$name])) { $this->macros[$name] = []; } $this->macros[$name][$model] = $closure; $this->syncMacros($name); } /** * @param string $model */ protected function checkModelSubclass(string $model) { if (!is_subclass_of($model, Model::class)) { throw new InvalidArgumentException('$model must be a subclass of Illuminate\\Database\\Eloquent\\Model'); } } /** * @param string $name */ protected function syncMacros($name) { $models = $this->macros[$name]; Builder::macro($name, function (...$args) use ($name, $models) { /** * @var BaseModel $this */ $class = get_class($this->getModel()); if (!isset($models[$class])) { throw new BadMethodCallException("Call to undefined method ${class}::${name}()"); } $closure = Closure::bind($models[$class], $this->getModel()); return call_user_func($closure, ...$args); }); } /** * @param string $name * @return array|\ArrayAccess|mixed */ public function getMacro(string $name) { return Arr::get($this->macros, $name); } /** * @param string $model * @param string $name * @return bool */ public function removeMacro($model, string $name) { $this->checkModelSubclass($model); if (isset($this->macros[$name]) && isset($this->macros[$name][$model])) { unset($this->macros[$name][$model]); if (count($this->macros[$name]) == 0) { unset($this->macros[$name]); } else { $this->syncMacros($name); } return true; } return false; } /** * @param string $model * @param string $name * @return bool */ public function modelHasMacro($model, $name) { $this->checkModelSubclass($model); return (isset($this->macros[$name]) && isset($this->macros[$name][$model])); } /** * @param string $name * @return array */ public function modelsThatImplement($name) { if (!isset($this->macros[$name])) { return []; } return array_keys($this->macros[$name]); } /** * @param string $model * @return array * @throws ReflectionException */ public function macrosForModel($model) { $this->checkModelSubclass($model); $macros = []; foreach ($this->macros as $macro => $models) { if (in_array($model, array_keys($models))) { $params = (new ReflectionFunction($this->macros[$macro][$model]))->getParameters(); $macros[$macro] = [ 'name' => $macro, 'parameters' => $params, ]; } } return $macros; } }