public function afterSave($evt)
 {
     // file attribute value is expected to be either an id of old associated media or
     // an instance of CUploadedFile. Can also be an array containing either.
     $fileAttribute = $this->fileAttribute;
     $transaction = Yii::app()->db->beginTransaction();
     try {
         $files = ArrayUtil::coerceToArray($this->owner->{$fileAttribute});
         // remove old associated media with ids not found in file attribute
         $resubmittedMediaIds = array();
         foreach ($files as $file) {
             if (!$file instanceof CUploadedFile && is_numeric($file)) {
                 $resubmittedMediaIds[] = (int) $file;
             }
         }
         $associatedMedia = Media::model()->findAllByAttributes(array('associationType' => $this->associationType, 'associationId' => $this->getAssociationId()));
         foreach ($associatedMedia as $media) {
             if (!in_array((int) $media->id, $resubmittedMediaIds, true)) {
                 $media->delete();
             }
         }
         // save uploaded files as associated media
         foreach ($files as $file) {
             $this->saveAssociatedMedia($file);
         }
         $transaction->commit();
     } catch (CException $e) {
         $transaction->rollback();
     }
 }
Esempio n. 2
0
 /**
  * @deprecated 
  */
 public static function coerceToArray(&$arr)
 {
     $arr = ArrayUtil::coerceToArray($arr);
 }