Exemplo n.º 1
0
 /**
  * Retrieves the toolbar for the site.
  *
  * @since	4.0
  * @access	public
  * @param	string
  * @return
  */
 public function getToolbar()
 {
     // Get the current view
     $view = $this->input->get('view', '', 'cmd');
     // Get a list of available views
     $views = JFolder::folders(JPATH_COMPONENT . '/views');
     // Get the active view name
     $active = $this->getName();
     // If the current active view doesn't exist on our known views, set the latest to be active by default.
     if (!in_array($active, $views)) {
         $active = 'latest';
     }
     // Rebuild the views
     $tmp = new stdClass();
     foreach ($views as $key) {
         $tmp->{$key} = false;
     }
     // Reset back the views to the tmp variable
     $views = $tmp;
     // Set the active menu
     if (isset($views->{$active})) {
         $views->{$active} = true;
     }
     // Get toolbar stuffs
     $title = $this->config->get('main_title');
     $desc = $this->config->get('main_description');
     $desc = nl2br($desc);
     $authorId = '';
     // Entry view, we want to load the toolbar
     if ($active == 'entry') {
         $blog = EB::table('blog');
         $blog->load(JRequest::getInt('id'));
         $authorId = $blog->created_by;
     }
     // Blogger view, just get the id from the query
     if ($active == 'blogger') {
         $authorId = $this->input->get('id', 0, 'int');
     }
     // If the viewer is viewing a blogger, we'll need to display the header accordingly.
     if (($active == 'blogger' || $active == 'entry' && $this->config->get('layout_headers_respect_author')) && $authorId) {
         $author = EB::user($authorId);
         $title = $author->title ? $author->title : $title;
         $desc = $author->getDescription() ? $author->getDescription() : $desc;
     }
     // If the viewer is viewing a team
     if ($active == 'teamblog') {
         $team = EB::table('Teamblog');
         $team->load(JRequest::getInt('id'));
         $title = $team->title ? JText::_($team->title) : $title;
         $desc = $team->getDescription() ? $team->getDescription() : $desc;
     }
     // Get the current menu id
     $itemId = $this->input->get('Itemid', 0, 'int');
     // Determines if the heading should be displayed
     $activeMenu = JFactory::getApplication()->getMenu()->getActive();
     $params = new JRegistry();
     if ($activeMenu) {
         $params = $activeMenu->params;
     }
     $heading = $params->get('show_page_heading', '');
     if ($heading) {
         $title = $params->get('page_heading');
     }
     // Get the total subscribers on the site
     $model = EB::model('Subscription');
     // Load up the subscription record for the current user.
     $subscription = EB::table('Subscriptions');
     if (!$this->my->guest) {
         $subscription->load(array('email' => $this->my->email, 'utype' => 'site'));
     }
     // Determines if this should be on blogger mode
     $bloggerMode = EBR::isBloggerMode();
     // Build the return url
     $return = base64_encode(EBR::_('index.php?option=com_easyblog', false));
     // Load the theme object
     $theme = EB::template();
     $theme->set('view', $view);
     $theme->set('subscription', $subscription);
     $theme->set('bloggerMode', $bloggerMode);
     $theme->set('heading', $heading);
     $theme->set('return', $return);
     $theme->set('title', $title);
     $theme->set('desc', $desc);
     $theme->set('views', $views);
     $output = $theme->output('site/toolbar/default');
     return $output;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * Retrieves the next post in line
  *
  * @since	5.0
  * @access	public
  * @param	string
  * @return
  */
 public function getPostNavigation(EasyBlogPost $post, $navigationType)
 {
     $db = EB::db();
     $my = JFactory::getUser();
     $config = EB::config();
     $keys = array('prev', 'next');
     $nav = new stdClass();
     // Get the active menu
     $active = JFactory::getApplication()->getMenu()->getActive();
     $catAccess = array();
     $queryInclude = '';
     $teamId = $post->getTeamAssociation();
     $author = $post->getAuthor();
     // // If there is an active menu for EasyBlog, check if there's any filtering by categories
     // if ($active) {
     // 	$cats = EB::getCategoryInclusion($active->params->get('inclusion'));
     // 	if ($cats && !is_array($cats)) {
     // 		$cats = array($cats);
     // 	}
     // 	$catAccess['include'] = $cats;
     // }
     // // sql for category access
     // $catLib = EB::category();
     // $catAccessSQL = $catLib->genAccessSQL( 'a.`id`', $catAccess);
     foreach ($keys as $key) {
         $query = array();
         $query[] = 'SELECT a.`id`, a.`title`';
         $query[] = ' FROM `#__easyblog_post` AS `a`';
         $query[] = ' WHERE a.`published` = ' . $db->Quote(EASYBLOG_POST_PUBLISHED);
         $query[] = ' AND a.`state` = ' . $db->Quote(EASYBLOG_POST_NORMAL);
         // EasySocial integrations
         $query[] = EB::easysocial()->buildPrivacyQuery('a');
         // Jomsocial integrations
         $query[] = EB::jomsocial()->buildPrivacyQuery();
         // Blog privacy settings
         if ($my->guest) {
             $query[] = 'AND a.' . $db->qn('access') . '=' . $db->Quote(BLOG_PRIVACY_PUBLIC);
         }
         // Exclude private categories
         // $query[] = 'AND (' . $catAccessSQL . ')';
         // If the current menu is blogger mode, we need to respect this by only loading author related items
         $isBloggerMode = EBR::isBloggerMode();
         if ($isBloggerMode !== false) {
             $query[] = 'AND a.' . $db->qn('created_by') . '=' . $db->Quote($isBloggerMode);
             $query[] = 'AND a.' . $db->qn('source_type') . '=' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE);
         }
         // Filter the next / previous link by team
         if ($navigationType == 'team' && $teamId) {
             $query[] = 'AND (a.' . $db->qn('source_type') . '=' . $db->Quote(EASYBLOG_POST_SOURCE_TEAM) . ' AND a.' . $db->qn('source_id') . '=' . $db->Quote($teamId) . ')';
         }
         // Filter the next / previous by author
         if ($navigationType == 'author') {
             $query[] = 'AND a.' . $db->qn('created_by') . '=' . $db->Quote($author->id);
             $query[] = 'AND a.' . $db->qn('source_type') . '=' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE);
         }
         // Filter the next / previous post items from site wide
         if ($navigationType == 'site') {
             $query[] = 'AND a.' . $db->qn('source_type') . '=' . $db->Quote(EASYBLOG_POST_SOURCE_SITEWIDE);
         }
         // When language filter is enabled, we need to detect the appropriate contents
         $filterLanguage = JFactory::getApplication()->getLanguageFilter();
         if ($filterLanguage) {
             $query[] = EBR::getLanguageQuery('AND', 'a.language');
         }
         if ($key == 'prev') {
             $query[] = ' AND a.`created` < ' . $db->Quote($post->created);
             $query[] = ' ORDER BY a.`created` DESC';
         }
         if ($key == 'next') {
             $query[] = ' AND a.`created` > ' . $db->Quote($post->created);
             $query[] = ' ORDER BY a.`created` ASC';
         }
         $query[] = 'LIMIT 1';
         $query = implode(' ', $query);
         $db->setQuery($query);
         $result = $db->loadObject();
         $nav->{$key} = $result;
     }
     return $nav;
 }
