Updated FP-specific Smarty plugins to v4 OOP style. Moved list_categories plugin to the Smarty plugin folder in order to have it loaded properly.
This commit is contained in:
		
							parent
							
								
									52bf429a01
								
							
						
					
					
						commit
						fb43fe3ea9
					
				| @ -1,157 +0,0 @@ | |||||||
| <?php |  | ||||||
| /** |  | ||||||
|  * Smarty plugin |  | ||||||
|  * ------------------------------------------------------------- |  | ||||||
|  * File:     function.list_categories.php |  | ||||||
|  * Type:     function
 |  | ||||||
|  * Name:     list_categories |  | ||||||
|  * Purpose:  print out the comment form |  | ||||||
|  * |  | ||||||
|  * @param	string after |  | ||||||
|  * @param	string before |  | ||||||
|  * ------------------------------------------------------------- |  | ||||||
|  */ |  | ||||||
| function smarty_function_list_categories($params) //, &$smarty)
 |  | ||||||
| { |  | ||||||
| 	$cat_params = array( |  | ||||||
| 				'ild'=>'<li>','ird'=>"</li>\n", |  | ||||||
| 				'old'=>"<ul>\n",'ord'=>"</ul>\n", |  | ||||||
| 				'name' => isset($params['name'])? $params['name'] : '', |  | ||||||
| 				'selected' => array() |  | ||||||
| 				); |  | ||||||
| 	 |  | ||||||
| 	$cat_params = array_merge($cat_params, $params); |  | ||||||
| 
 |  | ||||||
| 	// makese 'selected' an arr
 |  | ||||||
| 	$cat_params['selected'] = (array)$params['selected']; |  | ||||||
| 
 |  | ||||||
| 	//echo "<pre>" . print_r(entry_categories_get()) . "</pre>";
 |  | ||||||
| 	 |  | ||||||
| 	if (file_exists(CONTENT_DIR . 'categories.txt')) { |  | ||||||
| 		$cats = trim(io_load_file(CONTENT_DIR . 'categories.txt')); |  | ||||||
| 		$stack=array(0); |  | ||||||
| 		$arr=array(); |  | ||||||
| 
 |  | ||||||
|     $line36error = explode("\n", $cats); |  | ||||||
|     $line35error = '<ul>'.do_print_categories_list($line36error, $stack, $arr, $cat_params).'</ul>'; |  | ||||||
| 
 |  | ||||||
|     return $line35error;     |  | ||||||
| 	} else { |  | ||||||
| 		global $lang; |  | ||||||
| 			 |  | ||||||
| 		$content = '<a href="'.BLOG_BASEURL.'">Unfiled</a>'; |  | ||||||
| 		if (isset($lang['admin']['entry']['publish']['nocategories'])) |  | ||||||
| 			$content = $lang['admin']['entry']['publish']['nocategories']; |  | ||||||
| 		return '<ul><li>' . $content .'</li></ul>' ; |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	//<label><input name="cats[{$catId}]" 
 |  | ||||||
| 	//{if (bool)array_intersect(array($catId),$categories) }
 |  | ||||||
| 	//checked="checked"{/if} type="checkbox" /> {$cat} </label><br />
 |  | ||||||
| 			 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| function do_print_categories_list(&$lines, &$indentstack, &$result, $params) { |  | ||||||
| 	 |  | ||||||
| 	global $smarty, $fpdb; |  | ||||||
| 	 |  | ||||||
| 	extract($params); |  | ||||||
| 	 |  | ||||||
|         if (empty($lines)) { |  | ||||||
| 		$l = count($indentstack)-1; |  | ||||||
| 		if ($l > 0) |  | ||||||
| 			$arr = array_fill(0, $l, $ord.$ird); |  | ||||||
| 		else |  | ||||||
| 			$arr = array(); |  | ||||||
| 			 |  | ||||||
| 		$result = array_merge($result, $arr); |  | ||||||
| 		return ''; |  | ||||||
| 	} |  | ||||||
|                  |  | ||||||
| 
 |  | ||||||
|         $str = ''; |  | ||||||
|         $v = reset($lines); |  | ||||||
|         $vt = ltrim($v); |  | ||||||
| 
 |  | ||||||
|         $indent = utils_countdashes($vt, $text); |  | ||||||
|         $indent_old = end($indentstack); |  | ||||||
| 
 |  | ||||||
| 	$val = explode(':', $text); |  | ||||||
| 	$vt = $val[0]; |  | ||||||
| 	$vid = trim($val[1]); |  | ||||||
| 	 |  | ||||||
| 	$catname = $params['name']; |  | ||||||
| 	 |  | ||||||
|         if ($indent > $indent_old) { |  | ||||||
|                 array_push($indentstack, $indent); |  | ||||||
| 		 |  | ||||||
|                 array_pop($result); |  | ||||||
|                 array_push($result, $old); |  | ||||||
|                 //array_push($result, $ild);
 |  | ||||||
|                 do_print_categories_list($lines, $indentstack, $result, $params); |  | ||||||
|         }elseif($indent < $indent_old) { |  | ||||||
|                 array_pop($indentstack); |  | ||||||
| 		 |  | ||||||
| 		array_push($result, $ord);		 |  | ||||||
| 		array_push($result, $ird); |  | ||||||
|                 |  | ||||||
|                 do_print_categories_list($lines, $indentstack, $result, $params); |  | ||||||
|         }else{ |  | ||||||
|                 array_push($result, $ild); |  | ||||||
| 		 |  | ||||||
| 		 |  | ||||||
| 		$cat_entry = $params['selected'];  |  | ||||||
| 		 |  | ||||||
| 		if (isset($params['type']) && ($params['type']=='form' || $params['type']=='check')) { |  | ||||||
| 			$string = '<label><input name="'.$catname.'cats['.$vid.']" '; |  | ||||||
| 			 |  | ||||||
| 			if ((bool) array_intersect(array($vid), $cat_entry)) |  | ||||||
| 				$string .= 'checked="checked" '; |  | ||||||
| 			 |  | ||||||
| 			$string .=  'type="checkbox" />'; |  | ||||||
| 			$before = $string; |  | ||||||
| 		}elseif (isset($params['type']) && $params['type']=='radio') { |  | ||||||
| 			$string = '<label><input name="'.$catname.'cats" type="radio" value="'.$vid.'"'; |  | ||||||
| 			if ((bool) array_intersect(array($vid), $cat_entry)) |  | ||||||
| 				$string .= 'checked="checked" '; |  | ||||||
| 	 |  | ||||||
| 			$string .= ' />'; |  | ||||||
| 			$before = $string; |  | ||||||
| 			 |  | ||||||
| 			 |  | ||||||
| 		}elseif(isset($params['type']) && $params['type']=='linked'){ |  | ||||||
| 			$before = '<a href="'.get_category_link($vid).'">'; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		 |  | ||||||
| 		array_push($result, $before); |  | ||||||
| 		 |  | ||||||
| 		 |  | ||||||
|                 array_push($result, $vt); |  | ||||||
| 		 |  | ||||||
| 		if (isset($params['type']) && ($params['type']=='form' || $params['type']=='check' || $params['type']=='radio')) { |  | ||||||
| 			$string = '</label>'; |  | ||||||
| 			$after = $string; |  | ||||||
| 		}elseif(isset($params['type']) && $params['type']=='linked'){ |  | ||||||
| 			$after='</a>'; |  | ||||||
| 			if (isset($params['count']) && $params['count']) { |  | ||||||
| 				$index =& $fpdb->get_index($vid); |  | ||||||
| 				$count = ($index)? $index->length() : 0; |  | ||||||
| 				$after = " ($count) ". $after; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		array_push($result, $after); |  | ||||||
| 		 |  | ||||||
|                 array_push($result, $ird); |  | ||||||
|                 array_shift($lines); |  | ||||||
|                 do_print_categories_list($lines, $indentstack, $result, $params); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         return implode($result); |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -0,0 +1,155 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Smarty plugin | ||||||
|  |  * ------------------------------------------------------------- | ||||||
|  |  * File: function.list_categories.php | ||||||
|  |  * Type: function
 | ||||||
|  |  * Name: list_categories | ||||||
|  |  * Purpose: print out the comment form | ||||||
|  |  * | ||||||
|  |  * @param | ||||||
|  |  *        	string after | ||||||
|  |  * @param | ||||||
|  |  *        	string before | ||||||
|  |  *        	------------------------------------------------------------- | ||||||
|  |  */ | ||||||
|  | function smarty_function_list_categories($params) // , &$smarty)
 | ||||||
|  | { | ||||||
|  | 	$cat_params = array( | ||||||
|  | 		'ild' => '<li>', | ||||||
|  | 		'ird' => "</li>\n", | ||||||
|  | 		'old' => "<ul>\n", | ||||||
|  | 		'ord' => "</ul>\n", | ||||||
|  | 		'name' => isset($params ['name']) ? $params ['name'] : '', | ||||||
|  | 		'selected' => array() | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	$cat_params = array_merge($cat_params, $params); | ||||||
|  | 
 | ||||||
|  | 	// makese 'selected' an arr
 | ||||||
|  | 	$cat_params ['selected'] = array_key_exists('selected', $params) ? (array) $params ['selected'] : false; | ||||||
|  | 
 | ||||||
|  | 	// echo "<pre>" . print_r(entry_categories_get()) . "</pre>";
 | ||||||
|  | 
 | ||||||
|  | 	if (file_exists(CONTENT_DIR . 'categories.txt')) { | ||||||
|  | 		$cats = trim(io_load_file(CONTENT_DIR . 'categories.txt')); | ||||||
|  | 		$stack = array( | ||||||
|  | 			0 | ||||||
|  | 		); | ||||||
|  | 		$arr = array(); | ||||||
|  | 
 | ||||||
|  | 		$line36error = explode("\n", $cats); | ||||||
|  | 		$line35error = '<ul>' . do_print_categories_list($line36error, $stack, $arr, $cat_params) . '</ul>'; | ||||||
|  | 
 | ||||||
|  | 		return $line35error; | ||||||
|  | 	} else { | ||||||
|  | 		global $lang; | ||||||
|  | 
 | ||||||
|  | 		$content = '<a href="' . BLOG_BASEURL . '">Unfiled</a>'; | ||||||
|  | 		if (isset($lang ['admin'] ['entry'] ['publish'] ['nocategories'])) | ||||||
|  | 			$content = $lang ['admin'] ['entry'] ['publish'] ['nocategories']; | ||||||
|  | 		return '<ul><li>' . $content . '</li></ul>'; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// <label><input name="cats[{$catId}]"
 | ||||||
|  | 	// {if (bool)array_intersect(array($catId),$categories) }
 | ||||||
|  | 	// checked="checked"{/if} type="checkbox" /> {$cat} </label><br />
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function do_print_categories_list(&$lines, &$indentstack, &$result, $params) { | ||||||
|  | 	global $smarty, $fpdb; | ||||||
|  | 
 | ||||||
|  | 	extract($params); | ||||||
|  | 
 | ||||||
|  | 	if (empty($lines)) { | ||||||
|  | 		$l = count($indentstack) - 1; | ||||||
|  | 		if ($l > 0) | ||||||
|  | 			$arr = array_fill(0, $l, $ord . $ird); | ||||||
|  | 		else | ||||||
|  | 			$arr = array(); | ||||||
|  | 
 | ||||||
|  | 		$result = array_merge($result, $arr); | ||||||
|  | 		return ''; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	$str = ''; | ||||||
|  | 	$v = reset($lines); | ||||||
|  | 	$vt = ltrim($v); | ||||||
|  | 
 | ||||||
|  | 	$indent = utils_countdashes($vt, $text); | ||||||
|  | 	$indent_old = end($indentstack); | ||||||
|  | 
 | ||||||
|  | 	$val = explode(':', $text); | ||||||
|  | 	$vt = $val [0]; | ||||||
|  | 	$vid = trim($val [1]); | ||||||
|  | 
 | ||||||
|  | 	$catname = $params ['name']; | ||||||
|  | 
 | ||||||
|  | 	if ($indent > $indent_old) { | ||||||
|  | 		array_push($indentstack, $indent); | ||||||
|  | 
 | ||||||
|  | 		array_pop($result); | ||||||
|  | 		array_push($result, $old); | ||||||
|  | 		// array_push($result, $ild);
 | ||||||
|  | 		do_print_categories_list($lines, $indentstack, $result, $params); | ||||||
|  | 	} elseif ($indent < $indent_old) { | ||||||
|  | 		array_pop($indentstack); | ||||||
|  | 
 | ||||||
|  | 		array_push($result, $ord); | ||||||
|  | 		array_push($result, $ird); | ||||||
|  | 
 | ||||||
|  | 		do_print_categories_list($lines, $indentstack, $result, $params); | ||||||
|  | 	} else { | ||||||
|  | 		array_push($result, $ild); | ||||||
|  | 
 | ||||||
|  | 		$cat_entry = $params ['selected']; | ||||||
|  | 
 | ||||||
|  | 		if (isset($params ['type']) && ($params ['type'] == 'form' || $params ['type'] == 'check')) { | ||||||
|  | 			$string = '<label><input name="' . $catname . 'cats[' . $vid . ']" '; | ||||||
|  | 
 | ||||||
|  | 			if ((bool) array_intersect(array( | ||||||
|  | 				$vid | ||||||
|  | 			), $cat_entry)) | ||||||
|  | 				$string .= 'checked="checked" '; | ||||||
|  | 
 | ||||||
|  | 			$string .= 'type="checkbox" />'; | ||||||
|  | 			$before = $string; | ||||||
|  | 		} elseif (isset($params ['type']) && $params ['type'] == 'radio') { | ||||||
|  | 			$string = '<label><input name="' . $catname . 'cats" type="radio" value="' . $vid . '"'; | ||||||
|  | 			if ((bool) array_intersect(array( | ||||||
|  | 				$vid | ||||||
|  | 			), $cat_entry)) | ||||||
|  | 				$string .= 'checked="checked" '; | ||||||
|  | 
 | ||||||
|  | 			$string .= ' />'; | ||||||
|  | 			$before = $string; | ||||||
|  | 		} elseif (isset($params ['type']) && $params ['type'] == 'linked') { | ||||||
|  | 			$before = '<a href="' . get_category_link($vid) . '">'; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		array_push($result, $before); | ||||||
|  | 
 | ||||||
|  | 		array_push($result, $vt); | ||||||
|  | 
 | ||||||
|  | 		if (isset($params ['type']) && ($params ['type'] == 'form' || $params ['type'] == 'check' || $params ['type'] == 'radio')) { | ||||||
|  | 			$string = '</label>'; | ||||||
|  | 			$after = $string; | ||||||
|  | 		} elseif (isset($params ['type']) && $params ['type'] == 'linked') { | ||||||
|  | 			$after = '</a>'; | ||||||
|  | 			if (isset($params ['count']) && $params ['count']) { | ||||||
|  | 				$index = & $fpdb->get_index($vid); | ||||||
|  | 				$count = ($index) ? $index->length() : 0; | ||||||
|  | 				$after = " ($count) " . $after; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		array_push($result, $after); | ||||||
|  | 
 | ||||||
|  | 		array_push($result, $ird); | ||||||
|  | 		array_shift($lines); | ||||||
|  | 		do_print_categories_list($lines, $indentstack, $result, $params); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return implode($result); | ||||||
|  | } | ||||||
| @ -1,54 +1,74 @@ | |||||||
| <?php | <?php | ||||||
| /* | 
 | ||||||
|  * Smarty plugin | /** | ||||||
|  * -------------------------------------------------------------  |  * Resoure plugin that conveniently allows to include templates from the plugin templates folder via {include file="plugin:example.tpl"} | ||||||
|  * File:     resource.plugin.php |  * | ||||||
|  * Type:     plugin tpls |  * @author FlatPress | ||||||
|  * Name:     plugin |  * @see https://www.smarty.net/docs/en/plugins.resources.tpl | ||||||
|  * Purpose:  convenient way to call stored tpls in PLUGINS_DIR |  | ||||||
|  * Use:	plugin:PLUGINNAME/PLUGINFILE realpath=> PLUGINS_DIR/plugin.PLUGINNAME/PLUGINFILE |  | ||||||
|  * ------------------------------------------------------------- |  | ||||||
|  */ |  */ | ||||||
|  | class Smarty_Resource_Plugin extends Smarty_Resource_Custom { | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * | ||||||
|  | 	 * {@inheritdoc} | ||||||
|  | 	 * @see Smarty_Resource_Custom::fetch() | ||||||
|  | 	 */ | ||||||
|  | 	protected function fetch($name, &$source, &$mtime) { | ||||||
|  | 		$filePath = $this->getFilePath($name); | ||||||
| 
 | 
 | ||||||
| function smarty_resource_plugin_parsename($tpl_name) { | 		if ($source = io_load_file($filePath)) { | ||||||
| 	$path = null; | 			$mtime = filemtime($filePath); | ||||||
| 	 | 		} else { | ||||||
| 	$f=explode('/',$tpl_name); | 			$source = null; | ||||||
| 	$path = ABS_PATH . PLUGINS_DIR . "{$f[0]}/tpls/{$f[1]}.tpl"; | 			$mtime = null; | ||||||
| 	 | 		} | ||||||
| 	return $path; |  | ||||||
| 		 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function smarty_resource_plugin_source($tpl_name, &$tpl_source, &$smarty) |  | ||||||
| { |  | ||||||
| 	$fname = smarty_resource_plugin_parsename($tpl_name); |  | ||||||
| 	if ($tpl_source = io_load_file($fname)) { |  | ||||||
| 		return true; |  | ||||||
| 	} else { |  | ||||||
| 		return false; |  | ||||||
| 	} | 	} | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| function smarty_resource_plugin_timestamp($tpl_name, &$tpl_timestamp, &$smarty) | 	private function getFilePath($templateName) { | ||||||
| { | 		$path = null; | ||||||
|     $fname = smarty_resource_plugin_parsename($tpl_name); |  | ||||||
|     if (file_exists($fname)) { |  | ||||||
|         $tpl_timestamp = filemtime($fname); |  | ||||||
|         return true; |  | ||||||
|     } else { |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| function smarty_resource_plugin_secure($tpl_name, &$smarty) | 		$f = explode('/', $templateName); | ||||||
| { | 		$path = ABS_PATH . PLUGINS_DIR . "{$f[0]}/tpls/{$f[1]}.tpl"; | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| function smarty_resource_plugin_trusted($tpl_name, &$smarty) | 		return $path; | ||||||
| { | 	} | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| ?> 
 | 
 | ||||||
|  | // /*
 | ||||||
|  | //  * Smarty plugin
 | ||||||
|  | //  * -------------------------------------------------------------
 | ||||||
|  | //  * File: resource.plugin.php
 | ||||||
|  | //  * Type: plugin tpls
 | ||||||
|  | //  * Name: plugin
 | ||||||
|  | //  * Purpose: convenient way to call stored tpls in PLUGINS_DIR
 | ||||||
|  | //  * Use: plugin:PLUGINNAME/PLUGINFILE realpath=> PLUGINS_DIR/plugin.PLUGINNAME/PLUGINFILE
 | ||||||
|  | //  * -------------------------------------------------------------
 | ||||||
|  | //  */
 | ||||||
|  | // function smarty_resource_plugin_parsename($tpl_name) {
 | ||||||
|  | // 	$path = null;
 | ||||||
|  | 
 | ||||||
|  | // 	$f = explode('/', $tpl_name);
 | ||||||
|  | // 	$path = ABS_PATH . PLUGINS_DIR . "{$f[0]}/tpls/{$f[1]}.tpl";
 | ||||||
|  | 
 | ||||||
|  | // 	return $path;
 | ||||||
|  | // }
 | ||||||
|  | 
 | ||||||
|  | // function smarty_resource_plugin_source($tpl_name, &$tpl_source, &$smarty) {
 | ||||||
|  | // 	$fname = smarty_resource_plugin_parsename($tpl_name);
 | ||||||
|  | // 	if ($tpl_source = io_load_file($fname)) {
 | ||||||
|  | // 		return true;
 | ||||||
|  | // 	} else {
 | ||||||
|  | // 		return false;
 | ||||||
|  | // 	}
 | ||||||
|  | // }
 | ||||||
|  | 
 | ||||||
|  | // function smarty_resource_plugin_timestamp($tpl_name, &$tpl_timestamp, &$smarty) {
 | ||||||
|  | // 	$fname = smarty_resource_plugin_parsename($tpl_name);
 | ||||||
|  | // 	if (file_exists($fname)) {
 | ||||||
|  | // 		$tpl_timestamp = filemtime($fname);
 | ||||||
|  | // 		return true;
 | ||||||
|  | // 	} else {
 | ||||||
|  | // 		return false;
 | ||||||
|  | // 	}
 | ||||||
|  | // }
 | ||||||
|  | |||||||
| @ -1,39 +1,25 @@ | |||||||
| <?php | <?php | ||||||
| /* | 
 | ||||||
|  * Smarty plugin | /** | ||||||
|  * -------------------------------------------------------------  |  * Resoure plugin that conveniently allows to include templates from the shared templates folder via {include file="shared:example.tpl"} | ||||||
|  * File:     resource.shared.php |  * | ||||||
|  * Type:     shared tpls |  * @author FlatPress | ||||||
|  * Name:     shared |  * @see https://www.smarty.net/docs/en/plugins.resources.tpl | ||||||
|  * Purpose:  convenient way to call stored tpls in SHARED_TPLS |  | ||||||
|  * ------------------------------------------------------------- |  | ||||||
|  */ |  */ | ||||||
| function smarty_resource_shared_source($tpl_name, &$tpl_source, &$smarty) | class Smarty_Resource_Shared extends Smarty_Resource_Custom { | ||||||
| { |  | ||||||
|     if ($tpl_source = io_load_file(SHARED_TPLS . $tpl_name)) { |  | ||||||
|         return true; |  | ||||||
|     } else { |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| function smarty_resource_shared_timestamp($tpl_name, &$tpl_timestamp, &$smarty) | 	/** | ||||||
| { | 	 * | ||||||
|     if (file_exists(SHARED_TPLS . $tpl_name)) { | 	 * {@inheritdoc} | ||||||
|         $tpl_timestamp = filemtime(SHARED_TPLS . $tpl_name); | 	 * @see Smarty_Resource_Custom::fetch() | ||||||
|         return true; | 	 */ | ||||||
|     } else { | 	protected function fetch($name, &$source, &$mtime) { | ||||||
|         return false; | 		if ($source = io_load_file(SHARED_TPLS . $name)) { | ||||||
|     } | 			$mtime = filemtime(SHARED_TPLS . $name); | ||||||
| } | 		} else { | ||||||
| 
 | 			$source = null; | ||||||
| function smarty_resource_shared_secure($tpl_name, &$smarty) | 			$mtime = null; | ||||||
| { | 		} | ||||||
|     return true; | 	} | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function smarty_resource_shared_trusted($tpl_name, &$smarty) |  | ||||||
| { |  | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| ?> 
 |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 azett
						azett