Browse Source

Correctif import d'image depuis un fichier

idleman 7 years ago
parent
commit
d9dad2c253
3 changed files with 26 additions and 21 deletions
  1. 7 3
      action.php
  2. 1 1
      class/Resource.class.php
  3. 18 17
      class/Type.class.php

+ 7 - 3
action.php

@@ -306,9 +306,13 @@ switch ($_['action']){
 		$ext = strtolower(array_pop($ext));
 		$types = Type::all();
 		$type = 'readme';
-		foreach($types as $uid=>$tp)
-			if(isset($tp['extension']) && $ext == $tp['extension']) $type = $uid;
-		
+		foreach($types as $uid=>$tp){
+			if(!isset($tp['extension'])) continue;
+			foreach($tp['extension'] as $ext2){
+				if($ext == $ext2) $type = $uid;
+			}
+			
+		}
 		Type::fromFileImport($_FILES['file'],$sketch,$type);
 		
 	break;

+ 1 - 1
class/Resource.class.php

@@ -25,7 +25,7 @@ class Resource extends Entity
     public function remove()
     {
         self::deleteById($this->id);
-        if ($this->type == 'image' && file_exists(SKETCH_PATH.$this->content)) {
+        if ($this->type == 'image' && file_exists(SKETCH_PATH.$this->content) && is_file(SKETCH_PATH.$this->content) ) {
             unlink(SKETCH_PATH.$this->content);
         }
     }

+ 18 - 17
class/Type.class.php

@@ -21,7 +21,7 @@ class Type{
 
 		$types['readme'] = array(
 			'label' => 'README',
-			'extension' => 'md',
+			'extension' => array('md'),
 			'codemirror' => array(
 				'smartIndent' => false,
 				'readOnly' =>  false
@@ -30,7 +30,7 @@ class Type{
 
 		$types['arduino'] = array(
 			'label' => 'Source Arduino',
-			'extension' => 'ino',
+			'extension' => array('ino'),
 			'codemirror' => array(
 				'mode'=>'clike',
 				'theme'=>'monokai',
@@ -41,7 +41,7 @@ class Type{
 
 		$types['clike'] = array(
 			'label' => 'Source C++/C',
-			'extension' => 'cpp',
+			'extension' => array('cpp'),
 			'codemirror' => array(
 				'mode'=>'clike',
 				'theme'=>'monokai',
@@ -52,7 +52,7 @@ class Type{
 
 		$types['shell'] = array(
 			'label' => 'Shell',
-			'extension' => 'sh',
+			'extension' => array('sh'),
 			'codemirror' => array(
 				'mode'=>'shell',
 				'theme'=>'monokai',
@@ -63,7 +63,7 @@ class Type{
 
 		$types['php'] = array(
 			'label' => 'Source PHP',
-			'extension' => 'php',
+			'extension' => array('php'),
 			'codemirror' => array(
 				'mode'=>'php',
 				'theme'=>'monokai',
@@ -74,7 +74,7 @@ class Type{
 
 		$types['xml'] = array(
 			'label' => 'Source XML',
-			'extension' => 'xml',
+			'extension' => array('xml'),
 			'codemirror' => array(
 				'mode'=>'htmlmixed',
 				'theme'=>'monokai',
@@ -86,7 +86,7 @@ class Type{
 
 		$types['python'] = array(
 			'label' => 'Source Python',
-			'extension' => 'py',
+			'extension' => array('py'),
 			'codemirror' => array(
 				'mode'=>'python',
 				'theme'=>'monokai',
@@ -97,7 +97,7 @@ class Type{
 
 		$types['c'] = array(
 			'label' => 'Source C++',
-			'extension' => 'cpp',
+			'extension' => array('cpp'),
 			'codemirror' => array(
 				'mode'=>'clike',
 				'theme'=>'monokai',
@@ -108,7 +108,7 @@ class Type{
 
 		$types['java'] = array(
 			'label' => 'Source JAVA',
-			'extension' => 'java',
+			'extension' => array('java'),
 			'codemirror' => array(
 				'mode'=>'java',
 				'theme'=>'monokai',
@@ -119,7 +119,7 @@ class Type{
 
 		$types['css'] = array(
 			'label' => 'Feuille CSS',
-			'extension' => 'css',
+			'extension' => array('css'),
 			'codemirror' => array(
 				'mode'=>'css',
 				'theme'=>'monokai',
@@ -129,7 +129,7 @@ class Type{
 		);
 		$types['javascript'] = array(
 			'label' => 'Source Javascript',
-			'extension' => 'js',
+			'extension' => array('js'),
 			'codemirror' => array(
 				'mode'=>'javascript',
 				'theme'=>'monokai',
@@ -140,7 +140,7 @@ class Type{
 
 		$types['json'] = array(
 			'label' => 'Source JSON',
-			'extension' => 'json',
+			'extension' => array('json'),
 			'codemirror' => array(
 				'mode'=>'javascript',
 				'theme'=>'monokai',
@@ -156,7 +156,7 @@ class Type{
 				'element' => '#resource p img:eq(0)',
 				'callback' => '$(\'#resource img:eq(0)\').attr(\'src\',r.url);'
 			),
-			'extension' => 'jpg'
+			'extension' => array('jpg','jpeg','png','bmp','gif','svg')
 		);
 		
 		$types['files'] = array(
@@ -166,12 +166,12 @@ class Type{
 				'element' => '#dropZoneFiles',
 				'callback' => "search_file();",
 			),
-			'extension' => 'zip'
+			'extension' => array('zip')
 		);
 
 		$types['part'] = array(
 			'label' => 'Set de composants',
-			'extension' => 'part'
+			'extension' => array('part')
 		);
 
 		
@@ -214,8 +214,8 @@ class Type{
 				}
 			break;
 			case 'image':
-				
 				$resource->save();
+				$ext = getExt($resource->label);
 				$name = $resource->id.'.'.$ext;
 				file_put_contents(SKETCH_PATH.$name,$stream);
 				$resource->content = $name;
@@ -301,6 +301,7 @@ class Type{
 				$resource->content = '';
 				$resource->save();
 			break;
+			
 			default:
 			break;
 		}
@@ -429,7 +430,7 @@ class Type{
 	public static function toFileStream($resource){
 		$type = self::get($resource->type);
 		$file = (object) array('name'=>slugify($resource->label),'content'=>'');
-		if(isset($type['extension'])) $file->name .= '.'.$type['extension'];
+		if(isset($type['extension'])) $file->name .= '.'.$type['extension'][0];
 		switch($resource->type){
 			case 'part':
 				$file->content = '> '.strtoupper($resource->label).PHP_EOL;