コード例 #1
0
ファイル: blog.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieves a list of blog posts associated with a particular tag
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getTaggedBlogs($tagId = 0, $limit = false, $includeCatIds = '', $sorting = '')
 {
     if (!$tagId) {
         return false;
     }
     $my = JFactory::getUser();
     $db = EB::db();
     $config = EasyBlogHelper::getConfig();
     $catAccess = array();
     if ($limit === false) {
         if ($config->get('layout_listlength') == 0) {
             $limit = $this->getState('limit');
         } else {
             $limit = $config->get('layout_listlength');
         }
     }
     $limitstart = $this->getState('limitstart');
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $queryExclude = '';
     $excludeCats = array();
     $isJSGrpPluginInstalled = false;
     $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
     $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
     $isJSInstalled = false;
     if (JFile::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'core.php')) {
         $isJSInstalled = true;
     }
     $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
     $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
     $jsGrpPostIds = '';
     $jsEventPostIds = '';
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (b.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'b');
     }
     if ($includeJSEvent) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, 'b');
     }
     if ($includeJSGrp) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, 'b');
     }
     if (EB::easysocial()->exists()) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, 'b');
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, 'b');
     }
     $contributeSQL .= ')';
     //get teamblogs id.
     $query = 'SELECT b.*';
     $query .= ' FROM ' . $db->nameQuote('#__easyblog_post_tag') . ' AS a ';
     $query .= ' INNER JOIN ' . $db->nameQuote('#__easyblog_post') . ' AS b ';
     $query .= ' ON a.post_id=b.id ';
     $query .= ' WHERE a.' . $db->quoteName('tag_id') . ' = ' . $db->Quote($tagId);
     $query .= ' AND b.' . $db->quoteName('published') . ' = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query .= ' AND b.' . $db->quoteName('state') . '=' . $db->Quote(EASYBLOG_POST_NORMAL);
     $query .= $contributeSQL;
     // @rule: When language filter is enabled, we need to detect the appropriate contents
     $filterLanguage = JFactory::getApplication()->getLanguageFilter();
     if ($filterLanguage) {
         $query .= EBR::getLanguageQuery('AND', 'b.language');
     }
     $file = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'core.php';
     //blog privacy setting
     if ($config->get('main_jomsocial_privacy') && JFile::exists($file) && !EasyBlogHelper::isSiteAdmin()) {
         require_once $file;
         $jsFriends = CFactory::getModel('Friends');
         $friends = $jsFriends->getFriendIds($my->id);
         array_push($friends, $my->id);
         // Insert query here.
         $query .= ' AND (';
         $query .= ' (b.`access`= 0 ) OR';
         $query .= ' ( (b.`access` = 20) AND (' . $db->Quote($my->id) . ' > 0 ) ) OR';
         if (empty($friends)) {
             $query .= ' ( (b.`access` = 30) AND ( 1 = 2 ) ) OR';
         } else {
             $query .= ' ( (b.`access` = 30) AND ( b.' . $db->nameQuote('created_by') . ' IN (' . implode(',', $friends) . ') ) ) OR';
         }
         $query .= ' ( (b.`access` = 40) AND ( b.' . $db->nameQuote('created_by') . '=' . $my->id . ') )';
         $query .= ' )';
     } else {
         if ($my->id == 0) {
             $query .= ' AND b.`access` = ' . $db->Quote(BLOG_PRIVACY_PUBLIC);
         }
     }
     if ($isBloggerMode !== false) {
         $query .= ' AND b.`created_by` = ' . $db->Quote($isBloggerMode);
     }
     $includeCats = array();
     $includeCatIds = trim($includeCatIds);
     if (!empty($includeCatIds)) {
         $includeCats = explode(',', $includeCatIds);
         if (!empty($includeCats)) {
             $catAccess['include'] = $includeCats;
         }
     }
     // category access
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('b.`id`', $catAccess);
     $query .= ' AND (' . $catAccessSQL . ')';
     $sort = $config->get('layout_postorder', 'latest');
     $defaultSorting = $config->get('layout_postsort', 'desc');
     if ($sorting) {
         $defaultSorting = $sorting;
     }
     switch ($sort) {
         case 'latest':
             $queryOrder = ' ORDER BY b.`created` ' . $defaultSorting;
             break;
         case 'published':
             $queryOrder = ' ORDER BY b.`publish_up` ' . $defaultSorting;
             break;
         case 'popular':
             $queryOrder = ' ORDER BY b.`hits` ' . $defaultSorting;
             break;
         case 'active':
             $queryOrder = ' ORDER BY b.`publish_down` ' . $defaultSorting;
             break;
         case 'alphabet':
             $queryOrder = ' ORDER BY b.`title` ' . $defaultSorting;
             break;
         case 'modified':
             $queryOrder = ' ORDER BY b.`modified` ' . $defaultSorting;
             break;
         case 'random':
             $queryOrder = ' ORDER BY RAND() ';
             break;
         default:
             break;
     }
     $query .= $queryOrder;
     //total tag's post sql
     $totalQuery = 'SELECT COUNT(1) FROM (';
     $totalQuery .= $query;
     $totalQuery .= ') as x';
     $query .= ' LIMIT ' . $limitstart . ',' . $limit;
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     $db->setQuery($totalQuery);
     $db->loadResult();
     $this->_total = $db->loadResult();
     jimport('joomla.html.pagination');
     $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     return $rows;
 }
