Esempio n. 1
0
 /**
  * Method to get a pagination object for the categories
  *
  * @access public
  * @return integer
  */
 function getPagination()
 {
     // Lets load the content if it doesn't already exist
     if (empty($this->_pagination)) {
         jimport('joomla.html.pagination');
         $this->_pagination = EB::pagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit'));
     }
     return $this->_pagination;
 }
Esempio n. 2
0
 /**
  * Method to get a pagination object for the categories
  *
  * @access public
  * @return integer
  */
 public function getPagination()
 {
     if ($this->pagination) {
         return $this->pagination;
     }
     jimport('joomla.html.pagination');
     $this->pagination = EB::pagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit'));
     return $this->pagination;
 }
Esempio n. 3
0
 public function getArchive($archiveYear, $archiveMonth, $archiveDay = '')
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EB::config();
     $isBloggerMode = EasyBlogRouter::isBloggerMode();
     $excludeCats = array();
     $teamBlogIds = '';
     $queryExclude = '';
     $queryInclude = '';
     $catAccess = array();
     $modCid = JRequest::getVar('modCid', array());
     //where
     $queryWhere = ' WHERE a.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $queryWhere = ' AND a.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
     $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;
     // 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');
     }
     $contributeSQL .= ')';
     $queryWhere .= $contributeSQL;
     //get teamblogs id.
     $query = '';
     if (!empty($modCid)) {
         $catAccess['include'] = $modCid;
     }
     //do not list out protected blog in rss
     if (JRequest::getCmd('format', '') == 'feed') {
         if ($config->get('main_password_protect', true)) {
             $queryWhere .= ' AND a.`blogpassword`="" ';
         }
     }
     //blog privacy setting
     // @integrations: jomsocial privacy
     $file = JPATH_ROOT . '/components/com_community/libraries/core.php';
     $easysocial = EasyBlogHelper::getHelper('EasySocial');
     if ($config->get('integrations_easysocial_privacy') && $easysocial->exists() && !EB::isSiteAdmin()) {
         $esPrivacyQuery = $easysocial->buildPrivacyQuery('a');
         $queryWhere .= $esPrivacyQuery;
     } else {
         if ($config->get('main_jomsocial_privacy') && JFile::exists($file) && !EB::isSiteAdmin()) {
             require_once $file;
             $my = JFactory::getUser();
             $jsFriends = CFactory::getModel('Friends');
             $friends = $jsFriends->getFriendIds($my->id);
             // Insert query here.
             $queryWhere .= ' AND (';
             $queryWhere .= ' (a.`access`= 0 ) OR';
             $queryWhere .= ' ( (a.`access` = 20) AND (' . $db->Quote($my->id) . ' > 0 ) ) OR';
             if (empty($friends)) {
                 $queryWhere .= ' ( (a.`access` = 30) AND ( 1 = 2 ) ) OR';
             } else {
                 $queryWhere .= ' ( (a.`access` = 30) AND ( a.' . $db->nameQuote('created_by') . ' IN (' . implode(',', $friends) . ') ) ) OR';
             }
             $queryWhere .= ' ( (a.`access` = 40) AND ( a.' . $db->nameQuote('created_by') . '=' . $my->id . ') )';
             $queryWhere .= ' )';
         } else {
             if ($my->id == 0) {
                 $queryWhere .= ' AND a.`access` = ' . $db->Quote(BLOG_PRIVACY_PUBLIC);
             }
         }
     }
     if (empty($archiveDay)) {
         $fromDate = $archiveYear . '-' . $archiveMonth . '-01 00:00:00';
         $toDate = $archiveYear . '-' . $archiveMonth . '-31 23:59:59';
     } else {
         $fromDate = $archiveYear . '-' . $archiveMonth . '-' . $archiveDay . ' 00:00:00';
         $toDate = $archiveYear . '-' . $archiveMonth . '-' . $archiveDay . ' 23:59:59';
     }
     // When language filter is enabled, we need to detect the appropriate contents
     $filterLanguage = JFactory::getApplication()->getLanguageFilter();
     if ($filterLanguage) {
         $queryWhere .= EBR::getLanguageQuery('AND', 'a.language');
     }
     $tzoffset = EB::date()->getOffSet(true);
     $queryWhere .= ' AND ( DATE_ADD(a.`created`, INTERVAL ' . $tzoffset . ' HOUR) >= ' . $db->Quote($fromDate) . ' AND DATE_ADD(a.`created`, INTERVAL ' . $tzoffset . ' HOUR) <= ' . $db->Quote($toDate) . ' ) ';
     if ($isBloggerMode !== false) {
         $queryWhere .= ' AND a.`created_by` = ' . $db->Quote($isBloggerMode);
     }
     // category access here
     //category access
     $catLib = EB::category();
     $catAccessSQL = $catLib->genAccessSQL('a.`id`', $catAccess);
     $queryWhere .= ' AND (' . $catAccessSQL . ')';
     //ordering
     $queryOrder = ' ORDER BY a.`created` DESC';
     //limit
     $limit = $this->getState('limit');
     $limitstart = $this->getState('limitstart');
     $queryLimit = ' LIMIT ' . $limitstart . ',' . $limit;
     //set pagination
     $query = 'SELECT COUNT(1) FROM `#__easyblog_post` AS a';
     $query .= $queryWhere;
     $db->setQuery($query);
     $this->_total = $db->loadResult();
     jimport('joomla.html.pagination');
     $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     //get archive
     $query = 'SELECT a.*';
     $query .= ' FROM `#__easyblog_post` AS a';
     $query .= $queryWhere;
     $query .= $queryExclude;
     $query .= $queryInclude;
     $query .= $queryOrder;
     $query .= $queryLimit;
     $db->setQuery($query);
     if ($db->getErrorNum() > 0) {
         JError::raiseError($db->getErrorNum(), $db->getErrorMsg() . $db->stderr());
     }
     $result = $db->loadObjectList();
     return $result;
 }
