/** * 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; }
/** * 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; }
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; }
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; }
/** * * * @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; }
/** * 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; }
/** * 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; }
/** * 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; }
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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }