Esempio n. 1
0
 public static function getItemIdByEntry($blogId)
 {
     static $entriesItems = null;
     if (!isset($entriesItems[$blogId])) {
         $db = EasyBlogHelper::db();
         // We need to check against the correct latest entry to be used based on the category this article is in
         $query = 'SELECT ' . $db->nameQuote('id') . ',' . $db->nameQuote('params') . ' FROM ' . $db->nameQuote('#__menu') . 'WHERE ' . $db->nameQuote('link') . '=' . $db->Quote('index.php?option=com_easyblog&view=latest') . 'AND ' . $db->nameQuote('published') . '=' . $db->Quote('1') . EBR::getLanguageQuery();
         $db->setQuery($query);
         $menus = $db->loadObjectList();
         $blog = EB::table('Blog');
         $blog->load($blogId);
         if ($menus) {
             foreach ($menus as $menu) {
                 $params = EB::registry($menu->params);
                 $inclusion = EasyBlogHelper::getCategoryInclusion($params->get('inclusion'));
                 if (empty($inclusion)) {
                     continue;
                 }
                 if (!is_array($inclusion)) {
                     $inclusion = array($inclusion);
                 }
                 if (in_array($blog->category_id, $inclusion)) {
                     $entriesItems[$blogId] = $menu->id;
                 }
             }
         }
         // Test if there is any entry specific view as this will always override the latest above.
         $query = 'SELECT ' . $db->nameQuote('id') . ' FROM ' . $db->nameQuote('#__menu') . ' ' . 'WHERE ' . $db->nameQuote('link') . '=' . $db->Quote('index.php?option=com_easyblog&view=entry&id=' . $blogId) . ' ' . 'AND ' . $db->nameQuote('published') . '=' . $db->Quote('1') . EBR::getLanguageQuery() . ' LIMIT 1';
         $db->setQuery($query);
         $itemid = $db->loadResult();
         if ($itemid) {
             $entriesItems[$blogId] = $itemid;
         } else {
             // this is to check if we used category menu item from this post or not.
             // if yes, we do nothing. if not, we need to update the cache object so that the next checking will
             // not execute sql again.
             if (isset($entriesItems[$blogId])) {
                 return $entriesItems[$blogId];
             } else {
                 $entriesItems[$blogId] = '';
             }
         }
     }
     return $entriesItems[$blogId];
 }
