Found 46 issues

First time here? 👋

Welcome to Find a PR.

Find a PR is an open-source site that is built to help developers find projects so that they can submit their very first pull request.

If you're a contributor looking to find a project to contribute to, feel free to browse through the list below.

If you're a maintainer looking to list your project on Find a PR, you can read how to do this in the documentation.

enhancement help wanted

Figure our a way to show a grayed out Laravel logo as a default avatar instead of the current default GitHub one.

View more
8 comments
driesvints

driesvints

29th Sep 2021 @ 10:48

bug help wanted

Laravel Version

10.42.0

PHP Version

8.3.2

Database Driver & Version

Redis 7.2.4

Description

Queued jobs with ShouldBeUnique may cause stale unique locks in the case when the dependent model is missing.

According to the source code of the CallQueuedHandler::call() unique lock cleanup may never be reached in case if the job depends on the missing model AND the job is configured to be deleted when the model is missing (public $deleteWhenMissingModels = true).

Steps To Reproduce

The PoC is made using Redis queue, a similar approach may work with other drivers.

  1. Create a new project: laravel new poc.
  2. Ensure Redis is configured & reachable in your .env file. WARNING: PoC will flush all keys.
  3. Create poc.php file with the following contents:
<?php

use Illuminate\Bus\Queueable;
use Illuminate\Queue\WorkerOptions;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Queue;
use Illuminate\Support\Facades\Redis;
use Illuminate\Queue\SerializesModels;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Console\Kernel;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Queue\ShouldBeUnique;

require 'vendor/autoload.php';
$app = require __DIR__.'/bootstrap/app.php';
$cli = $app->make(Kernel::class);
$cli->bootstrap();

config([
    'database.default' => 'sqlite',
    'queue.default' => 'redis',
    'cache.default' => 'redis',
]);

@unlink(config('database.connections.sqlite.database'));
$cli->call('migrate', ['--force' => true]);

