Compare commits

..

No commits in common. "160c381abc88e382aa715a5554dd7233f3b938c0" and "7ff9d45fe78a1d7d6909da246446854bf5f3f2e9" have entirely different histories.

2 changed files with 18 additions and 16 deletions

View File

@ -2,9 +2,6 @@
namespace kernel\helpers;
use kernel\FormModel;
use kernel\modules\post\models\Post;
class Slug
{
@ -126,15 +123,6 @@ class Slug
return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
}
public static function recursiveCreateSlug($model, $slug, $tmpSlug = '', $id = 1): string
{
if ($tmpSlug === '') $tmpSlug = $slug;
if ($model::where(['slug' => $tmpSlug])->exists()) {
$tmpSlug = $slug . '-' . $id++;
$tmpSlug = Slug::recursiveCreateSlug($model, $slug, $tmpSlug, $id);
}
return $tmpSlug;
}
}
@ -174,5 +162,4 @@ chto-delat-esli-ya-ne-hochu-utf-8
מה-אם-×× ×™-לא-רוצה-utf-8-תווים
This is an Example String. What's Going to Happen to Me?
This_is_a_Test_String_What_s_Going_to_Ha
*/
*/

View File

@ -15,7 +15,7 @@ class PostService
$model->content = $form_model->getItem('content');
$model->user_id = $form_model->getItem('user_id');
$model->title = $form_model->getItem('title');
$model->slug = Slug::recursiveCreateSlug(Post::class, $this->createSlug($form_model));
$model->slug = $this->createSlug($form_model);
if ($model->save()){
return $model;
}
@ -25,7 +25,22 @@ class PostService
public function createSlug(FormModel $form_model): string
{
return Slug::url_slug($form_model->getItem('title'), ['transliterate' => true, 'lowercase' => true]);
$slug = Slug::url_slug($form_model->getItem('title'), ['transliterate' => true, 'lowercase' => true]);
if (Post::where(['slug' => $slug])->exists()) {
$id = 1;
$tmpSlug = $slug . '-' . $id++;
$slug = $this->recursiveCreateSlug($slug, $tmpSlug, $id);
}
return $slug;
}
protected function recursiveCreateSlug($slug, $tmpSlug, $id): string
{
if (Post::where(['slug' => $tmpSlug])->exists()) {
$tmpSlug = $slug . '-' . $id++;
$tmpSlug = $this->recursiveCreateSlug($slug, $tmpSlug, $id);
}
return $tmpSlug;
}
public function update(FormModel $form_model, Post $post): false|Post