Esempio n. 4
0
 public function getAssociationPosts($options = array())
 {
     $db = EB::db();
     $query = "select a.* from `#__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);
     if (isset($options['langcode']) && $options['langcode']) {
         $query .= " AND a." . $db->quoteName('language') . " = " . $db->Quote($options['langcode']);
     }
     if (isset($options['userid']) && $options['userid']) {
         $query .= " AND a." . $db->quoteName('created_by') . " = " . $db->Quote($options['userid']);
     }
     if (isset($options['search']) && $options['search']) {
         $query .= " AND a." . $db->quoteName('title') . " LIKE " . $db->Quote('%' . $options['search'] . '%');
     }
     // limits
     $limit = EB::call('Pagination', 'getLimit', array('listlength'));
     $limitstart = JRequest::getInt('limitstart', 0, 'REQUEST');
     // In case limit has been changed, adjust it
     $limitstart = (int) ($limit != 0 ? floor($limitstart / $limit) * $limit : 0);
     if ($limitstart < 0) {
         $limitstart = 0;
     }
     $queryLimit = " LIMIT " . $limitstart . "," . $limit;
     // total count
     $queryCnt = "SELECT COUNT(1) from (";
     $queryCnt .= $query;
     $queryCnt .= ") as x";
     $db->setQuery($queryCnt);
     $this->_total = $db->loadResult();
     $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     $query = $query . $queryLimit;
     $db->setQuery($query);
     $results = $db->loadObjectList();
     return $results;
 }
Esempio n. 5
0
 /**
  *
  *
  * @since	4.0
  * @access	public
  * @param	string
  * @return
  */
 public function getCompojoomComment($max = 0, $userId = 0, $sort = 'latest', $base = 'comment', $search = '', $published = 'all')
 {
     $db = EB::db();
     $queryPagination = false;
     $queryLimit = '';
     $queryOrder = ' ORDER BY a.`date` DESC';
     $queryWhere = '';
     switch ($sort) {
         case 'latest':
         default:
             $queryOrder = ' ORDER BY a.`date` DESC';
             break;
     }
     if (!empty($userId)) {
         if ($base == 'comment') {
             $queryWhere .= ' WHERE a.`userid` = ' . $db->Quote($userId);
         } else {
             $queryWhere .= ' WHERE b.`created_by` = ' . $db->Quote($userId);
         }
     }
     switch ($published) {
         case 'published':
             $queryWhere .= ' AND a.`published` = ' . $db->Quote('1');
             break;
         case 'unpublished':
             $queryWhere .= ' AND a.`published` = ' . $db->Quote('0');
             break;
         case 'moderate':
             $queryWhere .= ' AND a.`published` = ' . $db->Quote('2');
             break;
         case 'all':
         default:
             break;
     }
     if (!empty($search)) {
         $queryWhere .= !empty($queryWhere) ? ' AND' : ' WHERE';
         $queryWhere .= ' a.`comment` LIKE ' . $db->Quote('%' . $search . '%');
     }
     $queryWhere .= ' AND a.`component` = ' . $db->quote('com_easyblog');
     if ($max > 0) {
         $queryLimit = ' LIMIT ' . $max;
     } else {
         $limit = $this->getState('limit');
         $limitstart = $this->getState('limitstart');
         $queryLimit = ' LIMIT ' . $limitstart . ',' . $limit;
         $queryPagination = true;
     }
     if ($queryPagination) {
         $query = 'SELECT COUNT(1)';
         $query .= ' FROM `#__comment` AS a INNER JOIN `#__easyblog_post` AS b';
         $query .= ' ON a.`contentid` = b.`id`';
         $query .= $queryWhere;
         $db->setQuery($query);
         $this->_total = $db->loadResult();
         jimport('joomla.html.pagination');
         $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     }
     $query = 'SELECT' . ' a.`id` AS `id`,' . ' a.`contentid` AS `post_id`,' . ' a.`comment` AS `comment`,' . ' a.`name` AS `name`,' . ' a.`title` AS `title`,' . ' a.`email` AS `email`,' . ' a.`website` AS `url`,' . ' a.`ip` AS `ip`,' . ' a.`userid` AS `created_by`,' . ' a.`date` AS `created`,' . ' a.`date` AS `modified`,' . ' a.`published` AS `published`,' . ' ' . $db->quote('0000-00-00 00:00:00') . ' AS `publish_up`,' . ' ' . $db->quote('0000-00-00 00:00:00') . ' AS `publish_down`,' . ' ' . $db->quote('0') . ' AS `ordering`,' . ' a.`voting_yes` AS `vote`,' . ' ' . $db->quote('0') . ' AS `hits`,' . ' ' . $db->quote('1') . ' AS `sent`,' . ' ' . $db->quote('0') . ' AS `parent_id`,' . ' ' . $db->quote('0') . ' AS `lft`,' . ' ' . $db->quote('0') . ' AS `rgt`,' . ' b.`created_by` AS `blog_owner`, b.`title` AS `blog_title`' . ' FROM `#__comment` AS a INNER JOIN `#__easyblog_post` AS b' . ' ON a.`contentid` = b.`id`' . $queryWhere . $queryOrder . $queryLimit;
     $db->setQuery($query);
     $result = $db->loadObjectList();
     if ($db->getErrorNum() > 0) {
         JError::raiseError($db->getErrorNum(), $db->getErrorMsg() . $db->stderr());
     }
     return $result;
 }
Esempio n. 6
0
 /**
  * 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;
 }
Esempio n. 7
0
 /**
  * Retrieves a list of templates
  *
  * @since	4.0
  * @access	public
  * @param	string
  * @return
  */
 public function getItems($options = array())
 {
     $db = EB::db();
     $query = 'SELECT * FROM ' . $db->quoteName('#__easyblog_post_templates');
     if (isset($options['user_id'])) {
         $query .= ' WHERE ' . $db->quoteName('user_id') . '=' . $db->Quote($options['user_id']);
     }
     $query .= ' ORDER BY ' . $db->quoteName('id') . ' DESC';
     $db->setQuery($query);
     $result = $db->loadObjectList();
     // Get the total for pagination
     $query = str_ireplace('*', 'COUNT(1)', $query);
     $db->setQuery($query);
     $total = $db->loadResult();
     $this->pagination = EB::pagination($total, $this->getState('limitstart'), $this->getState('limit'));
     return $result;
 }