コード例 #2
0
ファイル: easyblog.php プロジェクト: knigherrant/decopatio
 public function getResult($text, $phrase, $ordering)
 {
     $config = EasyBlogHelper::getConfig();
     $my = JFactory::getUser();
     $db = EasyBlogHelper::db();
     $where = array();
     $where2 = array();
     // used for privacy
     $queryWhere = '';
     $queryExclude = '';
     $queryExcludePending = '';
     $excludeCats = array();
     switch ($phrase) {
         case 'exact':
             $where[] = 'a.`title` LIKE ' . $db->Quote('%' . $db->escape($text, true) . '%', false);
             $where[] = 'a.`content` LIKE ' . $db->Quote('%' . $db->escape($text, true) . '%', false);
             $where[] = 'a.`intro` LIKE ' . $db->Quote('%' . $db->escape($text, true) . '%', false);
             $where2 = '( t.title LIKE ' . $db->Quote('%' . $db->escape($text, true) . '%', false) . ')';
             $where = '(' . implode(') OR (', $where) . ')';
             break;
         case 'all':
         case 'any':
         default:
             $words = explode(' ', $text);
             $wheres = array();
             $where2 = array();
             $wheres2 = array();
             foreach ($words as $word) {
                 $word = $db->Quote('%' . $db->escape($word, true) . '%', false);
                 $where[] = 'a.`title` LIKE ' . $word;
                 $where[] = 'a.`content` LIKE ' . $word;
                 $where[] = 'a.`intro` LIKE ' . $word;
                 $where2[] = 't.title LIKE ' . $word;
                 $wheres[] = implode(' OR ', $where);
                 $wheres2[] = implode(' OR ', $where2);
             }
             $where = '(' . implode($phrase == 'all' ? ') AND (' : ') OR (', $wheres) . ')';
             $where2 = '(' . implode($phrase == 'all' ? ') AND (' : ') OR (', $wheres2) . ')';
             break;
     }
     $isJSGrpPluginInstalled = false;
     $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
     $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
     $isJSInstalled = false;
     // need to check if the site installed jomsocial.
     if (JFile::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'core.php')) {
         $isJSInstalled = true;
     }
     $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
     $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
     //get teamblogs id.
     $query = '';
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a');
     }
     if ($includeJSEvent) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, 'a');
     }
     if ($includeJSGrp) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, 'a');
     }
     if (EB::easysocial()->exists()) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, 'a');
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, 'a');
     }
     $contributeSQL .= ')';
     $queryWhere .= $contributeSQL;
     // category access here
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`');
     $queryWhere .= ' AND (' . $catAccessSQL . ')';
     $query = 'SELECT a.*, CONCAT(a.`content` , a.`intro`) AS text , "2" as browsernav';
     $query .= ' FROM `#__easyblog_post` as a USE INDEX (`easyblog_post_searchnew`) ';
     $query .= ' WHERE (' . $where;
     $query .= ' OR a.`id` IN( ';
     $query .= '		SELECT tp.`post_id` FROM `#__easyblog_tag` AS t ';
     $query .= '		INNER JOIN `#__easyblog_post_tag` AS tp ON tp.`tag_id` = t.`id` ';
     $query .= '		WHERE ' . $where2;
     $query .= '))';
     $my = JFactory::getUser();
     if ($my->id == 0) {
         //guest should only see public post.
         $query .= ' AND a.`access` = ' . $db->Quote('0');
     }
     //do not show unpublished post
     $query .= ' AND a.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query .= ' AND a.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
     $query .= $queryWhere;
     switch ($ordering) {
         case 'oldest':
             $query .= ' ORDER BY a.`created` ASC';
             break;
         case 'newest':
             $query .= ' ORDER BY a.`created` DESC';
             break;
     }
     $db->setQuery($query);
     return $db->loadObjectList();
 }