DB::unprepared("
    CREATE TABLE IF NOT EXISTS main (
        id INTEGER NOT NULL PRIMARY KEY,
        name VARCHAR(255) UNIQUE
    )
");

DB::unprepared("
    CREATE TABLE IF NOT EXISTS secondary (
        id INTEGER NOT NULL PRIMARY KEY,
        name VARCHAR(255) NOT NULL
    )
");

// ensure there are no keys in the DB
Redis::flushdb();

class Main extends Model {
    public $table = 'main';
    public $timestamps = false;
    public $fillable = ['name'];
}

class Secondary extends Model {
    public $table = 'secondary';
    public $timestamps = false;
    public $fillable = ['name'];
}

class MyJob implements ShouldQueue, ShouldBeUnique {
    use Dispatchable, Queueable, SerializesModels;

    public $tries = 1;
    public $maxExceptions = 1;
    public $deleteWhenMissingModels = true;

    public function __construct(
        public Main $main,
        public Secondary $secondary,
    )
    {
    }

    public function handle() {
    }

    public function uniqueId() {
        return 'job-for-' . $this->main->id;
    }
}

// create 2 instances
$main = Main::create(['name' => 'main model']);
$secondary = Secondary::create(['name' => 'secondary model']);

// and schedule a job for them
MyJob::dispatch($main, $secondary);

// delete the secondary model
$secondary->delete();

// run the job
app('queue.worker')->runNextJob('redis', 'default', new WorkerOptions);

echo 'Queue size: ', Queue::size('default'), PHP_EOL; // no tasks left
echo 'Redis contents:', PHP_EOL;
dump(Redis::keys('*')); // unique id is still there
  1. Execute the poc.php php poc.php
  2. Inspect the output to see the stale unique lock

Output

Queue size: 0
Redis contents:
array:1 [
  0 => "laravel_database_laravel_cache_:laravel_unique_job:MyJobjob-for-1"
] // poc.php:95

Expected result

The unique lock has been removed.

Actual result

A stale unique lock still exists.

View more
10 comments
naquad

naquad

29th Jan 2024 @ 11:00

bug unconfirmed low priority help wanted

Package

filament/spatie-laravel-translatable-plugin

Package Version

v3.2

Laravel Version

v10.10

Livewire Version

v3.0

PHP Version

PHP 8.2

Problem description

I have topic_id in Post & Articles connected with topic_id with relation topic, but when I tried to set locales for the Article & Post Title and other content that was added worked perfectly, but topic related data does not work I mean it does not change the translation When I tried to debug it is working perfectly but in view it does not change

Forms\Components\Select::make('topic_id')
    ->relationship('topic')
    ->getOptionLabelFromRecordUsing(function (Topic $topic, $livewire) {
        Log::info('Active Locale: ' . $livewire->activeLocale);

        $translatedTitle = $topic->getTranslation('title', $livewire->activeLocale);

        Log::info('Translated Title: ' . $translatedTitle);

        return $translatedTitle ?? $topic->title; // Fallback to default title if translation is not available
    })
    ->searchable()
    ->live()
    ->required(),
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Deserunt.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Incidunt sunt est animi.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Totam libero aspernatur est.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Et tempore voluptatum.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Nemo et sint.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Repellat consequatur dolores nostrum numquam.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Earum tenetur.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Aut sunt blanditiis blanditiis ut.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Provident vel.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Qui voluptas ut.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Sapiente ut exercitationem assumenda nesciunt.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Eveniet voluptatem consequuntur eum.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Ipsa ipsa dicta corrupti.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Qui veniam nulla ut earum.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: At asperiores consequuntur.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Ut.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Voluptatibus quisquam laboriosam eligendi dolores provident distinctio id deserunt.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Earum soluta.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Voluptatem voluptatibus dolores.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Rerum esse aut.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Dolore.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Quos modi illo est et molestiae.  
[2024-01-31 12:53:57] local.INFO: Active Locale: en  
[2024-01-31 12:53:57] local.INFO: Translated Title: Hic cum.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Eum et rerum.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Nihil voluptate voluptas est aliquid debitis qui doloremque non voluptate corporis.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Alias in consequuntur officiis.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Iste qui sunt omnis et eaque in.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Quas hic.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Incidunt animi perspiciatis natus doloremque commodi aut delectus.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Et ut.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Voluptatem qui inventore nobis itaque et magni.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Voluptatem libero.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Vero et modi veniam quidem.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Dolorum architecto ut deleniti repudiandae quidem sit non.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Rem dolorum rerum pariatur libero rerum.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Tempore distinctio autem commodi.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Ut sequi perferendis distinctio consequatur accusantium.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Esse hic eum saepe officiis sapiente.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Eveniet consectetur numquam architecto consectetur architecto quo nostrum.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Maiores qui ut non.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Blanditiis dolorum provident non suscipit.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Impedit sunt odio illo.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Ea reiciendis facere eligendi dignissimos voluptate architecto.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Quo corrupti ut illum.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Delectus eaque.  
[2024-01-31 12:54:05] local.INFO: Active Locale: ar  
[2024-01-31 12:54:05] local.INFO: Translated Title: Omnis dignissimos exercitationem praesentium.  

Expected behavior

It should have changed the select locale title

Steps to reproduce

  1. Installed Package filament/spatie-laravel-translatable-plugin

  2. Set up the Models and Migrations Accordingly: Article Model:

<?php

namespace App\Models;

use App\Concerns\HasMeta;
use App\Concerns\Sluggable;
use App\Concerns\HasFeaturedImage;
use App\Concerns\HasPublishedScope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Spatie\Translatable\HasTranslations;

class Article extends Model
{
    use HasPublishedScope, Sluggable, HasFactory, HasMeta, SoftDeletes, HasFeaturedImage, HasTranslations;

    public $translatable = ['title', 'content', 'excerpt'];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'title',
        'slug',
        'status',
        'author_id',
        'content',
        'excerpt',
        'published_at',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'published_at' => 'datetime',
        'content' => 'array',
    ];

    protected $with = [
        'meta',
    ];

    public function getPublicUrl()
    {
        return route('articles.show', $this);
    }

    public function topic(): BelongsTo
    {
        return $this->belongsTo(Topic::class, 'topic_id', 'id');
    }

    public function author(): BelongsTo
    {
        return $this->belongsTo(User::class, 'author_id');
    }
}

Topic Model:

<?php

namespace App\Models;

use App\Concerns\HasMeta;
use App\Concerns\Sluggable;
use App\Concerns\HasFeaturedImage;
use App\Concerns\HasPublishedScope;
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Topic extends Model
{
    use HasPublishedScope, Sluggable, HasFactory, HasMeta, SoftDeletes, HasFeaturedImage, HasTranslations;

    public $translatable = ['title', 'content', 'excerpt'];
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'title',
        'slug',
        'status',
        'excerpt',
        'content',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'id' => 'integer',
        'indexable' => 'boolean',
        'content' => 'array',
    ];

    protected $with = [
        'meta',
    ];

    public function getPublicUrl()
    {
        return route('topics.show', $this);
    }

    public function articles()
    {
        return $this->hasMany(Article::class);
    }
}
  1. Generated the Resources and modified as per the instructions provided in the packages.