Esempio n. 2
0
 /**
  * Plugin that returns the object list for DJ-Mediatools album
  * 
  * Each object must contain following properties (mandatory): title, description, image
  * Optional properties: link, target (_blank or _self), alt (alt attribute for image)
  * 
  * @param	object	The album params
  */
 public function onAlbumPrepare(&$source, &$params)
 {
     // Lets check the requirements
     $check = $this->onCheckRequirements($source);
     if (is_null($check) || is_string($check)) {
         return null;
     }
     $app = JFactory::getApplication();
     $default_image = $params->get('plg_easyblog_image');
     $path = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_easyblog' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'helper.php';
     if (!JFile::exists($path)) {
         return null;
     }
     require_once $path;
     require_once EBLOG_HELPERS . DIRECTORY_SEPARATOR . 'router.php';
     JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT);
     $mparams = new JRegistry();
     $count = $params->get('max_images');
     $sort = array();
     $sort[0] = $params->get('plg_easyblog_order');
     $sort[1] = $params->get('plg_easyblog_order_dir');
     $featured = $params->get('plg_easyblog_usefeatured');
     $type = 'latest';
     $model = EasyBlogHelper::getModel('Blog');
     $categories = EasyBlogHelper::getCategoryInclusion($params->get('plg_easyblog_catid'));
     $catIds = array();
     if (!empty($categories)) {
         if (!is_array($categories)) {
             $categories = array($categories);
         }
         foreach ($categories as $item) {
             $category = new stdClass();
             $category->id = trim($item);
             $catIds[] = $category->id;
             if ($params->get('plg_easyblog_includesubcategory', 0)) {
                 $category->childs = null;
                 EasyBlogHelper::buildNestedCategories($category->id, $category, false, true);
                 EasyBlogHelper::accessNestedCategoriesId($category, $catIds);
             }
         }
         $catIds = array_unique($catIds);
     }
     $cid = $catIds;
     if (!empty($cid)) {
         $type = 'category';
     }
     $posts = $model->getBlogsBy($type, $cid, $sort, $count, EBLOG_FILTER_PUBLISHED, null, $featured, array(), false, false, true, array(), $cid);
     $slides = array();
     foreach ($posts as $item) {
         $slide = (object) array();
         $row = EasyBlogHelper::getTable('Blog', 'Table');
         $row->bind($item);
         $image = $row->getImage();
         if (!empty($image)) {
             $slide->image = str_replace(JURI::base(), '', $image->getSource('original'));
         } else {
             $slide->image = DJMediatoolsLayoutHelper::getImageFromText($item->intro);
         }
         // if no image found in images and introtext then try fulltext
         if (empty($slide->image)) {
             $slide->image = DJMediatoolsLayoutHelper::getImageFromText($item->content);
         }
         // if no image found in fulltext then take default image
         if (empty($slide->image)) {
             $slide->image = $default_image;
         }
         // if no default image set then don't display this article
         if (empty($slide->image)) {
             continue;
         }
         $slide->title = $item->title;
         $slide->description = $item->intro;
         if (empty($slide->description)) {
             $slide->description = $item->content;
         }
         $slide->canonical = $slide->link = EasyBlogRouter::_('index.php?option=com_easyblog&view=entry&id=' . $item->id);
         //.'&Itemid='. EasyBlogRouter::getItemIdByCategories( $item->category_id ) );
         $slide->id = $item->id . ':' . $item->permalink;
         //$this->dd($item);
         if ($comments = $params->get('commnets', 0)) {
             $host = str_replace(JURI::root(true), '', JURI::root());
             $host = preg_replace('/\\/$/', '', $host);
             switch ($comments) {
                 case 1:
                     // jcomments
                     $slide->comments = array('id' => $item->id, 'group' => 'com_easyblog');
                     break;
                 case 2:
                     // disqus
                     $disqus_shortname = $params->get('disqus_shortname', '');
                     if (!empty($disqus_shortname)) {
                         $slide->comments = array();
                         $slide->comments['url'] = $host . $slide->link;
                         $slide->comments['identifier'] = $disqus_shortname . '-easyblog-' . $item->id;
                         // ??
                     }
                     break;
                 case 3:
                     // facebook
                     $slide->comments = $host . $slide->link;
                     break;
                 case 4:
                     //komento
                     // not implemented
                     break;
             }
         }
         $slides[] = $slide;
     }
     return $slides;
 }
