88use BookStack \Entities \Models \HasDescriptionInterface ;
99use BookStack \Entities \Models \Entity ;
1010use BookStack \Entities \Queries \PageQueries ;
11+ use BookStack \Entities \Tools \SlugGenerator ;
12+ use BookStack \Entities \Tools \SlugHistory ;
1113use BookStack \Exceptions \ImageUploadException ;
1214use BookStack \References \ReferenceStore ;
1315use BookStack \References \ReferenceUpdater ;
@@ -25,6 +27,8 @@ public function __construct(
2527 protected ReferenceStore $ referenceStore ,
2628 protected PageQueries $ pageQueries ,
2729 protected BookSorter $ bookSorter ,
30+ protected SlugGenerator $ slugGenerator ,
31+ protected SlugHistory $ slugHistory ,
2832 ) {
2933 }
3034
@@ -43,7 +47,7 @@ public function create(Entity $entity, array $input): Entity
4347 'updated_by ' => user ()->id ,
4448 'owned_by ' => user ()->id ,
4549 ]);
46- $ entity ->refreshSlug ();
50+ $ this ->refreshSlug ($ entity );
4751
4852 if ($ entity instanceof HasDescriptionInterface) {
4953 $ this ->updateDescription ($ entity , $ input );
@@ -78,7 +82,7 @@ public function update(Entity $entity, array $input): Entity
7882 $ entity ->updated_by = user ()->id ;
7983
8084 if ($ entity ->isDirty ('name ' ) || empty ($ entity ->slug )) {
81- $ entity ->refreshSlug ();
85+ $ this ->refreshSlug ($ entity );
8286 }
8387
8488 if ($ entity instanceof HasDescriptionInterface) {
@@ -155,4 +159,13 @@ protected function updateDescription(Entity $entity, array $input): void
155159 $ entity ->descriptionInfo ()->set ('' , $ input ['description ' ]);
156160 }
157161 }
162+
163+ /**
164+ * Refresh the slug for the given entity.
165+ */
166+ public function refreshSlug (Entity $ entity ): void
167+ {
168+ $ this ->slugHistory ->recordForEntity ($ entity );
169+ $ this ->slugGenerator ->regenerateForEntity ($ entity );
170+ }
158171}
0 commit comments