Images: English English Arabic Arabic

Reproduction repository

https://github.com/abbasmashaddy72/filament-starter-kit

Relevant log output

No response

View more
10 comments
abbasmashaddy72

abbasmashaddy72

31st Jan 2024 @ 07:42

bug help wanted

Laravel Version

10.45.0

PHP Version

8.3.1

Database Driver & Version

No response

Description

When using Tailwind's container queries plugin with the @class directive, Blade either throws exceptions about unexpected endif or simply doesn't compile the classes correct. Using Arr::toCssClasses directly works as expected.

The following examples are in the reproduction repo. (Note: Tailwind isn't installed and configured, but it isn't necessary to show the issues with the Blade compiler.)

Code that works

/success shows everything working as expected with the Arr::toCssClasses

I suspect this is working due to Blade wrapping everything in e().

Here's a snippet of the code that works (full example in the repo):

@if (filled($heading))
    <h1
        class="{{
            Illuminate\Support\Arr::toCssClasses([
                'font-bold tracking-tight text-gray-900 @xs:text-4xl @md:text-6xl',
                'mt-10' => filled($callout),
                '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout)
            ])
        }}"
    >
        {{ $heading }}
    </h1>
@endif

@if (filled($description))
    <div
        class="{{
            Illuminate\Support\Arr::toCssClasses([
                'text-lg/8 text-gray-600',
                'mt-6' => filled($heading),
                'mt-10' => filled($callout) && blank($heading),
                '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout) && blank($heading),
            ])
        }}"
    >
        {{ $description }}
    </div>
@endif

Code that throws an exception

/failure shows the exception (though this may be compounded by wrapping the HTML in conditionals)

Here's a snippet of the code that throws an exception (full example in the repo):

@if (filled($heading))
    <h1
        @class([
            'font-bold tracking-tight text-gray-900 @xs:text-4xl @md:text-6xl',
            'mt-10' => filled($callout),
            '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout)
        ])
    >
        {{ $heading }}
    </h1>
@endif

@if (filled($description))
    <div
        @class([
            'text-lg/8 text-gray-600',
            'mt-6' => filled($heading),
            'mt-10' => filled($callout) && blank($heading),
            '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout) && blank($heading),
        ])
    >
        {{ $description }}
    </div>
@endif

Code that compiles incorrectly

/incorrect is the same thing as /failure but without the conditionals (you can see that the content of the @class call is simply output on the page)

Here's a snippet of the code that compiles incorrectly (full example in the repo):