Esempio n. 3
0
 public static function getBlogNavigation($blogId, $creationDate, $typeId = '0', $type = 'sitewide')
 {
     $db = EasyBlogHelper::db();
     $my = JFactory::getUser();
     $config = EasyBlogHelper::getConfig();
     $keys = array('prev', 'next');
     $nav = array();
     $nav['prev'] = null;
     $nav['next'] = null;
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $menus = JFactory::getApplication()->getMenu();
     $menu = $menus->getActive();
     $queryInclude = '';
     if (is_object($menu)) {
         $params = EasyBlogHelper::getRegistry();
         $params->load($menu->params);
         $cats = EasyBlogHelper::getCategoryInclusion($params->get('inclusion'));
         if ($cats) {
             if (!is_array($cats)) {
                 $cats = array($cats);
             }
             $queryInclude = ' AND a.`category_id` IN (';
             foreach ($cats as $allowedCat) {
                 $queryInclude .= $db->Quote($allowedCat);
                 if (next($cats) !== false) {
                     $queryInclude .= ',';
                 }
             }
             $queryInclude .= ')';
         }
     }
     // get all private categories id
     $excludeCats = EasyBlogHelper::getPrivateCategories();
     $queryExclude = '';
     if (!empty($excludeCats)) {
         $queryExclude .= ' AND a.`category_id` NOT IN (';
         for ($i = 0; $i < count($excludeCats); $i++) {
             $queryExclude .= $db->Quote($excludeCats[$i]);
             if (next($excludeCats) !== false) {
                 $queryExclude .= ',';
             }
         }
         $queryExclude .= ')';
     }
     foreach ($keys as $key) {
         $query = 'SELECT a.`id`, a.`title`';
         $query .= ' FROM `#__easyblog_post` AS `a`';
         if ($type == 'team' && !empty($typeId)) {
             $query .= ' INNER JOIN `#__easyblog_team_post` AS `b`';
             $query .= ' 	ON a.`id` = b.`post_id`';
         }
         $query .= ' WHERE a.`published` = ' . $db->Quote('1');
         $query .= ' AND a.`ispending` = ' . $db->Quote('0');
         //blog privacy setting
         // @integrations: jomsocial privacy
         $file = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'core.php';
         $easysocial = EasyBlogHelper::getHelper('EasySocial');
         if ($config->get('integrations_easysocial_privacy') && $easysocial->exists() && !EasyBlogHelper::isSiteAdmin()) {
             $esPrivacyQuery = $easysocial->buildPrivacyQuery('a');
             $query .= $esPrivacyQuery;
         } else {
             if ($config->get('main_jomsocial_privacy') && JFile::exists($file) && !EasyBlogHelper::isSiteAdmin()) {
                 require_once $file;
                 $my = JFactory::getUser();
                 $jsFriends = CFactory::getModel('Friends');
                 $friends = $jsFriends->getFriendIds($my->id);
                 // Insert query here.
                 $query .= ' AND (';
                 $query .= ' (a.`private`= 0 ) OR';
                 $query .= ' ( (a.`private` = 20) AND (' . $db->Quote($my->id) . ' > 0 ) ) OR';
                 if (empty($friends)) {
                     $query .= ' ( (a.`private` = 30) AND ( 1 = 2 ) ) OR';
                 } else {
                     $query .= ' ( (a.`private` = 30) AND ( a.' . $db->nameQuote('created_by') . ' IN (' . implode(',', $friends) . ') ) ) OR';
                 }
                 $query .= ' ( (a.`private` = 40) AND ( a.' . $db->nameQuote('created_by') . '=' . $my->id . ') )';
                 $query .= ' )';
             } else {
                 //blog privacy setting
                 if ($my->id == 0) {
                     $query .= ' AND a.`private` = ' . $db->Quote(BLOG_PRIVACY_PUBLIC);
                 }
             }
         }
         //include categories
         if (!empty($queryInclude)) {
             $query .= $queryInclude;
         }
         //exclude private categories
         $query .= $queryExclude;
         if ($isBloggerMode !== false) {
             $query .= ' AND a.`created_by` = ' . $db->Quote($isBloggerMode);
         }
         if ($type == 'team' && !empty($typeId)) {
             $query .= ' 	AND b.`team_id` = ' . $db->Quote($typeId);
         } else {
             $query .= ' 	AND a.`issitewide` = ' . $db->Quote('1');
         }
         //language filtering
         if (EasyBlogHelper::getJoomlaVersion() >= '1.6') {
             // @rule: When language filter is enabled, we need to detect the appropriate contents
             $filterLanguage = JFactory::getApplication()->getLanguageFilter();
             if ($filterLanguage) {
                 $query .= ' AND (';
                 $query .= ' a.`language`=' . $db->Quote(JFactory::getLanguage()->getTag());
                 $query .= ' OR a.`language`=' . $db->Quote('');
                 $query .= ' OR a.`language`=' . $db->Quote('*');
                 $query .= ' )';
             }
         }
         if ($key == 'prev') {
             $query .= ' AND a.`created` < ' . $db->Quote($creationDate);
             $query .= ' ORDER BY a.`created` DESC';
         } else {
             if ($key == 'next') {
                 $query .= ' AND a.`created` > ' . $db->Quote($creationDate);
                 $query .= ' ORDER BY a.`created` ASC';
             }
         }
         $query .= ' LIMIT 1';
         $db->setQuery($query);
         $result = $db->loadObjectList();
         $nav[$key] = $result;
     }
     return $nav;
 }
