Merge pull request #142 from DakuTree/master
PNG/GIF Autoresizing + Other stuff
This commit is contained in:
		
						commit
						17b3972356
					
				| @ -61,9 +61,8 @@ class ResizeImage extends Extension { | |||||||
| 	public function onDataUpload(DataUploadEvent $event) { | 	public function onDataUpload(DataUploadEvent $event) { | ||||||
| 		global $config; | 		global $config; | ||||||
| 		$image_obj = Image::by_id($event->image_id); | 		$image_obj = Image::by_id($event->image_id); | ||||||
| 		//No auto resizing for gifs due to animated gif causing errors :(
 | 
 | ||||||
| 		//Also PNG resizing seems to be completely broken.
 | 		if($config->get_bool("resize_upload") == true && ($image_obj->ext == "jpg" || $image_obj->ext == "png" || $image_obj->ext == "gif")){ | ||||||
| 		if($config->get_bool("resize_upload") == true && ($image_obj->ext == "jpg")){ |  | ||||||
| 			$width = $height = 0; | 			$width = $height = 0; | ||||||
| 
 | 
 | ||||||
| 			if ($config->get_int("resize_default_width") !== 0) { | 			if ($config->get_int("resize_default_width") !== 0) { | ||||||
| @ -72,20 +71,32 @@ class ResizeImage extends Extension { | |||||||
| 			if ($config->get_int("resize_default_height") !== 0) { | 			if ($config->get_int("resize_default_height") !== 0) { | ||||||
| 				$height = $config->get_int("resize_default_height"); | 				$height = $config->get_int("resize_default_height"); | ||||||
| 			} | 			} | ||||||
| 
 | 			$isanigif = 0; | ||||||
| 			try { | 			if($image_obj->ext == "gif"){ | ||||||
| 				$this->resize_image($event->image_id, $width, $height); | 				$image_filename = warehouse_path("images", $image_obj->hash); | ||||||
| 			} catch (ImageResizeException $e) { | 				if(!($fh = @fopen($image_filename, 'rb'))){ //check if gif is animated (via http://www.php.net/manual/en/function.imagecreatefromgif.php#104473)
 | ||||||
| 				$this->theme->display_resize_error($page, "Error Resizing", $e->error); | 					return false; | ||||||
|  | 				} | ||||||
|  | 				while(!feof($fh) && $isanigif < 2) { | ||||||
|  | 					$chunk = fread($fh, 1024 * 100); | ||||||
|  | 					$isanigif += preg_match_all('#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s', $chunk, $matches); | ||||||
|  | 				} | ||||||
| 			} | 			} | ||||||
|  | 			if($isanigif == 0){ | ||||||
|  | 				try { | ||||||
|  | 					$this->resize_image($event->image_id, $width, $height); | ||||||
|  | 				} catch (ImageResizeException $e) { | ||||||
|  | 					$this->theme->display_resize_error($page, "Error Resizing", $e->error); | ||||||
|  | 				} | ||||||
| 
 | 
 | ||||||
| 			//Need to generate thumbnail again...
 | 				//Need to generate thumbnail again...
 | ||||||
| 			//This only seems to be an issue if one of the sizes was set to 0.
 | 				//This only seems to be an issue if one of the sizes was set to 0.
 | ||||||
| 			$image_obj = Image::by_id($event->image_id); //Must be a better way to grab the new hash than setting this again..
 | 				$image_obj = Image::by_id($event->image_id); //Must be a better way to grab the new hash than setting this again..
 | ||||||
| 			send_event(new ThumbnailGenerationEvent($image_obj->hash, $image_obj->ext, true)); | 				send_event(new ThumbnailGenerationEvent($image_obj->hash, $image_obj->ext, true)); | ||||||
| 
 | 
 | ||||||
| 			log_info("resize", "Image #{$event->image_id} has been resized to: ".$width."x".$height); | 				log_info("resize", "Image #{$event->image_id} has been resized to: ".$width."x".$height); | ||||||
| 			//TODO: Notify user that image has been resized.
 | 				//TODO: Notify user that image has been resized.
 | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -209,8 +220,7 @@ class ResizeImage extends Extension { | |||||||
| 		switch ( $info[2] ) { | 		switch ( $info[2] ) { | ||||||
| 		  case IMAGETYPE_GIF:   $image = imagecreatefromgif($image_filename);   break; | 		  case IMAGETYPE_GIF:   $image = imagecreatefromgif($image_filename);   break; | ||||||
| 		  case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($image_filename);  break; | 		  case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($image_filename);  break; | ||||||
| 		  /* FIXME: PNG support seems to be broken. | 		  case IMAGETYPE_PNG:   $image = imagecreatefrompng($image_filename);   break; | ||||||
| 		  case IMAGETYPE_PNG:   $image = imagecreatefrompng($image_filename);   break;*/ |  | ||||||
| 		  default: | 		  default: | ||||||
| 			throw new ImageResizeException("Unsupported image type."); | 			throw new ImageResizeException("Unsupported image type."); | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -9,18 +9,39 @@ | |||||||
| class Update extends Extension { | class Update extends Extension { | ||||||
| 	public function onInitExt(InitExtEvent $event) { | 	public function onInitExt(InitExtEvent $event) { | ||||||
| 		global $config; | 		global $config; | ||||||
| 		$config->set_default_string("update_url", "http://nodeload.github.com/shish/shimmie2/zipball/master"); //best to avoid using https
 | 		$config->set_default_string("update_guser", "shish"); | ||||||
| 		$config->set_default_string("commit_hash", ""); | 		$config->set_default_string("update_grepo", "shimmie2"); | ||||||
|  | 		$config->set_default_string("commit_hash", "unknown"); | ||||||
|  | 		$config->set_default_string("commit_time", "unknown"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public function onSetupBuilding(SetupBuildingEvent $event) { | 	public function onSetupBuilding(SetupBuildingEvent $event) { | ||||||
| 		global $config; | 		global $config; | ||||||
|  | 		//Grab latest info via JSON.
 | ||||||
|  | 		$base = "https://api.github.com/repos/shish/shimmie2/commits"; | ||||||
|  | 		$curl = curl_init(); | ||||||
|  | 		curl_setopt($curl, CURLOPT_URL, $base); | ||||||
|  | 		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); | ||||||
|  | 		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); | ||||||
|  | 		$content = curl_exec($curl); | ||||||
|  | 		curl_close($curl); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		$commits = json_decode($content, true); | ||||||
|  | 		$latestCommit = $commits[0]; | ||||||
|  | 		$commitMessage = $latestCommit["commit"]["message"]; | ||||||
|  | 		$commitDT = explode("T", $latestCommit["commit"]["committer"]["date"]); | ||||||
|  | 		$commitTD = explode("-", $commitDT[1]); | ||||||
|  | 		$commitDateTime = $commitDT[0]." (".$commitTD[0].")"; | ||||||
|  | 		$commitSHA = substr($latestCommit["sha"],0,7); | ||||||
| 		//Would prefer to use the admin panel for this.
 | 		//Would prefer to use the admin panel for this.
 | ||||||
| 		//But since the admin panel is optional...kind of stuck to using this.
 | 		//But since the admin panel is optional...kind of stuck to using this.
 | ||||||
| 		$sb = new SetupBlock("Update"); | 		$sb = new SetupBlock("Update"); | ||||||
| 		$sb->position = 75; | 		$sb->position = 75; | ||||||
| 		$sb->add_label("Current Commit: ".$config->get_string('commit_hash')); | 		$sb->add_label("Current Commit: ".$config->get_string('commit_hash')." | ".$config->get_string('commit_time')); | ||||||
| 		$sb->add_text_option("update_url", "<br>Update URL: "); | 		$sb->add_label("<br>Latest Commit: ".$commitSHA." | ".$commitDateTime." | ".$commitMessage); | ||||||
|  | 		$sb->add_text_option("update_guser", "<br>User: "); | ||||||
|  | 		$sb->add_text_option("update_grepo", "Repo: "); | ||||||
| 		$sb->add_label("<br><a href='".make_link('update')."'>Update</a>"); | 		$sb->add_label("<br><a href='".make_link('update')."'>Update</a>"); | ||||||
| 		$event->panel->add_block($sb); | 		$event->panel->add_block($sb); | ||||||
| 	} | 	} | ||||||
| @ -33,13 +54,30 @@ class Update extends Extension { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private function update_shimmie() { | 	private function update_shimmie() { | ||||||
| 		global $config, $page; |  | ||||||
| 		//This is a REALLY ugly function. (Damn my limited PHP knowledge >_<)
 | 		//This is a REALLY ugly function. (Damn my limited PHP knowledge >_<)
 | ||||||
|  | 		global $config, $page; | ||||||
| 		$html = ""; | 		$html = ""; | ||||||
| 		$url = $config->get_string("update_url"); | 		$g_user = $config->get_string("update_guser"); | ||||||
|  | 		$g_repo = $config->get_string("update_grepo"); | ||||||
|  | 		$base = "https://api.github.com/repos/".$g_user."/".$g_repo."/commits"; | ||||||
|  | 		$curl = curl_init(); | ||||||
|  | 		curl_setopt($curl, CURLOPT_URL, $base); | ||||||
|  | 		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); | ||||||
|  | 		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); | ||||||
|  | 		$content = curl_exec($curl); | ||||||
|  | 		curl_close($curl); | ||||||
|  | 		$commits = json_decode($content, true); | ||||||
|  | 		$latestCommit = $commits[0]; | ||||||
|  | 		$commitDT = explode("T", $latestCommit["commit"]["committer"]["date"]); | ||||||
|  | 		$commitTD = explode("-", $commitDT[1]); | ||||||
|  | 		$commitDateTime = $commitDT[0]." (".$commitTD[0].")"; | ||||||
|  | 		$commitSHA = substr($latestCommit["sha"],0,7); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		$url = "http://nodeload.github.com/".$g_user."/".$g_repo."/zipball/".$commitSHA; | ||||||
| 		$mfile = "master.zip"; | 		$mfile = "master.zip"; | ||||||
| 		if(glob("*-shimmie2*")){ //#3
 | 		if(glob("*-shimmie2-".$commitSHA)){ //#3
 | ||||||
| 			$dir = glob("*-shimmie2*"); | 			$dir = glob("*-shimmie2-".$commitSHA); | ||||||
| 			preg_match('@^([a-zA-Z0-9]+\-[0-9a-z]+\-)([^/]+)@i', $dir[0], $matches); | 			preg_match('@^([a-zA-Z0-9]+\-[0-9a-z]+\-)([^/]+)@i', $dir[0], $matches); | ||||||
| 			if(!empty($matches[2])){ | 			if(!empty($matches[2])){ | ||||||
| 				$html .= "commit: ".$matches[2]; | 				$html .= "commit: ".$matches[2]; | ||||||
| @ -59,25 +97,12 @@ class Update extends Extension { | |||||||
| 					$html .= "<br>data folder emptied!"; | 					$html .= "<br>data folder emptied!"; | ||||||
| 				} | 				} | ||||||
| 				copy ("./config.php", "./backup/config.php");//Although this stays the same, will keep backup just incase.
 | 				copy ("./config.php", "./backup/config.php");//Although this stays the same, will keep backup just incase.
 | ||||||
| 				//FIXME: Somehow get rid of this massive rename list.
 | 				$folders = array("./core", "./lib", "./themes", "./.htaccess", "./doxygen.conf", "./index.php", "./install.php", "./ext", "./contrib"); | ||||||
| 				rename ("./core", "./backup/core"); | 				foreach($folders as $folder){ | ||||||
| 				rename ("./".$matches[0]."/core", "./core"); | 					//TODO: Check MD5 of each file, don't rename if same.
 | ||||||
| 				rename ("./lib", "./backup/lib"); | 					rename ($folder, "./backup".substr($folder, 1)); //Move old files to backup
 | ||||||
| 				rename ("./".$matches[0]."/lib", "./lib"); | 					rename ("./".$matches[0].substr($folder, 1), $folder); //Move new files to main
 | ||||||
| 				rename ("./themes", "./backup/themes"); | 				} | ||||||
| 				rename ("./".$matches[0]."/themes", "./themes"); |  | ||||||
| 				rename ("./.htaccess", "./backup/.htaccess"); |  | ||||||
| 				rename ("./".$matches[0]."/.htaccess", "./.htaccess"); |  | ||||||
| 				rename ("./doxygen.conf", "./backup/doxygen.conf"); |  | ||||||
| 				rename ("./".$matches[0]."/doxygen.conf", "./doxygen.conf"); |  | ||||||
| 				rename ("./index.php", "./backup/index.php"); |  | ||||||
| 				rename ("./".$matches[0]."/index.php", "./index.php"); |  | ||||||
| 				rename ("./install.php", "./backup/install.php"); |  | ||||||
| 				rename ("./".$matches[0]."/install.php", "./install.php"); |  | ||||||
| 				rename ("./ext", "./backup/ext"); |  | ||||||
| 				rename ("./".$matches[0]."/ext", "./ext"); |  | ||||||
| 				rename ("./contrib", "./backup/contrib"); |  | ||||||
| 				rename ("./".$matches[0]."/contrib", "./contrib"); |  | ||||||
| 				$html .= "<br>old shimmie setup has been moved to /backup/ (excluding images/thumbs)!"; | 				$html .= "<br>old shimmie setup has been moved to /backup/ (excluding images/thumbs)!"; | ||||||
| 				if (is_dir($matches[0])) { | 				if (is_dir($matches[0])) { | ||||||
| 					$objects = scandir($matches[0]); | 					$objects = scandir($matches[0]); | ||||||
| @ -93,6 +118,7 @@ class Update extends Extension { | |||||||
| 				$html .= "<br>shimmie updated (although you may have gotten errors, it should have worked!"; | 				$html .= "<br>shimmie updated (although you may have gotten errors, it should have worked!"; | ||||||
| 				$html .= "<br>due to the way shimmie loads extensions, all optional extensions have been disabled"; | 				$html .= "<br>due to the way shimmie loads extensions, all optional extensions have been disabled"; | ||||||
| 				$config->set_string("commit_hash", $commit); | 				$config->set_string("commit_hash", $commit); | ||||||
|  | 				$config->set_string("commit_time", $commitDateTime); | ||||||
| 				$html .= "<br>new commit_hash has been set!"; | 				$html .= "<br>new commit_hash has been set!"; | ||||||
| 			}else{ | 			}else{ | ||||||
| 				$html .= "Error! Folder does not exist!?"; //Although this should be impossible, shall have it anyway.
 | 				$html .= "Error! Folder does not exist!?"; //Although this should be impossible, shall have it anyway.
 | ||||||
|  | |||||||
| @ -944,7 +944,7 @@ function get_debug_info() { | |||||||
| 		$i_mem = "???"; | 		$i_mem = "???"; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if($config->get_string("commit_hash") == ""){ | 	if($config->get_string("commit_hash") == "unknown"){ | ||||||
| 		$commit = ""; | 		$commit = ""; | ||||||
| 	}else{ | 	}else{ | ||||||
| 		$commit = " (".$config->get_string("commit_hash").")"; | 		$commit = " (".$config->get_string("commit_hash").")"; | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ class BBCode extends FormatterExtension { | |||||||
| 		$text = preg_replace("/\[i\](.*?)\[\/i\]/s", "<i>\\1</i>", $text); | 		$text = preg_replace("/\[i\](.*?)\[\/i\]/s", "<i>\\1</i>", $text); | ||||||
| 		$text = preg_replace("/\[u\](.*?)\[\/u\]/s", "<u>\\1</u>", $text); | 		$text = preg_replace("/\[u\](.*?)\[\/u\]/s", "<u>\\1</u>", $text); | ||||||
| 		$text = preg_replace("/\[s\](.*?)\[\/s\]/s", "<s>\\1</s>", $text); | 		$text = preg_replace("/\[s\](.*?)\[\/s\]/s", "<s>\\1</s>", $text); | ||||||
| 		$text = preg_replace("/>>(\d+)(#\d+)?/s", "<a href=\"".make_link("post/view/\\1\\2")."\">>>\\1\\2</a>", $text); | 		$text = preg_replace("/>>(\d+)(#(\d+))?/s", "<a href=\"".make_link("post/view/\\1\\2")."\" onclick=\"$('[name=\\3]').parent().effect('highlight', {}, 5000);\">>>\\1\\2</a>", $text); | ||||||
| 		$text = preg_replace("/(^|\s)#(\d+)/s", "\\1<a href=\"#\\2\">#\\2</a>", $text); | 		$text = preg_replace("/(^|\s)#(\d+)/s", "\\1<a href=\"#\\2\">#\\2</a>", $text); | ||||||
| 		$text = preg_replace("/>>([^\d].+)/", "<blockquote><small>\\1</small></blockquote>", $text); | 		$text = preg_replace("/>>([^\d].+)/", "<blockquote><small>\\1</small></blockquote>", $text); | ||||||
| 		$text = preg_replace("/\[url=((?:https?|ftp|irc|mailto):\/\/.*?)\](.*?)\[\/url\]/s", "<a href=\"\\1\">\\2</a>", $text); | 		$text = preg_replace("/\[url=((?:https?|ftp|irc|mailto):\/\/.*?)\](.*?)\[\/url\]/s", "<a href=\"\\1\">\\2</a>", $text); | ||||||
|  | |||||||
| @ -123,4 +123,5 @@ function replyTo(imageId, commentId) { | |||||||
| 
 | 
 | ||||||
| 	box.focus(); | 	box.focus(); | ||||||
| 	box.val(box.val() + text); | 	box.val(box.val() + text); | ||||||
|  | 	$("[name="+commentId+"]").parent().effect("highlight", {}, 5000); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user