<h1
    @class([
        'font-bold tracking-tight text-gray-900 @xs:text-4xl @md:text-6xl',
        'mt-10' => filled($callout),
        '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout)
    ])
>
    {{ $heading }}
</h1>

<div
    @class([
        'text-lg/8 text-gray-600',
        'mt-6' => filled($heading),
        'mt-10' => filled($callout) && blank($heading),
        '@xs:mt-24 @md:mt-32 @xl:mt-16' => blank($callout) && blank($heading),
    ])
>
    {{ $description }}
</div>

Steps To Reproduce

https://github.com/agentphoenix/class-directive-bug

View more
9 comments
agentphoenix

agentphoenix

21st Feb 2024 @ 02:24

help wanted findapr
  public function bell()
    {
        $this->count += 1;
        flash()->addInfo('Your information has been saved and a confirmation email has been sent.');
    }

This flash message doesn't show up until I reload the page If I reload the page then what's is the point of using livewire

View more
12 comments 👍 1
codebyshami

codebyshami

17th Nov 2023 @ 01:19

bug unconfirmed low priority help wanted

Package

filament/filament

Package Version

v3.2

Laravel Version

v11

Livewire Version

No response

PHP Version

PHP 8.3

Problem description

If we configure the panel to use multiple domain, php artisan optimize fails

Unable to prepare route [admin/login] for serialization. Another route has already been assigned name [filament.admin.auth.login].

Expected behavior

We should be allowed to use multiple domains.

Steps to reproduce

  1. git clone https://github.com/declum/example-repo
  2. cp .env.example .env
  3. php artisan migrate --seed
  4. I have added two domains in Admin panel provider
  5. php artisan optimze

Reproduction repository

https://github.com/declum/example-repo

Relevant log output

No response

View more
5 comments
declum

declum

13th Mar 2024 @ 15:51

enhancement help wanted
  • standard tags
  • input fields
  • components
  • patterns

Add code snippets for each block

View more
👍 1
willemvb

willemvb

25th Jul 2016 @ 12:49

enhancement help wanted

Discussed in https://github.com/spatie/schema-org/discussions/202

Originally posted by indyjonesnl January 10, 2024

$lodgingBusiness = Schema::lodgingBusiness()
  ->openingHours(
    Schema::openingHoursSpecification()
      ->dayOfWeek([Schema::dayOfWeek()::Monday])
      ->opens(new DateTime('09:00:00'))
      ->closes(new DateTime('17:00:00'))
  )
  ->checkinTime(new DateTime('14:00:00'))
  ->checkoutTime(new DateTime('11:00:00'))

This results in the current date + time being included in the output "opens":"2024-01-10T09:00:00+00:00","closes":"2024-01-10T17:00:00+00:00" and ..."checkinTime":"2024-01-10T14:00:00+00:00","checkoutTime":"2024-01-10T11:00:00+00:00"...

While the Schema should contain only the time, formatted as 14:30:00+08:00.

Can someone point me in the right direction?

View more
Gummibeer

Gummibeer

11th Jan 2024 @ 13:12

enhancement help wanted

Hi! If I use this package with my project I has a problem. My package.json has a "git dependency" like this:

{
  "peerDependencies": {
    "package": "git+ssh://git@bitbucket.org/team/project.git"
  }
}

And npm-install-peers breaks.

View more
👍 5
JWo1F

JWo1F

18th Dec 2017 @ 08:52

enhancement help wanted hacktoberfest

Found the \Illuminate\Database\Eloquent\Concerns\HasAttributes::originalIsEquivalent() method during code diving and it should be usable for our trait! 🎉 This PR would be mainly reasearch when that method was added, if it's compatible with our version support rules and switching our own change detection logic with the core one.

View more
3 comments
Gummibeer

Gummibeer

20th Oct 2021 @ 10:03

help wanted

Laravel Version

10.46.0

