add permission max watch, optimize search, add search on tv_show, list movies by available date

master
root 2 years ago
parent b92e7c4831
commit 677de21bf3

@ -26,7 +26,7 @@ class Controller_Home extends Controller_Security
$server = $sessionServer ? Model_Server::find_by_pk($sessionServer->id) : Model_Server::find_one_by([
['online', '=', 1],
['disable', '=', 0],
], null, null);
]);
Lang::load('menu');
Lang::load('settings');

@ -1,5 +1,6 @@
<?php
use Fuel\Core\DB;
use Fuel\Core\FuelException;
use Fuel\Core\Input;
use Fuel\Core\Lang;
@ -25,8 +26,6 @@ class Controller_Movie extends Controller_Home
if(!$movie)
Response::redirect('/home');
$movie->getTrailer();
$this->template->title = $movie->title;
$body->set('movie', $movie);
@ -70,7 +69,8 @@ class Controller_Movie extends Controller_Home
$user_downloads = Model_User_Download::find(function ($query) use ($user_id) {
$startOfDay = date("Y-m-d 00:00:00");
$endOfDay = date("Y-m-d 23:59:59");
$query->where('user_id', $user_id)
$query->select(DB::expr('count(id) as count'))
->where('user_id', $user_id)
->and_where('date', '>=', strtotime($startOfDay))
->and_where('date', '<=', strtotime($endOfDay))
;
@ -79,8 +79,8 @@ class Controller_Movie extends Controller_Home
if (Model_Permission::isGranted('RIGHT_DOWNLOAD_DISABLED', $movie->getLibrary()))
throw new FuelException('You dont have the permission to download in this library!');
if (Model_Permission::isGranted('RIGHT_MAX_DOWNLOAD', $movie->getLibrary(), count($user_downloads)))
throw new FuelException('You reach the limit of download in this library today!');
if (!Model_Permission::isGranted('RIGHT_MAX_DOWNLOAD', $movie->getLibrary(), $user_downloads[0]->count))
throw new FuelException('You have reach the maximum number of download in this library today!');
$url = $movie->getDownloadLink();
@ -152,9 +152,25 @@ class Controller_Movie extends Controller_Home
if (!$movie)
throw new FuelException('No movie found');
$user_id = $this->_user->id;
$user_histories = Model_User_History::find(function ($query) use ($movie_id, $user_id) {
$startOfDay = date("Y-m-d 00:00:00");
$endOfDay = date("Y-m-d 23:59:59");
$query->select(DB::expr('count(id) as count'))
->where('user_id', $user_id)
->and_where('movie_id', '<>', $movie_id)
->and_where('date', '>=', strtotime($startOfDay))
->and_where('date', '<=', strtotime($endOfDay))
;
});
if (Model_Permission::isGranted('RIGHT_WATCH_DISABLED', $movie->getLibrary()))
throw new FuelException('You dont have the permission to watch in this library!');
if (!Model_Permission::isGranted('RIGHT_MAX_WATCH', $movie->getLibrary(), $user_histories[0]->count))
throw new FuelException('You have reach the maximum number of watch in this library for today!');
$url = ($movie->getServer()->https === '1' ? 'https' : 'http') . '://';
$url .= $movie->getServer()->url . ($movie->getServer()->port ? ':' . $movie->getServer()->port : '') . '/';
$url .= 'video/:/';

@ -17,7 +17,10 @@ class Controller_Rest_Library extends Controller_Rest
if ($library_id === null || $right_name === null || $checked === null)
throw new FuelException('Missing parameters');
$permission = Model_Permission::find_one_by('name', $right_name);
$permission = Model_Permission::find_one_by([
['name', '=', $right_name],
['disable', '=', 0]
]);
$permission_id = $permission->id;

@ -1,9 +1,8 @@
<?php
use Fuel\Core\Controller_Rest;
use Fuel\Core\File;
use Fuel\Core\DB;
use Fuel\Core\Input;
use Fuel\Core\Num;
use Fuel\Core\Session;
use Fuel\Core\View;
use Fuel\Core\FuelException;
@ -19,16 +18,29 @@ class Controller_Rest_Movie extends Controller_Rest
if (!$movie_id)
throw new FuelException('No movie id');
/** @var Model_Movie $movie */
$movie = Model_Movie::find_by_pk($movie_id);
if (!$movie)
throw new FuelException('No movie found');
$user_id = Session::get('user')->id;
$user_histories = Model_User_History::find(function ($query) use ($movie_id, $user_id) {
$startOfDay = date("Y-m-d 00:00:00");
$endOfDay = date("Y-m-d 23:59:59");
$query->select(DB::expr('count(id) as count'))
->where('user_id', $user_id)
->and_where('movie_id', '<>', $movie_id)
->and_where('date', '>=', strtotime($startOfDay))
->and_where('date', '<=', strtotime($endOfDay))
;
});
if (Model_Permission::isGranted('RIGHT_WATCH_DISABLED', $movie->getLibrary()))
throw new FuelException('You dont have the permission to watch in this library!');
if (!Model_Permission::isGranted('RIGHT_MAX_WATCH', $movie->getLibrary(), $user_histories[0]->count))
throw new FuelException('You have reach the maximum number of watch in this library for today!');
$user_settings = Model_User_Settings::find_one_by('user_id', Session::get('user')->id);
@ -52,24 +64,65 @@ class Controller_Rest_Movie extends Controller_Rest
public function post_watching()
{
try {
$user = Session::get('user');
$user_id = Session::get('user')->id;
$movie_id = Input::post('movie_id');
$totaltime = Input::post('totaltime');
$timeplay = Input::post('timeplay');
$isFinish = Input::post('isFinish');
$is_ended = Input::post('is_ended') === 'true';
if (!$movie_id)
throw new FuelException('No movie id');
$movie = Model_Movie::find_by_pk($movie_id);
if (!$movie)
throw new FuelException('No movie found');
$user_histories = Model_User_History::find(function ($query) use ($movie_id, $user_id) {
$startOfDay = date("Y-m-d 00:00:00");
$endOfDay = date("Y-m-d 23:59:59");
$query->select(DB::expr('count(id) as count'))
->where('user_id', $user_id)
->and_where('movie_id', '<>', $movie_id)
->and_where('date', '>=', strtotime($startOfDay))
->and_where('date', '<=', strtotime($endOfDay))
;
});
if (Model_Permission::isGranted('RIGHT_WATCH_DISABLED', $movie->getLibrary()))
throw new FuelException('You dont have the permission to watch in this library!');
if (!Model_Permission::isGranted('RIGHT_MAX_WATCH', $movie->getLibrary(), $user_histories[0]->count))
throw new FuelException('You have reach the maximum number of watch in this library for today!');
$watching = Model_User_History::find_one_by([
['movie_id', '=', $movie_id],
['user_id', '=', $user->id]
]) ?: new Model_User_History();
$watching->set([
'user_id' => $user->id,
'movie_id' => $movie_id,
'ended_time' => $totaltime,
'watching_time' => $timeplay,
'isFinish' => ($isFinish === 'true' ? true : false)
]);
['movie_id', '=', $movie_id],
['user_id', '=', $user_id],
['is_ended', '=', 0]
]);
$params = [];
if($watching && $watching->date + (24 * 60 * 60) < time())
{
$watching->set(['is_ended' => $is_ended]);
$watching->save();
$watching = null;
}
if($watching === null){
$watching = new Model_User_History();
$params['date'] = time();
}
$params = array_merge($params, ['user_id' => $user_id,
'movie_id' => $movie_id,
'watching_time' => $timeplay,
'ended_time' => $totaltime,
'is_ended' => $is_ended]);
$watching->set($params);
$watching->save();

@ -9,23 +9,50 @@ class Controller_Rest_Search extends Controller_Rest
{
public function get_index()
{
$search = '%'.Input::get('search').'%';
$search = '+'.implode('* +',
explode(' ',
rtrim(Input::get('search'))
)
).'*';
$query = DB::query('SELECT * FROM '.DB::table_prefix('movie').
' WHERE '.DB::table_prefix('movie').'.type = :type
AND ('.DB::table_prefix('movie').'.`title` LIKE :search
OR MATCH('.DB::table_prefix('movie').'.`title`) AGAINST(:search))
ORDER BY MATCH('.DB::table_prefix('movie').'.`title`)
AGAINST(:search) DESC LIMIT 5');
$query = DB::query('SELECT * FROM '.DB::table_prefix('movie').'
WHERE MATCH('.DB::table_prefix('movie').'.`title`) AGAINST(:search IN BOOLEAN MODE)
ORDER BY MATCH('.DB::table_prefix('movie').'.`title`) AGAINST(:search IN BOOLEAN MODE) DESC LIMIT 6');
$query->bind('search', $search);
$movies = $query->execute();
$query = DB::query('SELECT * FROM '.DB::table_prefix('tvshow').'
WHERE MATCH('.DB::table_prefix('tvshow').'.`title`) AGAINST(:search IN BOOLEAN MODE)
ORDER BY MATCH('.DB::table_prefix('tvshow').'.`title`) AGAINST(:search IN BOOLEAN MODE) DESC LIMIT 4');
$query->bind('search', $search);
$tv_shows = $query->execute();
$results = [];
foreach ($movies as $movie) {
$data = [
'id' => $movie['id'],
'type' => $movie['type'],
'title' => $movie['title'],
'year' => $movie['type'] === 'movie' ? $movie['year'] : '',
'tvshow' => $movie['tvshow'] ?? '',
];
$results[] = $data;
}
$query->param('type', 'movie');
$search_movie = $query->execute();
foreach ($tv_shows as $movie) {
$data = [
'id' => $movie['id'],
'type' => 'tvshow',
'title' => $movie['title'],
'year' => $movie['year'],
'tvshow' => $movie['tvshow'] ?? '',
];
$query->param('type', 'episode');
$search_episode = $query->execute();
$results[] = $data;
}
return $this->response(['movies' => $search_movie, 'episodes' => $search_episode]);
return $this->response($results);
}
}

@ -3,8 +3,7 @@
use Fuel\Core\Config;
use Fuel\Core\Input;
use Fuel\Core\Lang;
use Fuel\Core\Migrate;
use Fuel\Core\Response;
use Fuel\Core\Response;
use Fuel\Core\Session;
use Fuel\Core\View;

@ -35,15 +35,14 @@ class Controller_Settings_Libraries extends Controller_Settings
if($library === null)
Response::redirect('/settings/libraries');
$permissions = Model_Permission::find_all();
$permissions = Model_Permission::find_by('disable', 0);
$library_permissions = Model_Library_Permission::find_by('library_id', $library_id);
$library_permissions = $library_permissions ?: [];
$temp = [];
// ORDER ARRAY BY PERMISSION ID
// MORE EASY TO DISPLAY
foreach ($library_permissions as $library_permission) {
$temp[$library_permission->permission_id] = $library_permission;
}

@ -1,5 +1,6 @@
<?php
use Fuel\Core\DB;
use Fuel\Core\Format;
use Fuel\Core\Request;
use Fuel\Core\Cache;
@ -358,9 +359,9 @@ class Model_Movie extends Model_Overwrite
//return ($this->_server->https === '1' ? 'https' : 'http') . '://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/video/:/transcode/universal/session/' . $this->_session . '/base/index.m3u8';
} catch (Exception $exception) {
if($exception->getCode() === 403)
throw new FuelException('Cannot connect to the server.<br/>The token must be outdated!', 200);
throw new FuelException('Cannot connect to the server.<br/>The token must be outdated!', $exception->getCode());
else
throw new FuelException($exception->getMessage(), 200);
throw new FuelException($exception->getMessage(), $exception->getCode());
}
}
@ -478,7 +479,7 @@ class Model_Movie extends Model_Overwrite
->select('*')
->where('type', 'movie')
->group_by('originalTitle', 'title', 'year')
->order_by('title', 'ASC')
->order_by(DB::expr("str_to_date(`originallyAvailableAt`, '%Y-%m-%d')"), 'DESC')
;
});
}

