Ejemplo n.º 1
0
 /**
  * Create a new Media = 1 SharcMediaDesigner + 1 SharcMediaExperience
  * @param String $objMedia: a json object containing info of both Media                  
  */
 public static function addNewMedia($objMedia)
 {
     $response = array();
     try {
         //'contentType', 'content', 'size', 'designerId'
         $mediaDesigner = SharcMediaDesigner::create(array('id' => $objMedia['id'], 'name' => $objMedia['mediaDesigner']['name'], 'contentType' => $objMedia['mediaDesigner']['contentType'], 'content' => $objMedia['mediaDesigner']['content'], 'size' => $objMedia['mediaDesigner']['size'], 'designerId' => $objMedia['mediaDesigner']['designerId'], 'createdDate' => date('Y-m-d'), 'fileId' => $objMedia['mediaDesigner']['fileId']));
         $result = $mediaDesigner->save();
         if (!$result) {
             $response["status"] = ERROR;
             $response["data"] = INTERNAL_SERVER_ERROR;
             return $response;
         }
         //if mainMedia == 1 -> reset all other media to 0
         if ($objMedia['mainMedia'] == 1) {
             SharcMediaExperience::where('experienceId', $objMedia['experienceId'])->where('entityType', $objMedia['entityType'])->where('entityId', $objMedia['entityId'])->update(array('mainMedia' => 0));
         }
         //calculate order = get max order + 1
         $maxOrder = SharcMediaExperience::where('experienceId', $objMedia['experienceId'])->where('entityType', $objMedia['entityType'])->where('entityId', $objMedia['entityId'])->max('order');
         if ($maxOrder === null) {
             $maxOrder = 0;
         } else {
             $maxOrder = $maxOrder + 1;
         }
         $mediaExperience = SharcMediaExperience::create(array('id' => $objMedia['id'], 'mediaDesignerId' => $mediaDesigner->id, 'entityType' => $objMedia['entityType'], 'entityId' => $objMedia['entityId'], 'experienceId' => $objMedia['experienceId'], 'caption' => $objMedia['caption'], 'context' => $objMedia['context'], 'mainMedia' => $objMedia['mainMedia'], 'visible' => $objMedia['visible'], 'order' => $maxOrder, 'size' => $objMedia['mediaDesigner']['size']));
         $result = $mediaExperience->save();
         if ($result) {
             //= 1 success
             $response["status"] = SUCCESS;
             $mediaExperience["mediaDesigner"] = $mediaDesigner->toArray();
             //need to return this info too for presentation
             $response["data"] = $mediaExperience->toArray();
         } else {
             //error
             $response["status"] = ERROR;
             $response["data"] = INTERNAL_SERVER_ERROR;
         }
         //update other table e.g. route/event/media
     } catch (Exception $e) {
         $response["status"] = ERROR;
         $response["data"] = Utils::getExceptionMessage($e);
     }
     return $response;
 }