PHP Version

8.1.27

Database Driver & Version

No response

Description

We've identified an issue whereby in multi-server environments where commands are scheduled to run using withoutOverlapping() and onOneServer(), the commands will very occasionally not run at all on any server (about 0.2% of the time in our environment). Not a problem for things running every minute where we first spotted the problem, but more impactful when things running a few times or once per day are skipped.

Just going to start with outlining my understanding of how scheduled commands get run when withoutOverlapping() and onOneServer() are used:

  • Commands due to run are iterated over (ScheduleRunCommand::handle, L121)
  • Each command is checked to ensure filters pass before proceeding (ScheduleRunCommand::handle, L122)
    • Because we used withoutOverlapping() a check is added to the filters to ensure the event mutex lock does not currently exist (Event::withoutOverlapping, L713)
  • For each command that passes the filters (i.e. considered to be not currently running), serverShouldRun() is then called to check for and take a scheduling lock for the current server to run the command for the current hour/minute (ScheduleRunCommand::runSingleServerEvent, L156)
  • Once confirmed that the event is not currently running and the server has the lock to run the event for the current schedule run, Event::run is called (Event::run, L217)
  • As a final check before the event runs, shouldSkipDueToOverlapping() is called which checks whether withoutOverlapping() was used and checks that the event lock can be obtained (Event::shouldSkipDueToOverlapping, L237)

Just for clarity, there's two locks in play;

  • The event lock which is used by withoutOverlapping() to identify whether a command is already being run.
  • The scheduling lock used by onOneSever() to check whether a command has already been run on a server for the current schedule run (identified by the current hour and minute.)

The problem stems from the way in which the event mutex lock is checked for existence, which was introduced in PR #45963.

Originally, the CacheEventMutex would just check if the cache had an entry for the lock (CacheEventMutex::exists, L69) which worked fine, but PR #45963 changed that behavior. For cache stores that implement the LockProvider interface (Redis, Memcached) it now attempts to get the lock and then immediately releases it again (but this is not done atomically.)

So the race condition looks something like this if Server B's system clock is just slightly slower than Server A:

Time Server A Server B
12:00:00 Checking that Event A is not currently running, takes event lock for Event A
12:00:01 Releases event lock for Event A, determining that it is not currently running so should be run
12:00:02 Takes scheduling lock for Event A to run on Server A
12:00:03 Checking that Event A is not currently running, takes event lock for Event A
12:00:04 Attempts to take the event lock for Event A to run it, fails because Server B has the lock, then skips due to overlapping
12:00:05 Releases event lock for Event A, determining that it is not currently running so should be run
12:00:06 Attempts to take scheduling lock for Event A to run on Server B, fails as the scheduling lock was already taken by Server A, skips assuming command was run on another server already

So in this scenario the scheduled command is never run, there's no error message, and the ScheduledTaskSkipped doesn't even get fired because the call to run() just returns if shouldSkipDueToOverlapping() returns true.

