1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 09:49:28 +02:00
Oinktube/plugin/Gallery/functions.php
2022-11-18 14:44:58 -03:00

605 lines
24 KiB
PHP

<?php
function showThis($who) {
if (empty($_GET['showOnly'])) {
return true;
}
if ($_GET['showOnly'] === $who) {
return true;
}
return false;
}
function createGallery($title, $sort, $rowCount, $getName, $mostWord, $lessWord, $orderString, $defaultSort = "ASC", $ignoreGroup = false, $icon = "fas fa-bookmark", $infinityScroll = false) {
if (!showThis($getName)) {
return "";
}
global $contentSearchFound;
$title = __($title);
$getName = str_replace(array("'", '"', "&quot;", "&#039;"), array('', '', '', ''), xss_esc($getName));
if (!empty($_GET['showOnly'])) {
$rowCount = 24;
}
global $global, $args, $url;
$paggingId = uniqid();
$uid = "gallery" . uniqid();
?>
<div class="clear clearfix galeryRowElement" id="<?php echo $uid; ?>">
<?php
if (canPrintCategoryTitle($title)) {
?>
<h3 class="galleryTitle">
<a href="<?php echo $global['webSiteRootURL']; ?>?showOnly=<?php echo $getName; ?>">
<i class="<?php echo $icon; ?>"></i>
<?php
if (empty($_GET[$getName])) {
$_GET[$getName] = $defaultSort;
}
if (!empty($orderString)) {
$info = createOrderInfo($getName, $mostWord, $lessWord, $orderString);
echo "{$title} (" . $info[2] . ") (Page " . $_GET['page'] . ") <a href='" . $info[0] . "' >" . $info[1] . "</a>";
} else {
echo "{$title}";
}
?>
</a>
</h3>
<?php
}
$countCols = 0;
unset($_POST['sort']);
if (empty($_GET['page'])) {
$_GET['page'] = 1;
}
$_POST['sort'][$sort] = $_GET[$getName];
$_REQUEST['current'] = $_GET['page'];
$_REQUEST['rowCount'] = $rowCount;
$videoStatus = 'viewableNotUnlisted';
if ($getName == 'privateContentOrder') {
$videoStatus = 'privateOnly';
$ignoreGroup = true;
}
$total = Video::getTotalVideos($videoStatus, false, $ignoreGroup);
if (empty($contentSearchFound)) {
$contentSearchFound = !empty($total);
}
$totalPages = ceil($total / $_REQUEST['rowCount']);
$page = $_GET['page'];
if ($totalPages < $_GET['page']) {
if ($infinityScroll) {
echo '</div>';
return 0;
}
$page = $totalPages;
$_REQUEST['current'] = $totalPages;
}
$videos = Video::getAllVideos($videoStatus, false, $ignoreGroup);
// need to add dechex because some times it return an negative value and make it fails on javascript playlists
?>
<div class="gallerySectionContent">
<?php
$countCols = createGallerySection($videos, dechex(crc32($getName)));
?>
</div>
<?php
if ($countCols) {
?>
<!-- createGallery -->
<div class="col-sm-12" style="z-index: 1;">
<?php
$infinityScrollGetFromSelector = "";
$infinityScrollAppendIntoSelector = "";
if ($infinityScroll) {
$infinityScrollGetFromSelector = ".gallerySectionContent";
$infinityScrollAppendIntoSelector = ".gallerySectionContent";
}
echo getPagination($totalPages, $page, "{$url}{page}{$args}", 10, $infinityScrollGetFromSelector, $infinityScrollAppendIntoSelector);
?>
</div>
<?php
}
?>
</div>
<?php
if (empty($countCols)) {
?>
<style>
#<?php echo $uid; ?>{
display: none;
}
</style>
<?php
}
}
function createOrderInfo($getName, $mostWord, $lessWord, $orderString) {
$upDown = "";
$mostLess = "";
$tmpOrderString = $orderString;
if ($_GET[$getName] == "DESC") {
if (strpos($orderString, $getName . "=DESC")) {
$tmpOrderString = substr($orderString, 0, strpos($orderString, $getName . "=DESC")) . $getName . "=ASC" . substr($orderString, strpos($orderString, $getName . "=DESC") + strlen($getName . "=DESC"), strlen($orderString));
} else {
$tmpOrderString .= $getName . "=ASC";
}
$upDown = "<span class='glyphicon glyphicon-arrow-up' >" . __("Up") . "</span>";
$mostLess = $mostWord;
} else {
if (strpos($orderString, $getName . "=ASC")) {
$tmpOrderString = substr($orderString, 0, strpos($orderString, $getName . "=ASC")) . $getName . "=DESC" . substr($orderString, strpos($orderString, $getName . "=ASC") + strlen($getName . "=ASC"), strlen($orderString));
} else {
$tmpOrderString .= $getName . "=DESC";
}
$upDown = "<span class='glyphicon glyphicon-arrow-down'>" . __("Down") . "</span>";
$mostLess = $lessWord;
}
if (substr($tmpOrderString, strlen($tmpOrderString) - 1, strlen($tmpOrderString)) == "&") {
$tmpOrderString = substr($tmpOrderString, 0, strlen($tmpOrderString) - 1);
}
return array($tmpOrderString, $upDown, $mostLess);
}
function createGallerySection($videos, $crc = "", $get = array(), $ignoreAds = false, $screenColsLarge = 0, $screenColsMedium = 0, $screenColsSmall = 0, $screenColsXSmall = 0, $galeryDetails = true) {
global $global, $config, $obj, $advancedCustom, $advancedCustomUser;
$countCols = 0;
$obj = AVideoPlugin::getObjectData("Gallery");
$zindex = 1000;
$program = AVideoPlugin::loadPluginIfEnabled('PlayLists');
$videoCount = count($videos);
$screenColsLarge = 0;
$screenColsMedium = 0;
$screenColsSmall = 0;
$screenColsXSmall = 0;
if($videoCount < 5){
switch ($videoCount) {
case 4:
$screenColsLarge = 4;
$screenColsMedium = 4;
$screenColsSmall = 2;
$screenColsXSmall = 1;
break;
case 3:
$screenColsLarge = 3;
$screenColsMedium = 3;
$screenColsSmall = 2;
$screenColsXSmall = 1;
break;
case 2:
$screenColsLarge = 3;
$screenColsMedium = 3;
$screenColsSmall = 2;
$screenColsXSmall = 1;
break;
case 1:
$screenColsLarge = 3;
$screenColsMedium = 3;
$screenColsSmall = 1;
$screenColsXSmall = 1;
break;
}
}
//var_dump($screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall);
foreach ($videos as $video) {
if (!empty($video['isLive'])) {
createGalleryLiveSectionVideo($video, $zindex, $screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall);
} else {
createGallerySectionVideo($video, $crc, $get, $ignoreAds, $screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall, $galeryDetails, $zindex);
}
$countCols++;
$zindex--;
if ($countCols > 1) {
if ($countCols % $obj->screenColsLarge === 0) {
echo "<div class='clearfix hidden-md hidden-sm hidden-xs'></div>";
}
if ($countCols % $obj->screenColsMedium === 0) {
echo "<div class='clearfix hidden-lg hidden-sm hidden-xs'></div>";
}
if ($countCols % $obj->screenColsSmall === 0) {
echo "<div class='clearfix hidden-lg hidden-md hidden-xs'></div>";
}
if ($countCols % $obj->screenColsXSmall === 0) {
echo "<div class='clearfix hidden-lg hidden-md hidden-sm'></div>";
}
}
}
?>
<div class="col-xs-12 text-center clear clearfix" style="padding: 10px;">
<?php
if (empty($ignoreAds)) {
echo getAdsLeaderBoardMiddle();
}
?>
</div>
<?php
unset($_POST['disableAddTo']);
return $countCols;
}
function getLabelTags($video) {
global $global;
$obj = AVideoPlugin::getObjectData("Gallery");
if (empty($_GET['catName']) && !empty($obj->showCategoryTag)) {
$iconClass = 'fas fa-folder';
if (!empty($video['iconClass'])) {
$iconClass = $video['iconClass'];
}
$icon = '<i class="' . $iconClass . '"></i>';
?>
<a class="label label-default videoCategoryLabel" href="<?php echo $global['webSiteRootURL']; ?>cat/<?php echo $video['clean_category']; ?>"
data-toggle="tooltip" title="<?php echo htmlentities($icon . ' ' . $video['category']); ?>" data-html="true">
<?php
echo $icon;
?>
</a>
<?php } ?>
<!-- plugins tags -->
<?php
echo Video::getTagsHTMLLabelIfEnable($video['id']);
?>
<!-- end plugins tags -->
<?php
}
function getGalleryColsCSSClass($screenColsLarge = 0, $screenColsMedium = 0, $screenColsSmall = 0, $screenColsXSmall = 0){
global $objGallery;
if(empty($objGallery)){
$objGallery = AVideoPlugin::getObjectData("Gallery");
}
$objGalleryScreenColsLarge = $objGallery->screenColsLarge;
$objGalleryScreenColsMedium = $objGallery->screenColsMedium;
$objGalleryScreenColsSmall = $objGallery->screenColsSmall;
$objGalleryScreenColsXSmall = $objGallery->screenColsXSmall;
if (!empty($screenColsLarge)) {
$objGalleryScreenColsLarge = $screenColsLarge;
}
if (!empty($screenColsMedium)) {
$objGalleryScreenColsMedium = $screenColsMedium;
}
if (!empty($screenColsSmall)) {
$objGalleryScreenColsSmall = $screenColsSmall;
}
if (!empty($screenColsXSmall)) {
$objGalleryScreenColsXSmall = $screenColsXSmall;
}
$colsClass = "col-lg-" . (12 / $objGalleryScreenColsLarge) . " col-md-" . (12 / $objGalleryScreenColsMedium) . " col-sm-" . (12 / $objGalleryScreenColsSmall) . " col-xs-" . (12 / $objGalleryScreenColsXSmall);
return $colsClass;
}
function createGallerySectionVideo($video, $crc = "", $get = array(), $ignoreAds = false, $screenColsLarge = 0, $screenColsMedium = 0, $screenColsSmall = 0, $screenColsXSmall = 0, $galeryDetails = true, $zindex = 1000) {
global $global, $config, $advancedCustom, $advancedCustomUser, $_lastCanDownloadVideosFromVideoReason;
$countCols = 0;
$objGallery = AVideoPlugin::getObjectData("Gallery");
// that meas auto generate the channelName
if (empty($get) && !empty($objGallery->filterUserChannel)) {
$getCN = array('channelName' => $video['channelName'], 'catName' => @$_GET['catName']);
} else {
$getCN = $get;
}
$img_portrait = (@$video['rotation'] === "90" || @$video['rotation'] === "270") ? "img-portrait" : "";
$nameId = User::getNameIdentificationById($video['users_id']);
$name = $nameId . " " . User::getEmailVerifiedIcon($video['users_id']);
$colsClass = getGalleryColsCSSClass($screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall);
?>
<!-- createGallerySection -->
<div class=" <?php echo $colsClass; ?> galleryVideo galleryVideo<?php echo $video['id']; ?> fixPadding" style="z-index: <?php echo $zindex; ?>; min-height: 175px;">
<?php
$img = Video::getVideoImagewithHoverAnimationFromVideosId($video, true, true, true);
if (empty($img)) {
//var_dump($video);
} else {
echo $img;
}
?>
<?php
if ($galeryDetails) {
?>
<div class="galeryDetails">
<div class="galleryTags">
<!-- category tags -->
<?php
getLabelTags($video);
?>
<!-- end category tags -->
</div>
<?php
if (empty($advancedCustom->doNotDisplayViews)) {
if (AVideoPlugin::isEnabledByName('LiveUsers')) {
echo getLiveUsersLabelVideo($video['id'], $video['views_count'], "", "");
} else {
?>
<div class="videoViews">
<i class="fa fa-eye"></i>
<span itemprop="interactionCount">
<?php echo number_format($video['views_count'], 0); ?> <?php echo __("Views"); ?>
</span>
</div>
<?php
}
}
$humanTiming = humanTiming(strtotime($video['videoCreation']), 0, true,true);
?>
<div data-toggle="tooltip" class="videoHumanTime" title="<?php echo $humanTiming; ?>">
<i class="far fa-clock"></i>
<?php echo $humanTiming; ?>
</div>
<div class="videoChannel">
<a href="<?php echo User::getChannelLink($video['users_id']); ?>" data-toggle="tooltip" title="<?php echo $nameId; ?>">
<i class="fa fa-user"></i>
<?php echo $name; ?>
</a>
</div>
<?php
echo AVideoPlugin::getGalleryActionButton($video['id']);
?>
</div>
<?php
if (CustomizeUser::canDownloadVideosFromVideo($video['id'])) {
$files = getVideosURL($video['filename']);
if (!empty($files['mp4']) || !empty($files['mp3'])) {
?>
<div style="position: relative; overflow: visible; z-index: 3;" class="dropup">
<button type="button" class="btn btn-default btn-sm btn-xs btn-block" data-toggle="dropdown">
<i class="fa fa-download"></i> <?php echo!empty($advancedCustom->uploadButtonDropdownText) ? $advancedCustom->uploadButtonDropdownText : ""; ?> <span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-left" role="menu">
<?php
//var_dump($files);exit;
foreach ($files as $key => $theLink) {
if (($theLink['type'] !== 'video' && $theLink['type'] !== 'audio') || $key == "m3u8") {
continue;
}
$path_parts = pathinfo($theLink['filename']);
?>
<li>
<a href="<?php echo $theLink['url']; ?>?download=1&title=<?php echo urlencode($video['title'] . "_{$key}_.{$path_parts['extension']}"); ?>">
<?php echo __("Download"); ?> <?php echo $key; ?>
</a>
</li>
<?php }
?>
</ul>
</div>
<?php
} else {
echo "<!-- canDownloadVideosFromVideo you can only download MP3 or MP4 -->";
}
} else {
echo "<!-- canDownloadVideosFromVideo {$_lastCanDownloadVideosFromVideoReason} -->";
}
//getLdJson($video['id']);
//getItemprop($video['id']);
}
?>
</div>
<?php
}
function createGalleryLiveSection($videos) {
global $global, $config, $obj, $advancedCustom, $advancedCustomUser;
$countCols = 0;
$obj = AVideoPlugin::getObjectData("Gallery");
$liveobj = AVideoPlugin::getObjectData("Live");
$zindex = 1000;
$program = AVideoPlugin::loadPluginIfEnabled('PlayLists');
foreach ($videos as $video) {
createGalleryLiveSectionVideo($video, $zindex);
$name = User::getNameIdentificationById($video['users_id']);
$name .= " " . User::getEmailVerifiedIcon($video['users_id']);
$countCols++;
$zindex--;
if ($countCols > 1) {
if ($countCols % $obj->screenColsLarge === 0) {
echo "<div class='clearfix hidden-md hidden-sm hidden-xs'></div>";
}
if ($countCols % $obj->screenColsMedium === 0) {
echo "<div class='clearfix hidden-lg hidden-sm hidden-xs'></div>";
}
if ($countCols % $obj->screenColsSmall === 0) {
echo "<div class='clearfix hidden-lg hidden-md hidden-xs'></div>";
}
if ($countCols % $obj->screenColsXSmall === 0) {
echo "<div class='clearfix hidden-lg hidden-md hidden-sm'></div>";
}
}
if (!empty($video['galleryCallback'])) {
$video['galleryCallback'] = addcslashes($video['galleryCallback'], '"');
echo '<!-- galleryCallback --><script>$(document).ready(function () {eval("' . $video['galleryCallback'] . '")});</script>';
}
}
?>
<div class="col-xs-12 text-center clear clearfix" style="padding: 10px;">
<?php
if (empty($ignoreAds)) {
echo getAdsLeaderBoardMiddle();
}
?>
</div>
<?php
unset($_POST['disableAddTo']);
return $countCols;
}
function createGalleryLiveSectionVideo($video, $zindex, $screenColsLarge = 0, $screenColsMedium = 0, $screenColsSmall = 0, $screenColsXSmall = 0) {
global $global, $config, $objGallery, $advancedCustom, $advancedCustomUser;
$objGallery = AVideoPlugin::getObjectData("Gallery");
$name = User::getNameIdentificationById($video['users_id']);
$name .= " " . User::getEmailVerifiedIcon($video['users_id']);
$colsClass = getGalleryColsCSSClass($screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall);
if (!empty($video['className'])) {
$colsClass .= " {$video['className']}";
}
$liveNow = '<span class="label label-danger liveNow faa-flash faa-slow animated" style="position: absolute;
bottom: 5px;
right: 5px;">' . __("LIVE NOW") . '</span>';
?>
<!-- createGalleryLiveSection -->
<div class=" <?php echo $colsClass; ?> galleryVideo galleryVideo<?php echo $video['id']; ?> fixPadding" style="z-index: <?php echo $zindex; ?>; min-height: 175px;">
<a class="galleryLink" videos_id="<?php echo $video['id']; ?>"
href="<?php echo $video['href']; ?>"
embed="<?php echo $video['link']; ?>"
alternativeLink="<?php echo @$video['alternativeLink']; ?>"
title="<?php echo htmlentities($video['title']); ?>">
<div class="aspectRatio16_9">
<?php
$relativePathHoverAnimation = @$video['imgGif'];
echo getVideoImagewithHoverAnimation($video['poster'], $relativePathHoverAnimation, $video['title']);
echo $liveNow;
?>
</div>
</a>
<a class="h6 galleryLink" videos_id="<?php echo $video['id']; ?>"
href="<?php echo $video['href']; ?>"
embed="<?php echo $video['link']; ?>"
alternativeLink="<?php echo @$video['alternativeLink']; ?>"
title="<?php echo htmlentities(getSEOTitle($video['title'])); ?>">
<strong class="title"><?php echo getSEOTitle($video['title']) ?></strong>
</a>
<div class="galeryDetails">
<div class="galleryTags">
<?php if (empty($_GET['catName']) && !empty($objGallery->showCategoryTag)) { ?>
<a class="label label-default" href="<?php echo $global['webSiteRootURL']; ?>cat/<?php echo $video['clean_category']; ?>">
<?php
if (!empty($video['iconClass'])) {
?>
<i class="<?php echo $video['iconClass']; ?>"></i>
<?php
}
?>
<?php echo $video['category']; ?>
</a>
<?php } ?>
</div>
<div>
<i class="fa fa-user"></i>
<a href="<?php echo User::getChannelLink($video['users_id']); ?>">
<?php echo $name; ?>
</a>
</div>
<?php
if ((!empty($video['description'])) && !empty($objGallery->Description)) {
$desc = str_replace(array('"', "'", "#", "/", "\\"), array('``', "`", "", "", ""), preg_replace("/\r|\n/", " ", nl2br(trim($video['description']))));
if (!isHTMLEmpty($desc)) {
$titleAlert = str_replace(array('"', "'"), array('``', "`"), $video['title']);
?>
<div>
<a href="#" onclick='avideoAlert("<?php echo $titleAlert; ?>", "<div style=\"max-height: 300px; overflow-y: scroll;overflow-x: hidden;\"><?php echo $desc; ?></div>", "info");return false;' data-toggle="tooltip" title="<?php echo __("Description"); ?>"><i class="far fa-file-alt"></i> <span class="hidden-md hidden-sm hidden-xs"><?php echo __("Description"); ?></span></a>
</div>
<?php
}
}
?>
</div>
</div>
<?php
}
function createChannelItem($users_id, $photoURL = "", $identification = "", $rowCount = 12) {
$total = Video::getTotalVideos("viewable", $users_id);
if (empty($total)) {
return false;
}
if (empty($photoURL)) {
$photoURL = User::getPhoto($users_id);
}
if (empty($identification)) {
$identification = User::getNameIdentificationById($users_id);
}
?>
<div class="clear clearfix">
<h3 class="galleryTitle">
<img src="<?php echo $photoURL; ?>" class="img img-circle img-responsive pull-left" style="max-height: 20px;" alt="Channel Owner">
<span style="margin: 0 5px;">
<?php
echo $identification;
?>
</span>
<a class="btn btn-xs btn-default" href="<?php echo User::getChannelLink($users_id); ?>" style="margin: 0 10px;">
<i class="fas fa-external-link-alt"></i>
</a>
<?php
echo Subscribe::getButton($users_id);
?>
</h3>
<div class="">
<?php
$countCols = 0;
unset($_POST['sort']);
$_POST['sort']['created'] = "DESC";
$_REQUEST['current'] = 1;
$_REQUEST['rowCount'] = $rowCount;
$videos = Video::getAllVideos("viewable", $users_id);
createGallerySection($videos);
?>
</div>
</div>
<?php
}
$search = "";
$searchPhrase = "";
function clearSearch() {
global $search, $searchPhrase;
$search = $_GET['search'];
$searchPhrase = $_POST['searchPhrase'];
unset($_GET['search']);
unset($_POST['searchPhrase']);
}
function reloadSearch() {
global $search, $searchPhrase;
$_GET['search'] = $search;
$_POST['searchPhrase'] = $searchPhrase;
}
function getTrendingVideos($rowCount = 12, $screenColsLarge = 0, $screenColsMedium = 0, $screenColsSmall = 0, $screenColsXSmall = 0) {
global $global;
$countCols = 0;
unset($_POST['sort']);
$_GET['sort']['trending'] = 1;
$_REQUEST['current'] = getCurrentPage();
$_REQUEST['rowCount'] = $rowCount;
$videos = Video::getAllVideos("viewableNotUnlisted");
// need to add dechex because some times it return an negative value and make it fails on javascript playlists
echo "<link href=\"" . getURL('plugin/Gallery/style.css') . "\" rel=\"stylesheet\" type=\"text/css\"/><div class='row gallery '>";
$countCols = createGallerySection($videos, "", array(), false, $screenColsLarge, $screenColsMedium, $screenColsSmall, $screenColsXSmall);
echo "</div>";
return $countCols;
}
function canPrintCategoryTitle($title) {
global $doNotRepeatCategoryTitle;
if (!isset($doNotRepeatCategoryTitle)) {
$doNotRepeatCategoryTitle = array();
}
if (in_array($title, $doNotRepeatCategoryTitle)) {
return false;
}
$doNotRepeatCategoryTitle[] = $title;
return true;
}
?>