<commit_before><?php

namespace App\Listeners;

use App\Events\SluggableCreating;

class SlugModel
{
    public function __construct()
    {
        //
    }

    public function handle(SluggableCreating $event)
    {
        if (empty($event->sluggable->id)) {
            $id = $template = $event->sluggable->getSlugID();
            $class = get_class($event->sluggable);
            $index = 1;

            do {
                if (in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($class))) {
                    $test = $class::withTrashed()->withoutGlobalScopes()->where('id', $id)->first();
                }
                else {
                    $test = $class::where('id', $id)->first();
                }

                if (is_null($test)) {
                    break;
                }

                $id = $template . '-' . $index++;
            } while(true);

            /*
                Attenzione!!!
                Quando il nome di una variabile in POST contiene un punto,
                Laravel lo traduce silenziosamente in un underscore. Questo per
                far funzionare la "dot notation" per accedere ad informazioni
                strutturate in array.
                Poiché gli ID degli oggetti sono spesso usati per costruire i
                nomi delle variabili in POST, qui li sopprimiamo direttamente
                sostituendoli
            */
            $id = str_replace('.', '_', $id);

            $event->sluggable->id = $id;
        }
    }
}<commit_msg>correzione sulla generazione degli ID<commit_after><?php

namespace App\Listeners;

use App\Events\SluggableCreating;

class SlugModel
{
    public function __construct()
    {
        //
    }

    public function handle(SluggableCreating $event)
    {
        if (empty($event->sluggable->id)) {
            $id = $template = $event->sluggable->getSlugID();
            $class = get_class($event->sluggable);
            $index = 1;

            do {
                if (in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($class))) {
                    $test = $class::withTrashed()->withoutGlobalScopes()->where('id', $id)->first();
                }
                else {
                    $test = $class::where('id', $id)->first();
                }

                if (is_null($test)) {
                    break;
                }

                $id = $template . '-' . $index++;
            } while(true);

            /*
                Attenzione!!!
                Quando il nome di una variabile in POST contiene un punto,
                Laravel lo traduce silenziosamente in un underscore. Questo per
                far funzionare la "dot notation" per accedere ad informazioni
                strutturate in array.
                Poiché gli ID degli oggetti sono spesso usati per costruire i
                nomi delle variabili in POST, qui li sopprimiamo direttamente
                sostituendoli
            */
            $id = str_replace('.', '_', $id);

            /*
                Dagli ID sopprimiamo anche gli slash, che se concatenati agli
                URL li rompono malamente
            */
            $id = str_replace('/', '_', $id);

            $event->sluggable->id = $id;
        }
    }
}
{'fraction_non_alphanumeric': 0.11077297626293366, 'fraction_numerical': 0.0006086427267194157, 'mean_word_length': 1.4456845238095237, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7637162', 'n_tokens_mistral': 941, 'n_tokens_neox': 889, 'n_words': 221}