Merge pull request #4447 from Roardom/spellcheck

(Add) Spell check ci
This commit is contained in:
HDVinnie
2025-01-28 12:00:43 -05:00
committed by GitHub
98 changed files with 660 additions and 122 deletions

12
.cspell/bittorrent.txt Normal file
View File

@@ -0,0 +1,12 @@
announce
bdecode
bencode
btih
infohash
leecher
leechers
numwant
peerlist
seedbox
seedboxes
seeders

12
.cspell/blade.txt Normal file
View File

@@ -0,0 +1,12 @@
endcomponent
enderror
endfor
endforeach
endforelse
endisset
endphp
endsection
endslot
endswitch
forelse
isset

16
.cspell/brands.txt Normal file
View File

@@ -0,0 +1,16 @@
authy
bdinfo
bitwarden
gnutella
igdb
imdb
jackett
kazaa
limewire
mal
mediainfo
phpstorm
shareaza
tmdb
tvdb
tvrage

34
.cspell/dependencies.txt Normal file
View File

@@ -0,0 +1,34 @@
alpinejs
assada
axios
axllent
beanstalkd
commonmark
gabrielelana
getmeili
imagick
imgbb
joypixels
laravel
linkify
livewire
mailgun
mailpit
meilisearch
papertrail
phpredis
phpstan
phpunit
polycast
purgecss
reichel
ryoluo
spatie
stelmakh
sweetalert
symfony
theodorejb
typesense
vite
voku
zxcvbn

View File

@@ -0,0 +1,6 @@
asciify
dontBackupDatabases
dontBackupFilesystem
htmlify
lexify
swal

27
.cspell/html.txt Normal file
View File

@@ -0,0 +1,27 @@
autocorrect
autofocus
backref
contentlength
datalist
describedby
evenodd
formaction
formmethod
formnovalidate
inputmode
lightcoral
maxlength
minmax
nbsp
noopener
noreferrer
nowrap
progressbar
rowgroup
rowspan
stroke-linejoin
tabindex
valuemax
valuemin
valuenow
xlink

6
.cspell/irc.txt Normal file
View File

@@ -0,0 +1,6 @@
joinchannel
nickserv
nickservpass
privmsg
realname
servername

22
.cspell/laravel.txt Normal file
View File

@@ -0,0 +1,22 @@
arrayable
assertdontseetext
dispatchable
doesntcontain
doesntexist
dontbroadcasttocurrentuser
dontflash
dontreport
ehlo
encryptable
encrypter
mimetypes
mysql
ordoesnthave
pgsql
queueable
sasl
sslmode
sqlite
sqlsrv
stringable
wheredoesnthave

8
.cspell/mysql.txt Normal file
View File

@@ -0,0 +1,8 @@
arrayagg
from_unixtime
inet6_ntoa
innodb
mysqld
mysqldump
timestampadd
timestampdiff

7
.cspell/people.txt Normal file
View File

@@ -0,0 +1,7 @@
hdvinnie
rhilip
roardom
sindre
sindresorhus
sorhus
vinnie

10
.cspell/php.txt Normal file
View File

@@ -0,0 +1,10 @@
autoload
autoloaded
autoloading
bcmath
classmap
fastcgi
igbinary
mbstring
opcache
phar

View File

@@ -0,0 +1,4 @@
ENT_NOQUOTES
PATHINFO_BASENAME
PREG_OFFSET_CAPTURE
PREG_SET_ORDER

45
.cspell/php_functions.txt Normal file
View File

@@ -0,0 +1,45 @@
addslashes
closedir
ctype_digit
ctype_print
ctype_xdigit
fclose
fgets
fileperms
fpassthru
fsockopen
fwrite
getcwd
gethostbyaddr
htmlspecialchars
inet_ntop
inet_pton
intdiv
intval
isset
ksort
ltrim
microtime
opendir
pathinfo
preg_match
preg_match_all
preg_quote
preg_replace
preg_replace_callback
preg_split
rawurlencode
rtrim
scandir
strcasecmp
strpos
strrchr
strspn
strtolower
strtotime
strtoupper
sys_getloadavg
uniqid
unserialize
urldecode
usleep

6
.cspell/redis.txt Normal file
View File

@@ -0,0 +1,6 @@
llen
lpop
lpush
rpush
sadd
srandmember

19
.github/workflows/spellcheck.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Check Spelling
on: [push, pull_request]
jobs:
spellcheck:
strategy:
matrix:
operating-system:
- ubuntu-22.04
name: ${{ matrix.operating-system }}
runs-on: ${{ matrix.operating-system }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run CSpell
uses: streetsidesoftware/cspell-action@v6
with:
incremental_files_only: false

View File

@@ -1,6 +1,6 @@
# Contributing
Contributions are **welcome**. Please make all pull requests agaist the development branch (currently 8.x.x) and NOT master which is only for releases.
Contributions are **welcome**. Please make all pull requests against the development branch (currently 8.x.x) and NOT master which is only for releases.
We accept contributions via Pull Requests on [Github](https://github.com/HDInnovations/UNIT3D).
@@ -104,7 +104,7 @@ Any new pages should use the existing component styles unless a new block, eleme
## Other
- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
- **Document any change in behavior** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
- **Create feature branches** - Don't ask us to pull from your master branch.

View File

@@ -96,6 +96,6 @@ class AutoDeactivateWarning extends Command
}
}, 'user_id');
$this->comment('Automated Warning Deativation Command Complete');
$this->comment('Automated Warning Deactivation Command Complete');
}
}

View File

@@ -36,7 +36,7 @@ class AutoRecycleClaimedTorrentRequests extends Command
*
* @var string
*/
protected $description = 'Recycle Torrent Requests That Wwere Claimed But Not Filled Within 7 Days.';
protected $description = 'Recycle Torrent Requests That Were Claimed But Not Filled Within 7 Days.';
/**
* AutoRecycleClaimedTorrentRequests Constructor.

View File

@@ -36,7 +36,7 @@ class FetchMeta extends Command
*
* @var string
*/
protected $description = 'Fetchs Meta Data For New System On Preexxsisting Torrents';
protected $description = 'Fetches Meta Data For New System On Preexisting Torrents';
/**
* Execute the console command.

View File

@@ -126,7 +126,7 @@ class GitUpdater extends Command
$this->backup($paths);
$this->header('Reseting Repository');
$this->header('Resetting Repository');
$this->commands([
'git fetch origin',

View File

@@ -21,28 +21,28 @@ use ZipArchive;
class BackupEncryption
{
/**
* Default encryption contants.
* Default encryption constants.
*
* @var int
*/
final public const ENCRYPTION_DEFAULT = ZipArchive::EM_AES_128;
/**
* AES-128 encryption contants.
* AES-128 encryption constants.
*
* @var int
*/
final public const ENCRYPTION_WINZIP_AES_128 = ZipArchive::EM_AES_128;
/**
* AES-192 encryption contants.
* AES-192 encryption constants.
*
* @var int
*/
final public const ENCRYPTION_WINZIP_AES_192 = ZipArchive::EM_AES_192;
/**
* AES-256 encryption contants.
* AES-256 encryption constants.
*
* @var int
*/