Esempio n. 8
0
 /**
  * Retrieves a list of bloggers from the site
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getBloggers($sort = 'latest', $limit = 0, $filter = 'showallblogger', $search = '', $inclusion = array(), $exclusion = array(), $featuredOnly = '')
 {
     $db = EB::db();
     $config = EB::config();
     $nameDisplayFormat = $config->get('layout_nameformat');
     $limit = $limit == 0 ? $this->getState('limit') : $limit;
     $limitstart = $this->input->get('limitstart', $this->getState('limitstart'), 'int');
     $limitSQL = ' LIMIT ' . $limitstart . ',' . $limit;
     $excludedQuery = '';
     $excluded = $config->get('layout_exclude_bloggers');
     // check if there is exclusion from the backend settings OR from the parameter
     if (!empty($excluded) || !empty($exclusion)) {
         $tmp = explode(',', $excluded);
         if (!empty($excluded) && !empty($exclusion)) {
             $tmp = array_merge($tmp, $exclusion);
         }
         $values = array();
         foreach ($tmp as $id) {
             $values[] = $db->Quote($id);
         }
         $excludedQuery = ' AND a.`id` NOT IN (' . implode(',', $values) . ')';
     }
     //inclusion blogger
     $includedQuery = '';
     if (!empty($inclusion)) {
         $values = array();
         foreach ($inclusion as $id) {
             $values[] = $db->Quote($id);
         }
         $includedQuery = ' AND a.id IN (' . implode(',', $values) . ')';
     }
     $searchQuery = '';
     if (!empty($search)) {
         $searchQuery .= ' AND ';
         switch ($nameDisplayFormat) {
             case 'name':
                 $searchQuery .= '`name` LIKE ' . $db->Quote('%' . $search . '%');
                 break;
             case 'username':
                 $searchQuery .= '`username` LIKE ' . $db->Quote('%' . $search . '%');
                 break;
             default:
                 $searchQuery .= '`nickname` LIKE ' . $db->Quote('%' . $search . '%');
                 break;
         }
     }
     $aclQuery = EB::AclHelper()->genIsbloggerSQL();
     // $query  = 'select count( p.id ) as `totalPost`, MAX(p.`created`) as `latestPostDate`, COUNT( DISTINCT(g.content_id) ) as `featured`,';
     $query = 'select SQL_CALC_FOUND_ROWS count( p.id ) as `totalPost`, MAX(p.`created`) as `latestPostDate`, COUNT( DISTINCT(g.content_id) ) as `featured`,';
     $query .= ' a.`id`, b.`nickname`, a.`name`, a.`username`, a.`registerDate`, a.`lastvisitDate`, b.`permalink`';
     $query .= '	from `#__users` as a';
     $query .= ' 	left join `#__easyblog_post` as p on a.`id` = p.`created_by`';
     $query .= ' 	inner JOIN `#__easyblog_users` AS `b` ON p.`created_by` = b.`id`';
     $query .= ' 	left join `#__easyblog_featured` AS `g` ON a.`id`= g.`content_id` AND g.`type`= ' . $db->Quote('blogger');
     $query .= ' where (' . $aclQuery . ')';
     $query .= ' and `p`.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
     $query .= ' and p.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
     if ($featuredOnly) {
         $query .= ' and a.`id` = g.`content_id`';
     }
     $query .= $excludedQuery;
     $query .= $includedQuery;
     $query .= $searchQuery;
     $query .= ' group by a.`id`';
     if ($filter == 'showbloggerwithpost') {
         $query .= ' having (count(p.id) > 0)';
     }
     switch ($sort) {
         case 'featured':
             $query .= ' ORDER BY `featured` DESC';
             break;
         case 'latestpost':
             $query .= '	ORDER BY `latestPostDate` DESC';
             break;
         case 'latest':
             $query .= '	ORDER BY a.`registerDate` DESC';
             break;
         case 'postcount':
             $query .= '	ORDER BY `totalPost` DESC';
             break;
         case 'active':
             $query .= ' ORDER BY a.`lastvisitDate` DESC';
             break;
         case 'alphabet':
             if ($nameDisplayFormat == 'name') {
                 $query .= '	ORDER BY a.`name` ASC';
             } else {
                 if ($nameDisplayFormat == 'username') {
                     $query .= '	ORDER BY a.`username` ASC';
                 } else {
                     $query .= '	ORDER BY b.`nickname` ASC';
                 }
             }
             break;
         default:
             break;
     }
     $query .= $limitSQL;
     $db->setQuery($query);
     $results = $db->loadObjectList();
     // now execute found_row() to get the number of records found.
     $cntQuery = 'select FOUND_ROWS()';
     $db->setQuery($cntQuery);
     $this->_total = $db->loadResult();
     if (empty($this->_pagination)) {
         jimport('joomla.html.pagination');
         $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     }
     return $results;
 }
Esempio n. 9
0
 public function getCategoriesHierarchy($useLimit = true)
 {
     $db = EB::db();
     $limit = '10';
     $limitstart = $this->getState('limitstart');
     $search = JRequest::getVar('search', '');
     $gid = EasyBlogHelper::getUserGids();
     $gids = '';
     if (count($gid) > 0) {
         foreach ($gid as $id) {
             $gids .= empty($gids) ? $db->Quote($id) : ',' . $db->Quote($id);
         }
     }
     $query = 'SELECT a.*, ( SELECT COUNT(id) FROM `#__easyblog_category` WHERE `lft` < a.`lft` AND `rgt` > a.`rgt`) AS depth';
     $query .= ' FROM `#__easyblog_category` AS a';
     $query .= ' WHERE a.`published` = ' . $db->Quote('1');
     if (!empty($search)) {
         $query .= ' AND a.`title` LIKE ' . $db->Quote('%' . $search . '%');
     }
     $query .= ' and a.id not in (';
     $query .= ' select id from `#__easyblog_category` as c';
     $query .= ' where not exists (';
     $query .= '		select b.category_id from `#__easyblog_category_acl` as b';
     $query .= '			where b.category_id = c.id and b.`acl_id` = ' . $db->Quote(CATEGORY_ACL_ACTION_SELECT);
     $query .= '			and b.type = ' . $db->Quote('group');
     $query .= '			and b.content_id IN (' . $gids . ')';
     $query .= '      )';
     $query .= ' and c.`private` = ' . $db->Quote(CATEGORY_PRIVACY_ACL);
     $query .= ')';
     $query .= ' AND a.`parent_id` NOT IN (SELECT `id` FROM `#__easyblog_category` AS e WHERE e.`published` = ' . $db->Quote('0') . ' AND e.`parent_id` = ' . $db->Quote('0') . ' )';
     $query .= ' ORDER BY a.`lft`';
     if ($useLimit) {
         $this->_total = $this->_getListCount($query);
         jimport('joomla.html.pagination');
         $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
         $query .= ' LIMIT ' . $limitstart . ', ' . $limit;
     }
     $db->setQuery($query);
     $result = $db->loadObjectList();
     return $result;
 }
Esempio n. 10
0
 /**
  * Method to get a pagination object for the events
  *
  * @access public
  * @return integer
  */
 public function getPagination()
 {
     jimport('joomla.html.pagination');
     $this->_pagination = EB::pagination($this->_total, $this->getState('limitstart'), $this->getState('limit'));
     return $this->_pagination;
 }