コード例 #3
0
ファイル: category.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieve a list of blog posts from a specific list of categories
  *
  * @since	4.0
  * @access	public
  * @param	string
  * @return
  */
 public function getPosts($categories, $limit = null)
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EB::config();
     // Determines if this is currently on blogger mode
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     // use in generating category access sql
     $catAccess = array();
     $catAccess['include'] = $categories;
     $isJSGrpPluginInstalled = false;
     $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
     $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
     $isJSInstalled = false;
     // need to check if the site installed jomsocial.
     if (EB::jomsocial()->exists()) {
         $isJSInstalled = true;
     }
     $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
     $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a');
     }
     if ($includeJSEvent) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, 'a');
     }
     if ($includeJSGrp) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, 'a');
     }
     // Test if easysocial exists on the site
     if (EB::easysocial()->exists()) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, 'a');
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, 'a');
     }
     $contributeSQL .= ')';
     $query = array();
     $query[] = 'SELECT a.* FROM ' . $db->quoteName('#__easyblog_post') . ' AS a';
     // Build the WHERE clauses
     $query[] = 'WHERE a.' . $db->quoteName('published') . '=' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query[] = 'AND a.' . $db->quoteName('state') . '=' . $db->Quote(EASYBLOG_POST_NORMAL);
     // If this is on blogger mode, fetch items created by the current author only
     if ($isBloggerMode !== false) {
         $query[] = ' AND a.' . $db->quoteName('created_by') . '=' . $db->Quote($isBloggerMode);
     } else {
         // Get the author id based on the category menu
         $authorId = EB::getCategoryMenuBloggerId();
         if ($authorId) {
             $query[] = ' AND a.' . $db->quoteName('created_by') . '=' . $db->Quote($authorId);
         }
     }
     //sql for blog contribution
     $query[] = $contributeSQL;
     // sql for category access
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`', $catAccess);
     $query[] = 'AND (' . $catAccessSQL . ')';
     // If user is a guest, ensure that they can really view the blog post
     if ($this->my->guest) {
         $query[] = 'AND a.' . $db->quoteName('access') . '=' . $db->Quote(BLOG_PRIVACY_PUBLIC);
     }
     // Ensure that the blog posts is available site wide
     // $query[] = 'AND a.' . $db->quoteName('source_id') . '=' . $db->Quote('0');
     // Filter by language
     $language = EB::getCurrentLanguage();
     if ($language) {
         $query[] = 'AND (a.' . $db->quoteName('language') . '=' . $db->Quote($language) . ' OR a.' . $db->quoteName('language') . '=' . $db->Quote('*') . ' OR a.' . $db->quoteName('language') . '=' . $db->Quote('') . ')';
     }
     // Ordering options
     $ordering = $config->get('layout_postsort', 'DESC');
     // Order the posts
     $query[] = 'ORDER BY a.' . $db->quoteName('created') . ' ' . $ordering;
     // Set the pagination
     if (!is_null($limit)) {
         // Glue back the sql queries into a single string.
         $queryCount = implode(' ', $query);
         $queryCount = str_ireplace('SELECT a.*', 'SELECT COUNT(1)', $queryCount);
         $db->setQuery($queryCount);
         $count = $db->loadResult();
         $limit = $limit == 0 ? $this->getState('limit') : $limit;
         $limitstart = $this->input->get('limitstart', $this->getState('limitstart'), 'int');
         // Set the limit
         $query[] = 'LIMIT ' . $limitstart . ',' . $limit;
         $this->_pagination = EB::pagination($count, $limitstart, $limit);
     }
     // Glue back the sql queries into a single string.
     $query = implode(' ', $query);
     // Debug
     // echo str_ireplace('#__', 'jos_', $query);exit;
     $db->setQuery($query);
     if ($db->getErrorNum() > 0) {
         JError::raiseError($db->getErrorNum(), $db->getErrorMsg() . $db->stderr());
     }
     $result = $db->loadObjectList();
     return $result;
 }
コード例 #4
0
ファイル: archive.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieves a list of blog posts by specific month
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getArchivePostByMonth($month = '', $year = '', $showPrivate = false)
 {
     $db = EB::db();
     $user = JFactory::getUser();
     $config = EB::config();
     // used for privacy
     $queryWhere = '';
     $queryExclude = '';
     $queryExcludePending = '';
     $excludeCats = array();
     if ($user->id == 0) {
         $showPrivate = false;
     }
     // Blog privacy setting
     // @integrations: jomsocial privacy
     $privateBlog = '';
     if (EB::easysocial()->exists() && $config->get('integrations_easysocial_privacy') && !EB::isSiteAdmin()) {
         $esPrivacyQuery = EB::easysocial()->buildPrivacyQuery('a');
         $privateBlog .= $esPrivacyQuery;
     } else {
         if ($config->get('main_jomsocial_privacy') && EB::jomsocial()->exists() && !EB::isSiteAdmin()) {
             $friendsModel = CFactory::getModel('Friends');
             $friends = $friendsModel->getFriendIds($user->id);
             // Insert query here.
             $privateBlog .= ' AND (';
             $privateBlog .= ' (a.`access`= 0 ) OR';
             $privateBlog .= ' ( (a.`access` = 20) AND (' . $db->Quote($user->id) . ' > 0 ) ) OR';
             if (!$friends) {
                 $privateBlog .= ' ( (a.`access` = 30) AND ( 1 = 2 ) ) OR';
             } else {
                 $privateBlog .= ' ( (a.`access` = 30) AND ( a.' . $db->nameQuote('created_by') . ' IN (' . implode(',', $friends) . ') ) ) OR';
             }
             $privateBlog .= ' ( (a.`access` = 40) AND ( a.' . $db->nameQuote('created_by') . '=' . $user->id . ') )';
             $privateBlog .= ' )';
         } else {
             if ($user->id == 0) {
                 $privateBlog .= ' AND a.`access` = ' . $db->Quote(0);
             }
         }
     }
     // Join the query ?
     $privateBlog = $showPrivate ? '' : $privateBlog;
     $isJSGrpPluginInstalled = false;
     $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
     $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
     $isJSInstalled = false;
     // need to check if the site installed jomsocial.
     if (EB::jomsocial()->exists()) {
         $isJSInstalled = true;
     }
     $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
     $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a');
     }
     if ($includeJSEvent) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, 'a');
     }
     if ($includeJSGrp) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, 'a');
     }
     if (EB::easysocial()->exists()) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, 'a');
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, 'a');
     }
     $contributeSQL .= ')';
     $queryWhere .= $contributeSQL;
     //get teamblogs id.
     $query = '';
     $extraSQL = '';
     // If this is on blogger mode, we need to only pick items from the blogger.
     $blogger = EBR::isBloggerMode();
     if ($blogger !== false) {
         $extraSQL = ' AND a.`created_by` = ' . $db->Quote($blogger);
     }
     $tzoffset = EB::date()->getOffSet(true);
     $query = 'SELECT a.*, DAY( DATE_ADD(a.`created`, INTERVAL ' . $tzoffset . ' HOUR) ) AS day,';
     $query .= ' MONTH( DATE_ADD(a.`created`, INTERVAL ' . $tzoffset . ' HOUR) ) AS month,';
     $query .= ' YEAR( DATE_ADD(a.`created`, INTERVAL ' . $tzoffset . ' HOUR) ) AS year ';
     $query .= ' FROM ' . $db->nameQuote('#__easyblog_post') . ' as a';
     $query .= ' WHERE a.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED) . ' ';
     $query .= ' AND a.' . $db->quoteName('state') . ' = ' . $db->Quote(EASYBLOG_POST_NORMAL) . ' ';
     $query .= $privateBlog . ' ';
     $query .= ' AND (a.`created` > ' . $db->Quote($year . '-' . $month . '-01 00:00:00') . ' AND a.`created` < ' . $db->Quote($year . '-' . $month . '-31 23:59:59') . ') ';
     // If do not display private posts, we need to append additional queries here.
     if (!$showPrivate) {
         // sql for category access
         $catLib = EB::category();
         $catAccessSQL = $catLib->genAccessSQL('a.`id`');
         $query .= ' AND (' . $catAccessSQL . ')';
     }
     $query .= $extraSQL . ' ';
     $query .= $queryWhere;
     $query .= ' ORDER BY a.`created` ASC ';
     // echo $query;exit;
     $db->setQuery($query);
     $result = $db->loadObjectList();
     $postCount = new EasyblogCalendarObject($month, $year);
     if (!empty($result)) {
         foreach ($result as $row) {
             $post = EB::post($row->id);
             // $post->bind($row);
             $post = EB::formatter('entry', $post);
             // var_dump($row);exit;
             if ($postCount->{$year}->{$month}->{$row->day} == 0) {
                 $postCount->{$year}->{$month}->{$row->day} = array($post);
             } else {
                 array_push($postCount->{$year}->{$month}->{$row->day}, $post);
             }
         }
     }
     return $postCount;
 }
コード例 #5
0
 public function preloadPosts($catIds)
 {
     $db = EB::db();
     $config = EB::config();
     $limit = EB::call('Pagination', 'getLimit', array(EBLOG_PAGINATION_CATEGORIES));
     // Determines if this is currently on blogger mode
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $query = array();
     $i = 1;
     foreach ($catIds as $cid => $cIds) {
         $p = 'p' . $i;
         $a = 'a' . $i;
         $f = 'f' . $i;
         $isJSGrpPluginInstalled = false;
         $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
         $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
         $isJSInstalled = false;
         // need to check if the site installed jomsocial.
         if (EB::jomsocial()->exists()) {
             $isJSInstalled = true;
         }
         $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
         $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
         // contribution type sql
         $contributor = EB::contributor();
         $contributeSQL = " AND ( ({$p}.`source_type` = " . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ") ";
         if ($config->get('main_includeteamblogpost')) {
             $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, $p);
         }
         if ($includeJSEvent) {
             $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, $p);
         }
         if ($includeJSGrp) {
             $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, $p);
         }
         // Test if easysocial exists on the site
         if (EB::easysocial()->exists()) {
             $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, $p);
             $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, $p);
         }
         $contributeSQL .= ")";
         $tmp = "(select {$p}.*, " . $db->Quote($cid) . " as `category_id`, {$f}.`id` as `featured`";
         $tmp .= "\tfrom `#__easyblog_post` as {$p}";
         $tmp .= "\t\tinner join `#__easyblog_post_category` as {$a} on {$p}.`id` = {$a}.`post_id`";
         $tmp .= " LEFT JOIN `#__easyblog_featured` AS {$f}";
         $tmp .= " \tON {$p}.`id` = {$f}.`content_id` AND {$f}.`type` = " . $db->Quote('post');
         if (count($cIds) == 1) {
             $tmp .= " where {$a}.`category_id` = " . $db->Quote($cIds[0]);
         } else {
             $tmp .= " where {$a}.`category_id` IN (" . implode(',', $cIds) . ")";
         }
         $tmp .= " and {$p}.`published` = " . $db->Quote(EASYBLOG_POST_PUBLISHED);
         $tmp .= " and {$p}.`state` = " . $db->Quote(EASYBLOG_POST_NORMAL);
         if ($isBloggerMode !== false) {
             $tmp .= " AND {$p}." . $db->qn('created_by') . " = " . $db->Quote($isBloggerMode);
         } else {
             // Get the author id based on the category menu
             $authorId = EB::getCategoryMenuBloggerId();
             if ($authorId) {
                 $tmp .= " AND {$p}." . $db->qn('created_by') . " = " . $db->Quote($authorId);
             }
         }
         // If user is a guest, ensure that they can really view the blog post
         if ($this->my->guest) {
             $tmp .= " AND {$p}." . $db->qn('access') . " = " . $db->Quote(BLOG_PRIVACY_PUBLIC);
         }
         // Ensure that the blog posts is available site wide
         $tmp .= $contributeSQL;
         // $tmp .= " AND $p." . $db->qn('source_id') . " = " . $db->Quote("0");
         // Filter by language
         $language = EB::getCurrentLanguage();
         if ($language) {
             $tmp .= " AND ({$p}." . $db->qn('language') . "=" . $db->Quote($language) . " OR {$p}." . $db->qn('language') . "=" . $db->Quote('*') . " OR {$p}." . $db->qn('language') . "=" . $db->Quote('') . ")";
         }
         $tmp .= " order by {$p}.`created` desc";
         $tmp .= " limit " . $limit . ")";
         $query[] = $tmp;
         $i++;
     }
     $query = implode(' UNION ALL ', $query);
     // echo $query;exit;
     $db->setQuery($query);
     $results = $db->loadObjectList();
     $posts = array();
     if ($results) {
         foreach ($results as $row) {
             $posts[$row->category_id][] = $row;
         }
     }
     return $posts;
 }
