diff --git a/app/Http/Controllers/MovieController.php b/app/Http/Controllers/MovieController.php
index 040e00c64..0e12c8a2e 100644
--- a/app/Http/Controllers/MovieController.php
+++ b/app/Http/Controllers/MovieController.php
@@ -47,12 +47,35 @@ class MovieController extends BasePageController
$rslt = $movie->getMovieRange($page, $catarray, $offset, config('nntmux.items_per_cover_page'), $orderby, -1, $this->userdata->categoryexclusions);
$results = $this->paginate($rslt ?? [], $rslt[0]->_totalcount ?? 0, config('nntmux.items_per_cover_page'), $page, $request->url(), $request->query());
+ // Optimize data processing - do heavy lifting in backend
$movies = $results->map(function ($result) {
+ // Pre-process exploded data to avoid template overhead
$result['genre'] = makeFieldLinks($result, 'genre', 'movies');
$result['actors'] = makeFieldLinks($result, 'actors', 'movies');
$result['director'] = makeFieldLinks($result, 'director', 'movies');
$result['languages'] = explode(', ', $result['language']);
+ // Pre-explode release data to reduce template processing
+ $result['release_ids'] = explode(',', $result['grp_release_id']);
+ $result['release_guids'] = explode(',', $result['grp_release_guid']);
+ $result['release_nfoids'] = explode(',', $result['grp_release_nfoid']);
+ $result['release_groups'] = explode(',', $result['grp_release_grpname']);
+ $result['release_names'] = explode('#', $result['grp_release_name']);
+ $result['release_postdates'] = explode(',', $result['grp_release_postdate']);
+ $result['release_sizes'] = explode(',', $result['grp_release_size']);
+ $result['release_totalparts'] = explode(',', $result['grp_release_totalparts']);
+ $result['release_comments'] = explode(',', $result['grp_release_comments']);
+ $result['release_grabs'] = explode(',', $result['grp_release_grabs']);
+ $result['release_failed'] = explode(',', $result['grp_release_failed']);
+ $result['release_password'] = explode(',', $result['grp_release_password']);
+ $result['release_innerfiles'] = explode(',', $result['grp_rarinnerfilecount']);
+ $result['release_haspreview'] = explode(',', $result['grp_haspreview']);
+
+ // Pre-process category data
+ if (isset($result['category_name'])) {
+ $result['category_split'] = explode('>', $result['category_name']);
+ }
+
return $result;
});
diff --git a/public/assets/images/placeholder.png b/public/assets/images/placeholder.png
new file mode 100644
index 000000000..e69de29bb
diff --git a/resources/views/themes/Gentele/movies.tpl b/resources/views/themes/Gentele/movies.tpl
index d14c2beb3..62985489b 100755
--- a/resources/views/themes/Gentele/movies.tpl
+++ b/resources/views/themes/Gentele/movies.tpl
@@ -58,24 +58,9 @@
{foreach $results as $result}
{if isset($result['category_name'])}
- {assign var="catnamesplit" value=">"|explode:$result['category_name']}
+ {assign var="catnamesplit" value=$result['category_split']}
{/if}
- {assign var="msplits" value=","|explode:$result['grp_release_id']}
- {assign var="mguid" value=","|explode:$result['grp_release_guid']}
- {assign var="mnfo" value=","|explode:$result['grp_release_nfoid']}
- {assign var="mgrp" value=","|explode:$result['grp_release_grpname']}
- {assign var="mname" value="#"|explode:$result['grp_release_name']}
- {assign var="mpostdate" value=","|explode:$result['grp_release_postdate']}
- {assign var="msize" value=","|explode:$result['grp_release_size']}
- {assign var="mtotalparts" value=","|explode:$result['grp_release_totalparts']}
- {assign var="mcomments" value=","|explode:$result['grp_release_comments']}
- {assign var="mgrabs" value=","|explode:$result['grp_release_grabs']}
- {assign var="mfailed" value=","|explode:$result['grp_release_failed']}
- {assign var="mpass" value=","|explode:$result['grp_release_password']}
- {assign var="minnerfiles" value=","|explode:$result['grp_rarinnerfilecount']}
- {assign var="mhaspreview" value=","|explode:$result['grp_haspreview']}
-
@@ -88,363 +73,428 @@
{/foreach}
- {foreach $msplits as $m}
- {if $m@first}
-
+ {/if}
- {foreach $msplits as $m}
- {if $m@first}
-
-
-
-
-
- {if $result['genre'] != ''}
-
-
-
- {foreach explode(", ", $result['genre']) as $genre}
- {$genre}
- {/foreach}
-
-
+ {if !empty($result['release_ids'][0])}
+
+
- {if $result['plot'] != ''}
-
{$result['plot']}
- {/if}
-
- {if $result['director'] != ''}
-
-
-
Director: {$result['director']}
+
+
+ {if $result['genre'] != ''}
+
+
+
+ {foreach explode(", ", $result['genre']) as $genre}
+ {$genre}
+ {/foreach}
- {/if}
+
+ {/if}
- {if $result['actors'] != ''}
-
-
- Starring: {$result['actors']}
-
- {/if}
-
+ {if $result['plot'] != ''}
+
{$result['plot']}
+ {/if}
-
-
-
-
-
-
+ {if $result['director'] != ''}
+
+
+ Director: {$result['director']}
+
+ {/if}
- {if isset($catsplit[0])}
-
{$catsplit[0]}
- {/if}
+ {if $result['actors'] != ''}
+
+
+ Starring: {$result['actors']}
+
+ {/if}
+
- {if isset($catsplit[1])}
-
{$catsplit[1]}
- {/if}
+
+
+
+
+
+
- {if $result['rtrating'] != ''}
-
- RT: {$result['rtrating']}
-
- {/if}
-
+ {if isset($result['category_split'][0])}
+
{$result['category_split'][0]}
+ {/if}
-
-
- {$msize[$m@index]|filesize}
-
-
+ {if isset($result['category_split'][1])}
+
{$result['category_split'][1]}
+ {/if}
-
-
- Posted {$mpostdate[$m@index]|timeago} ago
-
-
-
-
-
-
-
+
+
+
+ {$result['release_sizes'][0]|filesize}
+
+
+
+
+
+ Posted {$result['release_postdates'][0]|timeago} ago
+
+
+
+
+
+
+
- {/if}
- {/foreach}
+
+ {/if}
{/foreach}
-
+
-
-
-
-
-
-
-
-
With Selected:
-
-
-
- {if isset($isadmin)}
-
-
- {/if}
-
-
-
-
-
- {$results->onEachSide(5)->links()}
-
-
- {{Form::close()}}
-
-
-
+
+
+
+
+
+
+
+
With Selected:
+
+
+
+ {if isset($isadmin)}
+
+
+ {/if}
+
+
+
+
+
+ {$results->onEachSide(5)->links()}
+
+
+ {{Form::close()}}
+
+
+
-
-
+
+
-
+
+
+