public static function stripMedia($request) { $result = []; $regex = '/^media_id_/'; $request = $request instanceof Request ? $request->all() : (is_array($request) ? $request : []); foreach (array_keys($request) as $key) { switch ($key) { case preg_match($regex, $key) === 1: $media_id = preg_replace($regex, '', $key); if (intval($request[$key]) !== 1) { Media::destroy($media_id); } elseif (($media = Media::find($media_id)) instanceof Media) { $result[] = $media; } break; case $key === 'media_new' && ($file = $request[$key]) instanceof UploadedFile && $file->isValid(): $fileName = $file->getClientOriginalName(); if (pathinfo($fileName, PATHINFO_FILENAME) === '') { $fileName = 'file' . $fileName; } if (pathinfo($fileName, PATHINFO_EXTENSION) === '') { $fileName .= '.' . (trim($file->guessClientExtension()) !== '' ? $file->guessClientExtension() : $file->guessExtension()); } $result[] = Media::store(file_get_contents($file->getPathName()), $file->getMimeType(), $fileName); } } return $result; }
public static function stripPropertyDetailOptions(Request $request) { $result = []; $regex = ['existing' => '/^issue_detail_/', 'new' => '/^issue_detail_new_/']; $request = $request instanceof Request ? $request->all() : (is_array($request) ? $request : []); foreach (array_keys($request) as $key) { $striped_key = preg_replace($regex['existing'], '', $key); preg_match('/\\d+/', $striped_key, $detail_id); if (sizeof($detail_id) < 1) { continue; } $detail_id = intval($detail_id[0]) === 0 ? 'new' : intval($detail_id[0]); if (!isset($result[$detail_id])) { $result[$detail_id] = ['media' => []]; } $field = preg_replace('/\\d_/', '', $striped_key); if (preg_match('/^(media_id_|media_new)/', $field) === 1) { $media = Media::find($media_id = intval(preg_replace('/^media_id_/', '', $field))); if (($file = $request[$key]) instanceof UploadedFile && $file->isValid()) { $fileName = $file->getClientOriginalName(); if (pathinfo($fileName, PATHINFO_FILENAME) === '') { $fileName = 'file' . $fileName; } if (pathinfo($fileName, PATHINFO_EXTENSION) === '') { $fileName .= '.' . (trim($file->guessClientExtension()) !== '' ? $file->guessClientExtension() : $file->guessExtension()); } $media = Media::store(file_get_contents($file->getPathName()), $file->getMimeType(), $fileName); } if ($media instanceof Media && boolval($request[$key]) === true) { $result[$detail_id]['media'][$media->id] = $media; } } else { $result[$detail_id][$field] = $request[$key]; } } // endforeach return $result; }