Files
ahrommag/app/Livewire/Images.php
2025-11-16 12:43:07 +03:30

69 lines
1.6 KiB
PHP

<?php
namespace App\Livewire;
use App\Models\Blog;
use App\Models\Image;
use Livewire\Component;
use Livewire\Attributes\Layout;
use Illuminate\Support\Facades\Storage;
class Images extends Component
{
public $images = [];
public $imagesblog = [];
public function mount()
{
$blogs = Blog::all();
foreach ($blogs as $blog) {
$this->checkImageMountForBlog($blog->id);
}
$this->images = $this->imagesblog;
}
public function checkImageMountForBlog($blogId)
{
$blog = Blog::find($blogId);
if (!$blog) {
return;
}
$imageName = $blog->image;
$content = $blog->content;
if (empty($content)) {
return;
}
$pattern = '/<img[^>]+src="([^">]+)"/i';
preg_match_all($pattern, $content, $matches);
$extractedImages = $matches[1] ?? [];
$extractedImages = array_map(function ($imageUrl) {
$parts = explode('/images/', $imageUrl);
return end($parts);
}, $extractedImages);
$extractedImages = array_filter($extractedImages, function ($image) {
return Storage::disk('public')->exists($image);
});
if ($imageName) {
if (Storage::disk('public')->exists($imageName)) {
$this->imagesblog[] = $imageName;
}
}
foreach ($extractedImages as $image) {
$this->imagesblog[] = $image;
}
}
#[Layout('components.layouts.panel.master')]
public function render()
{
return view('livewire.images');
}
}