| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2003-04-20 21:12:13 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  |  * Smarty plugin | 
					
						
							| 
									
										
										
										
											2003-04-20 21:12:13 +00:00
										 |  |  |  * @package Smarty | 
					
						
							|  |  |  |  * @subpackage plugins | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Smarty truncate modifier plugin | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Type:     modifier<br> | 
					
						
							|  |  |  |  * Name:     truncate<br> | 
					
						
							| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  |  * Purpose:  Truncate a string to a certain length if necessary, | 
					
						
							| 
									
										
										
										
											2003-12-19 15:22:55 +00:00
										 |  |  |  *           optionally splitting in the middle of a word, and | 
					
						
							| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  |  *           appending the $etc string. | 
					
						
							| 
									
										
										
										
											2003-04-20 21:12:13 +00:00
										 |  |  |  * @link http://smarty.php.net/manual/en/language.modifier.truncate.php | 
					
						
							|  |  |  |  *          truncate (Smarty online manual) | 
					
						
							|  |  |  |  * @param string | 
					
						
							|  |  |  |  * @param integer | 
					
						
							|  |  |  |  * @param string | 
					
						
							|  |  |  |  * @param boolean | 
					
						
							|  |  |  |  * @return string | 
					
						
							| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | function smarty_modifier_truncate($string, $length = 80, $etc = '...', | 
					
						
							|  |  |  |                                   $break_words = false) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if ($length == 0) | 
					
						
							|  |  |  |         return ''; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (strlen($string) > $length) { | 
					
						
							| 
									
										
										
										
											2003-12-19 15:22:55 +00:00
										 |  |  |         $length -= strlen($etc); | 
					
						
							| 
									
										
										
										
											2003-03-12 21:56:32 +00:00
										 |  |  |         if (!$break_words) | 
					
						
							| 
									
										
										
										
											2003-12-19 15:22:55 +00:00
										 |  |  |             $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); | 
					
						
							| 
									
										
										
										
											2003-03-12 21:56:32 +00:00
										 |  |  |        | 
					
						
							|  |  |  |         return substr($string, 0, $length).$etc; | 
					
						
							| 
									
										
										
										
											2002-01-31 20:49:40 +00:00
										 |  |  |     } else | 
					
						
							|  |  |  |         return $string; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* vim: set expandtab: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ?>
 |