View File

@@ -175,7 +175,7 @@ class Bencode
if ($isDict) {
$ret = 'd';
// this is required by the specs, and BitTornado actualy chokes on unsorted dictionaries
// this is required by the specs, and BitTornado actually chokes on unsorted dictionaries
ksort($d, SORT_STRING);
}
@@ -223,7 +223,7 @@ class Bencode
$size = 0;
$count = 0;
// Multifile
// Multi-file
if (isset($t['info']['files']) && \is_array($t['info']['files'])) {
foreach ($t['info']['files'] as $file) {
$count++;

View File

@@ -129,6 +129,7 @@ if (!\function_exists('rating_color')) {
if (!\function_exists('language_flag')) {
function language_flag(?string $language): ?string
{
// cspell:words Bokmal, Limburgish, Sinhala,
$flag = match ($language) {
'English', 'English (US)' => 'us',
'English (GB)' => 'gb',
@@ -145,7 +146,7 @@ if (!\function_exists('language_flag')) {
'Bosnian', 'Bosnian (BA)' => 'ba',
'Bulgarian', 'Bulgarian (BG)' => 'bg',
'Burmese' => 'mm',
'Chinese', 'Mandarin', 'Mandarin (Hans)', 'Mandarin (Hant)', 'Cantonese', 'Cantonese (Hant)', 'Chinese (Simplied)', 'Chinese (Traditional)', 'Chinese (Simplified)', 'Chinese-yue-Hant', 'Chinese-cmn-Hans', 'Chinese-cmn-Hant' => 'cn',
'Chinese', 'Mandarin', 'Mandarin (Hans)', 'Mandarin (Hant)', 'Cantonese', 'Cantonese (Hant)', /* cspell:disable */ 'Chinese (Simplied)' /* cspell:enable */, 'Chinese (Traditional)', 'Chinese (Simplified)', 'Chinese-yue-Hant', 'Chinese-cmn-Hans', 'Chinese-cmn-Hant' => 'cn',
'Chinese (HK)', 'Chinese-Hant-HK', 'Mandarin (HK)', 'Cantonese (HK)', 'Chinese-cmn-HK' => 'hk',
'Chinese (Taiwan)' => 'tw',
'Croatian', 'Croatian (HR)' => 'hr',

View File

@@ -45,6 +45,7 @@ class SystemInformation
*/
public function avg(): ?array
{
// cspell:ignore loadavg
if (is_readable('/proc/loadavg')) {
$file = file_get_contents('/proc/loadavg');
@@ -160,7 +161,7 @@ class SystemInformation
private function getDatabase(): string
{
if (!\in_array(config('database.default'), self::KNOWN_DATABASES, true)) {
return 'Unkown';
return 'Unknown';
}
return DB::select('select version()')[0]->{'version()'};

View File

@@ -45,7 +45,6 @@ class TorrentHelper
public static function approveHelper(int $id): void
{
$appurl = config('app.url');
$appname = config('app.name');
$torrent = Torrent::with('user')->withoutGlobalScope(ApprovedScope::class)->findOrFail($id);
$torrent->created_at = Carbon::now();
@@ -55,7 +54,7 @@ class TorrentHelper
$torrent->moderated_by = (int) auth()->id();
if (!$torrent->free) {
$autoFreeleechs = AutomaticTorrentFreeleech::query()
$autoFreeleeches = AutomaticTorrentFreeleech::query()
->orderBy('position')
->where(fn ($query) => $query->whereNull('category_id')->orWhere('category_id', '=', $torrent->category_id))
->where(fn ($query) => $query->whereNull('type_id')->orWhere('type_id', '=', $torrent->type_id))
@@ -63,7 +62,7 @@ class TorrentHelper
->where(fn ($query) => $query->whereNull('size')->orWhere('size', '<', $torrent->size))
->get();
foreach ($autoFreeleechs as $autoFreeleech) {
foreach ($autoFreeleeches as $autoFreeleech) {
if ($autoFreeleech->name_regex === null || preg_match($autoFreeleech->name_regex, $torrent->name)) {
$torrent->free = $autoFreeleech->freeleech_percentage;

View File

@@ -115,7 +115,7 @@ class TorrentController extends BaseController
return $this->sendError('Validation Error.', 'You Must Provide A Valid Torrent File For Upload!');
}
// Deplace and decode the torrent temporarily
// Move and decode the torrent temporarily
$decodedTorrent = TorrentTools::normalizeTorrent($requestFile);
$infohash = Bencode::get_infohash($decodedTorrent);

View File

@@ -38,6 +38,8 @@ use Throwable;
use Exception;
use Illuminate\Support\Facades\Redis;
// cspell:ignore completei,downloadedi,incompletei,intervali
final class AnnounceController extends Controller
{
// Torrent Moderation Codes
@@ -118,7 +120,7 @@ final class AnnounceController extends Controller
$visible = true;
}
// Process Annnounce Job.
// Process Announce Job.
$this->processAnnounceJob($queries, $user, $group, $torrent, $visible);
if ($visible) {
@@ -130,6 +132,7 @@ final class AnnounceController extends Controller
} catch (TrackerException $exception) {
$response = $this->generateFailedAnnounceResponse($exception);
} catch (Exception) {
// spell:disable-next-line
$response = 'd14:failure reason21:Internal Server Error8:intervali5400e12:min intervali5400ee';
}
@@ -455,7 +458,7 @@ final class AnnounceController extends Controller
}
/**
* Check A Peers Min Annnounce Interval.
* Check A Peers Min Announce Interval.
*
* @throws TrackerException
* @throws Exception

View File

@@ -84,7 +84,7 @@ class HomeController extends Controller
),
'articles' => $articles,
'topics' => Topic::query()
->with(['user', 'user.group', 'latestPoster', 'reads' => fn ($query) => $query->whereBelongsto($user)])
->with(['user', 'user.group', 'latestPoster', 'reads' => fn ($query) => $query->whereBelongsTo($user)])
->authorized(canReadTopic: true)
->latest()
->take(5)

View File

@@ -59,6 +59,6 @@ class ReseedController extends Controller
}
return to_route('torrents.show', ['id' => $torrent->id])
->withErrors('This torrent doesnt meet the rules for a reseed request.');
->withErrors('This torrent doesn\'t meet the rules for a reseed request.');
}
}

View File

@@ -35,7 +35,7 @@ class CommandController extends Controller
/**
* Bring Site Into Maintenance Mode.
*/
public function maintanceEnable(): \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
public function maintenanceEnable(): \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
{
Artisan::call('down');
@@ -46,7 +46,7 @@ class CommandController extends Controller
/**
* Bring Site Out Of Maintenance Mode.
*/
public function maintanceDisable(): \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
public function maintenanceDisable(): \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
{
Artisan::call('up');

View File

@@ -39,7 +39,7 @@ class FlushController extends Controller
}
/**
* Flsuh All Old Peers From Database.
* Flush All Old Peers From Database.
*
* @throws Exception
*/

View File

@@ -40,6 +40,7 @@ class ReportController extends Controller
*/
public function show(Report $report): \Illuminate\Contracts\View\Factory|\Illuminate\View\View
{
// cspell:ignore punct
preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', (string) $report->message, $match);
return view('Staff.report.show', ['report' => $report, 'urls' => $match[0]]);

View File

@@ -271,11 +271,11 @@ class TorrentBuffController extends Controller
}
return to_route('torrents.show', ['id' => $torrent->id])
->withErrors('You Dont Have Enough Freeleech Tokens Or Already Have One Activated On This Torrent.');
->withErrors('You Don\'t Have Enough Freeleech Tokens Or Already Have One Activated On This Torrent.');
}
/**
* Set Torrents Refudable Status.
* Set Torrents Refundable Status.
*/
public function setRefundable(Request $request, int $id): \Illuminate\Http\RedirectResponse
{

View File

@@ -70,7 +70,7 @@ class TorrentController extends Controller
}
/**
* Display The Torrent reasource.
* Display The Torrent resource.
*
* @throws JsonException
* @throws \MarcReichel\IGDBLaravel\Exceptions\MissingEndpointException

View File

@@ -79,7 +79,7 @@ class ResurrectionController extends Controller
}
/**
* Cancel A Ressurection.
* Cancel A Resurrection.
*/
public function destroy(Request $request, User $user, Resurrection $resurrection): \Illuminate\Http\RedirectResponse
{

View File

@@ -10,7 +10,7 @@ declare(strict_types=1);
*
* @project UNIT3D Community Edition
*
* @author Raordom <roardom@protonmail.com>
* @author Roardom <roardom@protonmail.com>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0
*/

View File

@@ -74,7 +74,7 @@ class ForumCategoryTopicSearch extends Component
'user.group',
'latestPoster',
'forum',
'reads' => fn ($query) => $query->whereBelongsto(auth()->user()),
'reads' => fn ($query) => $query->whereBelongsTo(auth()->user()),
])
->whereRelation('forum', 'forum_category_id', '=', $this->category->id)
->authorized(canReadTopic: true)
@@ -97,7 +97,7 @@ class ForumCategoryTopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '>', 'last_read_post_id')
)
)
@@ -107,7 +107,7 @@ class ForumCategoryTopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '=', 'last_read_post_id')
)
)

View File

@@ -79,7 +79,7 @@ class ForumTopicSearch extends Component
'user.group',
'latestPoster',
'forum:id,name',
'reads' => fn ($query) => $query->whereBelongsto(auth()->user()),
'reads' => fn ($query) => $query->whereBelongsTo(auth()->user()),
])
->where('topics.forum_id', '=', $this->forum->id)
->authorized(canReadTopic: true)
@@ -102,7 +102,7 @@ class ForumTopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '>', 'last_read_post_id')
)
)
@@ -112,7 +112,7 @@ class ForumTopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '=', 'last_read_post_id')
)
)