コード例 #6
0
ファイル: helper.php プロジェクト: knigherrant/decopatio
 public static function getMostCommentedPost(&$params)
 {
     $mainframe = JFactory::getApplication();
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EB::config();
     $count = (int) trim($params->get('count', 0));
     $categories = $params->get('catid');
     $catAccess = array();
     // Get the category ID if any from the module setting
     if (!empty($categories)) {
         $categories = explode(',', $categories);
     }
     // Respect inclusion categories
     if (!empty($categories)) {
         if (!is_array($categories)) {
             $categories = array($categories);
         }
         $catAccess['include'] = $categories;
     }
     $showprivate = $params->get('showprivate', true);
     $showcomment = $params->get('showlatestcomment', true);
     $query = 'SELECT a.*, count(b.' . $db->quoteName('id') . ') as ' . $db->quoteName('comment_count');
     if ($showcomment) {
         $query .= ', c.' . $db->quoteName('id') . ' as ' . $db->quoteName('comment_id') . ', c.' . $db->quoteName('comment') . ', c.' . $db->quoteName('created_by') . ' as ' . $db->quoteName('commentor') . ', c.' . $db->quoteName('title') . ' as ' . $db->quoteName('comment_title') . ', c.' . $db->quoteName('name') . ' as ' . $db->quoteName('commentor_name');
     }
     $query .= ' FROM ' . $db->quoteName('#__easyblog_post') . ' AS a';
     $query .= '  LEFT JOIN ' . $db->quoteName('#__easyblog_comment') . ' AS b ON a.' . $db->quoteName('id') . ' = b.' . $db->quoteName('post_id');
     if ($showcomment) {
         $query .= '  LEFT JOIN ' . $db->quoteName('#__easyblog_comment') . ' AS c ON a.' . $db->quoteName('id') . ' = c.' . $db->quoteName('post_id');
         $query .= '    AND c.' . $db->quoteName('id') . ' = (SELECT MAX(d.' . $db->quoteName('id') . ') FROM ' . $db->quoteName('#__easyblog_comment') . ' AS d WHERE c.' . $db->quoteName('post_id') . ' = d.' . $db->quoteName('post_id') . ')';
     }
     $query .= ' WHERE a.' . $db->quoteName('published') . ' = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query .= ' AND a.' . $db->quoteName('state') . ' = ' . $db->Quote(EASYBLOG_POST_NORMAL);
     if (!$showprivate) {
         $query .= ' AND a.' . $db->quoteName('access') . ' = ' . $db->Quote('0');
     }
     // get teamblogs id.
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a');
     }
     $contributeSQL .= ')';
     $query .= $contributeSQL;
     // category access here
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`', $catAccess);
     $query .= ' AND (' . $catAccessSQL . ')';
     $query .= ' GROUP BY a.' . $db->quoteName('id');
     $query .= ' HAVING (' . $db->quoteName('comment_count') . ' > 0)';
     $query .= ' ORDER BY ' . $db->quoteName('comment_count') . ' DESC';
     if ($count > 0) {
         $query .= ' LIMIT ' . $count;
     }
     $db->setQuery($query);
     $posts = $db->loadObjectList();
     // process item
     $posts = EB::modules()->processItems($posts, $params);
     return $posts;
 }
コード例 #7
0
ファイル: composer.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieves the html codes for composer
  *
  * @since	4.0
  * @access	public
  * @param	int		The unique item id.
  * @param	string	The type of the post, whether this is a post or a draft
  * @return
  */
 public function renderManager($uid = null)
 {
     // Get the current post library
     $post = EB::post($uid);
     // Check if user has permissions to write new entry
     if (!$post->canCreate()) {
         return JError::raiseError(500, JText::_('COM_EASYBLOG_NO_PERMISSION_TO_CREATE_BLOG'));
     }
     // If the blog post is edited, ensure that the user has access to edit this entry
     if (!$post->canEdit()) {
         return JError::raiseError(500, JText::_('COM_EASYBLOG_NO_PERMISSION_TO_EDIT_BLOG'));
     }
     // Get the editor to use
     $editorSetting = $this->user->getEditor();
     $editorSetting = $editorSetting == 'composer' ? JFactory::getConfig()->get('editor') : $editorSetting;
     $editor = JFactory::getEditor($editorSetting);
     // Get a list of parent categories
     $parentCategories = $this->getParentCategories();
     // Get the default category.
     $defaultCategoryId = EB::model('Category')->getDefaultCategoryId();
     $primaryCategory = $post->getPrimaryCategory();
     // Get a list of categories
     // Prepare selected category
     $selectedCategories = array();
     foreach ($post->getCategories() as $row) {
         $selectedCategories[] = (int) $row->id;
     }
     // if there is no category selected, or this is a new blog post, lets use the default category id.
     if (!$selectedCategories && $defaultCategoryId) {
         $selectedCategories[] = $defaultCategoryId;
     }
     // Prepare categories object
     $categories = array();
     $cats = EB::model('Categories')->getCategoriesHierarchy(false);
     foreach ($cats as $row) {
         $category = new stdClass();
         $category->id = (int) $row->id;
         $category->title = $row->title;
         $category->parent_id = (int) $row->parent_id;
         $params = new JRegistry($row->params);
         $category->tags = $params->get('tags');
         if (!$category->tags) {
             $category->tags = array();
         } else {
             $tags = explode(',', $category->tags);
             for ($i = 0; $i < count($tags); $i++) {
                 $tags[$i] = JString::trim($tags[$i]);
             }
             $category->tags = implode(',', $tags);
         }
         // Cross check if this category is selected
         $category->selected = in_array($category->id, $selectedCategories);
         // check if this is a primary category or not
         $category->isprimary = $category->id == $primaryCategory->id;
         $categories[] = $category;
     }
     // Prepare tags
     $tags = array();
     foreach ($post->getTags() as $row) {
         $tag = new stdClass();
         $tag->id = (int) $row->id;
         $tag->title = $row->title;
         $tags[] = $tag;
     }
     // Render default post templates
     $postTemplatesModel = EB::model('Templates');
     $postTemplates = $postTemplatesModel->getPostTemplates($this->my->id);
     // Get the post's author
     $author = $post->getAuthor();
     // Get a list of revisions for this post
     $revisions = $post->getRevisions();
     // Get the current revision for the post
     $workingRevision = $post->getWorkingRevision();
     // Determines if the current page load should be loading from block templates
     $postTemplate = EB::table('PostTemplate');
     $postTemplate->load($this->input->get('block_template', 0, 'int'));
     if (!$postTemplate->id || $postTemplate->id == 1) {
         $postTemplate = false;
     }
     // Get available blocks on the site
     $blocks = EB::blocks()->getAvailableBlocks();
     // Determines if we should display the custom fields tab by default
     $displayFieldsTab = false;
     // Get a list of selected categories
     $selectedCategories = $post->getCategories();
     // If there's no selected categories, we assume that the primary category
     if (!$selectedCategories) {
         $selectedCategories = array($primaryCategory);
     }
     // If explicitly configured to be hidden, skip the checks altogether
     if ($this->config->get('layout_composer_fields')) {
         foreach ($selectedCategories as $category) {
             if ($category->hasCustomFields()) {
                 $displayFieldsTab = true;
                 break;
             }
         }
     }
     $user = EB::table('Profile');
     $user = $user->load($this->my->id);
     //available languages
     $languages = JLanguageHelper::getLanguages('lang_code');
     //post association
     $associations = $post->getAssociation();
     $theme = EB::template();
     $theme->set('user', $user);
     $theme->set('displayFieldsTab', $displayFieldsTab);
     $theme->set('postTemplate', $postTemplate);
     $theme->set('postTemplates', $postTemplates);
     $theme->set('workingRevision', $workingRevision);
     $theme->set('revisions', $revisions);
     $theme->set('editor', $editor);
     $theme->set('primaryCategory', $primaryCategory);
     $theme->set('categories', $categories);
     $theme->set('tags', $tags);
     $theme->set('post', $post);
     $theme->set('author', $author);
     $theme->set('uuid', uniqid());
     $theme->set('blocks', $blocks);
     $theme->set('languages', $languages);
     $theme->set('associations', $associations);
     // Determines if the source id and source type is provided
     $sourceId = $this->input->get('source_id', 0, 'int');
     $sourceType = $this->input->get('source_type', '', 'default');
     $contribution = '';
     if ($sourceId && $sourceType) {
         $contribution = EB::contributor()->load($sourceId, $sourceType);
         $post->source_id = $sourceId;
         $post->source_type = $sourceType;
     }
     $theme->set('contribution', $contribution);
     $theme->set('sourceId', $sourceId);
     $theme->set('sourceType', $sourceType);
     $output = $theme->output('site/composer/manager');
     return $output;
 }
コード例 #8
0
ファイル: teamblogs.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieves the total number of posts available in a team
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getPostCount($id)
 {
     $db = EB::db();
     $query = array();
     $options = array('teamId' => $id, 'concateOperator' => 'AND');
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = '';
     $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a', $options);
     $query[] = 'SELECT COUNT(1) FROM ' . $db->quoteName('#__easyblog_post') . ' AS a';
     $query[] = 'where a.' . $db->quoteName('published') . '=' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query[] = 'and a.' . $db->quoteName('state') . '=' . $db->Quote(EASYBLOG_POST_NORMAL);
     $query[] = $contributeSQL;
     // category access here
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`');
     $query[] = 'AND (' . $catAccessSQL . ')';
     $query = implode(' ', $query);
     $db->setQuery($query);
     $total = $db->loadResult();
     return $total;
 }