Esempio n. 4
0
 /**
  * Displays a single latest blog entry.
  *
  * @since	3.5
  * @author	Mark Lee <*****@*****.**>
  */
 public function latest()
 {
     // Fetch the latest blog entry
     $model = $this->getModel('Blog');
     // Get the current active menu's properties.
     $app = JFactory::getApplication();
     $menu = $app->getMenu()->getActive();
     $inclusion = '';
     if (is_object($menu)) {
         $params = EasyBlogHelper::getRegistry($menu->params);
         $inclusion = EasyBlogHelper::getCategoryInclusion($params->get('inclusion'));
     }
     $items = $model->getBlogsBy('latest', 0, '', 1, EBLOG_FILTER_PUBLISHED, null, true, array(), false, false, true, array(), $inclusion);
     if (is_array($items) && !empty($items)) {
         JRequest::setVar('id', $items[0]->id);
         return $this->display();
     }
     echo JText::_('COM_EASYBLOG_NO_BLOG_ENTRY');
 }
Esempio n. 5
0
 function simple($tmpl = null)
 {
     $app = JFactory::getApplication();
     $doc = JFactory::getDocument();
     $config = EasyBlogHelper::getConfig();
     // @task: Set meta tags for bloggers
     EasyBlogHelper::setMeta(META_ID_GATEGORIES, META_TYPE_VIEW);
     // @task: Set the pathway
     $pathway = $app->getPathway();
     if (!EasyBlogRouter::isCurrentActiveMenu('categories')) {
         $this->setPathway(JText::_('COM_EASYBLOG_CATEGORIES_BREADCRUMB'), '');
     }
     // @task: Get the sorting options.
     $sortConfig = $config->get('layout_sorting_category', 'latest');
     $sort = JRequest::getCmd('sort', $sortConfig);
     // @task: Retrieve models
     $categoriesModel = $this->getModel('Categories');
     $categoryModel = $this->getModel('Category');
     // @task: Test if there's any explicit inclusion of categories
     $menu = $app->getMenu()->getActive();
     $inclusion = '';
     if (is_object($menu) && stristr($menu->link, 'view=categories') !== false) {
         $params = EasyBlogHelper::getRegistry($menu->params);
         $inclusion = EasyBlogHelper::getCategoryInclusion($params->get('inclusion'));
     }
     $data = $categoriesModel->getCategoryTree($sort);
     if (!empty($data)) {
         for ($i = 0; $i < count($data); $i++) {
             $row =& $data[$i];
             // 				$row->childs = null;
             // 				EasyBlogHelper::buildNestedCategories($row->id, $row, false , true );
             $catIds = array();
             $catIds[] = $row->id;
             $row->cnt = $categoryModel->getTotalPostCount($catIds);
             $row->description = $row->get('description');
             // 				$row->rssLink   	= $row->getRSS();
             // 				$row->avatar    	= $row->getAvatar();
         }
     }
     // 		echo '<pre>';
     // 		print_r($data);
     // 		echo '</pre>';
     // 		exit;
     // @task: Set page title
     parent::setPageTitle(JText::_('COM_EASYBLOG_CATEGORIES_PAGE_TITLE'), '0', true);
     $theme = new CodeThemes();
     $theme->set('data', $data);
     $theme->set('sort', $sort);
     echo $theme->fetch('blog.categories.simple.php');
 }
