1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00

Merge remote-tracking branch 'origin/master' into julzxcapz-yp

This commit is contained in:
Julius 2023-07-24 13:46:51 +00:00
commit e97ef28c31
29 changed files with 2982 additions and 4340 deletions

24
composer.lock generated
View file

@ -281,16 +281,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.275.7",
"version": "3.276.3",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "54dcef3349c81b46c0f5f6e54b5f9bfb5db19903"
"reference": "c8b38cfab677a3ec98e3f40bccd1a2bf851a014f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/54dcef3349c81b46c0f5f6e54b5f9bfb5db19903",
"reference": "54dcef3349c81b46c0f5f6e54b5f9bfb5db19903",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c8b38cfab677a3ec98e3f40bccd1a2bf851a014f",
"reference": "c8b38cfab677a3ec98e3f40bccd1a2bf851a014f",
"shasum": ""
},
"require": {
@ -370,9 +370,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.275.7"
"source": "https://github.com/aws/aws-sdk-php/tree/3.276.3"
},
"time": "2023-07-13T18:21:04+00:00"
"time": "2023-07-21T18:30:18+00:00"
},
{
"name": "brick/math",
@ -3988,16 +3988,16 @@
},
{
"name": "stripe/stripe-php",
"version": "v10.17.0",
"version": "v10.18.0",
"source": {
"type": "git",
"url": "https://github.com/stripe/stripe-php.git",
"reference": "73383b44de153f4d602b90dad3ef075259bcecef"
"reference": "c32549e443a619d1b885b99d624568ecae82d6a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/73383b44de153f4d602b90dad3ef075259bcecef",
"reference": "73383b44de153f4d602b90dad3ef075259bcecef",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/c32549e443a619d1b885b99d624568ecae82d6a0",
"reference": "c32549e443a619d1b885b99d624568ecae82d6a0",
"shasum": ""
},
"require": {
@ -4043,9 +4043,9 @@
],
"support": {
"issues": "https://github.com/stripe/stripe-php/issues",
"source": "https://github.com/stripe/stripe-php/tree/v10.17.0"
"source": "https://github.com/stripe/stripe-php/tree/v10.18.0"
},
"time": "2023-07-13T22:12:18+00:00"
"time": "2023-07-20T16:59:49+00:00"
},
{
"name": "symfony/console",

File diff suppressed because it is too large Load diff

View file

@ -1648,9 +1648,10 @@ if (!class_exists('Video')) {
$created = !empty($_POST['sort']['v.created']) ? $_POST['sort']['v.created'] : $_POST['sort']['created'];
unset($_POST['sort']);
$_POST['sort'] = array();
if(strtoupper($created) === 'DESC'){
$_POST['sort']['v.`order`'] = 'IS NOT NULL DESC';
$_POST['sort']['`order`'] = 'ASC';
}
$_POST['sort']['v.created'] = $created;
}
@ -1700,7 +1701,7 @@ if (!class_exists('Video')) {
}
}
//echo $sql;//var_dump($_REQUEST['doNotShowCatChilds']);exit;
//echo $sql;//exit;
//_error_log("getAllVideos($status, $showOnlyLoggedUserVideos , $ignoreGroup , ". json_encode($videosArrayId).")" . $sql);
$timeLogName = TimeLogStart("video::getAllVideos");

View file