コード例 #9
0
ファイル: search.php プロジェクト: knigherrant/decopatio
 public function _buildQuery()
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EasyBlogHelper::getConfig();
     // used for privacy
     $queryWhere = '';
     $queryExclude = '';
     $queryExcludePending = '';
     $excludeCats = array();
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $where = array();
     $where2 = array();
     $text = JRequest::getVar('query');
     $words = explode(' ', $text);
     $wheres = array();
     foreach ($words as $word) {
         $word = $db->Quote('%' . $db->getEscaped($word, true) . '%', false);
         $where[] = 'a.`title` LIKE ' . $word;
         $where[] = 'a.`content` LIKE ' . $word;
         $where[] = 'a.`intro` LIKE ' . $word;
         $where2[] = 't.title LIKE ' . $word;
         $wheres2[] = implode(' OR ', $where2);
         $wheres[] = implode(' OR ', $where);
     }
     $where = '(' . implode(') OR (', $wheres) . ')';
     $where2 = '(' . implode(') OR (', $wheres2) . ')';
     $isJSGrpPluginInstalled = false;
     $isJSGrpPluginInstalled = JPluginHelper::isEnabled('system', 'groupeasyblog');
     $isEventPluginInstalled = JPluginHelper::isEnabled('system', 'eventeasyblog');
     $isJSInstalled = false;
     // need to check if the site installed jomsocial.
     if (JFile::exists(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'core.php')) {
         $isJSInstalled = true;
     }
     $includeJSGrp = $isJSGrpPluginInstalled && $isJSInstalled ? true : false;
     $includeJSEvent = $isEventPluginInstalled && $isJSInstalled ? true : false;
     $query = '';
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = ' AND ( (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE) . ') ';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a');
     }
     if ($includeJSEvent) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_EVENT, 'a');
     }
     if ($includeJSGrp) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_JOMSOCIAL_GROUP, 'a');
     }
     if (EB::easysocial()->exists()) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_GROUP, 'a');
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_EASYSOCIAL_EVENT, 'a');
     }
     $contributeSQL .= ')';
     $queryWhere .= $contributeSQL;
     // category access here
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`');
     $queryWhere .= ' AND (' . $catAccessSQL . ')';
     if ($isBloggerMode) {
         $queryWhere .= ' AND a.`created_by`=' . $db->Quote($isBloggerMode);
     }
     $query = 'SELECT a.*, CONCAT(a.`content` , a.`intro`) AS text';
     $query .= ' FROM `#__easyblog_post` as a USE INDEX (`easyblog_post_searchnew`)';
     // Always inner join with jos_users and a.created_by so that only valid blogs are loaded
     $query .= ' INNER JOIN ' . $db->nameQuote('#__users') . ' AS c ON a.`created_by`=c.`id`';
     $query .= ' WHERE (' . $where;
     $query .= ' OR a.`id` IN( ';
     $query .= '		SELECT tp.`post_id` FROM `#__easyblog_tag` AS t ';
     $query .= '		INNER JOIN `#__easyblog_post_tag` AS tp ON tp.`tag_id` = t.`id` ';
     $query .= '		WHERE ' . $where2;
     $query .= ') )';
     //blog privacy setting
     // @integrations: jomsocial privacy
     $privateBlog = '';
     $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');
         $privateBlog .= $esPrivacyQuery;
     } else {
         if ($config->get('main_jomsocial_privacy') && JFile::exists($file) && !EasyBlogHelper::isSiteAdmin()) {
             require_once $file;
             $jsFriends = CFactory::getModel('Friends');
             $friends = $jsFriends->getFriendIds($my->id);
             // Insert query here.
             $privateBlog .= ' AND (';
             $privateBlog .= ' (a.`access`= 0 ) OR';
             $privateBlog .= ' ( (a.`access` = 20) AND (' . $db->Quote($my->id) . ' > 0 ) ) OR';
             if (empty($friends)) {
                 $privateBlog .= ' ( (a.`access` = 30) AND ( 1 = 2 ) ) OR';
             } else {
                 $privateBlog .= ' ( (a.`access` = 30) AND ( a.' . $db->nameQuote('created_by') . ' IN (' . implode(',', $friends) . ') ) ) OR';
             }
             $privateBlog .= ' ( (a.`access` = 40) AND ( a.' . $db->nameQuote('created_by') . '=' . $my->id . ') )';
             $privateBlog .= ' )';
         } else {
             if ($my->id == 0) {
                 $privateBlog .= ' AND a.`access` = ' . $db->Quote(0);
             }
         }
     }
     if ($privateBlog) {
         $query .= $privateBlog;
     }
     //do not show unpublished post
     $query .= ' AND a.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query .= ' AND a.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
     $query .= $queryWhere;
     $query .= ' ORDER BY a.`created` DESC';
     // echo $query;
     return $query;
 }
