controller = $cmsObject->controller; $this->page = $cmsObject; } $this->properties = $this->validateProperties($properties); $className = Str::normalizeClassName(get_called_class()); $this->dirName = strtolower(str_replace('\\', '/', $className)); $this->assetPath = Config::get('cms.pluginsDir').dirname(dirname($this->dirName)); parent::__construct(); } /** * Returns information about this component, including name and description. */ abstract public function componentDetails(); /** * Returns the absolute component path. */ public function getPath() { return base_path().Config::get('cms.pluginsDir').$this->dirName; } /** * Executed when this component is first initialized, before AJAX requests. */ public function init() { } // @deprecated: Remove this line if year >= 2015 public function onInit() { } /** * Executed when this component is bound to a page or layout, part of * the page life cycle. */ public function onRun() { } /** * Executed when this component is rendered on a page or layout. */ public function onRender() { } /** * Dynamically handle calls into the controller instance. * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { if (method_exists($this, $method)) { return call_user_func_array([$this, $method], $parameters); } if (method_exists($this->controller, $method)) { return call_user_func_array([$this->controller, $method], $parameters); } throw new CmsException(Lang::get('cms::lang.component.method_not_found', [ 'name' => get_class($this), 'method' => $method ])); } /** * Returns the component's alias, used by __SELF__ */ public function __toString() { return $this->alias; } /** * Returns a defined property or parameter value. * @param $name The property or parameter name to look for. * @param $default A default value to return if no value is found. * @return string */ public function propertyOrParam($name, $default = null) { $value = $this->property($name, $default); if (substr($value, 0, 1) == ':') { return $this->param(substr($value, 1), $default); } return $value; } }