Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
d0b11b6
fix(comments): only get linked comment for permalink view (#1027)
AW0005 Aug 25, 2024
628dd60
refactor: fix blade formatting
itinerare Aug 25, 2024
74ed3bf
fix: convert additional admin area tables to bootstrap tables (#1026)
SpeedyD Aug 27, 2024
a5f4072
fix(characters): make character image size limit smaller, more consis…
ScuffedNewt Aug 28, 2024
46cafa3
fix(characters): temporary fix for image filesize validation issue (#…
SpeedyD Sep 1, 2024
03e12fe
fix: fix admin raffle table (#1059)
SpeedyD Sep 14, 2024
a30ec54
fix(credits): Update all references to ne-wt to ScuffedNewt
SpeedyD Sep 16, 2024
653ad66
Merge pull request #1060 from SpeedyD/fix/credits-newt
itinerare Sep 16, 2024
1a70130
fix(characters): compare slugs when logging character stat changes (#…
rattusquo Sep 24, 2024
75861a9
fix(trades): fix missing closing tag when crediting currency (#1070)
MarskyMessier Sep 24, 2024
1274c9f
fix(galleries): fix gallery submission visibility scope handling (#1082)
preimpression Oct 27, 2024
d5d4c2d
Merge branch 'main' into release/v3.0.0
itinerare Oct 27, 2024
eb63b11
refactor: fix PHP styling
itinerare Oct 27, 2024
79397de
fix: improve user profile, character page row styling on smaller view…
liwoyadan Oct 29, 2024
9675699
fix(galleries): make some queries more efficient (#1098)
AW0005 Oct 29, 2024
2ac86c2
fix: add criteria to fields excluded from parsing (#1105)
notecardPasta Nov 4, 2024
ee23508
fix(users): check that previousUsername isn't identical to the curren…
SpeedyD Nov 10, 2024
f0fde31
fix: remove extra $ from _profile_content.blade.php
SpeedyD Nov 11, 2024
48c919b
Merge pull request #1122 from SpeedyD/fix/release-extra-$
itinerare Nov 11, 2024
11b2b23
fix: make file inputs more mobile-friendly (#1126)
liwoyadan Nov 15, 2024
419d315
fix(reports): fix setting report list tabs as active (#1133)
AW0005 Nov 23, 2024
3f8c605
refactor: fix blade formatting
itinerare Nov 23, 2024
6c4fb2c
fix(character): clarify "no description" text (#1136)
SpeedyD Nov 24, 2024
6066403
feat: update robots.txt
itinerare Nov 29, 2024
bce4dc9
Merge pull request #1142 from corowne/itinerare-patch-1
itinerare Nov 29, 2024
4b1015e
fix: decode HTML special chars after parsing
itinerare Dec 27, 2024
4025a35
fix: news, sales admin edit powers
itinerare Jun 11, 2024
6e1460f
fix(comments): disable WYSIWYG properly
itinerare Jun 27, 2024
5264da1
fix(comments): check if comment type is set
itinerare Jun 11, 2024
39c33fd
fix(comments): hide markdown cheatsheat link, markdown mention info i…
itinerare Jun 11, 2024
127fa3c
fix(characters): improve fullsize image format handling around design…
itinerare Aug 17, 2024
63a4ed0
Merge pull request #1162 from itinerare/push-srpnznxmlnno
itinerare Dec 27, 2024
71d0ffc
Merge pull request #1164 from itinerare/push-zkkttrslvyru
itinerare Dec 27, 2024
0e95082
Merge pull request #1163 from itinerare/push-vmuymntukqkt
itinerare Dec 27, 2024
b0e11e2
Merge pull request #1165 from itinerare/push-suoktqorymvo
itinerare Dec 27, 2024
74e7379
fix(galleries): check for currency form setting existence when displa…
itinerare Dec 27, 2024
b59f152
fix(galleries): finesse log comment form, column sizes
itinerare Jun 11, 2024
4b9cb1e
fix: only decode parsed HTML special chars if not null (#1170)
itinerare Dec 31, 2024
133c7e0
fix(characters): get format from file if storing design update fullsi…
itinerare Jan 1, 2025
8b6233a
Merge pull request #1166 from itinerare/push-utwxzxpxmkyr
itinerare Jan 1, 2025
b068532
fix(users): eager load rank with users (#1174)
itinerare Jan 3, 2025
17a26b9
fix(prompts): adding ID Url attribute to prompts (#1167)
SpeedyD Jan 5, 2025
b1a146b
fix(world): implement eager loading, refactor queries (#1180)
itinerare Jan 6, 2025
62840cd
fix(galleries): ignore protocol when finding prompt submissions using…
itinerare Jan 8, 2025
f352944
fix(galleries): prevent editing rejected submissions (#1176)
itinerare Jan 8, 2025
9dc295e
fix(characters): improve design update thumb filename masterlist imag…
itinerare Jan 8, 2025
d4ca0b1
fix(characters): correct use of masterlist image dimension target set…
itinerare Jan 8, 2025
812a4c6
fix(browse): add additional eager loading (#1183)
itinerare Jan 8, 2025
e54b742
fix(prompts): remove extraneous $ before idUrl property (#1185)
itinerare Jan 9, 2025
8b12dff
fix(galleries): implement eager loading, refactor queries (#1175)
itinerare Jan 12, 2025
7255b00
fix(galleries): fix collaborator approval scope (#1193)
itinerare Jan 13, 2025
9d89a57
chore(deps): update laravel/fortify (#1206)
itinerare Jan 24, 2025
83f4f9f
fix: allow use of tinymce modals in modals (#1216)
SpeedyD Feb 13, 2025
b4a2260
fix: clean up breadcrumbs on admin user editing pages (#1233)
preimpression Feb 17, 2025
295aa35
fix(browse): show 24 MYO slots per page instead of 30 (#1238)
SpeedyD Mar 3, 2025
c7970ac
fix(notifications): differentiate between MYO and character URLs in a…
itinerare Mar 18, 2025
ff98f4b
fix: update footer github repo link (#1255)
SpeedyD Mar 31, 2025
83d0dba
fix(world): move rarity entry admin edit component (#1257)
SpeedyD Apr 5, 2025
d6fc235
fix(galleries): add missing argument to create submission "can submit…
itinerare Apr 27, 2025
9a6fa52
fix(rarities): add entry edit information in create/edit view (#1269)
SpeedyD May 10, 2025
b0fd238
fix(auth): check for provider in alias login; closes #1248
itinerare May 12, 2025
d2e54bd
fix(shops): validate name uniqueness against shops table on creation …
Draconizations May 20, 2025
5268dec
fix(ranks): set parsed description on initial setup (#1280)
liwoyadan May 24, 2025
24eb86c
fix(galleries): fix check for character owner when sending gallery su…
liwoyadan May 24, 2025
09e8dce
fix: use own filemtime for custom.css (#1287)
SpeedyD Jun 2, 2025
30ef9a9
fix: expand site settings admin panel description column (#1290)
liwoyadan Jun 5, 2025
7998f4b
fix: add visual trait indexes trait modals to credits (#1299)
SpeedyD Jun 27, 2025
ee086f0
chore: fix minor config file typo (#1306)
SpeedyD Jul 9, 2025
96557ba
docs: update contributing (#1303)
itinerare Jul 9, 2025
faee184
fix(users): add fallback display text text if no primary alias set (#…
MarskyMessier Jul 26, 2025
54b8671
fix(characters): add checks for species, rarity to image features edi…
MarskyMessier Jul 28, 2025
966fca6
refactor: fix PHP styling
itinerare Jul 28, 2025
20ed6cf
fix(users): add recaptcha to alias register view (#1317)
perappu Aug 9, 2025
e3c5659
fix(submissions): add eager loading for submission characters (#1319)
itinerare Aug 9, 2025
2e27044
fix(characters): refactor stack name retrieval in character inventory…
itinerare Aug 12, 2025
d1bafd1
fix(ranks): clear parsed_description if description is not set (#1323)
SpeedyD Aug 15, 2025
52d73c2
fix(users): hide rank info display on profile if unset (#1322)
SpeedyD Aug 15, 2025
18a7b19
fix: remove extra whitespace from view titles, meta tags (#1324)
liwoyadan Aug 19, 2025
8cab684
fix(users): refine forgot password message check (#1334)
itinerare Sep 24, 2025
1e4ad24
fix(prompts): fix typo in sidebar (#1339)
MarskyMessier Oct 9, 2025
07f1899
fix(items): include stack_name in character item pivot (#1342)
liwoyadan Oct 19, 2025
2d4f729
fix(characters): add decimal validation rule for sale value (#1348)
perappu Oct 23, 2025
8fba701
chore(workflows): use self-contained workflows (#1356)
itinerare Nov 10, 2025
cfd3634
chore(workflows): pull before committing lint changes (#1369)
itinerare Nov 27, 2025
713f962
fix(users): get lowest existing rank when creating new user (#1385)
perappu Dec 20, 2025
3443af4
fix: check filemtime in admin site images panel (#1398)
SpeedyD Jan 11, 2026
6a42ac5
fix(characters): clarify character edit button labels (#1404)
SpeedyD Jan 19, 2026
c672491
fix(browse): verify owner/artist/designer existence in ML search (#1410)
liwoyadan Jan 24, 2026
04a3511
fix(prompts): use idUrl in prompt display names (#1414)
SpeedyD Jan 26, 2026
9237663
Merge remote-tracking branch 'lorekeeper/release/v3.0.0' into extensi…
liwoyadan Feb 22, 2026
05aad2f
fix(ip index): most users search
liwoyadan Feb 22, 2026
ca418ca
style: making user ip table mobile friendly
liwoyadan Feb 22, 2026
78b1704
fix(ip index): showing last used date + mobile view
liwoyadan Feb 22, 2026
f1f78bc
feat(user ips): recent registrations on admin panel
liwoyadan Feb 22, 2026
b0cbf2c
refactor: fix blade formatting
liwoyadan Feb 22, 2026
45785d5
refactor: fix PHP styling
liwoyadan Feb 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 77 additions & 7 deletions .github/workflows/Lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,89 @@ on:
- '**'
types:
- opened
- edited
- synchronize
- reopened

jobs:
pint:
uses: itinerare/github-actions/.github/workflows/pint.yml@main
with:
php-version: '8.1'
runs-on: ubuntu-latest

permissions:
contents: write

concurrency:
group: ci-${{ github.head_ref || github.ref_name }}
group: ci-pint-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

steps:
- uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2
with:
php-version: 8.1

- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event.pull_request.head.ref || github.ref_name }}

- name: Get composer cache directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache or restore composer cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-

- name: Install dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --ignore-platform-reqs

- name: Run pint
run: composer lint

- name: Commit changes
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
with:
pull: '--rebase --autostash'
message: 'refactor: fix PHP styling'
committer_name: github-actions[bot]
committer_email: github-actions[bot]@users.noreply.github.com

blade-formatter:
uses: itinerare/github-actions/.github/workflows/blade_formatter.yml@main
runs-on: ubuntu-latest

permissions:
contents: write

concurrency:
group: ci-${{ github.head_ref || github.ref_name }}
group: ci-blade-formatter-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event.pull_request.head.ref || github.ref_name }}

- name: Set up node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 22.x
cache: 'npm'

- name: Install packages
run: npm install

- name: Run blade-formatter
run: npm run format

- name: Commit changes
uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
with:
pull: '--rebase --autostash'
message: 'refactor: fix blade formatting'
committer_name: github-actions[bot]
committer_email: github-actions[bot]@users.noreply.github.com
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ For support and general questions and discussions, please visit the [support Dis

The following are accepted uses for the [issue tracker](https://github.com/corowne/Lorekeeper/issues):
- Bug reports
- Feature or enhancement requests (within reason)-- note that these may be denied if they are deemed out of scope of the project and/or are not feasible to implement for any reason.
- Feature or enhancement requests *or* discussion of potential new features (within reason)-- note that these may be denied if they are deemed out of scope of the project and/or are not feasible to implement for any reason.

## Opening an Issue
### Reporting a bug
Expand All @@ -24,7 +24,7 @@ Avoid listing multiple requests in one issue. One issue per request makes it eas

## Contributing Code

Please see the full [Contribution Guide](http://wiki.lorekeeper.me/index.php?title=Contributing_to_Lorekeeper) for more information!
Please see the full [Contribution Guide](https://lk-arpg.github.io/lk-docs/prerelease/contributing/) for more information!

### About abandoned pull requests

Expand Down
6 changes: 5 additions & 1 deletion app/Actions/Fortify/CreateNewUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Actions\Fortify;

use App\Models\Invitation;
use App\Models\Rank\Rank;
use App\Models\User\User;
use App\Services\InvitationService;
use App\Services\UserService;
Expand All @@ -20,11 +21,14 @@ class CreateNewUser implements CreatesNewUsers {
public function create(array $input) {
(new UserService)->validator($input)->validate();

// Create a user with the lowest existing rank
$rank_id = Rank::orderBy('sort')->first()->id;

$user = User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
'rank_id' => 2,
'rank_id' => $rank_id,
'birthday' => $input['dob'],
]);
$user->settings()->create([
Expand Down
72 changes: 72 additions & 0 deletions app/Console/Commands/FixCharacterImageFormats.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php

namespace App\Console\Commands;

use App\Models\Character\CharacterDesignUpdate;
use App\Models\Character\CharacterImage;
use Illuminate\Console\Command;
use Intervention\Image\Facades\Image;

class FixCharacterImageFormats extends Command {
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:fix-character-image-formats';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Converts existing fullsize character and design update images not stored as the configured file format.';

/**
* Execute the console command.
*/
public function handle() {
$masterlistFormat = config('lorekeeper.settings.masterlist_image_format');
$fullsizeFormat = config('lorekeeper.settings.masterlist_fullsizes_format');

$images = CharacterImage::where('fullsize_extension', '!=', $fullsizeFormat);
if ($images->count()) {
$this->info('Processing '.$images->count().' images...');
$images->update(['fullsize_extension' => $fullsizeFormat]);

foreach ($images->get() as $image) {
if (file_exists($image->imagePath.'/'.$image->id.'_'.$image->hash.'_'.$image->fullsize_hash.'_full.'.$masterlistFormat)) {
Image::make($image->imagePath.'/'.$image->id.'_'.$image->hash.'_'.$image->fullsize_hash.'_full.'.$masterlistFormat)->save($image->imagePath.'/'.$image->fullsizeFileName, 100, $fullsizeFormat);

if (file_exists($image->imagePath.'/'.$image->fullsizeFileName)) {
unlink($image->imagePath.'/'.$image->id.'_'.$image->hash.'_'.$image->fullsize_hash.'_full.'.$masterlistFormat);
}
}
}
}

$updates = CharacterDesignUpdate::where('status', '!=', 'Approved');
if ($updates->count()) {
$this->info('Processing '.$updates->count().' updates...');
foreach ($updates->get() as $update) {
$updates->update(['extension' => $fullsizeFormat]);

if (file_exists($update->imagePath.'/'.$update->id.'_'.$update->hash.'.'.$masterlistFormat)) {
Image::make($update->imagePath.'/'.$update->id.'_'.$update->hash.'.'.$masterlistFormat)->save($update->imagePath.'/'.$update->imageFileName, 100, $fullsizeFormat);

if (file_exists($update->imagePath.'/'.$update->imageFileName)) {
unlink($update->imagePath.'/'.$update->id.'_'.$update->hash.'.'.$masterlistFormat);
}
}

if (!file_exists($update->imagePath.'/'.$update->thumbnailFileName) && file_exists($update->imagePath.'/'.$update->id.'_'.$update->hash.'_th.'.$fullsizeFormat)) {
Image::make($update->imagePath.'/'.$update->id.'_'.$update->hash.'_th.'.$fullsizeFormat)->save($update->imagePath.'/'.$update->thumbnailFileName, 100, $masterlistFormat);

if (file_exists($update->imagePath.'/'.$update->thumbnailFileName)) {
unlink($update->imagePath.'/'.$update->id.'_'.$update->hash.'_th.'.$fullsizeFormat);
}
}
}
}
}
}
14 changes: 8 additions & 6 deletions app/Console/Commands/SetupAdminUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,16 @@ public function handle() {
if (!Rank::count()) {
// These need to be created even if the seeder isn't run for the site to work correctly.
$adminRank = Rank::create([
'name' => 'Admin',
'description' => 'The site admin. Has the ability to view/edit any data on the site.',
'sort' => 1,
'name' => 'Admin',
'description' => 'The site admin. Has the ability to view/edit any data on the site.',
'parsed_description' => 'The site admin. Has the ability to view/edit any data on the site.',
'sort' => 1,
]);
Rank::create([
'name' => 'Member',
'description' => 'A regular member of the site.',
'sort' => 0,
'name' => 'Member',
'description' => 'A regular member of the site.',
'parsed_description' => 'A regular member of the site.',
'sort' => 0,
]);

$this->line('User ranks not found. Default user ranks (admin and basic member) created.');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ public function getImageReupload($id) {
* @return \Illuminate\Http\RedirectResponse
*/
public function postImageReupload(Request $request, CharacterManager $service, $id) {
$request->validate(['image' => CharacterImage::$createRules['image'], 'thumbnail' => CharacterImage::$createRules['thumbnail']]);
$data = $request->only(['image', 'thumbnail', 'x0', 'x1', 'y0', 'y1', 'use_cropper']);
$image = CharacterImage::find($id);
if (!$image) {
Expand Down
1 change: 1 addition & 0 deletions app/Http/Controllers/Admin/HomeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public function getIndex() {
'galleryCurrencyAwards' => $galleryCurrencyAwards,
'gallerySubmissionCount' => GallerySubmission::collaboratorApproved()->where('status', 'Pending')->count(),
'galleryAwardCount' => GallerySubmission::requiresAward()->where('is_valued', 0)->count(),
'recentUsers' => User::orderBy('id', 'DESC')->take(10)->get(),
]);
}

Expand Down
8 changes: 5 additions & 3 deletions app/Http/Controllers/Admin/Users/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,9 @@ public function getUserIpList(Request $request) {
$query->orderBy('updated_at', 'ASC');
break;
case 'most_users':
$query->select('ip', DB::raw('COUNT(ip) as count'))->groupBy('ip')->orderBy('count', 'DESC');
$query->select('ip', DB::raw('COUNT(ip) as user_count'), DB::raw('MAX(updated_at) as updated_at'))
->groupBy('ip')
->orderBy('user_count', 'DESC');
break;
case 'closely_updated':
$query->whereExists(function ($query) {
Expand All @@ -472,10 +474,10 @@ public function getUserIpList(Request $request) {
});
break;
}
} else {
$query->select('ip', DB::raw('MAX(updated_at) as updated_at'))->groupBy('ip')->orderBy('updated_at', 'DESC');
}

$query->select('ip', DB::raw('MAX(updated_at)'))->groupBy('ip')->orderBy(DB::raw('MAX(updated_at)'), 'DESC');

return view('admin.users.user_ips', [
'ips' => $query->paginate(30)->appends($request->query()),
'users' => User::orderBy('name')->pluck('name', 'id')->toArray(),
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Controllers/Auth/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public function getAuthCallback(LinkService $service, $provider) {
$socialite->redirectUrl(str_replace('auth', 'login', url(config('services.'.$provider.'.redirect'))));
$result = $socialite->user();

$user = UserAlias::where('user_snowflake', $result->id)->first();
$user = UserAlias::where('site', $provider)->where('user_snowflake', $result->id)->first();
if (!$user) {
return redirect('/register/'.$provider)->with(['userData' => $result]);
}
Expand Down
Loading