コード例 #10
0
ファイル: post.php プロジェクト: knigherrant/decopatio
 /**
  * Retrieves the blog contribution
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getBlogContribution()
 {
     if (!$this->source_type || $this->source_type == EASYBLOG_POST_SOURCE_SITEWIDE) {
         return false;
     }
     $contributor = EB::contributor()->load($this->source_id, $this->source_type);
     return $contributor;
 }
コード例 #11
0
ファイル: tags.php プロジェクト: knigherrant/decopatio
 public function getTeamBlogCount($tagId)
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EasyBlogHelper::getConfig();
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $extraQuery = '';
     $query = 'select count(1) from `#__easyblog_post` as a';
     $query .= '  inner join `#__easyblog_post_tag` as b';
     $query .= '    on a.`id` = b.`post_id`';
     $query .= ' where b.`tag_id` = ' . $db->Quote($tagId);
     $query .= '  and (a.`source_type` = ' . $db->Quote(EASYBLOG_POST_SOURCE_TEAM);
     // contribution type sql
     $contributor = EB::contributor();
     $contributeSQL = '';
     if ($config->get('main_includeteamblogpost')) {
         $contributeSQL .= $contributor::genAccessSQL(EASYBLOG_POST_SOURCE_TEAM, 'a', array('concateOperator' => 'AND'));
     }
     $contributeSQL .= ')';
     $query .= $contributeSQL;
     if ($isBloggerMode !== false) {
         $query .= '  and a.`created_by` = ' . $db->Quote($isBloggerMode);
     }
     $db->setQuery($query);
     $result = $db->loadResult();
     return empty($result) ? '0' : $result;
 }