Example #1
0
 public function handleProject($project)
 {
     $project = new SocialSharing_Projects_Project((array) $project);
     $sharer = new SocialSharing_Projects_Sharer_Flat($project, $this->getEnvironment());
     if ($project->isShowAtShortcode() || $project->isShowAt('popup')) {
         return $sharer->build();
     }
     $sharer->activate();
     return null;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * Filters the each project and adds the number of the shares to each network.
  * @param SocialSharing_Projects_Project $project
  * @return SocialSharing_Projects_Project
  */
 public function filterAddProjectShares(SocialSharing_Projects_Project $project)
 {
     if (count($project->getNetworks()) === 0) {
         return $project;
     }
     $networks = array();
     /** @var SocialSharing_Shares_Model_Shares $shares */
     $shares = $this->getModelsFactory()->get('shares');
     $projectShares = $project->get('shares');
     if (!in_array($projectShares, array('plugin', 'project', 'post'), false)) {
         foreach ($project->getNetworks() as $index => $network) {
             $network->shares = 0;
             $networks[$index] = $network;
         }
     } else {
         $networksId = array();
         $sharesList = array();
         foreach ($project->getNetworks() as $index => $network) {
             $networksId[] = $network->id;
         }
         if ($projectShares == 'plugin') {
             $sharesList = $shares->getListNetworksShares($networksId);
         } else {
             if ($projectShares == 'project') {
                 $sharesList = $shares->getListProjectNetworkShares($project->getId(), $networksId);
             } else {
                 if ($projectShares == 'post') {
                     $schema = is_ssl() ? 'https://' : 'http://';
                     $currentUrl = strtolower(trailingslashit($schema . $_SERVER['HTTP_HOST'] . '/' . $_SERVER['REQUEST_URI']));
                     $baseUrl = strtolower(trailingslashit(get_bloginfo('wpurl')));
                     $postId = get_the_ID();
                     $sharesList = $shares->getListProjectPageShares($project->getId(), $networksId, $postId);
                 }
             }
         }
         foreach ($project->getNetworks() as $index => $network) {
             $network->shares = isset($sharesList[$network->id]) ? $sharesList[$network->id] : 0;
             $networks[$index] = $network;
         }
     }
     $project->setNetworks($networks);
     return $project;
 }
Example #4
0
 protected function getBaseClasses()
 {
     $classes = array('supsystic-social-sharing', 'supsystic-social-sharing-package-' . $this->getName());
     if ($this->project->isHiddenOnMobile()) {
         $classes[] = 'supsystic-social-sharing-mobile';
     }
     if ($this->project->isShowOnClick()) {
         $classes[] = 'supsystic-social-sharing-click';
     }
     if ($this->project->get('spacing', 'off') === 'on') {
         $classes[] = 'supsystic-social-sharing-spacing';
     }
     if ($this->project->isShowAtSidebar()) {
         $classes[] = 'supsystic-social-sharing-fixed';
         $position = $this->project->getExtra() ? $this->project->getExtra() : 'left';
         $classes[] = 'supsystic-social-sharing-' . $position;
         if (is_admin_bar_showing()) {
             $classes[] = 'supsystic-social-sharing-adminbar';
         }
     } else {
         $classes[] = 'supsystic-social-sharing-content';
     }
     return $classes;
 }
Example #5
0
 /**
  * Returns the collection of the container attributes.
  * @return SocialSharing_HtmlBuilder_Attribute[]
  */
 protected function getContainerAttributes()
 {
     $builder = $this->getBuilder();
     return array($builder->createAttribute('data-animation', $this->project->get('buttons_animation', 'no-animation')), $builder->createAttribute('data-icons-animation', $this->project->get('icons_animation', 'no-animation')), $builder->createAttribute('data-overlay', $this->project->get('overlay_with_shadow')), $builder->createAttribute('data-change-size', $this->project->get('change_size')), $builder->createAttribute('data-button-size', $this->project->get('buttons_size', 'normal')), $builder->createAttribute('style', $this->getContainerStyle()), $builder->createAttribute('class', $this->getContainerClasses()));
 }