In terms of a solution, it might make sense to be able to check for the existence of a lock without taking and releasing it, maybe a new abstract exists() on Lock (https://github.com/laravel/framework/blob/10.x/src/Illuminate/Cache/Lock.php) which CacheEventMutex could use and RedisLock/MemcachedLock could implement their own atomic means of checking for lock existence, although that probably constitutes a backwards-compatibility break. Happy to put together a PR for whatever the agreed solution is.

As a workaround, I've just bound an older version of CacheEventMutex to Illuminate\Console\Scheduling\EventMutex to override the changes implemented in #45963 which has solved the issue in our project for now.

Steps To Reproduce

Given its a race condition its very hard to reproduce, but hopefully there's enough details in the description to understand what's going on.

View more
3 comments 👀 1
nickma42

nickma42

1st Mar 2024 @ 15:30

help wanted

Hi,

With the polyfill, var_dump(mb_strlen(chr(254))) return 0. With the php8.0-mbstring extension, var_dump(mb_strlen(chr(254))) return 1;

versions : * v1.26.0

Thanks, Alex

View more
7 comments
alexchuin

alexchuin

18th Oct 2022 @ 12:51

help wanted

In raising this issue, I confirm the following (please check boxes):

  • I have read and understood the contributors guide.
  • I have checked the pull requests tab for existing solutions/implementations to my issue/suggestion.
  • I have checked that the bug-fix I am reporting can be replicated.

Description of the problem

One of the important reasons for using hyperscript is that it handles escaping of characters which are reserved in html. Which prevents XSS.

spatie/html-element does not do this. Mainly because it uses strings as intermediate format instead of an object representation of the DOM.

View more
6 comments 👍 3
Erikvv

Erikvv

1st Feb 2018 @ 02:19

help wanted

Laravel Version

11

PHP Version

8.2

Database Driver & Version

No response

Description

I am implementing a Laravel 11 command, with choice, and when I test it I receive this message:

Output "blablabla" was not printed.

I tried then the example on the Laravel 11 documentation https://laravel.com/docs/11.x/console-tests

$name = $this->ask('What is your name?');

$language = $this->choice('Which language do you prefer?', [
    'PHP',
    'Ruby',
    'Python',
]);

$this->line('Your name is '.$name.' and you prefer '.$language.'.');
$this->artisan('question')
     ->expectsQuestion('What is your name?', 'Taylor Otwell')
     ->expectsQuestion('Which language do you prefer?', 'PHP')
     ->expectsOutput('Your name is Taylor Otwell and you prefer PHP.')
     ->doesntExpectOutput('Your name is Taylor Otwell and you prefer Ruby.')
     ->expectsOutputToContain('Taylor Otwell')
     ->doesntExpectOutputToContain('you prefer Ruby')
     ->assertExitCode(0);

but I receive this message:

Output does not contain "Taylor Otwell".

How do I test a choice command using Laravel 11?

Steps To Reproduce

Create a command and follow the instructions https://laravel.com/docs/11.x/console-tests Create a Test for the Command Run the test

View more
12 comments
gmaccario

gmaccario

11th Apr 2024 @ 12:09

help wanted

Hello,

I noticed that there is an incompatibility with the mbstring polyfill and PHP 8.1 / Alpine Linux, which breaks a lot of my projects as soon as the php81-mbstring is not installed, but php81-iconv is installed:

Example:

Warning: iconv(): Wrong encoding, conversion from "ASCII" to "UTF-8//IGNORE" is not allowed in phar:///var/www/localhost/htdocs/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php on line 736

It looks like //IGNORE is not accepted since echo iconv('UTF-8', 'UTF-8', 'test'); works, while echo iconv('UTF-8', 'UTF-8//IGNORE', 'test'); doesn't

View more
2 comments
danielmarschall

danielmarschall

7th Jan 2022 @ 00:12

help wanted findapr

I'm using Laravel 10. I've installed the package via "composer require php-flasher/flasher-laravel" Now I'm able to fire flash messages in my controller. I see them in the session data (in flasher::envelopes). But they aren't showing up in my views. In my config file I have 'auto_render' => true. If I put @flasher_render in my blade view, the only thing that's happens is, a notification to warn that this method wil be deprecated.

How can I fix this? I really like to use this package ;-)

View more
3 comments
krisc78

krisc78

9th Mar 2023 @ 14:49

help wanted

Laravel Version

10.27.0

PHP Version

8.1.11

Database Driver & Version

MySQL

Description

The DB connector code is meant to retry failed connections, but failing to connect due to a connect timeout is not retried. I have observed this on MySQL, but possibly other drivers suffer the same issue.

Steps To Reproduce