@ -74,11 +74,11 @@ class Model_Permission extends Model_Overwrite
* RETURN TRUE
*/
if($library_permission === NULL)
return false;
return true;
else if((int)$library_permission->value > $data)
return false;
else
return true;
else
return false;
}
if ($permission->name === 'RIGHT_MAX_DOWNLOAD_SPEED') {
@ -91,12 +91,17 @@ class Model_Permission extends Model_Overwrite
}
if ($permission->name === 'RIGHT_MAX_WATCH') {
/** @TODO IF (NUMBER_WATCH <= MAX_WATCH) // in last 24h
* RETURN TRUE
* ELSE
/** @TODO IF (MAX_WATCH > NUMBER_WATCH) // in last 24h
* RETURN FALSE
* ELSE
* RETURN TRUE
*/
return true;
if($library_permission === NULL)
return true;
else if((int)$library_permission->value > $data)
return true;
else
return false;
}
if ($permission->name === 'RIGHT_MAX_QUALITY') {

@ -12,7 +12,8 @@ class Model_User_History extends Model_Overwrite
'movie_id',
'watching_time',
'ended_time',
'is_ended'
'is_ended',
'date'
);
private $_movie = null;

@ -9,9 +9,9 @@ return array(
'season/:season_id' => 'season/index',
'episode/:movie_id/download' => 'movie/download',
'episode/:episode_id' => 'episode/index',
'movie/list' => 'movie/list',
'movie/:movie_id/video/\:/transcode/:transcode/session/:session/:index/:base' => 'movie/stream',
'movie/:movie_id/download' => 'movie/download',
'movie/:movie_id' => 'movie/index',
'movie/list' => 'movie/list',
'settings/libraries/premissions/:library_id' => 'settings/libraries/permissions'
);

