Example #1
0
 public function is_file_valid_mimetype($file_path)
 {
     $has_files_global = FALSE;
     if (isset($_FILES[$this->key]) and !empty($_FILES[$this->key]['tmp_name'])) {
         $file_path = $_FILES[$this->key]['tmp_name'];
         $has_files_global = TRUE;
     }
     $extensions = array();
     foreach ($this->mimetypes as $mimetype) {
         $valid_exts = File::exts_by_mime($mimetype);
         foreach ($valid_exts as $ext) {
             $extensions[] = $ext;
         }
     }
     $mimetype = explode(';', finfo_file(finfo_open(FILEINFO_MIME), $file_path))[0];
     if ($has_files_global) {
         return in_array($mimetype, $this->mimetypes) and Upload::type($_FILES[$this->key], $extensions);
     } else {
         return in_array($mimetype, $this->mimetypes);
     }
 }
Example #2
0
 /**
  * Lookup a single file extension by MIME type.
  *
  * @param   string  $type  MIME type to lookup
  * @return  mixed          First file extension matching or false
  */
 public static function ext_by_mime($type)
 {
     return current(File::exts_by_mime($type));
 }
Example #3
0
 public function action_edit()
 {
     $city = $this->get_orm_model('city', $this->_base_url);
     $this->values = $city->as_array();
     $old_name = $city->name;
     if ($_POST) {
         $city->values($_POST, array('name', 'genitive_name', 'dativus_name'));
         $metro_count = count($city->metro->find_all());
         if ($metro_count > 0) {
             $this->validation = Validation::factory($_FILES)->rule('metro_map', 'Upload::type', array(':value', array('jpg', 'jpeg', 'png', 'gif')))->rule('metro_map_clear', 'Upload::type', array(':value', array('jpg', 'jpeg', 'png', 'gif')));
         }
         try {
             $city->update($this->validation);
             echo 1;
             foreach ($city->contents->find_all() as $content) {
                 $content_ids[$content->type] = $content->id;
             }
             if ($metro_count > 0 and $this->validation->check()) {
                 $hash_name = md5(date('YmdHis'));
                 foreach ($_FILES as $img_name => $image) {
                     if (!$image['size'] > 0) {
                         continue;
                     }
                     $exts = File::exts_by_mime($image['type']);
                     if ($exts[0] == 'jpe') {
                         $exts[0] = 'jpeg';
                     }
                     $name = $img_name == 'metro_map' ? $hash_name . '.' . $exts[0] : $hash_name . '_clear.' . $exts[0];
                     Upload::save($_FILES[$img_name], $name, 'assets/img/metro');
                     $path = 'assets/img/metro/' . $name;
                     echo $path;
                     $city_img_column = 'img_' . $img_name;
                     $image_gd = Image::factory($path);
                     if ($image_gd->width > 950) {
                         $image_gd->resize(950, NULL);
                         $image_gd->save();
                     }
                     $city->{$city_img_column} = '/' . $path;
                 }
                 $city->update();
             }
             $msg = __(Kohana::message('admin', 'city.edit_success'), array(':name' => $old_name));
             $msg .= __(Kohana::message('admin', 'city.success_work_car_content_urls'), array(':content_id_car' => $content_ids['auto'], ':content_id_work' => $content_ids['work']));
             if (array_key_exists('district', $content_ids)) {
                 $msg .= __(Kohana::message('admin', 'city.success_district_urls'), array(':content_id_district' => $content_ids['district']));
             }
             if (array_key_exists('metro', $content_ids)) {
                 $msg .= __(Kohana::message('admin', 'city.success_metro_urls'), array(':content_id_metro' => $content_ids['metro']));
             }
             Message::set(Message::SUCCESS, $msg);
             $this->request->redirect($this->_base_url);
         } catch (ORM_Validation_Exception $e) {
             $this->errors = $e->errors('models');
             $this->values = $_POST;
         }
     }
     $this->template->title = 'Редактирование города "' . $old_name . '"';
     $this->template->bc['#'] = $this->template->title;
     $this->view = View::factory('backend/item/city/form')->set('title', $this->template->title)->set('values', $this->values)->set('errors', $this->errors)->set('metro_stations_count', count($city->metro->find_all()));
     $this->template->content = $this->view;
 }
Example #4
0
File: Util.php Project: Konro1/pms
 /**
  * Detirmine the filename from the url
  * @param  string $url
  * @param  string $mime_type
  * @return string
  */
 public static function filename_from_url($url, $mime_type = NULL)
 {
     $filename_candidates = Upload_Util::filenames_candidates_from_url($url);
     $filename_candidates = array_filter($filename_candidates, 'Upload_Util::is_filename');
     $file = count($filename_candidates) ? reset($filename_candidates) : uniqid();
     $extensions = File::exts_by_mime($mime_type);
     $extension_candiates = array(is_array($extensions) ? end($extensions) : $extensions, pathinfo($file, PATHINFO_EXTENSION), 'jpg');
     $extension_candiates = array_filter($extension_candiates);
     $extension = reset($extension_candiates);
     return Upload_Util::sanitize(pathinfo($file, PATHINFO_FILENAME)) . '.' . $extension;
 }