protected function init($panel_name, $method = 'L', $id = 0) { $panel = new Panel(); $this->id = $id; $this->name = $panel_name; $this->app_config = StationConfig::app(); $this->user_scope = $panel->user_scope($this->name, $method, $this->subpanel_parent); // temp handling if someone is trying to access something they shouldn't if (!$this->user_scope) { dd('You do not have access to this'); } // TODO: change handling. log it?? $this->panel_config = $this->user_scope['config']; $this->single_item_name = $this->panel_config['panel_options']['single_item_name']; $this->user_data = Session::get('user_data'); $this->assets = isset($this->assets) ? $this->assets : []; $this->base_uri = StationConfig::app('root_uri_segment') . '/'; $this->foreign_data = $panel->foreign_data_for($this->user_scope, $method); $this->foreign_panels = $panel->foreign_panels_for($this->user_scope, $method); $this->array_img_size = $panel->img_sizes_for($this->user_scope, $this->app_config); $this->curr_panel = $this->subpanel_parent ?: $this->name; $this->panel_config['relative_uri'] = $this->base_uri . 'panel/' . $this->name; $this->panel_config['relative_uri'] = URL::to($this->panel_config['relative_uri']); View::share('base_uri', $this->base_uri); View::share('base_img_uri', 'http://' . $this->app_config['media_options']['AWS']['bucket'] . '.s3.amazonaws.com/'); View::share('curr_panel', $this->curr_panel); View::share('curr_method', $method); View::share('single_item_name', $this->single_item_name); View::share('app_data', $this->app_config); View::share('panel_data', $this->panel_config); View::share('panel_name', $this->name); View::share('foreign_data', $this->foreign_data); View::share('foreign_panels', $this->foreign_panels); View::share('user_data', $this->user_data); View::share('base_uri', $this->base_uri); View::share('img_size_data', $this->array_img_size); View::share('sidenav_data', $panel->user_panel_access_list()); }
public function upload() { if (!Input::hasFile('uploaded_file')) { echo json_encode(['success' => FALSE, 'reason' => 'no file uploaded']); } $file = Input::file('uploaded_file'); $original_file_name = $file->getClientOriginalName(); $size = $file->getSize(); $mime = $file->getMimeType(); $this->mime = $mime; $extension = $file->getClientOriginalExtension(); $path = pathinfo($original_file_name); $orig_name_wo_ext = $path['filename']; $new_file_name = $orig_name_wo_ext . '_' . date('Y-m-d-H-i-s') . '.' . $extension; $panel = new Panel(); $panel_name = Input::get('panel_name'); $parent_panel_name = Input::get('parent_panel_name'); $element_name = Input::get('upload_element_name'); $method = Input::get('method'); $user_scope = $panel->user_scope($panel_name, $method, $parent_panel_name); $element = $user_scope['config']['elements'][$element_name]; $app_config = StationConfig::app(); $success = FALSE; $message = ''; $field_is_uploadable = $element['type'] == 'image' || isset($element['embeddable']) && $element['embeddable']; Input::file('uploaded_file')->move($this->tmp_dir, $new_file_name); if ($field_is_uploadable) { $allowed_image_extensions = ['png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG']; $bad_image = strpos($mime, 'image') === FALSE || !in_array($extension, $allowed_image_extensions); if ($bad_image) { return Response::json(['success' => FALSE, 'reason' => 'not a proper image']); } $allow_upsize = isset($element['allow_upsize']) && $element['allow_upsize']; $all_sizes = $panel->img_sizes_for($user_scope, $app_config); $sizes_needed = isset($all_sizes[$element_name]) ? $all_sizes[$element_name] : $all_sizes['standard']; $manipulations = $this->manipulate_sizes_and_send_each($new_file_name, $sizes_needed, $app_config, $allow_upsize); $success = $manipulations['n_sent'] > 0; $message = $manipulations['n_sent'] . ' manipulations made and sent to S3'; } else { // file? // TODO: deal with non-images here. check for allowed types. then just move and send to S3. } $response = ['success' => $success, 'message' => $message, 'insert_id' => isset($medium->id) ? $medium->id : FALSE, 'file_uri_stub' => 'http://' . $app_config['media_options']['AWS']['bucket'] . '.s3.amazonaws.com/', 'file_uri' => isset($manipulations['file_name']) ? 'http://' . $app_config['media_options']['AWS']['bucket'] . '.s3.amazonaws.com/' . 'station_thumbs_lg/' . $manipulations['file_name'] : FALSE, 'file_name' => isset($manipulations['file_name']) ? $manipulations['file_name'] : FALSE]; //return Response::json($response); // was erroring with Resource interpreted as Document but transferred with MIME type application/json: "/station/file/upload". echo json_encode($response); }