View File

@@ -92,7 +92,7 @@ class LaravelLogViewer extends Component
for ($i = 0; $i < $numEntries; $i++) {
// The context is the portion before the first stack trace
$context = preg_split('/^\[stacktrace\]|Stack trace\:/ms', (string) $stacktraces[$i])[0];
// The `context` consists of a message, an exception, a filename, and a linecount
// The `context` consists of a message, an exception, a filename, and a line count
preg_match($contextPattern, $context, $contextMatches);
$entries->push([

View File

@@ -295,7 +295,7 @@ class PersonCredit extends Component
->values()
->groupBy(fn ($torrent) => $torrent->type->name)
->map(
fn ($torrentsBytype) => $torrentsBytype
fn ($torrentsByType) => $torrentsByType
->sortBy([
['resolution.position', 'asc'],
['internal', 'desc'],

View File

@@ -365,7 +365,7 @@ class SimilarTorrent extends Component
->values()
->groupBy(fn ($torrent) => $torrent->type->name)
->map(
fn ($torrentsBytype) => $torrentsBytype
fn ($torrentsByType) => $torrentsByType
->sortBy([
['resolution.position', 'asc'],
['name', 'asc'],

View File

@@ -37,7 +37,7 @@ class SubscribedTopic extends Component
'user.group',
'latestPoster',
'forum',
'reads' => fn ($query) => $query->whereBelongsto(auth()->user()),
'reads' => fn ($query) => $query->whereBelongsTo(auth()->user()),
])
->whereRelation('subscribedUsers', 'users.id', '=', auth()->id())
->authorized(canReadTopic: true)

View File

@@ -85,7 +85,7 @@ class TopicSearch extends Component
'user.group',
'latestPoster',
'forum',
'reads' => fn ($query) => $query->whereBelongsto(auth()->user()),
'reads' => fn ($query) => $query->whereBelongsTo(auth()->user()),
])
->authorized(canReadTopic: true)
->when($this->search !== '', fn ($query) => $query->where('name', 'LIKE', '%'.$this->search.'%'))
@@ -107,7 +107,7 @@ class TopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '>', 'last_read_post_id')
)
)
@@ -117,7 +117,7 @@ class TopicSearch extends Component
->whereHas(
'reads',
fn ($query) => $query
->whereBelongsto(auth()->user())
->whereBelongsTo(auth()->user())
->whereColumn('last_post_id', '=', 'last_read_post_id')
)
)

View File

@@ -755,7 +755,7 @@ class TorrentSearch extends Component
->values()
->groupBy(fn ($torrent) => $torrent->type->name)
->map(
fn ($torrentsBytype) => $torrentsBytype
fn ($torrentsByType) => $torrentsByType
->sortBy([
['resolution.position', 'asc'],
['name', 'asc'],

View File

@@ -248,7 +248,7 @@ class StoreTorrentRequest extends FormRequest
public function messages(): array
{
return [
'igdb.in' => 'The IGBB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not uploading a game.',
'igdb.in' => 'The IGDB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not uploading a game.',
'tmdb.in' => 'The TMDB ID must be 0 if the media doesn\'t exist on TMDB or you\'re not uploading a tv show or movie.',
'imdb.in' => 'The IMDB ID must be 0 if the media doesn\'t exist on IMDB or you\'re not uploading a tv show or movie.',
'tvdb.in' => 'The TVDB ID must be 0 if the media doesn\'t exist on TVDB or you\'re not uploading a tv show.',

View File

@@ -132,7 +132,7 @@ class StoreTorrentRequestRequest extends FormRequest
public function messages(): array
{
return [
'igdb.in' => 'The IGBB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not requesting a game.',
'igdb.in' => 'The IGDB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not requesting a game.',
'tmdb.in' => 'The TMDB ID must be 0 if the media doesn\'t exist on TMDB or you\'re not requesting a tv show or movie.',
'imdb.in' => 'The IMDB ID must be 0 if the media doesn\'t exist on IMDB or you\'re not requesting a tv show or movie.',
'tvdb.in' => 'The TVDB ID must be 0 if the media doesn\'t exist on TVDB or you\'re not requesting a tv show.',

View File

@@ -38,7 +38,7 @@ readonly class RegisteredListener
\sprintf('[url=%s]%s[/url], Welcome to ', $profileUrl, $user->username).config('other.title').'! Hope you enjoy the community.',
\sprintf("[url=%s]%s[/url], We've been expecting you.", $profileUrl, $user->username),
\sprintf("[url=%s]%s[/url] has arrived. Party's over.", $profileUrl, $user->username),
\sprintf("It's a bird! It's a plane! Nevermind, it's just [url=%s]%s[/url].", $profileUrl, $user->username),
\sprintf("It's a bird! It's a plane! Never mind, it's just [url=%s]%s[/url].", $profileUrl, $user->username),
\sprintf('Ready player [url=%s]%s[/url].', $profileUrl, $user->username),
\sprintf('A wild [url=%s]%s[/url] appeared.', $profileUrl, $user->username),
'Welcome to '.config('other.title').\sprintf(' [url=%s]%s[/url]. We were expecting you.', $profileUrl, $user->username),

View File

@@ -121,7 +121,7 @@ class Comment extends Model
}
/**
* Nootify Staff There Is Stale Tickets.
* Notify Staff There Is Stale Tickets.
*/
public static function checkForStale(Ticket $ticket): void
{

View File

@@ -38,7 +38,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
*/
class DonationPackage extends Model
{
/** @use HasFactory<\Database\Factories\DonationPackagefactory> */
/** @use HasFactory<\Database\Factories\DonationPackageFactory> */
use HasFactory;
use SoftDeletes;

View File

@@ -808,9 +808,9 @@ class Torrent extends Model
*/
public function isFreeleech(?User $user = null): bool
{
$pfree = $user && ($user->group->is_freeleech || cache()->get('personal_freeleech:'.$user->id));
$isFreeleech = $user && ($user->group->is_freeleech || cache()->get('personal_freeleech:'.$user->id));
return $this->free || config('other.freeleech') || $pfree;
return $this->free || config('other.freeleech') || $isFreeleech;
}
/**

View File

@@ -26,7 +26,7 @@ class NewUnfollow extends Notification implements ShouldQueue
use Queueable;
/**
* NewUnfolllow Constructor.
* NewUnfollow Constructor.
*/
public function __construct(public string $type, public User $unfollower)
{

View File

@@ -47,12 +47,12 @@ class UserBan extends Notification
*/
public function toMail(object $notifiable): MailMessage
{
$chatdUrl = config('unit3d.chat-link-url');
$chatUrl = config('unit3d.chat-link-url');
return (new MailMessage())
->greeting('You have been banned 😭')
->line('You have been banned from '.config('other.title').' for '.$this->ban->ban_reason)
->action('Need Support?', $chatdUrl)
->action('Need Support?', $chatUrl)
->line('Thank you for using 🚀'.config('other.title'));
}
}

View File

@@ -51,7 +51,7 @@ class UserMaxWarningsReached extends Notification
return (new MailMessage())
->greeting('Max Hit and Run Warnings Reached!')
->line('You have hit the limit on active Hit and Run Warnings! Your download privilliges have been revoked!')
->line('You have hit the limit on active Hit and Run Warnings! Your download privileges have been revoked!')
->action('View Unsatisfied Torrents to seed off your warnings or wait until they expire!', $profileUrl)
->line('Thank you for using 🚀'.config('other.title'));
}
@@ -65,7 +65,7 @@ class UserMaxWarningsReached extends Notification
{
return [
'title' => 'Max Hit and Run Warnings Reached!',
'body' => 'You have hit the limit on active Hit and Run Warnings! Your download privilliges have been revoked!',
'body' => 'You have hit the limit on active Hit and Run Warnings! Your download privileges have been revoked!',
'url' => \sprintf('/users/%s', $this->user->username),
];
}

View File

@@ -351,9 +351,9 @@ class ChatRepository
}
}
foreach (config('censor.replace') as $word => $rword) {
foreach (config('censor.replace') as $word => $replacementWord) {
if (Str::contains($message, $word)) {
$message = str_replace($word, $rword, (string) $message);
$message = str_replace($word, $replacementWord, (string) $message);
}
}

View File

@@ -283,7 +283,7 @@ class Movie
$titleSort = null;
if ($this->data['release_date'] !== null) {
$re = '/((?<namesort>.*)(?<seperator>\:|and)(?<remaining>.*)|(?<name>.*))/m';
$re = '/((?<nameSort>.*)(?<separator>\:|and)(?<remaining>.*)|(?<name>.*))/m';
preg_match($re, $this->data['title'], $matches);
$year = (new DateTime($this->data['release_date']))->format('Y');
@@ -291,7 +291,7 @@ class Movie
$titleSort = addslashes(str_replace(
['The ', 'An ', 'A ', '"'],
[''],
Str::limit($matches['namesort'] ?? $this->data['title'].' '.$year, 100)
Str::limit($matches['nameSort'] ?? $this->data['title'].' '.$year, 100)
));
}

View File

@@ -47,7 +47,7 @@ return [
/*
|--------------------------------------------------------------------------
| Recyle Old Audit Records
| Recycle Old Audit Records
|--------------------------------------------------------------------------
|
| In Days!

View File

@@ -104,7 +104,7 @@ return [
],
/*
* The database dump can be compressed to decrease diskspace usage.
* The database dump can be compressed to decrease disk space usage.
*
* Out of the box Laravel-backup supplies
* Spatie\DbDumper\Compressors\GzipCompressor::class.

View File

@@ -16,7 +16,7 @@ declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Email Domain Blackist Validation
| Email Domain Blacklist Validation
|--------------------------------------------------------------------------
|
| The email domain blacklist validation rule uses a remote or local source

View File

@@ -30,7 +30,7 @@ return [
| Seedtime
|--------------------------------------------------------------------------
|
| Time In Seconds Needed For Successful Ressurection (Default: 2592000seconds / 30days)
| Time In Seconds Needed For Successful Resurrection (Default: 2592000seconds / 30days)
|
*/

View File

@@ -41,7 +41,7 @@ return [
| Max Warnings
|--------------------------------------------------------------------------
|
| Max Warnings Before Download Privliges Disabled
| Max Warnings Before Download Privileges Disabled
|
*/

View File

@@ -2,6 +2,8 @@
declare(strict_types=1);
// cspell:ignore mpga
return [
/*
|---------------------------------------------------------------------------

View File

@@ -70,7 +70,7 @@ return [
/*
|--------------------------------------------------------------------------
| Freelech State
| Freeleech State
|--------------------------------------------------------------------------
|
| Global Freeleech

282
cspell.json Normal file
View File

@@ -0,0 +1,282 @@
{
"version": "0.2",
"language": "en",
"words": [
"amoled",
"apikey",
"bbcode",
"chatbox",
"cinematographed",
"commentable",
"commenters",
"comparate",
"comparates",
"dcma",
"downloaders",
"fa-crosshairs",
"fa-wpforms",
"fbclid",
"followees",
"freeleech",
"freeleeches",
"gitupdate",
"hsts",
"leechtime",
"nord",
"participations",
"prewarn",
"prewarning",
"reindex",
"remux",
"rsses",
"rsskey",
"rsskeys",
"runbot",
"seedbonus",
"seedsize",
"shoutbox",
"stickied",
"stylesheet",
"subforum",
"sublicensable",
"supervisorctl",
"textareas",
"totp",
"trumpable",
"unactivated",
"unban",
"unbans",
"unbookmark",
"unbookmarked",
"unclaims",
"uncompromised",
"unconnectable",
"unfollow",
"unfollowed",
"unfollower",
"unfollows",
"unmark",
"unmoderated",
"unparticipated",
"unsatisfieds",
"unsnooze",
"unsticky",
"unvalidated",
"uploaders",
"upsert",
"upserting",
"upserts",
"webfonts",
"winzip",
"woot",
],
"ignoreWords": [
"abcdef0123456789",
"aboutus",
"activefl",
"apimatch",
"appurl",
"auth.appl-closed",
"auth.appl-intro",
"auth.appl-reason",
"autocat",
"autodis",
"autogroup",
"autoigdb",
"autoimdb",
"autokeywords",
"automal",
"autoreg",
"autores",
"autotmdb",
"autotvdb",
"banneduser",
"chatbody",
"chatrooms",
"chatstatus",
"chatstatuses",
"clientblacklist",
"doubleup",
"doubleupload",
"extremeuser",
"healthcheck",
"helpdesk",
"hiddencaptcha",
"highresolution",
"highspeed",
"hitandruns",
"hitrun",
"howto",
"insaneuser",
"javascripts",
"latestversion",
"linethrough",
"masspm",
"mediahub",
"modq",
"namedquote",
"nerdbot",
"nerdstat",
"nontouch",
"noteduser",
"openreg",
"orderedlistalpha",
"orderedlistnumerical",
"invites_restriced",
"personalrelease",
"poweruser",
"quicksearch",
"revokefeature",
"request.dont-have-bps",
"shoutout",
"shoutouts",
"signups",
"sitename",
"softdelete",
"sparkels",
"staffban",
"staffdeletedwarning",
"staffuser",
"staffwarning",
"statsgroupmenu",
"statsrequestmenu",
"statstorrentmenu",
"statsusermenu",
"stat.request-pending-aproval",
"systembot",
"testcode",
"testuser",
"torrenttitle",
"torrent.revokefeatured",
"unorderedlist",
"userban",
"userlist",
"userwarning",
"warneduser",
"watchlist",
"welcomepm",
],
"ignoreRegExpList": [
"bitcoin-address",
],
"patterns": [
{
"name": "bitcoin-address",
"pattern": "/[a-z0-9]{42}/",
}
],
"ignorePaths": [
"app/Console/Commands/DemoSeed.php",
"app/Helpers/Markdown.php",
"app/Helpers/MarkdownExtra.php",
"app/Helpers/MediaInfo.php",
"config/censor.php",
"config/language.php",
"config/secure-headers.php",
"database/migrations/20{1,2{0,1,2,3,4}}*",
"database/schema/mysql-schema.sql",
"database/seeders/DistributorsTableSeeder.php",
"database/seeders/MediaLanguagesSeeder.php",
"lang/",
"public/vendor/livewire/livewire.js",
"resources/js/unit3d/helper.js",
"resources/js/unit3d/parser.js",
"resources/js/vendor",
"resources/sass/vendor",
"resources/views/vendor/mail",
"tests/Unit/Helpers/MarkdownExtraTest.php",
"composer.json",
"package.json",
"phpstan.neon",
"pint.json",
"*.svg",
],
"dictionaries": [
"bittorrent",
"blade",
"brands",
"dependencies",
"dependency_terms",
"html",
"irc",
"laravel",
"mysql",
"people",
"php",
"php_constants",
"php_functions",
"redis",
],
"dictionaryDefinitions": [
{
"name": "bittorrent",
"path": "./.cspell/bittorrent.txt",
"addWords": false
},
{
"name": "blade",
"path": "./.cspell/blade.txt",
"addWords": false
},
{
"name": "brands",
"path": "./.cspell/brands.txt",
"addWords": false
},
{
"name": "dependencies",
"path": "./.cspell/dependencies.txt",
"addWords": false
},
{
"name": "dependency_terms",
"path": "./.cspell/dependency_terms.txt",
"addWords": false
},
{
"name": "html",
"path": "./.cspell/html.txt",
"addWords": false
},
{
"name": "irc",
"path": "./.cspell/irc.txt",
"addWords": false
},
{
"name": "laravel",
"path": "./.cspell/laravel.txt",
"addWords": false
},
{
"name": "mysql",
"path": "./.cspell/mysql.txt",
"addWords": false
},
{
"name": "people",
"path": "./.cspell/people.txt",
"addWords": false
},
{
"name": "php",
"path": "./.cspell/php.txt",
"addWords": false
},
{
"name": "php_functions",
"path": "./.cspell/php_functions.txt",
"addWords": false
},
{
"name": "php_constants",
"path": "./.cspell/php_constants.txt",
"addWords": false
},
{
"name": "redis",
"path": "./.cspell/redis.txt",
"addWords": false
},
],
}

View File

@@ -20,6 +20,8 @@ use App\Models\Page;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
// cspell:ignore orwill
class PagesTableSeeder extends Seeder
{
public function run(): void

View File

@@ -1,3 +1,4 @@
# cspell:ignore initdb,meili,mysqladmin,mysqld,wwwgroup,wwwuser
services:
nginx:
image: 'nginx:latest'

View File

@@ -1,3 +1,3 @@
# Wiki
This wiki serves as the central resource for setting up, managing, and optimising your UNIT3D installation. Whether you're working on local development, managing a production server, or contributing to the open-source community, you'll find a number of useful guides here.
This wiki serves as the central resource for setting up, managing, and optimizing your UNIT3D installation. Whether you're working on local development, managing a production server, or contributing to the open-source community, you'll find a number of useful guides here.

View File

@@ -1,5 +1,7 @@
# Basic Tuning
<!-- cspell:ignore unixsocket,unixsocketperm,usermod,ondemand,curlopt,cainfo -->
> [!IMPORTANT]
> These guides are intended for UNIT3D v8.0.0 + instances. While these are better than defaults be careful blindly following them. Proper tuning requires understanding your server, running tests and monitoring the results.
@@ -13,7 +15,7 @@
If your Redis service is running on your web server, it is highly recommended that you use **Unix sockets** instead of **TCP ports** to communicate with your web server.
Based on the Redis official benchmark, you can **improve performance by upto 50%** using unix sockets (versus TCP ports) on Redis.
Based on the Redis official benchmark, you can **improve performance by up to 50%** using unix sockets (versus TCP ports) on Redis.
Of course, unix sockets can only be used if both your Laravel application and Redis are running on the same server.
@@ -96,7 +98,7 @@ sudo systemctl restart redis
If your MySQL database is running on your web server, it is highly recommended that you use **Unix sockets** instead of **TCP ports** to communicate with your web server.
Based on Percona's benchmark, you can **improve performance by upto 50%** using unix sockets (versus TCP portson MySQL.
Based on Percona's benchmark, you can **improve performance by up to 50%** using unix sockets (versus TCP ports on MySQL).
Of course, unix sockets can only be used if both your UNIT3D application and database are running on the same server which is by default.

View File

@@ -1,5 +1,7 @@
# UNIT3D v8.x.x on Arch Linux with Laravel Sail
<!-- cspell:ignore dockerized,pacman -->
_A guide by EkoNesLeg_
This guide outlines the steps to set up UNIT3D using Laravel Sail on Arch Linux. While the guide highlights the use of Arch Linux, the instructions can be adapted to other environments.

View File

@@ -1,5 +1,7 @@
# Server Management
<!-- cspell:ignore certbot,chgrp,usermod -->
> [!IMPORTANT]
> The following assumptions are made:
>
@@ -61,7 +63,7 @@ bun run build
Use `certbot` to refresh the TLS certificate:
```sh
certbot --redirect --nginx -n --agree-tos --email=sysop@yourdomain.tld -d yourdomain.tld -d www.yourdomain.tld --rsa-key-size 2048
certbot --redirect --nginx -n --agree-tos --email=sysop@your_domain.tld -d your_domain.tld -d www.your_domain.tld --rsa-key-size 2048
```
3. **Update the WebSocket Configuration:**

View File

@@ -30,6 +30,7 @@ To create a tarball that includes only the modified source code and excludes sen
Add the following to the file:
<!-- cspell:disable -->
```plaintext
.env
node_modules
@@ -79,6 +80,7 @@ To create a tarball that includes only the modified source code and excludes sen
lib/js/tests.html
lib/js/tests/npm-debug.log
```
<!-- cspell:enable -->
### 2.2 Create the Tarball

View File

@@ -20,7 +20,7 @@ There are several ways of passing the API token to UNIT3D. We'll discuss each of
UNIT3D's API consumers may specify their token as an `api_token` query string value:
```php
$response = $client->request('GET', '/api/torrents?api_token=YOURTOKENHERE);
$response = $client->request('GET', '/api/torrents?api_token=YOUR_TOKEN_HERE);
```
- **Request Payload**
@@ -33,7 +33,7 @@ There are several ways of passing the API token to UNIT3D. We'll discuss each of
'Accept' => 'application/json',
],
'form_params' => [
'api_token' => YOURTOKENHERE,
'api_token' => 'YOUR_TOKEN_HERE',
],
]);
```
@@ -45,7 +45,7 @@ There are several ways of passing the API token to UNIT3D. We'll discuss each of
```php
$response = $client->request('POST', '/api/torrents', [
'headers' => [
'Authorization' => 'Bearer YOURTOKENHERE,
'Authorization' => 'Bearer YOUR_TOKEN_HERE',
'Accept' => 'application/json',
],
]);
@@ -78,9 +78,9 @@ Parameters:
| `imdb` | int | IMDB ID
| `tvdb` | int | TVDB ID
| `mal` | int | MAL ID
| `igdb` | int | IGBD ID (Games only)
| `igdb` | int | IGDB ID (Games only)
| `anonymous` | bool | Should the uploader's username be hidden?
| `stream` | bool | Is the torrent's content stream-optimised?
| `stream` | bool | Is the torrent's content stream-optimized?
| `sd` | bool | Is the torrent's content standard definition?
| `personal_release` | bool | Is the torrent's content created by the uploader?
| `internal`* | bool | Is the torrent an internal release?
@@ -147,7 +147,7 @@ Optional Parameters:
| `doubleup` | bool | Filter by if the torrent offers double upload
| `featured` | bool | Filter by if the torrent is featured on the front page
| `refundable` | bool | Filter by if the torrent is refundable
| `stream` | bool | Filter by if the torrent's content is stream-optimised
| `stream` | bool | Filter by if the torrent's content is stream-optimized
| `sd` | bool | Filter by if the torrent's content is standard definition
| `highspeed` | bool | Filter by if the torrent has seeders whose IP address has been registered as a seedbox
| `internal` | bool | Filter by if the torrent is an internal release

View File

@@ -1,5 +1,7 @@
# Upgrading PHP Version
<!-- cspell:ignore ondrej,autoremove,debconf-utils,dpkg -->
## Upgrade to PHP 8
`sudo apt update`
@@ -28,7 +30,7 @@ Next lets edit NGINX to use new PHP8
Find `fastcgi_pass unix:/var/run/php/***.sock;`
`***` will be your sitename, unit3d or php7.4 for the most part
`***` will be your site name, unit3d or php7.4 for the most part
Replace `fastcgi_pass unix:/var/run/php/***.sock;` with `fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;`.
@@ -36,7 +38,7 @@ Save and exit.
Test config `sudo nginx -t`
*If you didnt mess up you will see
*If you didn't mess up you will see
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
@@ -78,7 +80,7 @@ Next lets edit NGINX to use new PHP 8.1
Find `fastcgi_pass unix:/var/run/php/***.sock;`
`***` will be your sitename, unit3d or php8.0 for the most part
`***` will be your site name, unit3d or php8.0 for the most part
Replace `fastcgi_pass unix:/var/run/php/***.sock;` with `fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;`.
@@ -86,7 +88,7 @@ Save and exit.
Test config `sudo nginx -t`
*If you didnt mess up you will see
*If you didn't mess up you will see
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
@@ -129,7 +131,7 @@ Next lets edit NGINX to use new PHP 8.2
Find `fastcgi_pass unix:/var/run/php/***.sock;`
`***` will be your sitename, unit3d or php8.1 for the most part
`***` will be your site name, unit3d or php8.1 for the most part
Replace `fastcgi_pass unix:/var/run/php/***.sock;` with `fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;`.
@@ -137,7 +139,7 @@ Save and exit.
Test config `sudo nginx -t`
*If you didnt mess up you will see
*If you didn't mess up you will see
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
@@ -176,7 +178,7 @@ Next lets edit NGINX to use new PHP 8.3
Find `fastcgi_pass unix:/var/run/php/***.sock;`
`***` will be your sitename, unit3d or php8.2 for the most part
`***` will be your site name, unit3d or php8.2 for the most part
Replace `fastcgi_pass unix:/var/run/php/***.sock;` with `fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;`.
@@ -184,7 +186,7 @@ Save and exit.
Test config `sudo nginx -t`
*If you didnt mess up you will see
*If you didn't mess up you will see
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,5 +1,5 @@
/* purgecss start ignore /*
/* Position top-end postioned swal2 notifications below the top nav */
/* Position top-end positioned swal2 notifications below the top nav */
.swal2-top-end {
margin-top: 40px;
}

View File

@@ -106,4 +106,4 @@
opacity: 1;
transition: opacity 0.15s;
}
/* purgecss endss ignore */
/* purgecss end ignore */

View File

@@ -34,7 +34,7 @@
<form
role="form"
method="POST"
action="{{ url('/dashboard/commands/maintance-enable') }}"
action="{{ url('/dashboard/commands/maintenance-enable') }}"
>
@csrf
<button
@@ -49,7 +49,7 @@
<form
role="form"
method="POST"
action="{{ url('/dashboard/commands/maintance-disable') }}"
action="{{ url('/dashboard/commands/maintenance-disable') }}"
>
@csrf
<button

View File

@@ -664,7 +664,7 @@
<p class="form__group form__group--horizontal">
<a
class="form__button form__button--text"
href="{{ route('staff.laravellog.index') }}"
href="{{ route('staff.laravel-log.index') }}"
>
<i class="fa fa-file"></i>
{{ __('staff.laravel-log') }}

View File

@@ -36,7 +36,7 @@
type="number"
name="position"
value=""
placerholder="0"
placeholder="0"
class="form__text"
/>
</td>

View File

@@ -41,7 +41,7 @@
type="number"
name="position"
value=""
placerholder="0"
placeholder="0"
class="form__text"
/>
</td>

View File

@@ -22,7 +22,7 @@
@section('main')
<section class="panelV2">
<h2 class="panel__heading">
{{ __('common.edit') }} Interal Group: {{ $internal->name }}
{{ __('common.edit') }} Internal Group: {{ $internal->name }}
</h2>
<div class="panel__body">
<form

View File

@@ -7,13 +7,13 @@
<header class="torrent-card__header">
<div class="torrent-card__left-header">
<span class="torrent-card__category">{{ $torrent->category->name }}</span>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<span class="torrent-card__resolution">
{{ $torrent->resolution->name ?? 'No Res' }}
</span>
<span class="torrent-card__meta-seperator"></span>
<span class="torrent-card__meta-separator"></span>
<span class="torrent-card__type">{{ $torrent->type->name }}</span>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<span class="torrent-card__size">{{ $torrent->getSize() }}</span>
</div>
<div class="torrent-card__right-header">
@@ -21,12 +21,12 @@
<i class="fas fa-arrow-up"></i>
{{ $torrent->seeders }}
</a>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<a class="torrent-card__leeches" href="{{ route('peers', ['id' => $torrent->id]) }}">
<i class="fas fa-arrow-down"></i>
{{ $torrent->leechers }}
</a>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<a
class="torrent-card__completed"
href="{{ route('history', ['id' => $torrent->id]) }}"
@@ -85,7 +85,7 @@
<i class="{{ \config('other.font-awesome') }} fa-star"></i>
{{ $meta?->vote_average ?? 0 }}
</span>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<ul class="torrent-card__genres">
@foreach ($meta?->genres ?? [] as $genre)
<li class="torrent-card__genre-item">
@@ -108,7 +108,7 @@
<address class="torrent-card__uploader">
<x-user_tag :anon="$torrent->anon" :user="$torrent->user" />
</address>
<span class="torrent-card__meta-seperator">&bull;</span>
<span class="torrent-card__meta-separator">&bull;</span>
<time title="{{ $torrent->created_at }}" datetime="{{ $torrent->created_at }}">
{{ $torrent->created_at->diffForHumans() }}
</time>

View File

@@ -169,7 +169,7 @@
@endif
@if (config('torrent.magnet'))
<a
class="torrent-search--list__maget form__contained-icon-button form__contained-icon-button--filled"
class="torrent-search--list__magnet form__contained-icon-button form__contained-icon-button--filled"
href="magnet:?dn={{ $torrent->name }}&xt=urn:btih:{{ bin2hex($torrent->info_hash) }}&as={{ route('torrent.download.rsskey', ['id' => $torrent->id, 'rsskey' => auth()->user()->rsskey]) }}&tr={{ route('announce', ['passkey' => auth()->user()->passkey]) }}&xl={{ $torrent->size }}"
download
title="{{ __('common.magnet') }}"

View File

@@ -48,7 +48,7 @@
<div class="torrent-search--grouped__genres">
@foreach ($media->genres->take(3) as $genre)
<a
href="{{ route('torrents.index', ['view' => 'group', 'genreids' => [$genre->id]]) }}"
href="{{ route('torrents.index', ['view' => 'group', 'genreIds' => [$genre->id]]) }}"
class="torrent-search--grouped__genre"
>
{{ $genre->name }}

View File

@@ -164,7 +164,6 @@
gravity: 'bottom',
position: 'right',
backgroundColor: 'red',
className: 'toastify-custom',
})
})
})

View File

@@ -69,7 +69,7 @@
id="sorting"
class="form__select"
name="sorting"
wire:mode.livel="label"
wire:mode.live="label"
>
<option value="" selected default>Any</option>
<option value="approved">

View File

@@ -121,7 +121,7 @@
</button>
</td>
</tr>
<tr x-cloack x-show="isToggledOn">
<tr x-cloak x-show="isToggledOn">
<td colspan="2">
<div class="bbcode-rendered">
<pre><code x-ref="stacktrace">{{ $entry['stacktrace'] }}</code></pre>

View File

@@ -21,7 +21,7 @@
<div>
<span class="text-muted">
{{ __('When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from a syncronized 2fa app such as Google Authenticator, Authy, BitWarden, etc.') }}
{{ __('When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from a synchronized 2fa app such as Google Authenticator, Authy, BitWarden, etc.') }}
</span>
</div>

View File

@@ -27,7 +27,7 @@
@foreach ($genres as $genre)
<li class="mediahub-card__list-item">
<a
href="{{ route('torrents.index', ['view' => 'group', 'genreids' => [$genre->id]]) }}"
href="{{ route('torrents.index', ['view' => 'group', 'genreIds' => [$genre->id]]) }}"
class="mediahub-card"
>
<h2 class="mediahub-card__heading">{{ $genre->name }}</h2>

View File

@@ -119,7 +119,7 @@
$tickets = DB::table('tickets')
->whereNull('closed_at')
->whereNull('staff_id')
->orwhere(function ($query) {
->orWhere(function ($query) {
$query
->where('staff_id', '=', auth()->id())
->Where('staff_read', '=', false);

View File

@@ -156,6 +156,7 @@
<li class="meta__rotten">
<a
class="meta-id-tag"
{{-- cspell:disable-next-line --}}
href="https://html.duckduckgo.com/html/?q=\{{ $meta->title ?? '' }} ({{ substr($meta->release_date ?? '', 0, 4) ?? '' }})+site%3Arottentomatoes.com"
title="Rotten Tomatoes: {{ $meta->title ?? '' }} ({{ substr($meta->release_date ?? '', 0, 4) ?? '' }})"
target="_blank"
@@ -174,14 +175,14 @@
@endif
@if (($meta->imdb_id ?? 0) > 0)
<li class="meta__bluray">
<li class="meta__blu-ray">
<a
class="meta-id-tag"
href="https://www.blu-ray.com/search/?quicksearch=1&quicksearch_keyword=tt{{ $meta->imdb_id ?? '' }}&section=theatrical"
title="Blu-ray: {{ $meta->title ?? '' }} ({{ substr($meta->release_date ?? '', 0, 4) ?? '' }})"
target="_blank"
>
<img class="" src="{{ url('/img/meta/bluray.svg') }}" style="width: 40px" />
<img class="" src="{{ url('/img/meta/blu-ray.svg') }}" style="width: 40px" />
</a>
</li>
@endif

View File

@@ -155,6 +155,7 @@
<li class="meta__rotten">
<a
class="meta-id-tag"
{{-- cspell:disable-next-line --}}
href="https://html.duckduckgo.com/html/?q=\{{ $meta->name ?? '' }} ({{ substr($meta->first_air_date ?? '', 0, 4) ?? '' }})+site%3Arottentomatoes.com"
title="Rotten Tomatoes: {{ $meta->name ?? '' }} ({{ substr($meta->first_air_date ?? '', 0, 4) ?? '' }})"
target="_blank"
@@ -173,14 +174,14 @@
@endif
@if (($meta->imdb_id ?? 0) > 0)
<li class="meta__bluray">
<li class="meta__blu-ray">
<a
class="meta-id-tag"
href="https://www.blu-ray.com/search/?quicksearch=1&quicksearch_keyword=tt{{ $meta->imdb_id ?? '' }}&section=theatrical"
title="Blu-ray: {{ $meta->name ?? '' }} ({{ substr($meta->first_air_date ?? '', 0, 4) ?? '' }})"
target="_blank"
>
<img class="" src="{{ url('/img/meta/bluray.svg') }}" style="width: 40px" />
<img class="" src="{{ url('/img/meta/blu-ray.svg') }}" style="width: 40px" />
</a>
</li>
@endif

View File

@@ -82,6 +82,6 @@
{{-- Extra Meta Block --}}
@include('torrent.partials.extra_meta')
{{-- Commments Block --}}
{{-- Comments Block --}}
@include('torrent.partials.comments')
@endsection

View File

@@ -47,6 +47,7 @@
{{ config('app.name') }}
@endif
{{-- cspell:words subcopy --}}
{{-- Subcopy --}}
@isset($actionText)
@slot('subcopy')

View File

@@ -864,8 +864,8 @@ Route::middleware('language')->group(function (): void {
// Commands
Route::prefix('commands')->middleware('owner')->group(function (): void {
Route::get('/', [App\Http\Controllers\Staff\CommandController::class, 'index'])->name('commands.index');
Route::post('/maintance-enable', [App\Http\Controllers\Staff\CommandController::class, 'maintanceEnable']);
Route::post('/maintance-disable', [App\Http\Controllers\Staff\CommandController::class, 'maintanceDisable']);
Route::post('/maintenance-enable', [App\Http\Controllers\Staff\CommandController::class, 'maintenanceEnable']);
Route::post('/maintenance-disable', [App\Http\Controllers\Staff\CommandController::class, 'maintenanceDisable']);
Route::post('/clear-cache', [App\Http\Controllers\Staff\CommandController::class, 'clearCache']);
Route::post('/clear-view-cache', [App\Http\Controllers\Staff\CommandController::class, 'clearView']);
Route::post('/clear-route-cache', [App\Http\Controllers\Staff\CommandController::class, 'clearRoute']);
@@ -977,7 +977,7 @@ Route::middleware('language')->group(function (): void {
});
// Laravel Log Viewer
Route::get('/laravel-log', App\Http\Livewire\LaravelLogViewer::class)->middleware('owner')->name('laravellog.index');
Route::get('/laravel-log', App\Http\Livewire\LaravelLogViewer::class)->middleware('owner')->name('laravel-log.index');
// Leakers
Route::prefix('leakers')->group(function (): void {
@@ -1001,7 +1001,7 @@ Route::middleware('language')->group(function (): void {
});
});
// Media Lanuages (Languages Used To Populate Language Dropdowns For Subtitles / Audios / Etc.)
// Media Languages (Languages Used To Populate Language Dropdowns For Subtitles / Audios / Etc.)
Route::prefix('media-languages')->group(function (): void {
Route::name('media_languages.')->group(function (): void {
Route::get('/', [App\Http\Controllers\Staff\MediaLanguageController::class, 'index'])->name('index');
@@ -1187,7 +1187,7 @@ Route::middleware('language')->group(function (): void {
});
});
// Internal Useres
// Internal Users
Route::prefix('internal-users')->group(function (): void {
Route::name('internal_users.')->group(function (): void {
Route::post('/', [App\Http\Controllers\Staff\InternalUserController::class, 'store'])->name('store');

View File

@@ -48,7 +48,7 @@ test('destroy aborts with a 403', function (): void {
$response->assertForbidden();
});
test('massupsert validates with a form request', function (): void {
test('mass upsert validates with a form request', function (): void {
$this->assertActionUsesFormRequest(
PlaylistTorrentController::class,
'massUpsert',

View File

@@ -99,7 +99,7 @@ test('index returns an ok response', function (): void {
// TODO: perform additional assertions
});
test('maintance disable returns an ok response', function (): void {
test('maintenance disable returns an ok response', function (): void {
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();
@@ -113,7 +113,7 @@ test('maintance disable returns an ok response', function (): void {
// TODO: perform additional assertions
});
test('maintance enable returns an ok response', function (): void {
test('maintenance enable returns an ok response', function (): void {
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
$user = User::factory()->create();

View File

@@ -78,7 +78,7 @@ test('messages', function (): void {
$actual = $this->subject->messages();
expect($actual)->toEqual([
'igdb.in' => 'The IGBB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not requesting a game.',
'igdb.in' => 'The IGDB ID must be 0 if the media doesn\'t exist on IGDB or you\'re not requesting a game.',
'tmdb.in' => 'The TMDB ID must be 0 if the media doesn\'t exist on TMDB or you\'re not requesting a tv show or movie.',
'imdb.in' => 'The IMDB ID must be 0 if the media doesn\'t exist on IMDB or you\'re not requesting a tv show or movie.',
'tvdb.in' => 'The TVDB ID must be 0 if the media doesn\'t exist on TVDB or you\'re not requesting a tv show.',

View File

@@ -127,7 +127,7 @@ test('messages', function (): void {
$actual = $this->subject->messages();
expect($actual)->toEqual([
'igdb.in' => "The IGBB ID must be 0 if the media doesn't exist on IGDB or you're not uploading a game.",
'igdb.in' => "The IGDB ID must be 0 if the media doesn't exist on IGDB or you're not uploading a game.",
'tmdb.in' => "The TMDB ID must be 0 if the media doesn't exist on TMDB or you're not uploading a tv show or movie.",
'imdb.in' => "The IMDB ID must be 0 if the media doesn't exist on IMDB or you're not uploading a tv show or movie.",
'tvdb.in' => "The TVDB ID must be 0 if the media doesn't exist on TVDB or you're not uploading a tv show.",