コード例 #1
0
 /**
  * Return an instance of this class.
  *
  * @since 2.0.0
  * @return erpRelated A single instance of this class.
  */
 public static function get_instance(&$options)
 {
     // If the single instance hasn't been set, set it now.
     if (null == self::$instance) {
         self::$instance = new self($options);
     }
     self::$instance->options = $options;
     return self::$instance;
 }
コード例 #2
0
 /**
  * Front-end display of widget.
  *
  * @see WP_Widget::widget()
  *
  * @param array $args
  *        	Widget arguments.
  * @param array $instance
  *        	Saved values from database.
  * @since 2.0.0
  * @author Panagiotis Vagenas <*****@*****.**>
  */
 public function widget($args, $instance)
 {
     global $post;
     // get instance of main plugin
     $plugin = easyRelatedPosts::get_instance();
     // check if it's time to take action
     if (is_single($post->ID)) {
         if ($plugin->isInExcludedPostTypes($post) || $plugin->isInExcludedTaxonomies($post)) {
             return;
         }
         // Fill missing options
         if (empty($instance)) {
             $instance = erpDefaults::$comOpts + erpDefaults::$widOpts;
         } else {
             $instance = $instance + erpDefaults::$comOpts + erpDefaults::$widOpts;
         }
         erpPaths::requireOnce(erpPaths::$erpRelated);
         erpPaths::requireOnce(erpPaths::$erpMainOpts);
         erpPaths::requireOnce(erpPaths::$erpWidOpts);
         $mainOpts = new erpMainOpts();
         $instance['tags'] = $mainOpts->getTags();
         $instance['categories'] = $mainOpts->getCategories();
         $instance['postTypes'] = $mainOpts->getPostTypes();
         $widOpts = new erpWidOpts($instance);
         // Get related
         $relatedObj = erpRelated::get_instance($widOpts);
         $wpQ = $relatedObj->getRelated($post->ID);
         // If we have some posts to show
         if ($wpQ->have_posts()) {
             // Get template instance for the specific widget number
             erpPaths::requireOnce(erpPaths::$VPluginThemeFactory);
             VPluginThemeFactory::registerThemeInPathRecursive(erpPaths::getAbsPath(erpPaths::$widgetThemesFolder), $instance['dsplLayout']);
             $theme = VPluginThemeFactory::getThemeByName($instance['dsplLayout']);
             if (!$theme) {
                 return $this->displayEmptyWidget($args, $instance);
             }
             $theme->setOptions($instance);
             $theme->formPostData($wpQ, $widOpts, $relatedObj->getRatingsFromRelDataObj());
             $content = $theme->renderW($this->number);
             echo $args['before_widget'];
             echo $args['before_title'] . $instance['title'] . $args['after_title'];
             echo $content;
             echo $args['after_widget'];
         } else {
             // else diplay empty widget
             $this->displayEmptyWidget($args, $instance);
         }
     }
 }
コード例 #3
0
 /**
  * Decides if content should be modified, if yes calls content modifier
  *
  * @param string $content
  * @return string
  * @author Panagiotis Vagenas <*****@*****.**>
  * @since 2.0.0
  */
 public function contentFilter($content)
 {
     global $post;
     /**
      * Check if is time to take action
      */
     if ($this->isShowTime($post) && !$this->isInExcludedPostTypes($post) && !$this->isInExcludedTaxonomies($post) && (bool) $this->mainOpts->getValue('activate')) {
         erpPaths::requireOnce(erpPaths::$erpRelated);
         erpPaths::requireOnce(erpPaths::$VPluginThemeFactory);
         $relatedObj = erpRelated::get_instance($this->mainOpts);
         $result = $relatedObj->getRelated($post->ID);
         $ratings = $relatedObj->getRatingsFromRelDataObj();
         if (empty($result) || empty($result->posts)) {
             return $content;
         }
         VPluginThemeFactory::registerThemeInPathRecursive(erpPaths::getAbsPath(erpPaths::$mainThemesFolder), $this->mainOpts->getDsplLayout());
         $theme = VPluginThemeFactory::getThemeByName($this->mainOpts->getDsplLayout());
         if (!$theme) {
             return $content;
         }
         $theme->formPostData($result, $this->mainOpts, $ratings);
         $relContent = $theme->render();
         return $content . $relContent;
     }
     return $content;
 }