public static function getExtraFieldsByArticle($article, $params = null)
 {
     if (is_numeric($article)) {
         $article = TZ_Portfolio_PlusContentHelper::getArticleById($article);
     }
     $groupid = self::getFieldGroupsByArticleId($article->id);
     $groupid = JArrayHelper::getColumn($groupid, 'id');
     $storeId = md5(__METHOD__ . '::' . implode(',', $groupid) . '::' . $article->id);
     if (!isset(self::$cache[$storeId])) {
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select('f.*');
         $query->from('#__tz_portfolio_plus_fields AS f');
         $query->join('INNER', '#__tz_portfolio_plus_field_content_map AS m ON m.fieldsid = f.id');
         $query->join('INNER', '#__tz_portfolio_plus_content AS c ON c.id = m.contentid');
         $query->join('INNER', '#__tz_portfolio_plus_field_fieldgroup_map AS fm ON fm.fieldsid = f.id');
         $query->join('INNER', '#__tz_portfolio_plus_extensions AS e ON e.element = f.type')->where('e.type = ' . $db->quote('tz_portfolio_plus-plugin'))->where('e.folder = ' . $db->quote('extrafields'))->where('e.published = 1');
         if (count($groupid)) {
             $query->where('fm.groupid IN(' . implode(',', $groupid) . ')');
         }
         $query->where('c.id = ' . $article->id);
         $query->where('f.published = 1');
         $query->group('f.id');
         $db->setQuery($query);
         if ($fields = $db->loadObjectList()) {
             self::$cache[$storeId] = $fields;
             return $fields;
         }
         self::$cache[$storeId] = false;
     }
     return self::$cache[$storeId];
 }
 public function loadArticle($article, $resetCache = false)
 {
     if (is_numeric($article) && $article > 0) {
         $_article = TZ_Portfolio_PlusContentHelper::getArticleById($article, $resetCache);
         if (is_object($_article)) {
             $article = clone $_article;
         }
     }
     if (is_object($article) || is_null($article)) {
         $this->article = $article;
     }
 }