/** * Sharer constructor. * @param SocialSharing_Projects_Project $project * @param Rsc_Environment $environment */ public function __construct(SocialSharing_Projects_Project $project, Rsc_Environment $environment) { $this->project = $project; $this->environment = $environment; $this->builder = $environment->getModule('HtmlBuilder'); $this->dispatcher = $environment->getDispatcher(); }
/** * Creates new instance of the builder for the current project. * @return \SocialSharing_Projects_Builder */ protected function instantiateBuilder() { $builder = null; if ('flat' === substr($this->project->get('design', 'flat-1'), 0, 4)) { $builder = new SocialSharing_Projects_Builder_Flat($this->project, $this->environment); } elseif (class_exists('SocialSharingPro_Projects_Builder_Mono') && 'mono' === substr($this->project->get('design'), 0, 4)) { $builder = new SocialSharingPro_Projects_Builder_Mono($this->project, $this->environment); } elseif (class_exists('SocialSharingPro_Projects_Builder_Bordered') && 'bordered' === substr($this->project->get('design'), 0, 8)) { $builder = new SocialSharingPro_Projects_Builder_Bordered($this->project, $this->environment); } elseif (class_exists('SocialSharingPro_Projects_Builder_Livejournal') && 'livejournal' === substr($this->project->get('design'), 0, 11)) { $builder = new SocialSharingPro_Projects_Builder_Livejournal($this->project, $this->environment); } elseif (class_exists('SocialSharingPro_Projects_Builder_Various') && 'various' === substr($this->project->get('design'), 0, 7)) { $builder = new SocialSharingPro_Projects_Builder_Various($this->project, $this->environment); } else { $this->project->setSettings(array_merge($this->project->getSettings(), array('design' => 'flat-1'))); $builder = new SocialSharing_Projects_Builder_Flat($this->project, $this->environment); add_action('admin_notices', array($this, 'invalidBuilderNotice')); } /** @var SocialSharing_Networks_Module $networks */ if ($this->project->has('show_more') && null !== ($networks = $this->environment->getModule('networks'))) { $builder = new SocialSharing_Projects_Builder_Decorator_Popup($builder, $networks->getAll()); /** @var SocialSharing_Ui_Module $ui */ $ui = $this->environment->getModule('ui'); $ui->addAsset($ui->create('script', 'social-sharing-builder-popup')->setHookName('before_html_build')->setModuleSource($this->environment->getModule('projects'), 'js/builder/popup.js')->setCachingAllowed($this->environment->isProd())); $ui->addAsset($ui->create('style', 'social-sharing-builder-popup')->setHookName('before_html_build')->setModuleSource($this->environment->getModule('projects'), 'css/builder/popup.css')->setCachingAllowed($this->environment->isProd())); } if ($this->project->has('sidebar_navigation')) { $builder = new SocialSharing_Projects_Builder_Decorator_Navigation($builder); /** @var SocialSharing_Ui_Module $ui */ $ui = $this->environment->getModule('ui'); $ui->addAsset($ui->create('script', 'social-sharing-builder-navigation')->setHookName('before_html_build')->setModuleSource($this->environment->getModule('projects'), 'js/builder/navigation.js')->setCachingAllowed($this->environment->isProd())); $ui->addAsset($ui->create('style', 'social-sharing-builder-navigation')->setHookName('before_html_build')->setModuleSource($this->environment->getModule('projects'), 'css/builder/navigation.css')->setCachingAllowed($this->environment->isProd())); } return $builder; }
/** * @param Rsc_Http_Parameters $method * @return bool */ public function handleRequest(Rsc_Http_Parameters $method) { /** @var Rsc_Mvc_Module $module */ if (!$method->has('route')) { return false; } $route = $method->get('route'); $module = isset($route['module']) ? $route['module'] : $this->environment->getConfig()->get('default_module'); $action = isset($route['action']) ? $route['action'] : 'index'; if (null !== ($module = $this->environment->getModule(strtolower($module)))) { $controller = $module->getController(); if ($controller !== null && method_exists($controller, $action = sprintf('%sAction', $action))) { return call_user_func_array(array($controller, $action), array($controller->getRequest())); } } return false; }
/** * Returns HtmlBuilder module * @return SocialSharing_HtmlBuilder_Module */ protected function getBuilder() { return $this->environment->getModule('HtmlBuilder'); }