Esempio n. 6
0
 /**
  * Responsible to display the front page of the blog listings
  *
  * @access	public
  */
 function display($tmpl = null)
 {
     // @task: Set meta tags for latest post
     EasyBlogHelper::setMeta(META_ID_LATEST, META_TYPE_VIEW);
     // @task: Set rss links into headers.
     EasyBlogHelper::getHelper('Feeds')->addHeaders('index.php?option=com_easyblog&view=latest');
     $app = JFactory::getApplication();
     $doc = JFactory::getDocument();
     $config = EasyBlogHelper::getConfig();
     $my = JFactory::getUser();
     $acl = EasyBlogACLHelper::getRuleSet();
     // @task: Add a breadcrumb if the current menu that's being accessed is not from the latest view.
     if (!EasyBlogRouter::isCurrentActiveMenu('latest')) {
         $this->setPathway(JText::_('COM_EASYBLOG_LATEST_BREADCRUMB'), '');
     }
     // @task: Get the current active menu's properties.
     $menu = $app->getMenu()->getActive();
     $menu = JFactory::getApplication()->getMenu()->getActive();
     $inclusion = '';
     if (is_object($menu)) {
         $params = EasyBlogHelper::getRegistry();
         $params->load($menu->params);
         $inclusion = EasyBlogHelper::getCategoryInclusion($params->get('inclusion'));
         if ($params->get('includesubcategories', 0) && !empty($inclusion)) {
             $tmpInclusion = array();
             foreach ($inclusion as $includeCatId) {
                 //get the nested categories
                 $category = new stdClass();
                 $category->id = $includeCatId;
                 $category->childs = null;
                 EasyBlogHelper::buildNestedCategories($category->id, $category);
                 $linkage = '';
                 EasyBlogHelper::accessNestedCategories($category, $linkage, '0', '', 'link', ', ');
                 $catIds = array();
                 $catIds[] = $category->id;
                 EasyBlogHelper::accessNestedCategoriesId($category, $catIds);
                 $tmpInclusion = array_merge($tmpInclusion, $catIds);
             }
             $inclusion = $tmpInclusion;
         }
     }
     // @task: Necessary filters
     $sort = JRequest::getCmd('sort', $config->get('layout_postorder'));
     $model = $this->getModel('Blog');
     // @task: Retrieve the list of featured blog posts.
     $featured = $model->getFeaturedBlog($inclusion);
     $excludeIds = array();
     // @task: Add canonical URLs.
     if ($config->get('main_canonical_entry')) {
         $canonicalUrl = EasyBlogRouter::getRoutedURL('index.php?option=com_easyblog&view=latest', false, true, true);
         $doc->addCustomTag('<link rel="canonical" href="' . $canonicalUrl . '"/>');
     }
     // Test if user also wants the featured items to be appearing in the blog listings on the front page.
     // Otherwise, we'll need to exclude the featured id's from appearing on the front page.
     if (!$config->get('layout_featured_frontpage')) {
         foreach ($featured as $item) {
             $excludeIds[] = $item->id;
         }
     }
     // @task: Admin might want to display the featured blogs on all pages.
     if (!$config->get('layout_featured_allpages') && (JRequest::getInt('start', 0) != 0 || JRequest::getInt('limitstart', 0) != 0)) {
         $featured = array();
     } else {
         for ($i = 0; $i < count($featured); $i++) {
             $row = $featured[$i];
             $row->featuredImage = EasyBlogHelper::getFeaturedImage($row->intro . $row->content);
         }
         $featured = EasyBlogHelper::formatBlog($featured, true, false, false, false, false);
     }
     // @task: Try to retrieve any categories to be excluded.
     $excludedCategories = $config->get('layout_exclude_categories');
     $excludedCategories = empty($excludedCategories) ? '' : explode(',', $excludedCategories);
     // @task: Fetch the blog entries.
     $data = $model->getBlogsBy('', '', $sort, 0, EBLOG_FILTER_PUBLISHED, null, true, $excludeIds, false, false, true, $excludedCategories, $inclusion);
     $pagination = $model->getPagination();
     $params = $app->getParams('com_easyblog');
     // @task: Perform necessary formatting here.
     $data = EasyBlogHelper::formatBlog($data, true, true, true, true);
     // @task: Update the title of the page if navigating on different pages to avoid Google marking these title's as duplicates.
     $title = EasyBlogHelper::getPageTitle(JText::_('COM_EASYBLOG_LATEST_PAGE_TITLE'));
     // @task: Set the page title
     parent::setPageTitle($title, $pagination, $config->get('main_pagetitle_autoappend'));
     // @task: Get pagination output here.
     $paginationHTML = $pagination->getPagesLinks();
     $theme = new CodeThemes();
     $theme->set('data', $data);
     $theme->set('featured', $featured);
     $theme->set('currentURL', EasyBlogRouter::_('index.php?option=com_easyblog&view=latest', false));
     $theme->set('pagination', $paginationHTML);
     // @task: Send back response to the browser.
     echo $theme->fetch('blog.latest.php');
 }