예제 #1
0
파일: School.php 프로젝트: IVsevolod/zouk
 public function saveImgs($imgs)
 {
     if (count($imgs) > 0) {
         $imgs = array_map('intval', $imgs);
         $imgs = array_unique($imgs);
         $imgs = array_slice($imgs, 0, self::MAX_IMG_SCHOOL);
         EntityLink::deleteAll(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['NOT IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY]);
         $entityLinksObj = EntityLink::find()->andWhere(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY])->all();
         $entityLinks = [];
         foreach ($entityLinksObj as $entityLink) {
             $entityLinks[$entityLink->entity_2_id] = $entityLink;
         }
         $imgsObjs = $this->imgs;
         $imgsId = [];
         foreach ($imgsObjs as $key => $img) {
             $imgsId[$key] = $img->id;
         }
         $index = 0;
         foreach ($imgs as $key => $imgId) {
             if (!in_array($imgId, $imgsId)) {
                 $entityLink = new EntityLink();
                 $entityLink->entity_1 = self::THIS_ENTITY;
                 $entityLink->entity_1_id = $this->id;
                 $entityLink->entity_2 = Img::THIS_ENTITY;
                 $entityLink->entity_2_id = $imgId;
                 $entityLink->sort = $index++;
                 $entityLink->save();
             } else {
                 if (!empty($entityLinks[$imgId])) {
                     $entityLink = $entityLinks[$imgId];
                     $entityLink->sort = $index++;
                     $entityLink->save();
                 }
             }
         }
     } else {
         EntityLink::deleteAll(['entity_1' => self::THIS_ENTITY, 'entity_1_id' => $this->id, 'entity_2' => Img::THIS_ENTITY]);
     }
 }