Exemplo n.º 4
0
 /**
  * Class Constructor
  *
  * @since	3.7
  * @access	public
  */
 public function __construct($overrideTheme = null, $options = array())
 {
     parent::__construct();
     // Determine if this is an admin location
     if (isset($options['admin']) && $options['admin']) {
         $this->admin = true;
     }
     // Determine the configured theme
     $theme = $this->config->get('layout_theme', $overrideTheme);
     // If a view is provided into the theme, the theme files could call methods from a view
     if (isset($options['view']) && is_object($options['view'])) {
         $this->view = $options['view'];
     }
     $this->theme = $theme;
     $obj = new stdClass();
     $obj->config = EB::config();
     $obj->my = JFactory::getUser();
     $obj->admin = EB::isSiteAdmin();
     $obj->profile = EB::user();
     // If it's development mode, allow user to invoke in the url to change theme.
     $invokeTheme = $this->input->get('theme', '', 'word');
     if ($invokeTheme) {
         $this->theme = $invokeTheme;
     }
     // If this is entry view, or category view, we need to respect the theme's category
     $this->menu = $this->app->getMenu()->getActive();
     $this->params = new JRegistry();
     if ($this->menu) {
         $this->params = $this->menu->params;
         // we will just set it here from the menu when this class first get instantiate. the corresponding view will have to do their own assignment if the view's templates need to access this entryParams
         $this->entryParams = $this->menu->params;
     }
     //is blogger mode flag
     $obj->isBloggerMode = EBR::isBloggerMode();
     $this->my = $obj->my;
     // Assign the acl
     $this->acl = EB::acl();
 }