Using the mysql driver, set the host to google.com. Only one attempt is made to connect to the DB because tryAgainIfCausedByLostConnection determines that message SQLSTATE[HY000] [2002] Operation timed out should not be re-tried. I think the tryAgainIfCausedByLostConnection logic is great for re-connecting post-connect, but is not so good for retrying the initial connect. I think we need to add additional message matching specifically for the connector code, only. A timeout should not otherwise be retried, since that could result in double inserts, for example.

View more
4 comments 👍 4
GrahamCampbell

GrahamCampbell

10th Oct 2023 @ 11:56

help wanted hacktoberfest good first issue documentation

We are logging activity of several models, some using SoftDeletes trait and others not.

When we set config option 'subject_returns_soft_deleted_models' => true then calling subject() on any model not using SoftDeletes trait throws an exception: Call to undefined method Illuminate\Database\Eloquent\Builder::withTrashed().

Can the subject() method below be made to check first whether the Model uses the SoftDeletes trait? Or perhaps check whether withTrashed() is a defined method on the Model? I tried a few things but couldn't figure out how to get the class of the Model..

https://github.com/spatie/laravel-activitylog/blob/68eb6e65382f94fe86ce5ff6572159f80d024ba9/src/Models/Activity.php#L28-L35

View more
26 comments
bluec

bluec

7th Nov 2018 @ 13:44

help wanted

LiveComponent CI has failures on PHP 8.3 / high dependency

Symfony 7.1 introduces a new TypeInfo component that will partially replace PropertyInfo, and triggers a lot of deprecations.

We use this in two places : LivePropMetadata(/Factory) and in the Hydrate/Dehydate methods

Original PR: https://github.com/symfony/symfony/pull/52510 Documentation (wip): https://github.com/symfony/symfony-docs/pull/19554

That means that we must find a way to handle both for a time, so any good idea very welcome :)

CI Fail examples here: https://github.com/symfony/ux/actions/runs/8613628361/job/23605334525#step:7:122

Remaining direct deprecation notices (2793)

  705x: Since symfony/property-info 7.1: The "Symfony\Component\PropertyInfo\PropertyInfoExtractor::getTypes()" method is deprecated, use "Symfony\Component\PropertyInfo\PropertyInfoExtractor::getType()" instead.
    126x in LiveComponentHydratorTest::testCanDehydrateAndHydrateComponentWithTestCases from Symfony\UX\LiveComponent\Tests\Integration
    110x in QueryStringPropsExtractorTest::testExtract from Symfony\UX\LiveComponent\Tests\Functional\Util
    102x in LiveComponentHydratorTest::testCoerceFalseyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    30x in LiveComponentHydratorTest::testCoerceTruthyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    20x in ComponentWithFormTest::testHandleCheckboxChanges from Symfony\UX\LiveComponent\Tests\Functional\Form
    ...

  705x: Since symfony/property-info 7.1: The "Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor::getTypes()" method is deprecated, use "Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor::getType()" instead.
    126x in LiveComponentHydratorTest::testCanDehydrateAndHydrateComponentWithTestCases from Symfony\UX\LiveComponent\Tests\Integration
    110x in QueryStringPropsExtractorTest::testExtract from Symfony\UX\LiveComponent\Tests\Functional\Util
    102x in LiveComponentHydratorTest::testCoerceFalseyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    30x in LiveComponentHydratorTest::testCoerceTruthyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    20x in ComponentWithFormTest::testHandleCheckboxChanges from Symfony\UX\LiveComponent\Tests\Functional\Form
    ...

  691x: Since symfony/property-info 7.1: The "Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor::getTypes()" method is deprecated, use "Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor::getType()" instead.
    112x in LiveComponentHydratorTest::testCanDehydrateAndHydrateComponentWithTestCases from Symfony\UX\LiveComponent\Tests\Integration
    110x in QueryStringPropsExtractorTest::testExtract from Symfony\UX\LiveComponent\Tests\Functional\Util
    102x in LiveComponentHydratorTest::testCoerceFalseyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    30x in LiveComponentHydratorTest::testCoerceTruthyValuesForScalarTypes from Symfony\UX\LiveComponent\Tests\Integration
    20x in ComponentWithFormTest::testHandleCheckboxChanges from Symfony\UX\LiveComponent\Tests\Functional\Form
    ...