@ -30,14 +30,14 @@ class Create_movie
\DB::query('CREATE INDEX constraintMovieLibrary ON ' . \DB::table_prefix('movie') . '(`library_id`)')->execute();
\DB::query('CREATE INDEX constraintMovieSeason ON ' . \DB::table_prefix('movie') . '(`season_id`)')->execute();
\DB::query('CREATE INDEX searchTitle ON ' . \DB::table_prefix('movie') . '(`title` DESC)')->execute();
\DB::query('CREATE FULLTEXT searchTitle ON ' . \DB::table_prefix('movie') . '(`title` DESC)')->execute();
}
public function down()
{
\DB::query('DROP INDEX constraintMovieLibrary ON ' . \DB::table_prefix('movie'))->execute();
\DB::query('DROP INDEX constraintMovieSeason ON ' . \DB::table_prefix('movie'))->execute();
\DB::query('DROP INDEX searchTitle ON ' . \DB::table_prefix('movie'))->execute();
\DB::query('DROP FULLTEXT searchTitle ON ' . \DB::table_prefix('movie'))->execute();
\DBUtil::drop_table('movie');
}

@ -13,6 +13,7 @@ class Create_user_history
'watching_time' => array('type' => 'int', 'null' => false, 'constraint' => 11),
'ended_time' => array('default' => '0', 'type' => 'int', 'null' => false, 'constraint' => 11),
'is_ended' => array('default' => '0', 'type' => 'int', 'null' => false, 'constraint' => 1),
'date' => array('default' => '0', 'type' => 'int', 'null' => false, 'constraint' => 1),
), array('id'));
\DB::query('CREATE INDEX constraintUserUserHistory ON ' . \DB::table_prefix('user_history') . '(`user_id`)')->execute();

