Sh3ll
OdayForums


Server : Apache
System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64
User : tradze ( 1001)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /home/tradze/public_html/dev-test/app/Modules/Banners/Repositories/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/dev-test/app/Modules/Banners/Repositories/BannersRepo.php
<?php
namespace App\Modules\Banners\Repositories;


use App\Modules\Banners\Models\Banner;

class BannersRepo
{

    /**
     * Get page banners or return default banner
     *
     * @param $obj
     * @return array
     */
    public function getBanners($obj)
    {
        //get page banners
        $slides = collect($this->getByPosition($obj));

        if (!array_key_exists('top',$slides->toArray())){
            $top = $this->getByPosition($obj,"top","top");
            $slides = $slides->merge($top);
        } //endif

        //return slides
        return $slides->all();
    }

    /**
     * @param $obj
     * @param $position
     * @param string $mandatory
     */
    protected function getByPosition($obj, $position=false, $mandatory="top")
    {

        $slides = [];
        if ($position){
            $banners = $obj->banners->where('position','=',$position);
        }
        else
            $banners = $obj->banners;

        if (!$banners)
            return $slides;

        if (!$banners->count() && ($position==$mandatory)){
            $banners = Banner::where('slug','like','default%')
                                ->where('position','=','top')
                                ->get();
            foreach($banners as $banner){
                foreach($banner->files as $slide){
                    $slides[$banner->position][] = [
                        'image' => $slide->image_url,
                        'title' => $slide->title,
                        'url' => $slide->url,
                    ];
                } //end foreach
            } //end foreach
        }
        else
        {
            foreach($banners as $banner){
                foreach($banner->files as $slide){
                    $slides[$banner->position][] = [
                        'image' => $slide->image_url,
                        'title' => $slide->title,
                        'url' => $slide->url,
                    ];
                } //end foreach
            } //end foreach
        }

        //return slides array
        return $slides;
    }

    /**
     * Get free by position
     * @param $position
     * @return array
     */
    public function getFreeByPosition($position, $slug='bottom')
    {
        $slides = [];
        $banners = Banner::where('slug', 'like', "%{$slug}%")
            ->where('position', '=', $position)
            ->get();

        foreach ($banners as $banner) {
            foreach ($banner->files()->orderBy('order','asc')->get() as $slide) {
                $slides[] = [
                    'image' => $slide->image_url,
                    'title' => $slide->title,
                    'url' => $slide->url,
                ];
            }//endforeach
        }//endforeach

        //return slides
        return $slides;
    }

}

ZeroDay Forums Mini