If anyone has some time / motivation to look at this ❤️ ?

View more
smnandre

smnandre

9th Apr 2024 @ 16:49

bug help wanted

What happened?

After installation, I noticed that in the browser console it outputs an error of wireEl is undefined.

How to reproduce the bug

Just install this package in a livewire project, preferable with Filament's admin package. And see the browser console.

composer create-project laravel/laravel test;
composer require filamentphp/filament;
composer require spatie/laravel-blade-comments;

Then go through the browser console and see the error

Package Version

1.0.1

PHP Version

8.2.0

Laravel Version

10.13.0

Which operating systems does with happen with?

macOS

Notes

Filament ......................................................
Packages ...... filament, forms, notifications, support, tables
Version .............................................. v2.17.44
Views ..................................... PUBLISHED: filament

View more
4 comments 👍 1
sawirricardo

sawirricardo

2nd Jun 2023 @ 07:15

help wanted

Octane Version

2.2.7

Laravel Version

10.40.0

PHP Version

8.2.14

What server type are you using?

Swoole

Server Version

5.1.1

Database Driver & Version

No response

Description

Same as #784, #748.

When using Route::bind() and URL::defaults() with Octane, it seems that UrlGenerator keeps the same instance of RouteUrlGenerator, and so the defaults are cached between requests.

Especially, I believe the issue happens when we use App\Http\Middleware\Authenticate to handle login sessions.

Steps To Reproduce

I created a public repo gazzoy/laravel-octane-urlgenerator-issue with a fresh Laravel v10.40.0, Octane v2.2.7(swoole), Sail v1.27.0(php8.2), and the smallest code to reproduce the issue.

  1. clone gazzoy/laravel-octane-urlgenerator-issue
  2. put an attached .env.txt on your local path as gazzoy/laravel-octane-urlgenerator-issue/.env.
  3. run below commands.
$ cd gazzoy/laravel-octane-urlgenerator-issue
$ docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php82-composer:latest \
    composer install --ignore-platform-reqs
$ ./vendor/bin/sail build --no-cache
$ ./vendor/bin/sail up -d
$ ./vendor/bin/sail artisan migrate:refresh --seed
  1. open your browser with: http://localhost/sample/paul/login It should show a page with a text "login page for paul" which is expected.

  2. open below url on the same browser: http://localhost/sample/john/home It redirects to http://localhost/sample/paul/login which doesn't make sense to me. Because, as of I understood, if Route::bind() and URL::defaults() work fine, we should be redirected to http://localhost/sample/john/login. Thefore, I believe it seems URL::defaults() keeps it states?

Having said that, I'm not too sure its actually Octane issue, so please let me know if this is not the case.

Just to clarify, my public repo has 3 commits as follows, but the first and second commits were just installing Laravel and Octane so you should be able to ignore it. The third commit is actually my original code to reproduce the issue.

  1. Fresh Laravel installation by Sail
  2. Installed Octane
  3. Added code to reproduce the issue

Please let me know if you have any questions.

View more
7 comments
gazzoy

gazzoy

13th Jan 2024 @ 09:27

bug good first issue

AshAllenDesign\FaviconFetcher\Drivers\HttpDriver::convertToAbsoluteUrl(): Argument #2 ($faviconUrl) must be of type string, null given, called in /Users/tgugnani/Code/thehome/vendor/ashallendesign/favicon-fetcher/src/Drivers/HttpDriver.php on line 189

When trying to fetch favicon from a URL which does not have a href tag in it, exception is thrown. Can we modify the code so that fails gracefully.

View more
3 comments
tushargugnani

tushargugnani

8th Mar 2024 @ 07:36