Esempio n. 11
0
 /**
  * Retrieves a list of posts from a specific team
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getPosts($id, $limit = null)
 {
     //lets check if posts already cached or not.
     if (EB::cache()->exists($id, 'teamblogs')) {
         $data = EB::cache()->get($id, 'teamblogs');
         if (isset($data['post'])) {
             return $data['post'];
         } else {
             return array();
         }
     }
     $db = EB::db();
     $config = EB::config();
     $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 a.* 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 . ')';
     // Ordering options
     $ordering = $config->get('layout_teamblogsort', 'DESC');
     $query[] = ' ORDER BY a.' . $db->quoteName('created') . ' ' . $ordering;
     if (!is_null($limit) && $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);
     } else {
         // TODO: prepare the pagination object
     }
     $query = implode(' ', $query);
     // Debug
     // echo str_ireplace('#__', 'jos_', $query);exit;
     $db->setQuery($query);
     $result = $db->loadObjectList();
     return $result;
 }
Esempio n. 12
0
 /**
  * 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') || $type == 'teamblog' || $dashboard) {
         $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;
 }
Esempio n. 13
0
 /**
  * Retrieves a list of team blog requests
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getRequests($userId = '', $useLimit = true)
 {
     $db = EB::db();
     $limit = $this->getState('limit');
     $limitstart = $this->getState('limitstart');
     // common query
     $cquery = '';
     // If user id is provided, we assume that the user is a team admin and not a site admin
     if (!empty($userId)) {
         $cquery .= ' inner join `#__easyblog_team_users` as b';
         $cquery .= '    on a.`team_id` = b.`team_id`';
         $cquery .= '    and b.`user_id` = ' . $db->Quote($userId);
         $cquery .= '    and b.`isadmin` = ' . $db->Quote('1');
     }
     $cquery .= '  inner join `#__easyblog_team` as c on a.`team_id` = c.`id`';
     $cquery .= ' where a.`ispending` = ' . $db->Quote('1');
     $query = 'select count(1) from `#__easyblog_team_request` as a';
     $query .= $cquery;
     $db->setQuery($query);
     $this->_total = $db->loadResult();
     jimport('joomla.html.pagination');
     $this->_pagination = EB::pagination($this->_total, $limitstart, $limit);
     // Actual query
     $query = 'select a.*, c.`title` from `#__easyblog_team_request` as a';
     $query .= $cquery;
     $query .= ' order by a.`created`';
     if ($useLimit) {
         $query .= ' LIMIT ' . $limitstart . ',' . $limit;
     }
     $db->setQuery($query);
     $result = $db->loadObjectList();
     return $result;
 }