Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/public_html/components/com_sppagebuilder--/helpers/ |
<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2016 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('restricted aceess');
if(!class_exists('ContentHelperRoute')) require_once (JPATH_SITE . '/components/com_content/helpers/route.php');
abstract class SppagebuilderHelperArticles
{
public static function getArticles( $count = 5, $ordering = 'latest', $catid = '', $include_subcategories = true, $post_format = '' ) {
$authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$nullDate = $db->quote($db->getNullDate());
$nowDate = $db->quote(JFactory::getDate()->toSql());
$query = $db->getQuery(true);
$query
->select('a.*')
->from($db->quoteName('#__content', 'a'))
->select($db->quoteName('b.alias', 'category_alias'))
->select($db->quoteName('b.title', 'category'))
->join('LEFT', $db->quoteName('#__categories', 'b') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('b.id') . ')')
->where($db->quoteName('b.extension') . ' = ' . $db->quote('com_content'));
if($post_format) {
$query->where($db->quoteName('a.attribs') . ' LIKE ' . $db->quote('%"post_format":"'. $post_format .'"%'));
}
// Category filter
if ( ($catid != '' || is_array($catid)) ) {
if (!is_array($catid)) {
$catid = array($catid);
}
if (!in_array('', $catid)) {
$categories = self::getCategories( $catid, $include_subcategories );
$categories = array_merge($categories, $catid);
//array_unshift($categories, $catid);
$query->where($db->quoteName('a.catid')." IN (" . implode( ',', $categories ) . ")");
}
}
$query->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')');
$query->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')');
// has order by
if ($ordering == 'hits') {
$query->order($db->quoteName('a.hits') . ' DESC');
} elseif($ordering == 'featured') {
$query->where($db->quoteName('a.featured') . ' = ' . $db->quote(1));
$query->order($db->quoteName('a.created') . ' DESC');
} elseif($ordering == 'oldest') {
$query->order($db->quoteName('a.created') . ' ASC');
} else {
$query->order($db->quoteName('a.created') . ' DESC');
}
// Language filter
if ($app->getLanguageFilter()) {
$query->where('a.language IN (' . $db->Quote(JFactory::getLanguage()->getTag()) . ',' . $db->Quote('*') . ')');
}
// continue query
$query->where($db->quoteName('a.access')." IN (" . implode( ',', $authorised ) . ")");
$query->order($db->quoteName('a.created') . ' DESC')
->setLimit($count);
$db->setQuery($query);
$items = $db->loadObjectList();
foreach ($items as &$item) {
$item->slug = $item->id . ':' . $item->alias;
$item->catslug = $item->catid . ':' . $item->category_alias;
$item->username = JFactory::getUser($item->created_by)->name;
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language));
$attribs = json_decode($item->attribs);
// Featured Image
if(isset($attribs->spfeatured_image) && $attribs->spfeatured_image != NULL) {
$item->featured_image = $featured_image = $attribs->spfeatured_image;
$img_baseurl = basename($featured_image);
//Small
$small = JPATH_ROOT . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_small.' . JFile::getExt($img_baseurl);
if(file_exists($small)) {
$item->image_small = JURI::root(true) . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_small.' . JFile::getExt($img_baseurl);
}
//Thumb
$thumbnail = JPATH_ROOT . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_thumbnail.' . JFile::getExt($img_baseurl);
if(file_exists($thumbnail)) {
$item->image_thumbnail = JURI::root(true) . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_thumbnail.' . JFile::getExt($img_baseurl);
} else {
$item->image_thumbnail = JURI::root(true) . '/' . $item->featured_image;
}
//Medium
$medium = JPATH_ROOT . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_medium.' . JFile::getExt($img_baseurl);
if(file_exists($medium)) {
$item->image_medium = JURI::root(true) . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_medium.' . JFile::getExt($img_baseurl);
}
//Large
$large = JPATH_ROOT . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_large.' . JFile::getExt($img_baseurl);
if(file_exists($large)) {
$item->image_large = JURI::root(true) . '/' . dirname($featured_image) . '/' . JFile::stripExt($img_baseurl) . '_large.' . JFile::getExt($img_baseurl);
}
} else {
$images = json_decode($item->images);
if(isset($images->image_intro) && $images->image_intro) {
$item->image_thumbnail = JURI::root(true) . '/' . $images->image_intro;
} elseif (isset($images->image_fulltext) && $images->image_fulltext) {
$item->image_thumbnail = JURI::root(true) . '/' . $images->image_fulltext;
} else {
$item->image_thumbnail = false;
}
}
// Post Format
$item->post_format = 'standard';
if(isset($attribs->post_format) && $attribs->post_format != '') {
$item->post_format = $attribs->post_format;
}
// Post Format Video
if(isset($attribs->post_format) && $attribs->post_format == 'video') {
if(isset($attribs->video) && $attribs->video != NULL) {
$video = parse_url($attribs->video);
$video_src = '';
switch($video['host']) {
case 'youtu.be':
$video_id = trim($video['path'],'/');
$video_src = '//www.youtube.com/embed/' . $video_id;
break;
case 'www.youtube.com':
case 'youtube.com':
parse_str($video['query'], $query);
$video_id = $query['v'];
$video_src = '//www.youtube.com/embed/' . $video_id;
break;
case 'vimeo.com':
case 'www.vimeo.com':
$video_id = trim($video['path'],'/');
$video_src = "//player.vimeo.com/video/" . $video_id;
}
$item->video_src = $video_src;
} else {
$item->video_src = '';
}
}
// Post Format Audio
if(isset($attribs->post_format) && $attribs->post_format == 'audio') {
if(isset($attribs->audio) && $attribs->audio != NULL) {
$item->audio_embed = $attribs->audio;
} else {
$item->audio_embed = '';
}
}
// Post Format Quote
if(isset($attribs->post_format) && $attribs->post_format == 'quote') {
if(isset($attribs->quote_text) && $attribs->quote_text != NULL) {
$item->quote_text = $attribs->quote_text;
} else {
$item->quote_text = '';
}
if(isset($attribs->quote_author) && $attribs->quote_author != NULL) {
$item->quote_author = $attribs->quote_author;
} else {
$item->quote_author = '';
}
}
// Post Format Status
if(isset($attribs->post_format) && $attribs->post_format == 'status') {
if(isset($attribs->post_status) && $attribs->post_status != NULL) {
$item->post_status = $attribs->post_status;
} else {
$item->post_status = '';
}
}
// Post Format Link
if(isset($attribs->post_format) && $attribs->post_format == 'link') {
if(isset($attribs->link_title) && $attribs->link_title != NULL) {
$item->link_title = $attribs->link_title;
} else {
$item->link_title = '';
}
if(isset($attribs->link_url) && $attribs->link_url != NULL) {
$item->link_url = $attribs->link_url;
} else {
$item->link_url = '';
}
}
// Post Format Gallery
if(isset($attribs->post_format) && $attribs->post_format == 'gallery') {
$item->imagegallery = new stdClass();
if(isset($attribs->gallery) && $attribs->gallery != NULL) {
$gallery_all_images = json_decode($attribs->gallery)->gallery_images;
$gallery_images = array();
foreach ($gallery_all_images as $key=>$value) {
$gallery_images[$key]['full'] = $value;
$gallery_img_baseurl = basename($value);
//Small
$small = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_small.' . JFile::getExt($gallery_img_baseurl);
if(file_exists($small)) {
$gallery_images[$key]['small'] = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_small.' . JFile::getExt($gallery_img_baseurl);
}
//Thumbnail
$thumbnail = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_thumbnail.' . JFile::getExt($gallery_img_baseurl);
if(file_exists($thumbnail)) {
$gallery_images[$key]['thumbnail'] = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_thumbnail.' . JFile::getExt($gallery_img_baseurl);
}
//Medium
$medium = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_medium.' . JFile::getExt($gallery_img_baseurl);
if(file_exists($medium)) {
$gallery_images[$key]['medium'] = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_medium.' . JFile::getExt($gallery_img_baseurl);
}
//Large
$large = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_large.' . JFile::getExt($gallery_img_baseurl);
if(file_exists($large)) {
$gallery_images[$key]['large'] = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($gallery_img_baseurl) . '_large.' . JFile::getExt($gallery_img_baseurl);
}
}
$item->imagegallery->images = $gallery_images;
} else {
$item->imagegallery->images = array();
}
}
}
return $items;
}
public static function getCategories($parent_id = 1, $include_subcategories = true, $child = false, $cats = array()) {
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__categories'))
->where($db->quoteName('extension') . ' = ' . $db->quote('com_content'))
->where($db->quoteName('published') . ' = ' . $db->quote(1))
->where($db->quoteName('access')." IN (" . implode( ',', JFactory::getUser()->getAuthorisedViewLevels() ) . ")")
->where($db->quoteName('language')." IN (" . $db->Quote(JFactory::getLanguage()->getTag()).", ".$db->Quote('*') . ")")
->where($db->quoteName('parent_id')." IN (" . implode( ',', $parent_id ) . ")")
->order($db->quoteName('lft') . ' ASC');
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ($rows as $row) {
if($include_subcategories) {
array_push($cats, $row->id);
if (self::hasChildren($row->id)) {
$cats = self::getCategories(array($row->id), $include_subcategories, true, $cats);
}
}
}
return $cats;
}
private static function hasChildren($parent_id = 1) {
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__categories'))
->where($db->quoteName('extension') . ' = ' . $db->quote('com_content'))
->where($db->quoteName('published') . ' = ' . $db->quote(1))
->where($db->quoteName('access')." IN (" . implode( ',', JFactory::getUser()->getAuthorisedViewLevels() ) . ")")
->where($db->quoteName('language')." IN (" . $db->Quote(JFactory::getLanguage()->getTag()).", ".$db->Quote('*') . ")")
->where($db->quoteName('parent_id') . ' = ' . $db->quote($parent_id))
->order($db->quoteName('created_time') . ' DESC');
$db->setQuery($query);
$childrens = $db->loadObjectList();
if(is_array($childrens) && count($childrens)) {
return true;
}
return false;
}
}