@ -105,36 +105,44 @@ $(function() {
method: 'GET',
data: {search: $(this).val()},
dataType: 'json'
}).done(function (data) {
}).done(function (datas) {
$('._search').remove();
if(data.movies.length === 0 && data.episodes.length === 0)
if(datas.length === 0)
return;
$('#search_result').removeClass('hidden');
data.movies.forEach(function (movie, index) {
let template = $('#film_template').clone();
datas.forEach(function (data, index) {
if(!data.type)
return;
let template = $('#search_template').clone();
template.removeClass('hidden');
template.addClass('_search');
template.html(template.html().replace(/{\$TITLE\$}/g, movie.title));
template.html(template.html().replace(/{\$YEAR\$}/g, movie.year));
template.html(template.html().replace(/{\$MOVIEID\$}/g, movie.id));
$('#film_template').after(template);
});
if(data.type === 'movie') {
template.html(template.html().replace(/{\$HREF_SEARCH\$}/g, '/movie/' + data.id));
template.html(template.html().replace(/{\$URL_COVER\$}/g, '/cover/movie?movie_id=' + data.id));
}
data.episodes.forEach(function (episode, index) {
let template = $('#episode_template').clone();
if(data.type === 'episode') {
template.html(template.html().replace(/{\$HREF_SEARCH\$}/g, '/episode/' + data.id));
template.html(template.html().replace(/{\$URL_COVER\$}/g, '/cover/movie?movie_id=' + data.id));
}
template.removeClass('hidden');
template.addClass('_search');
template.html(template.html().replace(/{\$TITLE\$}/g, episode.title));
template.html(template.html().replace(/{\$YEAR\$}/g, episode.year));
template.html(template.html().replace(/{\$MOVIEID\$}/g, episode.id));
if(data.type === 'tvshow') {
template.html(template.html().replace(/{\$HREF_SEARCH\$}/g, '/tvshow/' + data.id));
template.html(template.html().replace(/{\$URL_COVER\$}/g, '/cover/tvshow?tvshow_id=' + data.id));
}
template.html(template.html().replace(/{\$TITLE\$}/g, data.title));
template.html(template.html().replace(/{\$YEAR\$}/g, data.year));
template.html(template.html().replace(/{\$TYPE\$}/g, data.type));
template.html(template.html().replace(/{\$TVSHOW\$}/g, data.tvshow));
$('#episode_template').after(template);
$('#search_template').after(template);
});
}).fail(function (data) {
console.error(data.responseText);

@ -4,18 +4,18 @@
de résultats...</a>
<div>
<div>
<div class="QuickSearchProvider-title-1DX5M" aria-label="heading" aria-level="4">Library</div>
<div class="QuickSearchProvider-title-1DX5M" aria-label="heading" aria-level="4"></div>
<div>
<div>
<h5 class="QuickSearchHubContainer-hubTitle-2B0GD">Films</h5>
<div id="film_template" role="button" class="hidden QuickSearchResult-button-1ZHpO Link-link-2XYrU Link-default-32xSO">
<a tabindex="1" title="{$TITLE$}" href="/movie/{$MOVIEID$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<?php //<h5 class="QuickSearchHubContainer-hubTitle-2B0GD">Films</h5> ?>
<div id="search_template" role="button" class="hidden QuickSearchResult-button-1ZHpO Link-link-2XYrU Link-default-32xSO">
<a tabindex="1" title="{$TITLE$}" href="{$HREF_SEARCH$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<div class="QuickSearchResult-overlay-38WrL">
<div class="QuickSearchResult-imageContainer-DvFlp">
<div class="QuickSearchMetadataPosterCard-card-3_XFi MetadataPosterButtonCard-card-2T8TR"
style="width: 28px; height: 42px;">
<div class="PosterCardImg-imageContainer-1Ar4M">
<div style="background-image: url('/cover/movie?movie_id={$MOVIEID$}&width=42&height=63'); background-size: cover; background-position: center center; background-repeat: no-repeat; width: 100%; height: 100%; position: absolute; z-index: 2;"></div>
<div style="background-image: url('{$URL_COVER$}&width=42&height=63'); background-size: cover; background-position: center center; background-repeat: no-repeat; width: 100%; height: 100%; position: absolute; z-index: 2;"></div>
</div>
<button aria-label="Lire {$TITLE$}" tabindex="-1" role="button" class="MetadataPosterButtonCard-playButton-aOV1E PlayButton-playButton-3WX8X Link-link-2XYrU Link-default-32xSO" type="button">
<div class="MetadataPosterButtonCard-playCircle-366hc PlayButton-playCircle-3Evfd">
@ -29,7 +29,10 @@
<span title="{$TITLE$}">{$TITLE$}</span>
</div>
<div class=" QuickSearchTitle-title-2ApAO QuickSearchTitle-isSecondary-mxETF">
<span data-qa-id="metadataYear">{$YEAR$}</span></div>
<span>{$TYPE$}</span>
<span>{$YEAR$}</span>
<span>{$TVSHOW$}</span>
</div>
</div>
<button id="id-1341" tabindex="-1" aria-label="Plus d'actions" aria-haspopup="true" role="button"
class="QuickSearchResult-moreButton-2Agbk Link-link-2XYrU Link-default-32xSO" type="button">
@ -38,10 +41,11 @@
</div>
</div>
</div>
<div>
<?php
/*<div>
<h5 class="QuickSearchHubContainer-hubTitle-2B0GD">Épisodes</h5>
<div id="episode_template" role="button" class="hidden QuickSearchResult-button-1ZHpO Link-link-2XYrU Link-default-32xSO">
<a tabindex="1" title="{$TITLE$}" href="/movie/{$MOVIEID$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<a tabindex="1" title="{$TITLE$}" href="/episode/{$MOVIEID$}" role="link" class="QuickSearchResult-underlay-QgyJt Link-link-2XYrU Link-default-32xSO"></a>
<div class="QuickSearchResult-overlay-38WrL">
<div class="QuickSearchResult-imageContainer-DvFlp">
<div class="QuickSearchMetadataPosterCard-card-3_XFi MetadataPosterButtonCard-card-2T8TR"
@ -70,7 +74,8 @@
</button>
</div>
</div>
</div>
</div>*/
?>
</div>
</div>
</div>

@ -94,11 +94,11 @@
<div class="col-sm-4 text-center" title="Dolby Digital" data-placement="bottom" data-toggle="tooltip" style="font-size: 35px;"><i class="glyphicon sound-dolby"></i></div>
<?php endif; ?>
<?php if(isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/7\.1(\([a-z]*\))?/',$movie->getMetaData()['Stream']['Audio'][0]['audioChannelLayout'])) : ?>
<?php if(isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/7\.1(\([a-z]*\))?/',$movie->getMetaData()['Stream']['Audio'][0]['displayTitle'])) : ?>
<div class="col-sm-4 text-center" style="font-size: 35px;"><i class="glyphicon sound-7-1"></i></div>
<?php elseif (isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/5\.1(\([a-z]*\))?/',$movie->getMetaData()['Stream']['Audio'][0]['audioChannelLayout'])) : ?>
<?php elseif (isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/5\.1(\([a-z]*\))?/',$movie->getMetaData()['Stream']['Audio'][0]['displayTitle'])) : ?>
<div class="col-sm-4 text-center" style="font-size: 35px;"><i class="glyphicon sound-5-1"></i></div>
<?php elseif (isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/stereo/',$movie->getMetaData()['Stream']['Audio'][0]['audioChannelLayout'])) : ?>
<?php elseif (isset($movie->getMetaData()['Stream']['Audio'][0]) && preg_match('/Stereo/',$movie->getMetaData()['Stream']['Audio'][0]['displayTitle'])) : ?>
<div class="col-sm-4 text-center" title="Stereo" data-placement="bottom" data-toggle="tooltip" style="font-size: 35px;"><i class="glyphicon sound-stereo"></i></div>
<?php endif; ?>
</div>

@ -12,7 +12,7 @@
</button>
<button aria-haspopup="true" data-qa-id="typeDropdownButton" id="id-14" role="button"
class="PageHeaderBreadcrumbButton-button-1uaPj DisclosureArrowButton-disclosureArrowButton-3tbYZ DisclosureArrowButton-medium-3-Y37 Link-link-2XYrU Link-default-32xSO"
type="button">Par Titre
type="button">Date de sortie
<div class="DisclosureArrowButton-disclosureArrow-34Wg3 DisclosureArrow-disclosureArrow-1sBFv DisclosureArrowButton-down-bd2wx DisclosureArrowButton-medium-3-Y37 DisclosureArrow-down-1U7WW DisclosureArrow-up-rjGpc DisclosureArrow-default-3_FCW DisclosureArrow-medium-3VjTd "></div>
</button>
<span class="PageHeaderBadge-badge-sOmD- Badge-badge-1VCQ1 Badge-default-1XnzT"><?php echo count($movies); ?></span>
@ -217,88 +217,72 @@
<div data-reactroot="" id="id-1865">
<div role="menu" class="MenuContainer-menu-3Gtlw MenuContainer-medium-2XOYJ">
<div class="Menu-menuScroller-E0NwY Scroller-vertical-1bgGS Scroller-scroller-d5-b- Scroller-vertical-1bgGS Scroller-auto-3t4gM"
style="max-height: 591px;"><a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=titleSort%3Adesc&amp;save=1"
class=" SelectedMenuItem-isSelected-3zuEi MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
style="max-height: 591px;">
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=titleSort%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Titre</div>
<div class="SelectedMenuItem-selectedIcon-3S2cy"><i class="plex-icon-sort-ascending-560"
aria-hidden="false"
aria-label="Croissant"></i></div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=year%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Année</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=originallyAvailableAt%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
class=" SelectedMenuItem-isSelected-3zuEi MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Date de sortie</div>
<div class="SelectedMenuItem-selectedIcon-3S2cy"><i class="plex-icon-sort-descending-560"></i></div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=rating%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Note Critique</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=userRating%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Évaluation</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=contentRating%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Évaluation du contenu</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=duration%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Durée</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=viewOffset%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">En cours</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=viewCount%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Lectures</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=addedAt%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Date d'ajout</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
</a>
<a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=lastViewedAt%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Date du visionnage</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=mediaHeight&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Résolution</div>
</div>
</a><a data-qa-id="dropdownItem" role="menuitem"
href="#!/server/df1de861fbaba243c18ed9275fd42e3248d19336?key=%2Flibrary%2Fsections%2F1&amp;typeKey=%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1&amp;limit=&amp;sort=mediaBitrate%3Adesc&amp;save=1"
class=" MenuItem-menuItem-25266 MenuItem-default-tX5Cl Link-link-2XYrU Link-default-32xSO">
<div class="SelectedMenuItem-menuItemContainer-7SpJZ">
<div class="SelectedMenuItem-menuLabel-1tKeW">Débit</div>
</div>
</a></div>
</a>
</div>
</div>
</div>
</div>

@ -93,10 +93,10 @@
}).done(function (data) {
show_alert('success', 'Server save succesfully!');
$('.media-server-modal button.close').click();
setTimeout(function(){location.reload()}, 200);
}).fail(function (data) {
data = JSON.parse(data.responseText);
show_alert('error', data.message);
setTimeout(function(){location.reload()}, 200);
});
});
<?php if ($countServers > 0) : ?>

@ -13,7 +13,7 @@ function toHHMMSS(num) {
return times + minutes + ':' + seconds;
}
async function updateWatching(movie_id, totaltime, timeplay, isFinish = false){
async function updateWatching(movie_id, totaltime, timeplay, is_ended = false){
$.ajax({
url: '/rest/movie/watching',
method: 'POST',
@ -21,7 +21,7 @@ async function updateWatching(movie_id, totaltime, timeplay, isFinish = false){
movie_id: movie_id,
totaltime: totaltime,
timeplay: timeplay,
isFinish: isFinish
is_ended: is_ended
},
dataType: 'json'
}).done(function (data) {
@ -116,7 +116,7 @@ function launchPlayer(view) {
let now = Date.now();
if(totaltime !== null && timeplay !== 0 && (lastUpdateTime === 0 || (lastUpdateTime + 10*1000) < now)) {
if(totaltime !== null && timeplay !== 0 && (lastUpdateTime === 0 || (lastUpdateTime + 5*1000) < now)) {
lastUpdateTime = now;
updateWatching(movie_id, totaltime, timeplay, (percent > 97));
}

Loading…
Cancel
Save