@ -63,7 +63,19 @@ if ($seconds_watching_video < 0) {
$seconds_watching_video = 0;
}
// Comparison and update
$current_time = time();
if (isset($_SESSION['addViewCount'][$_REQUEST['id']]['last_update_time'])) {
$elapsed_time = $current_time - $_SESSION['addViewCount'][$_REQUEST['id']]['last_update_time'];
if ($seconds_watching_video > $elapsed_time) {
$seconds_watching_video = $elapsed_time;
}
}
$_SESSION['addViewCount'][$_REQUEST['id']]['last_update_time'] = $current_time;
$obj2->seconds_watching_video = $seconds_watching_video;
if (empty($_SESSION['addViewCount'][$_REQUEST['id']]['time'])) {
//_error_log("videos_statistics addView {$_REQUEST['id']} {$_SERVER['HTTP_USER_AGENT']} ".json_encode($_SESSION['addViewCount']));
$resp = $obj->addView();

View file

@ -20,6 +20,6 @@ Video::resetOrder();
foreach ($_REQUEST['videos'] as $key => $value) {
$obj->responses[] = Video::updateOrder($value['videos_id'], $value['order']);
}
$obj->error = empty($obj->responses);
$obj->error = empty($obj->responses) && !empty($_REQUEST['videos']);
mysqlCommit();
echo json_encode($obj);

View file

@ -22,6 +22,7 @@ class VideoStatistic extends ObjectYPT {
protected $seconds_watching_video;
protected $json;
protected $rewarded;
protected $created_php_time;
public static function getSearchFieldsNames() {
return ['json', 'ip', 'when', 'user', 'name', 'email', 'channelName'];
@ -105,6 +106,10 @@ class VideoStatistic extends ObjectYPT {
$vs->setWhen(date("Y-m-d h:i:s"));
} else {
$vs = new VideoStatistic($lastStatistic['id']);
$elapsedTime = time() - $vs->created_php_time;
if ($seconds_watching_video > $elapsedTime) {
$seconds_watching_video = $elapsedTime;
}
}
$vs->setLastVideoTime($lastVideoTime);
$vs->setIp(getRealIpAddr());

289
package-lock.json generated
View file

@ -16,7 +16,7 @@
"flickity": "^3.0.0",
"flickity-bg-lazyload": "^2.0.0",
"fontawesome-free": "^1.0.4",
"hls.js": "^1.4.9",
"hls.js": "^1.4.10",
"infinite-scroll": "^4.0.1",
"inputmask": "^5.0.8",
"jquery": "^3.7.0",
@ -32,13 +32,13 @@
"p2p-media-loader-hlsjs": "^0.6.2",
"pouchdb": "^8.0.0",
"sweetalert": "^2.1.2",
"tinymce": "^6.4.2",
"tinymce": "^6.6.0",
"tinymce-langs": "^1.0.0",
"video.js": "^8.3.0",
"videojs-contrib-ads": "^7.2.0",
"videojs-contrib-ads": "^7.3.2",
"videojs-contrib-quality-levels": "^4.0.0",
"videojs-font": "^4.1.0",
"videojs-ima": "^2.1.0",
"videojs-ima": "^2.2.0",
"videojs-landscape-fullscreen": "^11.1111.0",
"videojs-overlay": "^3.1.0",
"videojs-playlist": "^5.1.0",
@ -801,9 +801,9 @@
}
},
"node_modules/hls.js": {
"version": "1.4.9",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.9.tgz",
"integrity": "sha512-i2BuNh7C7sd+wpW1V9p+P37KKCWNc6Ph/3BiPr+8nfJ7eZdtQQvSQUn2QwKU+7Fvc7b5BpS/lM6RJ3LUf+XbWg=="
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.10.tgz",
"integrity": "sha512-wAVSj4Fm2MqOHy5+BlYnlKxXvJlv5IuZHjlzHu18QmjRzSDFQiUDWdHs5+NsFMQrgKEBwuWDcyvaMC9dUzJ5Uw=="
},
"node_modules/ieee754": {
"version": "1.2.1",
@ -1731,9 +1731,9 @@
}
},
"node_modules/tinymce": {
"version": "6.4.2",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.4.2.tgz",
"integrity": "sha512-te+4c8PoAwTKPMBQtMQehnSZlOO9Ay5tDgaRFJKBehYb6SlX2PYZ0v3oe/cmiv5EfqdwZLkEMXk2MNOeApZZLg=="
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.6.0.tgz",
"integrity": "sha512-b9Mb7z8ryFOwLm8WCmlpwzdgOt1xD1u5Jjdh68B4QjkIyTLyHRBsfsrbiCUGonnVTymDlkexPkaP8sj24zexKQ=="
},
"node_modules/tinymce-langs": {
"version": "1.0.0",
@ -1911,9 +1911,9 @@
}
},
"node_modules/videojs-contrib-ads": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-7.2.0.tgz",
"integrity": "sha512-5DAO8BpD4mm/xKCGm4JhmIkjYOC+TByiO0XXInoc981Gr71xcFpO2wxPHMFrojhKROmYGWnYKcLsKNMkvYOWHg==",
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-7.3.2.tgz",
"integrity": "sha512-O5zSqP9GePr8XDUgCKQoRdDr5dUX5GEbNx7s2R7LC/Pxn8L10x3RNCrijzO56bli7Vr5wAlTJgAk1dR5lqQ44A==",
"dependencies": {
"global": "^4.3.2"
},
@ -1946,143 +1946,22 @@
"integrity": "sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w=="
},
"node_modules/videojs-ima": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/videojs-ima/-/videojs-ima-2.1.0.tgz",
"integrity": "sha512-Zb+J4by0d4FbserGOiSbdNo0U4vXSDuiPVCKFMksbaj4DO3mC8IpmvZ9Vci3tUwOhb/ladmUdhif9euSwq92Sw==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/videojs-ima/-/videojs-ima-2.2.0.tgz",
"integrity": "sha512-VKg7mZsaiW89ko2Sjfz/sDcCbCTjj2OAkg8CakvCs9ZiVg20g6QYVtEWj249V/HTm0/1X01GEPk9hnIrRzgd+A==",
"dependencies": {
"@hapi/cryptiles": "^5.1.0",
"can-autoplay": "^3.0.2",
"extend": ">=3.0.2",
"videojs-contrib-ads": "^6.9.0"
"videojs-contrib-ads": "^6.9.0 || ^7"
},
"engines": {
"node": ">=0.8.0"
},
"peerDependencies": {
"video.js": "^5.19.2 || ^6 || ^7"
"video.js": "^5.19.2 || ^6 || ^7 || ^8"
}
},
"node_modules/videojs-ima/node_modules/@videojs/http-streaming": {
"version": "2.16.2",
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.16.2.tgz",
"integrity": "sha512-etPTUdCFu7gUWc+1XcbiPr+lrhOcBu3rV5OL1M+3PDW89zskScAkkcdqYzP4pFodBPye/ydamQoTDScOnElw5A==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "3.0.5",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "^0.22.1",
"mux.js": "6.0.1",
"video.js": "^6 || ^7"
},
"engines": {
"node": ">=8",
"npm": ">=5"
},
"peerDependencies": {
"video.js": "^6 || ^7"
}
},
"node_modules/videojs-ima/node_modules/@videojs/http-streaming/node_modules/video.js": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.21.4.tgz",
"integrity": "sha512-R5e57M/5uqxQMQpFpybNbd8GtiRwFJPqkHjrhv0QTJ2tqnesbjETbck5kU5dhFr1FevsJRFhjBG4hAnvRGnXbw==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.16.2",
"@videojs/vhs-utils": "^3.0.4",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "0.22.1",
"mux.js": "6.0.1",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.4"
}
},
"node_modules/videojs-ima/node_modules/aes-decrypter": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.3.tgz",
"integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
}
},
"node_modules/videojs-ima/node_modules/mpd-parser": {
"version": "0.22.1",
"resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.22.1.tgz",
"integrity": "sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"@xmldom/xmldom": "^0.8.3",
"global": "^4.4.0"
},
"bin": {
"mpd-to-m3u8-json": "bin/parse.js"
}
},
"node_modules/videojs-ima/node_modules/mux.js": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-6.0.1.tgz",
"integrity": "sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==",
"dependencies": {
"@babel/runtime": "^7.11.2",
"global": "^4.4.0"
},
"bin": {
"muxjs-transmux": "bin/transmux.js"
},
"engines": {
"node": ">=8",
"npm": ">=5"
}
},
"node_modules/videojs-ima/node_modules/videojs-contrib-ads": {
"version": "6.9.0",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-6.9.0.tgz",
"integrity": "sha512-nzKz+jhCGMTYffSNVYrmp9p70s05v6jUMOY3Z7DpVk3iFrWK4Zi/BIkokDWrMoHpKjdmCdKzfJVBT+CrUj6Spw==",
"dependencies": {
"global": "^4.3.2",
"video.js": "^6 || ^7"
},
"engines": {
"node": ">=8",
"npm": ">=5"
}
},
"node_modules/videojs-ima/node_modules/videojs-contrib-ads/node_modules/video.js": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.21.4.tgz",
"integrity": "sha512-R5e57M/5uqxQMQpFpybNbd8GtiRwFJPqkHjrhv0QTJ2tqnesbjETbck5kU5dhFr1FevsJRFhjBG4hAnvRGnXbw==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.16.2",
"@videojs/vhs-utils": "^3.0.4",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "0.22.1",
"mux.js": "6.0.1",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.4"
}
},
"node_modules/videojs-ima/node_modules/videojs-font": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz",
"integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA=="
},
"node_modules/videojs-landscape-fullscreen": {
"version": "11.1111.0",
"resolved": "https://registry.npmjs.org/videojs-landscape-fullscreen/-/videojs-landscape-fullscreen-11.1111.0.tgz",
@ -2805,9 +2684,9 @@
}
},
"hls.js": {
"version": "1.4.9",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.9.tgz",
"integrity": "sha512-i2BuNh7C7sd+wpW1V9p+P37KKCWNc6Ph/3BiPr+8nfJ7eZdtQQvSQUn2QwKU+7Fvc7b5BpS/lM6RJ3LUf+XbWg=="
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.10.tgz",
"integrity": "sha512-wAVSj4Fm2MqOHy5+BlYnlKxXvJlv5IuZHjlzHu18QmjRzSDFQiUDWdHs5+NsFMQrgKEBwuWDcyvaMC9dUzJ5Uw=="
},
"ieee754": {
"version": "1.2.1",
@ -3491,9 +3370,9 @@
}
},
"tinymce": {
"version": "6.4.2",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.4.2.tgz",
"integrity": "sha512-te+4c8PoAwTKPMBQtMQehnSZlOO9Ay5tDgaRFJKBehYb6SlX2PYZ0v3oe/cmiv5EfqdwZLkEMXk2MNOeApZZLg=="
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.6.0.tgz",
"integrity": "sha512-b9Mb7z8ryFOwLm8WCmlpwzdgOt1xD1u5Jjdh68B4QjkIyTLyHRBsfsrbiCUGonnVTymDlkexPkaP8sj24zexKQ=="
},
"tinymce-langs": {
"version": "1.0.0",
@ -3644,9 +3523,9 @@
}
},
"videojs-contrib-ads": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-7.2.0.tgz",
"integrity": "sha512-5DAO8BpD4mm/xKCGm4JhmIkjYOC+TByiO0XXInoc981Gr71xcFpO2wxPHMFrojhKROmYGWnYKcLsKNMkvYOWHg==",
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-7.3.2.tgz",
"integrity": "sha512-O5zSqP9GePr8XDUgCKQoRdDr5dUX5GEbNx7s2R7LC/Pxn8L10x3RNCrijzO56bli7Vr5wAlTJgAk1dR5lqQ44A==",
"requires": {
"global": "^4.3.2"
}
@ -3665,120 +3544,14 @@
"integrity": "sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w=="
},
"videojs-ima": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/videojs-ima/-/videojs-ima-2.1.0.tgz",
"integrity": "sha512-Zb+J4by0d4FbserGOiSbdNo0U4vXSDuiPVCKFMksbaj4DO3mC8IpmvZ9Vci3tUwOhb/ladmUdhif9euSwq92Sw==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/videojs-ima/-/videojs-ima-2.2.0.tgz",
"integrity": "sha512-VKg7mZsaiW89ko2Sjfz/sDcCbCTjj2OAkg8CakvCs9ZiVg20g6QYVtEWj249V/HTm0/1X01GEPk9hnIrRzgd+A==",
"requires": {
"@hapi/cryptiles": "^5.1.0",
"can-autoplay": "^3.0.2",
"extend": ">=3.0.2",
"videojs-contrib-ads": "^6.9.0"
},
"dependencies": {
"@videojs/http-streaming": {
"version": "2.16.2",
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.16.2.tgz",
"integrity": "sha512-etPTUdCFu7gUWc+1XcbiPr+lrhOcBu3rV5OL1M+3PDW89zskScAkkcdqYzP4pFodBPye/ydamQoTDScOnElw5A==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "3.0.5",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "^0.22.1",
"mux.js": "6.0.1",
"video.js": "^6 || ^7"
},
"dependencies": {
"video.js": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.21.4.tgz",
"integrity": "sha512-R5e57M/5uqxQMQpFpybNbd8GtiRwFJPqkHjrhv0QTJ2tqnesbjETbck5kU5dhFr1FevsJRFhjBG4hAnvRGnXbw==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.16.2",
"@videojs/vhs-utils": "^3.0.4",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "0.22.1",
"mux.js": "6.0.1",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.4"
}
}
}
},
"aes-decrypter": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.3.tgz",
"integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
}
},
"mpd-parser": {
"version": "0.22.1",
"resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.22.1.tgz",
"integrity": "sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"@xmldom/xmldom": "^0.8.3",
"global": "^4.4.0"
}
},
"mux.js": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-6.0.1.tgz",
"integrity": "sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==",
"requires": {
"@babel/runtime": "^7.11.2",
"global": "^4.4.0"
}
},
"videojs-contrib-ads": {
"version": "6.9.0",
"resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-6.9.0.tgz",
"integrity": "sha512-nzKz+jhCGMTYffSNVYrmp9p70s05v6jUMOY3Z7DpVk3iFrWK4Zi/BIkokDWrMoHpKjdmCdKzfJVBT+CrUj6Spw==",
"requires": {
"global": "^4.3.2",
"video.js": "^6 || ^7"
},
"dependencies": {
"video.js": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.21.4.tgz",
"integrity": "sha512-R5e57M/5uqxQMQpFpybNbd8GtiRwFJPqkHjrhv0QTJ2tqnesbjETbck5kU5dhFr1FevsJRFhjBG4hAnvRGnXbw==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.16.2",
"@videojs/vhs-utils": "^3.0.4",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "0.22.1",
"mux.js": "6.0.1",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.4"
}
}
}
},
"videojs-font": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz",
"integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA=="
}
"videojs-contrib-ads": "^6.9.0 || ^7"
}
},
"videojs-landscape-fullscreen": {

View file

@ -11,7 +11,7 @@
"flickity": "^3.0.0",
"flickity-bg-lazyload": "^2.0.0",
"fontawesome-free": "^1.0.4",
"hls.js": "^1.4.9",
"hls.js": "^1.4.10",
"infinite-scroll": "^4.0.1",
"inputmask": "^5.0.8",
"jquery": "^3.7.0",
@ -27,13 +27,13 @@
"p2p-media-loader-hlsjs": "^0.6.2",
"pouchdb": "^8.0.0",
"sweetalert": "^2.1.2",
"tinymce": "^6.4.2",
"tinymce": "^6.6.0",
"tinymce-langs": "^1.0.0",
"video.js": "^8.3.0",
"videojs-contrib-ads": "^7.2.0",
"videojs-contrib-ads": "^7.3.2",
"videojs-contrib-quality-levels": "^4.0.0",
"videojs-font": "^4.1.0",
"videojs-ima": "^2.1.0",
"videojs-ima": "^2.2.0",
"videojs-landscape-fullscreen": "^11.1111.0",
"videojs-overlay": "^3.1.0",
"videojs-playlist": "^5.1.0",

View file

@ -245,12 +245,12 @@ class ADs extends PluginAbstract
{
global $global;
if (isBot()) {
return false;
return array();
}
$paths = self::getAdsPath($type, $is_regular_user);
if (empty($paths)) {
return false;
return array();
}
$files = _glob($paths['path'], '/.png$/');
@ -280,10 +280,8 @@ class ADs extends PluginAbstract
{
global $global;
$emptyAd = ['adCode' => '', 'label' => '', 'paths' => array()];
if (isBot()) {
return $emptyAd;
return ['adCode' => '', 'label' => '', 'paths' => array()];
}
if (empty($videos_id)) {
@ -298,9 +296,15 @@ class ADs extends PluginAbstract
$users_id = 0;
}
return self::getAdsFromUsersId($type, $users_id);
}
public static function getAdsFromUsersId($type, $users_id)
{
$ad = AVideoPlugin::getObjectDataIfEnabled('ADs');
if(empty($ad->$type)){
return $emptyAd;
return ['adCode' => '', 'label' => '', 'paths' => array()];
}
$label = '';
eval("\$label = \$ad->{$type}Label;");
@ -325,7 +329,6 @@ class ADs extends PluginAbstract
return ['adCode' => $adCode, 'label' => $label, 'paths' => $array['paths']];
}
public static function getAdsCode($type)
{
global $global;
@ -349,6 +352,34 @@ class ADs extends PluginAbstract
return $adCode;
}
public static function getAdsCodeReason($type)
{
$reasons = array();
if (isBot()) {
$reasons[] = 'Is a bot';
}
$videos_id = 0;
if (empty($videos_id)) {
$videos_id = getVideos_id();
}
$reasons[] = 'videos_id='.$videos_id;
$ad = AVideoPlugin::getObjectDataIfEnabled('ADs');
if (!empty($ad)) {
if (isMobile()) {
$type = $type . 'Mobile';
}
$adC = self::getAdsFromVideosId($type, $videos_id);
$reasons[] = 'type='.$type;
$reasons[] = 'label='.$adC['label'];
if(empty($adC['adCode'])){
$reasons[] = 'adCode is empty';
}
}else{
$reasons[] = 'ADs plugin disabled';
}
return $reasons;
}
public static function getSize($type)
{
$obj = AVideoPlugin::getObjectData("ADs");

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,6 @@
<?php
saveRequestVars();
?>
<div class="row mainArea">
<?php
if (!empty($currentCat)) {
@ -163,3 +166,6 @@
}
?>
</div>
<?php
restoreRequestVars();
?>

View file

@ -1,31 +1,18 @@
<?php
if(empty($obj) || !isset($obj->categoriesTopButtonsFluid)){
if (empty($obj) || !isset($obj->categoriesTopButtonsFluid)) {
$obj = AVideoPlugin::loadPlugin('Layout');
}
?>
<style>
.categoriesTobButtons{
border: none;
}
.categoriesTobButtons li a{
border-radius:23px;
}
</style>
<div class="container-fluid">
<div class="row">
<div class="<?php echo empty($obj->categoriesTopButtonsFluid) ? '' : 'col-lg-10 col-lg-offset-1'; ?>">
<center>
<ul class="nav nav-tabs nav-tabs-horizontal categoriesTobButtons" >
<?php
global $advancedCustom;
$_rowCount = getRowCount();
$current = getCurrentPage();
$_REQUEST['rowCount'] = 1000;
$_REQUEST['current'] = 1;
$parsed_cats = array();
$categories = Category::getAllCategories();
foreach ($categories as $value) {
global $advancedCustom;
$_rowCount = getRowCount();
$current = getCurrentPage();
$_REQUEST['rowCount'] = 1000;
$_REQUEST['current'] = 1;
$parsed_cats = array();
$categories = Category::getAllCategories();
$_REQUEST['rowCount'] = $_rowCount;
$_REQUEST['current'] = $current;
$items = array();
foreach ($categories as $value) {
if ($value['parentId']) {
continue;
}
@ -40,33 +27,19 @@ if(empty($obj) || !isset($obj->categoriesTopButtonsFluid)){
if (in_array($value['id'], $parsed_cats)) {
continue;
}
?>
<li data-toggle="tooltip" title="<?php echo __($value['name']); ?>" data-placement="bottom"
class="<?php echo ($value['clean_name'] == @$_REQUEST['catName'] ? "active" : ""); ?>">
<a href="<?php echo Category::getCategoryLinkFromName($value['clean_name']); ?>" >
<?php
echo '<i class="' . (empty($value['iconClass']) ? "fa fa-folder" : $value['iconClass']) . '"></i> '
$label = '<i class="' . (empty($value['iconClass']) ? "fa fa-folder" : $value['iconClass']) . '"></i> '
. '<span class="">' . __($value['name']) . '</span>';
if (!empty($obj->categoriesTopButtonsShowVideosCount)) {
echo ' <span class="badge">' . $total . '</span>';
$label .= ' <span class="badge">' . $total . '</span>';
}
?>
</a>
</li>
<?php
}
$_REQUEST['rowCount'] = $_rowCount;
$_REQUEST['current'] = $current;
/*
for ($i = 0; $i < 100; $i++) {
?> <li data-toggle="tooltip" title="<?php echo __($i); ?>" data-placement="bottom"> <a href="#"> <?php echo '<i class="fa fa-folder"></i> <span class="hidden-xs">' . $i . '</span>';
if (!empty($obj->categoriesTopButtonsShowVideosCount)) {
echo ' <span class="badge">' . $i . '</span>';
} ?> </a> </li> <?php }
*/
?>
</ul>
</center>
</div>
</div>
</div>
$items[] = array(
'href' => Category::getCategoryLinkFromName($value['clean_name']),
'tooltip' => __($value['name']),
'onclick' => '',
'label' => $label,
'isActive' => $value['clean_name'] == @$_REQUEST['catName'],
'clean_name' => $value['clean_name']
);
}
//var_dump($_REQUEST['catName'], $items);exit;
generateHorizontalFlickity($items);

View file

@ -123,3 +123,69 @@ foreach ($rows as $key => $value) {
}
});
</script>
<?php
$videosData = [];
foreach ($data as $value) {
$videosId = $value['videos_id'];
$reward = $value['total_reward'];
$title = $value['title'];
// If this videos_id is already in the $videosData array, update its reward, otherwise add it as a new entry.
if (isset($videosData[$videosId])) {
$videosData[$videosId]['reward'] += $reward;
} else {
$videosData[$videosId] = [
'reward' => $reward,
'title' => $title,
];
}
}
$videosIds = [];
$rewards = [];
$titles = [];
foreach ($videosData as $videosId => $videoInfo) {
$videosIds[] = $videosId;
$rewards[] = $videoInfo['reward'];
$titles[] = $videoInfo['title'];
}
?>
<div class="container">
<div class="panel">
<div class="panel-body">
<canvas id="rewardChart2" style="width:100%; height:400px;"></canvas>
</div>
</div>
</div>
<script>
let videosIds = <?php echo json_encode($videosIds); ?>;
let rewards2 = <?php echo json_encode($rewards); ?>;
let titles = <?php echo json_encode($titles); ?>;
new Chart(document.getElementById("rewardChart2"), {
type: 'bar',
data: {
labels: titles, // Use the video titles as labels
datasets: [{
data: rewards2,
label: "Money Made",
backgroundColor: "#3e95cd",
}]
},
options: {
title: {
display: true,
text: 'Money Made per Video'
},
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
}
}]
}
}
});
</script>

View file

@ -169,7 +169,6 @@ class PlayerSkins extends PluginAbstract {
$htmlMediaTag .= '<video '.self::getPlaysinline().' id="mainVideo" style="display: none; height: 0;width: 0;" ></video>';
//$htmlMediaTag .= '<div id="main-video" class="embed-responsive-item">';
$htmlMediaTag .= '<iframe class="embed-responsive-item" scrolling="no" '.Video::$iframeAllowAttributes.' src="' . $url . '"></iframe>';
$htmlMediaTag .= '<script>$(document).ready(function () {addView(' . intval($video['id']) . ', 0);});</script>';
//$htmlMediaTag .= '</div>';
} else {
// youtube!
@ -650,18 +649,14 @@ class PlayerSkins extends PluginAbstract {
$url = Video::getURLFriendly($videos_id);
$js .= "
player.on('play', function () {
addView({$videos_id}, this.currentTime());
_addViewBeaconAdded = false;
sendAVideoMobileMessage('play', this.currentTime());
});
player.on('ended', function () {
var time = Math.round(this.currentTime());
addView({$videos_id}, time);
sendAVideoMobileMessage('ended', time);
});
player.on('pause', function () {
var time = Math.round(this.currentTime());
addView({$videos_id}, time);
sendAVideoMobileMessage('pause', time);
});
player.on('volumechange', function () {
@ -683,13 +678,6 @@ class PlayerSkins extends PluginAbstract {
$('#linkCurrentTime, .linkCurrentTime').val(url);
if (time >= 5 && time % 1 === 0) {
addView({$videos_id}, time);
} else {
addViewFromCookie();
addViewSetCookie(PHPSESSID, {$videos_id}, time, seconds_watching_video);
}
sendAVideoMobileMessage('timeupdate', time);
});
;";

View file

@ -22,9 +22,6 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
cursor: move;
}
.playingShorts .scrtabs-tab-container {
display: none;
}
body.playingShorts {
overflow: hidden;
@ -162,6 +159,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
#buttonsCarousel {
bottom: 50px;
}
.circleCarouselBtn {
width: 35px;
height: 35px;
@ -220,7 +218,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
carouselPlayerResetLikesResponse();
$.ajax({
url: url,
success: function (response) {
success: function(response) {
carouselPlayerProcessLikesResponse(response)
}
});
@ -277,10 +275,10 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
$.ajax({
url: url,
success: function (response) {
success: function(response) {
carouselPlayerProcessLikesResponse(response)
},
complete: function (response) {
complete: function(response) {
modal.hidePleaseWait();
}
});
@ -290,7 +288,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
function shortsOpen(index) {
shortIsOpen = true;
$('body').addClass('playingShorts');
<?php echo $shortsOpen; ?>
<?php echo $shortsOpen; ?>
console.log('shortsPlay', index);
$('#ShortsPlayerContent').show();
$('#ShortsPlayer').flickity('destroy');
@ -306,10 +304,10 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
currentCell.html('');
}
console.log('shortsClose 1');
setTimeout(function () {
setTimeout(function() {
console.log('shortsClose 2');
$('body').removeClass('playingShorts');
<?php echo $shortsClose; ?>
<?php echo $shortsClose; ?>
$('#ShortsPlayerContent').hide();
$('#ShortsPlayerContent').removeClass('animate__bounceOutLeft');
}, 100);
@ -336,6 +334,10 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
var iframe;
var currentShortsPlayerIndex = -1;
function playNextShorts() {
$('#ShortsPlayer').flickity('next');
}
function createShortsPlayerFlickity(initialIndex) {
var $carouselPlayer = $('#ShortsPlayer');
@ -348,7 +350,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
adaptiveHeight: true,
cellSelector: '.carousel-cell',
});
$carouselPlayer.on('scroll.flickity', function (event, progress) {
$carouselPlayer.on('scroll.flickity', function(event, progress) {
if (typeof currentCell != 'undefined') {
currentCell.html('');
}
@ -356,7 +358,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
loadShorts();
}
});
$carouselPlayer.on('settle.flickity', function (event, index) {
$carouselPlayer.on('settle.flickity', function(event, index) {
if (isSettling) {
return;
}
@ -369,7 +371,7 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
if (typeof currentCell != 'undefined') {
currentCell.html('');
}
timeoutId = setTimeout(function () {
timeoutId = setTimeout(function() {
var index2 = $('#ShortsPlayer .carousel-cell.is-selected').index();
if (currentShortsPlayerIndex !== index2) {
carouselPlayerGetLikes();
@ -406,22 +408,22 @@ if ($removeAnimation || !empty($advancedCustom->disableAnimations)) {
resetPlayerFlickity(); // reset the timeoutId
});
$carouselPlayer.on('change.flickity', function (event, index) {
$carouselPlayer.on('change.flickity', function(event, index) {
console.log('Slide changed to ' + index)
});
$carouselPlayer.on('select.flickity', function (event, index) {
$carouselPlayer.on('select.flickity', function(event, index) {
if (shortIsOpen) {
var browserWidth = $(window).width();
<?php
foreach ($totalFlickityCells as $key => $value) {
<?php
foreach ($totalFlickityCells as $key => $value) {
if (empty($key)) {
echo "var newIndex = Math.floor(index/{$value});";
} else {
echo "if(browserWidth<{$key}){newIndex = Math.floor(index/{$value});}";
}
}
?>
}
?>
$('#Shorts').flickity('select', newIndex);
console.log('Flickity select ' + index)
}
@ -430,10 +432,20 @@ foreach ($totalFlickityCells as $key => $value) {
}
$(document).ready(function () {
$(document).ready(function() {
createShortsPlayerFlickity();
$('#closeCarousel').on('click', function () {
$('#closeCarousel').on('click', function() {
shortsClose();
});
});
// Event listener to receive messages from the iframe
window.addEventListener('message', function(event) {
if (event.data === 'playNextShorts') {
// Call the function
playNextShorts();
} else {
// Execute another code if the function doesn't exist
console.log("playNextShorts() does not exist in the parent page");
}
});
</script>

View file

@ -1,65 +0,0 @@
/**
* jquery-bootstrap-scrolling-tabs
* @version v2.6.1
* @link https://github.com/mikejacobson/jquery-bootstrap-scrolling-tabs
* @author Mike Jacobson <michaeljjacobson1@gmail.com>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
.scrtabs-tab-container * {
box-sizing: border-box; }
.scrtabs-tab-container {
height: 42px; }
.scrtabs-tab-container .tab-content {
clear: left; }
.scrtabs-tab-container.scrtabs-bootstrap4 .scrtabs-tabs-movable-container > .navbar-nav {
-ms-flex-direction: row;
flex-direction: row; }
.scrtabs-tabs-fixed-container {
float: left;
height: 42px;
overflow: hidden;
width: 100%; }
.scrtabs-tabs-movable-container {
position: relative; }
.scrtabs-tabs-movable-container .tab-content {
display: none; }
.scrtabs-tab-container.scrtabs-rtl .scrtabs-tabs-movable-container > ul.nav-tabs {
padding-right: 0; }
.scrtabs-tab-scroll-arrow {
border: 1px solid #dddddd;
border-top: none;
color: #428bca;
display: none;
float: left;
font-size: 12px;
height: 42px;
margin-bottom: -1px;
padding-left: 2px;
padding-top: 13px;
width: 20px; }
.scrtabs-tab-scroll-arrow:hover {
background-color: #eeeeee; }
.scrtabs-tab-scroll-arrow,
.scrtabs-tab-scroll-arrow .scrtabs-click-target {
cursor: pointer; }
.scrtabs-tab-scroll-arrow.scrtabs-with-click-target {
cursor: default; }
.scrtabs-tab-scroll-arrow.scrtabs-disable,
.scrtabs-tab-scroll-arrow.scrtabs-disable .scrtabs-click-target {
color: #ddd;
cursor: default; }
.scrtabs-tab-scroll-arrow.scrtabs-disable:hover {
background-color: initial; }
.scrtabs-tabs-fixed-container ul.nav-tabs > li {
white-space: nowrap; }

View file

@ -1,8 +0,0 @@
/**
* jquery-bootstrap-scrolling-tabs
* @version v2.6.1
* @link https://github.com/mikejacobson/jquery-bootstrap-scrolling-tabs
* @author Mike Jacobson <michaeljjacobson1@gmail.com>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
.scrtabs-tab-container *{box-sizing:border-box}.scrtabs-tab-container{height:42px}.scrtabs-tab-container .tab-content{clear:left}.scrtabs-tab-container.scrtabs-bootstrap4 .scrtabs-tabs-movable-container>.navbar-nav{-ms-flex-direction:row;flex-direction:row}.scrtabs-tabs-fixed-container{float:left;height:42px;overflow:hidden;width:100%}.scrtabs-tabs-movable-container{position:relative}.scrtabs-tabs-movable-container .tab-content{display:none}.scrtabs-tab-container.scrtabs-rtl .scrtabs-tabs-movable-container>ul.nav-tabs{padding-right:0}.scrtabs-tab-scroll-arrow{border:1px solid #ddd;border-top:none;color:#428bca;display:none;float:left;font-size:12px;height:42px;margin-bottom:-1px;padding-left:2px;padding-top:13px;width:20px}.scrtabs-tab-scroll-arrow:hover{background-color:#eee}.scrtabs-tab-scroll-arrow,.scrtabs-tab-scroll-arrow .scrtabs-click-target{cursor:pointer}.scrtabs-tab-scroll-arrow.scrtabs-with-click-target{cursor:default}.scrtabs-tab-scroll-arrow.scrtabs-disable,.scrtabs-tab-scroll-arrow.scrtabs-disable .scrtabs-click-target{color:#ddd;cursor:default}.scrtabs-tab-scroll-arrow.scrtabs-disable:hover{background-color:initial}.scrtabs-tabs-fixed-container ul.nav-tabs>li{white-space:nowrap}

File diff suppressed because one or more lines are too long

View file

@ -18,3 +18,7 @@ span.selection > span.select2-selection--single{
border-bottom-color: rgb(204, 204, 204);
border-left-color: rgb(204, 204, 204);
}
#filterDropdown label{
color: #333;
}

View file

@ -1,6 +1,7 @@
html,
body {
height: 100vh;
transition: all 0.3s ease-in-out;
}
html {
@ -21,6 +22,7 @@ body.fullscreen {
padding: 0 !important;
margin: 0 !important;
}
/*
.videoLink > .duration,
time.duration{
@ -36,7 +38,7 @@ time.duration{
*/
time.duration {
position: absolute;
background: rgba(0, 0, 0, 0.6)!important;
background: rgba(0, 0, 0, 0.6) !important;
padding: 1px 4px;
color: #FFF;
top: 5px;
@ -52,7 +54,8 @@ time.duration {
position: relative;
}
.thumbsImageContainer .thumbsImage, #channelLive .thumbsImage {
.thumbsImageContainer .thumbsImage,
#channelLive .thumbsImage {
border: none;
position: absolute;
top: 0;
@ -75,13 +78,13 @@ time.duration {
left: 50%;
margin: -25px 0 0 -25px;
position: absolute;
color: rgba(255, 255, 255, 0.3)!important;
color: rgba(255, 255, 255, 0.3) !important;
font-size: 50px;
}
.gallery:hover .glyphicon-play-circle,
.videoLink:hover .glyphicon-play-circle {
color: rgba(255, 255, 255, 0.6)!important;
color: rgba(255, 255, 255, 0.6) !important;
}
.bottom-border {
@ -172,14 +175,17 @@ footer ul.list-inline li {
/* Safari */
transition: ease 1s;
}
/* to fix the click on mobile */
.rightBar div {
z-index: 10;
}
#videosList, #videosList div {
#videosList,
#videosList div {
z-index: 1;
}
/* end for main video */
.form-compact .form-control {
position: relative;
@ -213,7 +219,10 @@ footer ul.list-inline li {
transition: width 0.3s, margin 0.3s;
}
.panel, #mainNavBar, #sidebar, .swal-modal {
.panel,
#mainNavBar,
#sidebar,
.swal-modal {
box-shadow: 0 1px 8px 0 rgb(0 0 0 / 8%);
}
@ -227,19 +236,28 @@ footer ul.list-inline li {
}
@media (max-width: 767px) {
.navbar-form, #modeYoutubeBottomContent, .principalContainer,
.nopaddingOnSmall,.container-fluid,.container, #yptRightBar,
body > div.container-fluid.gallery > div {
.navbar-form,
#modeYoutubeBottomContent,
.principalContainer,
.nopaddingOnSmall,
.container-fluid,
.container,
#yptRightBar,
body>div.container-fluid.gallery>div {
padding: 0;
}
.panel-body, .tabbable-panel {
.panel-body,
.tabbable-panel {
padding: 5px;
}
}
@media (max-width: 450px) {
#captchaText, .captcha .input-group {
#captchaText,
.captcha .input-group {
display: block;
}
@ -265,6 +283,7 @@ footer ul.list-inline li {
.commentDetails {
margin: 0 0 0 60px;
}
/* End Comments */
@ -274,49 +293,49 @@ footer ul.list-inline li {
}
/* Default mode */
.tabbable-line > .nav-tabs {
.tabbable-line>.nav-tabs {
border: none;
margin: 0px;
}
.tabbable-line > .nav-tabs > li > a {
.tabbable-line>.nav-tabs>li>a {
border: 0;
margin-right: 0;
}
.tabbable-line > .nav-tabs > li.open > a,
.tabbable-line > .nav-tabs > li:hover > a {
.tabbable-line>.nav-tabs>li.open>a,
.tabbable-line>.nav-tabs>li:hover>a {
border: 0;
background: none !important;
}
.tabbable-line > .nav-tabs > li.open > a > i,
.tabbable-line > .nav-tabs > li:hover > a > i {
.tabbable-line>.nav-tabs>li.open>a>i,
.tabbable-line>.nav-tabs>li:hover>a>i {
color: #a6a6a6;
}
.tabbable-line > .nav-tabs > li.open .dropdown-menu,
.tabbable-line > .nav-tabs > li:hover .dropdown-menu {
.tabbable-line>.nav-tabs>li.open .dropdown-menu,
.tabbable-line>.nav-tabs>li:hover .dropdown-menu {
margin-top: 0px;
}
.tabbable-line > .nav-tabs > li.active > a {
.tabbable-line>.nav-tabs>li.active>a {
border: 0;
background: none !important;
}
.tabbable-line > .nav-tabs > li.active > a > i {
.tabbable-line>.nav-tabs>li.active>a>i {
color: #404040;
}
.tabbable-line > .tab-content {
.tabbable-line>.tab-content {
margin-top: -3px;
border: 0;
border-top: 1px solid #eee;
padding: 15px 0;
}
.tabbable-line > .nav-tabs>li:after {
.tabbable-line>.nav-tabs>li:after {
content: "";
background: #DDD;
height: 4px;
@ -326,7 +345,7 @@ footer ul.list-inline li {
bottom: 1px;
}
.tabbable-line > .nav-tabs>li>a::after {
.tabbable-line>.nav-tabs>li>a::after {
content: "";
background: #f3565d;
height: 4px;
@ -339,23 +358,24 @@ footer ul.list-inline li {
z-index: 1;
}
.tabbable-line > .nav-tabs>li:hover>a::after {
.tabbable-line>.nav-tabs>li:hover>a::after {
background: #F99;
}
.tabbable-line > .nav-tabs>li.active>a::after {
.tabbable-line>.nav-tabs>li.active>a::after {
background: #f3565d;
}
.tabbable-line > .nav-tabs > li.open,
.tabbable-line > .nav-tabs>li.active>a::after,
.tabbable-line > .nav-tabs>li:hover>a::after {
.tabbable-line>.nav-tabs>li.open,
.tabbable-line>.nav-tabs>li.active>a::after,
.tabbable-line>.nav-tabs>li:hover>a::after {
transform: scale(1);
}
.portlet .tabbable-line > .tab-content {
.portlet .tabbable-line>.tab-content {
padding-bottom: 0;
}
/* END Tabs panel */
.nowrapCell td {
@ -416,19 +436,20 @@ footer ul.list-inline li {
.myVote small {
color: #167ac6;
}
/* fancy checkbox */
.material-switch > input[type="checkbox"] {
.material-switch>input[type="checkbox"] {
display: none;
}
.material-switch > label {
.material-switch>label {
cursor: pointer;
height: 0px;
position: relative;
width: 40px;
}
.material-switch > label::before {
.material-switch>label::before {
background: rgb(0, 0, 0);
box-shadow: inset 0px 0px 10px rgba(0, 0, 0, 0.5);
border-radius: 8px;
@ -441,7 +462,7 @@ footer ul.list-inline li {
width: 40px;
}
.material-switch > label::after {
.material-switch>label::after {
background: rgb(255, 255, 255);
border-radius: 16px;
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
@ -455,12 +476,12 @@ footer ul.list-inline li {
width: 24px;
}
.material-switch > input[type="checkbox"]:checked + label::before {
.material-switch>input[type="checkbox"]:checked+label::before {
background: inherit;
opacity: 0.5;
}
.material-switch > input[type="checkbox"]:checked + label::after {
.material-switch>input[type="checkbox"]:checked+label::after {
background: inherit;
left: 20px;
}
@ -468,28 +489,28 @@ footer ul.list-inline li {
/* fancy checkbox */
.material-small.material-switch > input[type="checkbox"] {
.material-small.material-switch>input[type="checkbox"] {
display: none;
}
.material-small.material-switch > label {
.material-small.material-switch>label {
width: 20px;
margin-right: 5px;
}
.material-small.material-switch > label::before {
.material-small.material-switch>label::before {
margin-top: -5px;
width: 20px;
height: 10px;
}
.material-small.material-switch > label::after {
.material-small.material-switch>label::after {
margin-top: -4px;
width: 15px;
height: 15px;
}
.material-small.material-switch > input[type="checkbox"]:checked + label::after {
.material-small.material-switch>input[type="checkbox"]:checked+label::after {
left: 10px;
}
@ -534,7 +555,8 @@ img.rotate-270 {
-webkit-transform: rotate(90deg);
/* Safari and Chrome */
-o-transform: rotate(90deg);
/* Opera */;
/* Opera */
;
}
img.rotate180,
@ -547,7 +569,8 @@ img.rotate-180 {
-webkit-transform: rotate(180deg);
/* Safari and Chrome */
-o-transform: rotate(180deg);
/* Opera */;
/* Opera */
;
}
img.rotate270,
@ -560,7 +583,8 @@ img.rotate-90 {
-webkit-transform: rotate(270deg);
/* Safari and Chrome */
-o-transform: rotate(270deg);
/* Opera */;
/* Opera */
;
}
.notificationButton button {
@ -701,6 +725,7 @@ nav ul.items-container li ul.right-menus li li {
.navbar-left {
padding-right: 0;
}
/** header **/
.navbar .container {
@ -708,7 +733,7 @@ nav ul.items-container li ul.right-menus li li {
align-items: center;
}
.list-inline > li {
.list-inline>li {
display: flex;
}
@ -758,6 +783,7 @@ nav ul.items-container li ul.right-menus li li {
padding-top: 12px;
padding-bottom: 12px;
}
/* End Play List */
#videoContainer {
@ -771,7 +797,7 @@ nav ul.items-container li ul.right-menus li li {
height: 25px;
}
.progress > .progress-type {
.progress>.progress-type {
position: absolute;
left: 0px;
font-weight: 800;
@ -780,7 +806,7 @@ nav ul.items-container li ul.right-menus li li {
background-color: rgba(25, 25, 25, 0.2);
}
.progress > .progress-completed {
.progress>.progress-completed {
position: absolute;
right: 0px;
font-weight: 800;
@ -811,7 +837,7 @@ nav ul.items-container li ul.right-menus li li {
.zoom:active,
.zoom:focus {
/**adjust scale to desired size,
add browser prefixes**/
add browser prefixes**/
-ms-transform: scale(2.5);
-moz-transform: scale(2.5);
-webkit-transform: scale(2.5);
@ -833,13 +859,15 @@ nav ul.items-container li ul.right-menus li li {
.navbar-collapse.in {
overflow-y: visible;
/* Bootstrap default is "auto" */;
/* Bootstrap default is "auto" */
;
}
.transparent {
opacity: 0.3;
filter: alpha(opacity=30);
/* For IE8 and earlier */;
/* For IE8 and earlier */
;
}
.principalContainer {
@ -850,7 +878,8 @@ nav ul.items-container li ul.right-menus li li {
font-size: 14px !important;
}
a.h6 h2, a.h6 h1 {
a.h6 h2,
a.h6 h1 {
font-weight: bold;
}
@ -858,7 +887,8 @@ img.blur {
filter: blur(5px);
}
.navbar-default .navbar-default, .navbar-inverse .navbar-default {
.navbar-default .navbar-default,
.navbar-inverse .navbar-default {
border-width: 0;
}
@ -890,27 +920,28 @@ img.blur {
border-radius: 15px;
}
.btn-circle:hover, .btn-group.open .btn-circle {
.btn-circle:hover,
.btn-group.open .btn-circle {
box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 8px rgba(82, 168, 236, 0.6);
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 4px;
background-color: rgba(100,100,100,0.01);
background-color: rgba(100, 100, 100, 0.01);
}
::-webkit-scrollbar {
width: 12px;
height: 8px;
background-color: rgba(100,100,100,0.01);
background-color: rgba(100, 100, 100, 0.01);
overflow: hidden;
}
::-webkit-scrollbar-thumb {
border-radius: 4px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: rgba(100,100,100,0.05);
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
background-color: rgba(100, 100, 100, 0.05);
}
.videoAdUiSkipContainer {
@ -956,11 +987,13 @@ img.blur {
opacity: 0.2;
}
.btn-group.justified, .btn-group-justified {
.btn-group.justified,
.btn-group-justified {
display: flex;
}
.btn-group-justified .btn, .justified .btn {
.btn-group-justified .btn,
.justified .btn {
flex: 1;
}
@ -987,7 +1020,8 @@ img.blur {
max-height: 3.7em;
}
.vjs-menu-item, .vjs-menu-title {
.vjs-menu-item,
.vjs-menu-title {
margin: 0 !important;
padding: 0 !important;
border-radius: 0 !important;
@ -1032,7 +1066,9 @@ img.blur {
border-right-width: 1px;
}
#modeYoutubeTop, #mvideo, #videoContainer {
#modeYoutubeTop,
#mvideo,
#videoContainer {
position: relative;
}
@ -1055,10 +1091,10 @@ img.blur {
}
#closeBtnFull i {
text-shadow: 1px 1px rgba(255,255,255,0.7);
text-shadow: 1px 1px rgba(255, 255, 255, 0.7);
}
li.dropdown-submenu > ul > li > a {
li.dropdown-submenu>ul>li>a {
width: 100%;
}
@ -1085,7 +1121,7 @@ li.dropdown-submenu > ul > li > a {
content: '';
}
#topMenuUserNotifications > ul > div.list-group {
#topMenuUserNotifications>ul>div.list-group {
overflow-x: hidden;
}
@ -1093,7 +1129,8 @@ li.dropdown-submenu > ul > li > a {
display: none;
}
.socket_connected .socket_loading_icon, .socket_disconnected .socket_loading_icon {
.socket_connected .socket_loading_icon,
.socket_disconnected .socket_loading_icon {
display: none;
}
@ -1336,6 +1373,7 @@ li.dropdown-submenu > ul > li > a {
/* sm */
@media (max-width: 992px) {
.btn-group.justified.keepLabels span.hidden-sm,
.btn-group.justified.keepLabels span.hidden-xs {
display: block !important;
@ -1390,7 +1428,9 @@ li.dropdown-submenu > ul > li > a {
background-color: #00000077;
}
.pleaseWaitDialog>div, .pleaseWaitDialog .progress, .pleaseWaitDialog h2 {
.pleaseWaitDialog>div,
.pleaseWaitDialog .progress,
.pleaseWaitDialog h2 {
margin: 0;
position: absolute;
top: 50%;
@ -1403,7 +1443,8 @@ li.dropdown-submenu > ul > li > a {
left: 50%;
}
.pleaseWaitDialog .progress, .pleaseWaitDialog h2 {
.pleaseWaitDialog .progress,
.pleaseWaitDialog h2 {
margin: 0 0 0 -50%;
width: 100%;
left: 50%;
@ -1422,23 +1463,40 @@ li.dropdown-submenu > ul > li > a {
}
@media (min-width: 1200px) {
.pleaseWaitDialog .progress, .pleaseWaitDialog h2 {
.pleaseWaitDialog .progress,
.pleaseWaitDialog h2 {
margin: 0 0 0 -200px;
width: 400px;
left: 50%;
}
.playerFullHeight, .playerFullHeight video, .playerFullHeight audio, .playerFullHeight iframe, .playerFullHeight #mainVideo, .playerFullHeight #main-video {
.playerFullHeight,
.playerFullHeight video,
.playerFullHeight audio,
.playerFullHeight iframe,
.playerFullHeight #mainVideo,
.playerFullHeight #main-video {
width: 100%;
padding: 0;
}
.ypt-is-expanded .playerFullHeight, .ypt-is-expanded .playerFullHeight video, .ypt-is-expanded .playerFullHeight audio, .ypt-is-expanded .playerFullHeight iframe,
.ypt-is-expanded .playerFullHeight #mainVideo, .ypt-is-expanded .playerFullHeight #main-video {
.ypt-is-expanded .playerFullHeight,
.ypt-is-expanded .playerFullHeight video,
.ypt-is-expanded .playerFullHeight audio,
.ypt-is-expanded .playerFullHeight iframe,
.ypt-is-expanded .playerFullHeight #mainVideo,
.ypt-is-expanded .playerFullHeight #main-video,
.ypt-is-compressed .playerFullHeight #videoContainer,
.ypt-is-compressed .playerFullHeight #main-video {
height: calc(100vh - 60px);
}
.playerFullHeight .floatVideo video, .playerFullHeight .floatVideo audio, .playerFullHeight .floatVideo iframe, .playerFullHeight .floatVideo #mainVideo, .playerFullHeight .floatVideo #main-video {
.playerFullHeight .floatVideo video,
.playerFullHeight .floatVideo audio,
.playerFullHeight .floatVideo iframe,
.playerFullHeight .floatVideo #mainVideo,
.playerFullHeight .floatVideo #main-video {
height: 300px;
}
@ -1451,19 +1509,6 @@ li.dropdown-submenu > ul > li > a {
overflow: auto !important;
}
.nav-tabs-horizontal {
display: -webkit-box;
display: -webkit-inline-box;
}
.scrtabs-tab-container {
margin: 5px 0;
}
.scrtabs-tab-scroll-arrow {
border-top: 1px solid #ddd;
}
.videoCreator {
display: inline-block;
}
@ -1484,7 +1529,8 @@ li.dropdown-submenu > ul > li > a {
margin: 2px 10px 2px 2px;
}
.videoCreator>img, .videoCreatorSmall img {
.videoCreator>img,
.videoCreatorSmall img {
float: left;
}
@ -1811,7 +1857,8 @@ button.btn-sm.hamburger svg {
margin: 15px 0;
}
.SeoTags h1, .SeoTags h2 {
.SeoTags h1,
.SeoTags h2 {
margin: 10px 0;
padding: 0;
}
@ -1824,7 +1871,7 @@ button.btn-sm.hamburger svg {
font-size: 1em;
}
.ypt-article{
.ypt-article {
padding: 15px 20px;
}
@ -1834,7 +1881,7 @@ button.btn-sm.hamburger svg {
}
}
.bootgrid-footer ul.pagination > li {
.bootgrid-footer ul.pagination>li {
cursor: pointer;
}
@ -1867,29 +1914,44 @@ button.btn-sm.hamburger svg {
text-transform: uppercase;
}
.live-icon::before{
content: "\1f534"; /* insert the high voltage sign */
animation: glow 1s ease-in-out infinite alternate, flash 1s infinite; /* animate the glow and flash */
.live-icon::before {
content: "\1f534";
/* insert the high voltage sign */
animation: glow 1s ease-in-out infinite alternate, flash 1s infinite;
/* animate the glow and flash */
}
@keyframes glow {
@keyframes glow {
from {
text-shadow: 0 0 10px rgba(255, 0, 0, 0.096);
}
to {
text-shadow: 0 0 20px #f00;
}
}
}
@keyframes flash {
@keyframes flash {
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
}
.HorizontalFlickity .btn {
border-radius: 32px;
margin: 5px 2px;
}
.HorizontalFlickity .flickity-button {
width: 22px;
height: 22px;
}

View file

@ -219,7 +219,7 @@ li.navsub-toggle a + ul {
@media screen and (min-width: 992px) {
body.youtube>div.container-fluid{
body.youtube{
margin-left: 300px;
}
body.youtube div.container-fluid .col-sm-10.col-sm-offset-1.list-group-item{

View file

@ -78,7 +78,6 @@ $jsFiles[] = "view/js/webui-popover/jquery.webui-popover.min.js";
$jsFiles[] = "view/js/bootstrap-list-filter/bootstrap-list-filter.min.js";
$jsFiles[] = "node_modules/js-cookie/dist/js.cookie.js";
$jsFiles[] = "node_modules/jquery-toast-plugin/dist/jquery.toast.min.js";
$jsFiles[] = "view/bootstrap/jquery-bootstrap-scrolling-tabs/jquery.scrolling-tabs.min.js";
$jsFiles[] = "view/js/BootstrapMenu.min.js";
$jsFiles = array_merge($jsFiles, AVideoPlugin::getJSFiles());

View file

@ -94,7 +94,6 @@ if (!isBot()) {
?>
<link href="<?php echo getURL('view/css/font-awesome-animation.min.css'); ?>" rel="stylesheet" type="text/css" onload="this.media = 'all'" />
<link href="<?php echo getURL('node_modules/jquery-toast-plugin/dist/jquery.toast.min.css'); ?>" rel="stylesheet" type="text/css" onload="this.media = 'all'" />
<link href="<?php echo getURL('view/bootstrap/jquery-bootstrap-scrolling-tabs/jquery.scrolling-tabs.min.css'); ?>" rel="stylesheet" type="text/css" onload="this.media = 'all'" />
<link href="<?php echo getURL('view/js/webui-popover/jquery.webui-popover.min.css'); ?>" rel="stylesheet" type="text/css" onload="this.media = 'all'" />
<link href="<?php echo getURL('view/js/bootgrid/jquery.bootgrid.css'); ?>" rel="stylesheet" type="text/css" onload="this.media = 'all'" />
<link href="<?php echo getURL('node_modules/jquery-ui-dist/jquery-ui.min.css'); ?>" rel="stylesheet" type="text/css" media="print" onload="this.media = 'all'" />

View file

@ -1,11 +1,31 @@
var last_videos_id = 0;
var last_currentTime = -1;
var videoViewAdded = false;
var addViewBeaconTimeout;
var _addViewCheck = false;
var isVideoPlaying = false;
// Create an encapsulation for seconds_watching_video
var VideoWatchTime = (function () {
var seconds_watching_video = 0;
return {
increment: function() {
if (isVideoPlaying) {
seconds_watching_video++;
}
},
reset: function() {
seconds_watching_video = 0;
},
getValue: function() {
return seconds_watching_video;
}
};
})();
// Modify the addView function
function addView(videos_id, currentTime) {
addViewSetCookie(PHPSESSID, videos_id, currentTime, seconds_watching_video);
addViewSetCookie(PHPSESSID, videos_id, currentTime, VideoWatchTime.getValue());
if (_addViewCheck) {
return false;
@ -15,15 +35,12 @@ function addView(videos_id, currentTime) {
return false;
}
if (currentTime > 5 && currentTime % 30 !== 0) { // only update each 30 seconds
return false;
}
// Removed the currentTime condition
_addViewCheck = true;
last_videos_id = videos_id;
last_currentTime = currentTime;
_addView(videos_id, currentTime, seconds_watching_video);
_addView(videos_id, currentTime, VideoWatchTime.getValue());
setTimeout(function() {
_addViewCheck = false;
@ -41,7 +58,6 @@ function _addView(videos_id, currentTime, seconds_watching_video) {
}
console.log('_addView 2', videos_id, currentTime, seconds_watching_video);
isVideoAddViewCount = true;
if (typeof PHPSESSID === 'undefined') {
PHPSESSID = '';
@ -53,22 +69,28 @@ function _addView(videos_id, currentTime, seconds_watching_video) {
return false;
}
isVideoAddViewCount = true;
console.log('_addView 3', videos_id, currentTime, seconds_watching_video);
url = addGetParam(url, 'PHPSESSID', PHPSESSID);
// reset seconds_watching_video
var seconds_watching_video_to_send = seconds_watching_video;
VideoWatchTime.reset();
//console.trace();
$.ajax({
url: url,
method: 'POST',
data: {
id: videos_id,
currentTime: currentTime,
seconds_watching_video: seconds_watching_video
seconds_watching_video: seconds_watching_video_to_send
},
success: function(response) {
console.log('_addView 4', response);
isVideoAddViewCount = false;
$('.view-count' + videos_id).text(response.countHTML);
PHPSESSID = response.session_id;
}, complete: function(response) {
console.log('_addView 5', response);
isVideoAddViewCount = false;
}
});
}
@ -122,6 +144,49 @@ async function addViewSetCookie(PHPSESSID, videos_id, playerCurrentTime, seconds
Cookies.set('addView_seconds_watching_video', seconds_watching_video, { path: '/', expires: 1 });
}
$(document).ready(function() {
async function startAddViewCountInPlayer(){
if(typeof player !== 'undefined' && typeof mediaId !== 'undefined'){
player.on('play', function () {
isVideoPlaying = true;
addView(mediaId, this.currentTime());
});
player.on('pause', function () {
isVideoPlaying = false;
var time = Math.round(this.currentTime());
addView(mediaId, time);
});
player.on('ended', function () {
isVideoPlaying = false;
var time = Math.round(this.currentTime());
addView(mediaId, time);
});
player.on('timeupdate', function() {
var time = Math.round(this.currentTime());
if (time === 0 || time % 30 === 0) {
addView(mediaId, time);
}
});
} else {
setTimeout(function() {
startAddViewCountInPlayer();
}, 5000);
}
}
// Add beforeunload event
window.addEventListener('beforeunload', (event) => {
addViewFromCookie();
});
$(document).ready(function() {
// Use setInterval to update seconds_watching_video every second
setInterval(function () {
VideoWatchTime.increment();
}, 1000);
// Call addViewFromCookie on the next page load
addViewFromCookie();
startAddViewCountInPlayer();
});

View file

@ -125,8 +125,6 @@ async function openLeftMenu() {
closeRightMenu();
closeSearchMenu();
}
var selector = '#buttonMenu svg';
$(selector).addClass('active');
YPTSidebarOpen();
}
@ -213,6 +211,8 @@ function YPTSidebarIsOpen() {
return $('body').hasClass('youtube');
}
async function YPTSidebarOpen() {
var selector = '#buttonMenu svg';
$(selector).addClass('active');
$("#sidebar").removeClass('animate__bounceOutLeft');
$("#sidebar").show();
$("#sidebar").addClass('animate__animated animate__bounceInLeft');

View file

@ -266,8 +266,6 @@ async function lazyImage() {
}
var pauseIfIsPlayinAdsInterval;
var seconds_watching_video = 0;
var _startCountPlayingTime;
async function setPlayerListners() {
if (typeof player !== 'undefined') {
player.on('pause', function () {
@ -275,7 +273,6 @@ async function setPlayerListners() {
//console.log("setPlayerListners: pause");
//userIsControling = true;
clearInterval(pauseIfIsPlayinAdsInterval);
clearInterval(_startCountPlayingTime);
});
player.on('play', function () {
isTryingToPlay = false;
@ -291,10 +288,6 @@ async function setPlayerListners() {
pauseIfIsPlayinAdsInterval = setInterval(function () {
pauseIfIsPlayinAds();
}, 500);
clearInterval(_startCountPlayingTime);
_startCountPlayingTime = setInterval(function () {
seconds_watching_video++;
}, 1000);
});
$("#mainVideo .vjs-mute-control").click(function () {
Cookies.set('muted', player.muted(), {
@ -849,7 +842,11 @@ function playNext(url) {
}, 1000);
} else if (isPlayNextEnabled()) {
modal.showPleaseWait();
if (typeof autoPlayAjax == 'undefined' || !autoPlayAjax) {
if (window.parent && typeof window.parent.playNextShorts === 'function') {
// Function exists, send a message to call it
console.log(" window.parent.postMessage(playNextShorts ");
window.parent.postMessage('playNextShorts', '*');
} else if (typeof autoPlayAjax == 'undefined' || !autoPlayAjax) {
//console.log("playNext changing location " + url);
document.location = url;
} else {
@ -2832,17 +2829,6 @@ $(document).ready(function () {
expires: 365
});
tabsCategoryDocumentHeight = $(document).height();
if (typeof $('.nav-tabs-horizontal').scrollingTabs == 'function') {
$('.nav-tabs-horizontal').scrollingTabs();
//$('.nav-tabs-horizontal').fadeIn();
}
setInterval(function () {
if (tabsCategoryDocumentHeightChanged()) {
if (typeof $('.nav-tabs-horizontal').scrollingTabs == 'function') {
$('.nav-tabs-horizontal').scrollingTabs('refresh');
}
}
}, 2000);
modal = getPleaseWait();
try {
$('[data-toggle="popover"]').popover();

View file

@ -14,9 +14,11 @@ foreach ($userGroups as $value) {
$users_tabs[] = ['selector' => 'userGroupGrid' . $value['id'], 'queryString' => '?status=a&user_groups_id=' . $value['id'], 'icon' => 'fas fa-users', 'title' => $value['group_name'], 'active' => '', 'userGroupID' => $value['id']];
}
?>
<link href="<?php echo getURL('node_modules/flickity/dist/flickity.min.css'); ?>" rel="stylesheet" type="text/css" />
<div class="panel panel-default">
<div class="panel-heading tabbable-line">
<div class="btn-group pull-right" >
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="addUserBtn">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> <?php echo __("New User"); ?>
</button>
@ -34,19 +36,16 @@ foreach ($userGroups as $value) {
</div>
</div>
<div class="clearfix"></div>
<ul class="nav nav-tabs nav-tabs-horizontal">
<?php
$_REQUEST['rowCount'] = $_rowCount;
$_REQUEST['current'] = $current;
$items = array();
foreach ($users_tabs as $value) {
?>
<li class="<?php echo $value['active']; ?>">
<a data-toggle="tab" href="#<?php echo $value['selector']; ?>Tab" onclick="startUserGrid('#<?php echo $value['selector']; ?>', '<?php echo $value['queryString']; ?>', <?php echo intval($value['userGroupID']); ?>);">
<i class="<?php echo $value['icon']; ?>"></i> <?php echo __($value['title']); ?>
</a>
</li>
<?php
$label = "<i class=\"{$value['icon']}\"></i> " . __($value['title']);
$items[] = array('href' => "#{$value['selector']}Tab", 'tooltip' => __($value['title']), 'onclick' => "startUserGrid('#{$value['selector']}', '{$value['queryString']}', " . intval($value['userGroupID']) . ");", 'label' => $label);
}
generateHorizontalFlickity($items);
?>
</ul>
</div>
<div class="panel-body">
<div class="tab-content">
@ -78,11 +77,11 @@ foreach ($userGroups as $value) {
<th data-column-id="id" data-width="80px"><?php echo __("#"); ?></th>
<th data-column-id="user" data-formatter="user"><?php echo __("User"); ?></th>
<th data-column-id="name" data-order="desc"><?php echo __("Name"); ?></th>
<th data-column-id="email" ><?php echo __("E-mail"); ?></th>
<th data-column-id="phone" ><?php echo __("Phone"); ?></th>
<th data-column-id="created" ><?php echo __("Created"); ?></th>
<th data-column-id="modified" ><?php echo __("Modified"); ?></th>
<th data-column-id="tags" data-formatter="tags" data-sortable="false" ><?php echo __("Tags"); ?></th>
<th data-column-id="email"><?php echo __("E-mail"); ?></th>
<th data-column-id="phone"><?php echo __("Phone"); ?></th>
<th data-column-id="created"><?php echo __("Created"); ?></th>
<th data-column-id="modified"><?php echo __("Modified"); ?></th>
<th data-column-id="tags" data-formatter="tags" data-sortable="false"><?php echo __("Tags"); ?></th>
<th data-column-id="commands" data-formatter="commands" data-sortable="false" data-width="200px"></th>
</tr>
</thead>
@ -105,7 +104,7 @@ foreach ($userGroups as $value) {
</div>
<div class="modal-body">
<form class="form-compact" id="updateUserForm" onsubmit="">
<input type="hidden" id="inputUserId" >
<input type="hidden" id="inputUserId">
<label for="inputUser" class="sr-only"><?php echo __("User"); ?></label>
<input type="text" id="inputUser" class="form-control first" placeholder="<?php echo __("User"); ?>" autofocus required="required" data-toggle="tooltip" title="<?php echo __('User'); ?>">
<?php
@ -118,7 +117,7 @@ foreach ($userGroups as $value) {
<label for="inputChannelName" class="sr-only"><?php echo __("Channel Name"); ?></label>
<input type="text" id="inputChannelName" class="form-control" placeholder="<?php echo __("Channel Name"); ?>" data-toggle="tooltip" title="<?php echo __('Channel Name'); ?>">
<label for="inputPhone" class="sr-only"><?php echo __("Phone"); ?></label>
<input type="text" id="inputPhone" class="form-control" placeholder="<?php echo __("Phone"); ?>" data-toggle="tooltip" title="<?php echo __('Phone'); ?>" >
<input type="text" id="inputPhone" class="form-control" placeholder="<?php echo __("Phone"); ?>" data-toggle="tooltip" title="<?php echo __('Phone'); ?>">
<label for="inputAnalyticsCode" class="sr-only"><?php echo __("Analytics Code"); ?></label>
<input type="text" id="inputAnalyticsCode" class="form-control last" placeholder="Google Analytics Code: UA-123456789-1" data-toggle="tooltip" title="<?php echo __('Analytics Code'); ?>">
<small>Do not paste the full javascript code, paste only the gtag id</small>
@ -144,49 +143,49 @@ foreach ($userGroups as $value) {
<li class="list-group-item <?php echo User::isAdmin() ? "" : "hidden"; ?>">
<?php echo __("is Admin"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="isAdmin" id="isAdmin"/>
<input type="checkbox" value="isAdmin" id="isAdmin" />
<label for="isAdmin" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("Can Stream Videos"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="canStream" id="canStream"/>
<input type="checkbox" value="canStream" id="canStream" />
<label for="canStream" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("Can Upload Videos"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="canUpload" id="canUpload"/>
<input type="checkbox" value="canUpload" id="canUpload" />
<label for="canUpload" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("Can view chart"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="canViewChart" id="canViewChart"/>
<input type="checkbox" value="canViewChart" id="canViewChart" />
<label for="canViewChart" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("Can create meet"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="canCreateMeet" id="canCreateMeet"/>
<input type="checkbox" value="canCreateMeet" id="canCreateMeet" />
<label for="canCreateMeet" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("E-mail Verified"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="isEmailVerified" id="isEmailVerified"/>
<input type="checkbox" value="isEmailVerified" id="isEmailVerified" />
<label for="isEmailVerified" class="label-success"></label>
</div>
</li>
<li class="list-group-item">
<?php echo __("is Active"); ?>
<div class="material-switch pull-right">
<input type="checkbox" value="status" id="status"/>
<input type="checkbox" value="status" id="status" />
<label for="status" class="label-success"></label>
</div>
</li>
@ -208,7 +207,7 @@ foreach ($userGroups as $value) {
<span class="label label-info"><?php echo $value['total_videos']; ?> <?php echo __("Videos linked"); ?></span>
<span class="label label-warning dynamicLabel"><i class="fas fa-link"></i> <?php echo __("Dynamic group"); ?></span>
<div class="material-switch pull-right">
<input id="userGroup<?php echo $value['id']; ?>" type="checkbox" value="<?php echo $value['id']; ?>" class="userGroups"/>
<input id="userGroup<?php echo $value['id']; ?>" type="checkbox" value="<?php echo $value['id']; ?>" class="userGroups" />
<label for="userGroup<?php echo $value['id']; ?>" class="label-warning"></label>
</div>
</li>
@ -240,7 +239,7 @@ foreach ($userGroups as $value) {
<div class="col-md-8 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input id="first_name" class="form-control" type="text" readonly >
<input id="first_name" class="form-control" type="text" readonly>
</div>
</div>
</div>
@ -250,7 +249,7 @@ foreach ($userGroups as $value) {
<div class="col-md-8 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input id="last_name" class="form-control" readonly >
<input id="last_name" class="form-control" readonly>
</div>
</div>
</div>
@ -260,7 +259,7 @@ foreach ($userGroups as $value) {
<div class="col-md-8 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input id="address" class="form-control" readonly >
<input id="address" class="form-control" readonly>
</div>
</div>
</div>
@ -307,7 +306,7 @@ foreach ($userGroups as $value) {
<label class="col-md-4 control-label"><?php echo __("Document"); ?></label>
<div class="col-md-8 inputGroupContainer">
<div class="input-group">
<img src="" class="img img-responsive img-thumbnail" id="documentImage"/>
<img src="" class="img img-responsive img-thumbnail" id="documentImage" />
</div>
</div>
</div>
@ -317,6 +316,8 @@ foreach ($userGroups as $value) {
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script src="<?php echo getURL('node_modules/flickity/dist/flickity.pkgd.min.js'); ?>" type="text/javascript"></script>
<script src="<?php echo getURL('node_modules/flickity-bg-lazyload/bg-lazyload.js'); ?>" type="text/javascript"></script>
<script>
function isAnalytics() {
@ -325,10 +326,10 @@ foreach ($userGroups as $value) {
//return str === '' || (/^ua-\d{4,9}-\d{1,4}$/i).test(str.toString());
}
$(document).ready(function () {
$(document).ready(function() {
startUserGrid("#<?php echo $users_tabs[0]['selector']; ?>", "<?php echo $users_tabs[0]['queryString']; ?>", <?php echo intval($users_tabs[0]['userGroupID']); ?>);
$('#addUserBtn').click(function (evt) {
$('#addUserBtn').click(function(evt) {
$('#inputUserId').val('');
$('#inputUser').val('');
$('#inputPassword').val('');
@ -346,17 +347,17 @@ foreach ($userGroups as $value) {
$('.userGroups').prop('checked', false);
$('#status').prop('checked', true);
$('#isEmailVerified').prop('checked', false);
<?php
print AVideoPlugin::addUserBtnJS();
?>
<?php
print AVideoPlugin::addUserBtnJS();
?>
$('#userFormModal').modal();
});
$('#saveUserBtn').click(function (evt) {
$('#saveUserBtn').click(function(evt) {
$('#updateUserForm').submit();
});
$('#updateUserForm').submit(function (evt) {
$('#updateUserForm').submit(function(evt) {
evt.preventDefault();
if (!isAnalytics()){
if (!isAnalytics()) {
avideoAlert("<?php echo __("Sorry!"); ?>", "<?php echo __("Your analytics code is wrong"); ?>", "error");
$('#inputAnalyticsCode').focus();
return false;
@ -364,16 +365,15 @@ print AVideoPlugin::addUserBtnJS();
modal.showPleaseWait();
var selectedUserGroups = [];
$('.userGroups:checked').each(function () {
$('.userGroups:checked').each(function() {
selectedUserGroups.push($(this).val());
});
$.ajax({
url: '<?php echo $global['webSiteRootURL']; ?>objects/userAddNew.json.php',
data: {
<?php
print AVideoPlugin::updateUserFormJS();
?>
"id": $('#inputUserId').val(),
<?php
print AVideoPlugin::updateUserFormJS();
?> "id": $('#inputUserId').val(),
"user": $('#inputUser').val(),
"pass": $('#inputPassword').val(),
"email": $('#inputEmail').val(),
@ -394,8 +394,8 @@ print AVideoPlugin::updateUserFormJS();
"securityToken": '<?php echo getToken(3600); ?>'
},
type: 'post',
success: function (response) {
if(!response.error){
success: function(response) {
if (!response.error) {
$('#userFormModal').modal('hide');
$('.bootgrid-table').bootgrid("reload");
}
@ -405,12 +405,12 @@ print AVideoPlugin::updateUserFormJS();
}
});
return false;
}
);
});
});
var userGroupShowOnly = '';
var userGroupQueryString = '';
function userGroupFilter(user_groups_id, value) {
console.log('Filter usergroup', user_groups_id, value);
userGroupShowOnly = value;
@ -427,6 +427,7 @@ print AVideoPlugin::updateUserFormJS();
url = addGetParam(url, 'userGroupShowOnly', userGroupShowOnly);
return url;
}
function startUserGrid(selector, queryString, user_groups_id) {
userGroupQueryString = queryString;
if (user_groups_id) {
@ -448,14 +449,14 @@ print AVideoPlugin::updateUserFormJS();
ajax: true,
url: getUserGridURL,
formatters: {
"commands": function (column, row) {
"commands": function(column, row) {
var editBtn = '<button type="button" class="btn btn-xs btn-default command-edit" data-row-id="' + row.id + '" data-toggle="tooltip" data-placement="left" title="<?php echo __('Edit'); ?>"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span></button>'
var infoBtn = '<button type="button" class="btn btn-xs btn-default command-info" data-row-id="' + row.id + '" data-toggle="tooltip" data-placement="left" title="<?php echo __('Info'); ?>"><i class="fas fa-info-circle"></i></button>'
//var deleteBtn = '<button type="button" class="btn btn-default btn-xs command-delete" data-row-id="' + row.id + ' data-toggle="tooltip" data-placement="left" title="Delete""><span class="glyphicon glyphicon-erase" aria-hidden="true"></span></button>';
var pluginsButtons = '<br><?php echo AVideoPlugin::getUsersManagerListButton(); ?>';
return editBtn + infoBtn + pluginsButtons;
},
"tags": function (column, row) {
"tags": function(column, row) {
var tags = '';
for (var i in row.tags) {
if (typeof row.tags[i].type == "undefined") {
@ -465,7 +466,7 @@ print AVideoPlugin::updateUserFormJS();
}
return tags;
},
"user": function (column, row) {
"user": function(column, row) {
var photo = '';
if (row.photoURL) {
photo = "<br><img src='" + row.photo + "' class='img img-responsive img-rounded img-thumbnail' style='max-width:100px;'/>";
@ -473,10 +474,9 @@ print AVideoPlugin::updateUserFormJS();
return row.user + photo;
}
}
}).on("loaded.rs.jquery.bootgrid", function ()
{
}).on("loaded.rs.jquery.bootgrid", function() {
/* Executes after data is loaded and rendered */
grid.find(".command-edit").on("click", function (e) {
grid.find(".command-edit").on("click", function(e) {
var row_index = $(this).closest('tr').index();
var row = $(selector).bootgrid("getCurrentRows")[row_index];
console.log(row);
@ -507,12 +507,12 @@ print AVideoPlugin::updateUserFormJS();
$('#canCreateMeet').prop('checked', (row.canCreateMeet == "1" ? true : false));
$('#status').prop('checked', (row.status === "a" ? true : false));
$('#isEmailVerified').prop('checked', (row.isEmailVerified == "1" ? true : false));
<?php
print AVideoPlugin::loadUsersFormJS();
?>
<?php
print AVideoPlugin::loadUsersFormJS();
?>
$('#userFormModal').modal();
}).end().find(".command-info").on("click", function (e) {
}).end().find(".command-info").on("click", function(e) {
var row_index = $(this).closest('tr').index();
var row = $(selector).bootgrid("getCurrentRows")[row_index];
@ -531,5 +531,4 @@ print AVideoPlugin::loadUsersFormJS();
});
});
}
</script>

View file

@ -13,7 +13,11 @@
<?php
echo $getAdsLeaderBoardTop;
}else{
echo "<!-- getAdsLeaderBoardTop is empty -->";
echo "<!-- ";
echo "getAdsLeaderBoardTop is empty ";
echo implode(', ', ADs::getAdsCodeReason('leaderBoardTop'));
echo " -->";
}
?>
</center>