403Webshell
Server IP : 195.130.67.5  /  Your IP : 216.73.216.231
Web Server : Microsoft-IIS/10.0
System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586
User : IUSR ( 0)
PHP Version : 7.4.19
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/inetpub/wwwroot/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/inetpub/wwwroot/includes/Categories.php
<?
////////////////////////////////////////////////////////////////////////////////////////
// Class: Categories
// Purpose: Κλάση διαχείρισης κατηγοριών
///////////////////////////////////////////////////////////////////////////////////////
require_once('Translator.php');

class Categories
{
	public $category_settings;
	public $menuData;
	private $connector;
	private $translator;

	public function __construct($db, $current_lang_id=0, $untranslated_categories_policy=0)
	{
		$this->connector = $db;
		$this->translator = new Translator($db);
		
		if ($current_lang_id!=0)
			$this->menuData = $this->buildMenuData($current_lang_id, $untranslated_categories_policy);
	}

	// Καθορισμός της τρέχουσας κατηγορίας και των παραμέτρων της
	public function defineCurrentCategorySettings($cat_id, $id)
	{
		// Καθορισμός της τρέχουσας κατηγορίας
		if ($cat_id==0 and $id!=0)
		{
				$result = $this->connector->query("SELECT * FROM content WHERE id=$id");
				if ($myrow = $this->connector->fetchArray($result))
					$cat_id = $myrow["category_id"];
		}
		
		if ($this->menuData['items'][$cat_id]!=NULL)  // Αν το $cat_id αντιστοιχεί σε υπάρχουσα κατηγορία
		{
			$this->category_settings = $this->menuData['items'][$cat_id];
		}
		else  // Εαν δεν υπάρχει κατηγορία με το συγκεκριμένο id γύρνα στην default κατηγορία
		{
			$result = $this->connector->query("SELECT * FROM categories WHERE default_cat=1");
			if (!($myrow = $this->connector->fetchArray($result)))  // Αν δεν υπάρχει default κατηγορία, όρισε σαν default την πρώτη στη σειρά
			{
				$result = $this->connector->query("SELECT * FROM categories WHERE parent_id=0 ORDER BY sort_order ASC LIMIT 0,1");
				if ($myrow = $this->connector->fetchArray($result))
				{
					$this->connector->query("UPDATE categories SET default_cat=1 WHERE id=".$myrow["id"]);
				}
				else
				{
					return false;
				}
			}
			$this->category_settings = $this->menuData['items'][$myrow["id"]];
		}

		// Αν τελικά δε βρέθηκε καμία κατηγορία ως τρέχουσα (πιθανόν να μην έχει δημιουργηθεί καμία κατηγορία ακόμα) βάλε ως τρέχουσα κατηγορία την 1
		if (empty($this->category_settings["id"]))
		{
			$this->category_settings["id"] = 1;
			$this->category_settings["parent_id"] = 0;
			$this->category_settings["title"] = "";
			$this->category_settings["menu_type"] = 1;
			$this->category_settings["articles_layout"] = "blog";
			$this->category_settings["blog_head_articles"] = 0;
			$this->category_settings["blog_article_rows"] = 1;
			$this->category_settings["list_show_date"] = 1;
			$this->category_settings["list_show_author"] = 1;
			$this->category_settings["articles_per_page"] = 5;
			$this->category_settings["articles_sort_order"] = 0;
			$this->category_settings["access"] = 0;
		}

		return $this->category_settings;
	}

	//	Επιστρέφει πίνακα με τα στοιχεία των πεδίων της κατηγορίας με το δοσμένο id
	public function getCategoryById($id)
	{
		$result = $this->connector->query("SELECT * FROM categories WHERE id=$id");
		$myrow = $this->connector->fetchArray($result);
		
		return $myrow;
	}
	
	// Προσθέτει νέα κατηγορία κάτω από τη δοσμένη γονική κατηγορία (parent_id) και στο τέλος των ήδη υπαρχόντων υποκατηγοριών και επιστρέφει το id της νέας κατηγορίας
	public function insertCategory($parent_id, $new_category_title)
	{
		$result = $this->connector->query("SELECT MAX(sort_order) FROM categories WHERE parent_id=".$parent_id);
		$myrow = $this->connector->fetchArray($result);
		$new_sort_number = $myrow["MAX(sort_order)"] + 1;

		$result = $this->connector->query("INSERT INTO categories (parent_id, sort_order, title, menu_type, show_submenu) VALUES ('$parent_id','$new_sort_number','$new_category_title',1,0)");
		
		return $result;	
	}
	
	// Ενημερώνει στα πεδία μιας κατηγορίας
	public function updateCategory($id, $title, $description, $internal_link, $external_link, $show_submenu, $menu_type, $show_in_primarymenu, $picture, $articles_per_page, $articles_sort_order, $contact_type, $contact_id, $contact_category_id, $contact_parameters, $multiple_cat_ids, $articles_layout, $blog_head_articles, $blog_article_rows, $list_show_date, $list_show_author, $auth_page_type, $search_in, $access, $photogallery_id, $classname, $show_rss_link)
	{
		$result = $this->connector->query("UPDATE categories SET title='$title', description='$description', internal_link=$internal_link, external_link='$external_link', show_submenu='$show_submenu', menu_type='$menu_type', show_in_primarymenu='$show_in_primarymenu', picture='$picture', articles_per_page='$articles_per_page', articles_sort_order='$articles_sort_order', contact_type=$contact_type, contact_id=$contact_id, contact_category_id=$contact_category_id, contact_parameters='$contact_parameters', multiple_cat_ids='$multiple_cat_ids', articles_layout='$articles_layout', blog_head_articles=$blog_head_articles, blog_article_rows=$blog_article_rows, list_show_date=$list_show_date, list_show_author=$list_show_author, auth_page_type=$auth_page_type, search_in=$search_in, access=$access, photogallery_id=$photogallery_id, classname='$classname', show_rss_link=$show_rss_link WHERE id=$id");
		
		return $result;
	}
	
	// Διαγράφει την κατηγορία με συγκεκριμένο id
	public function deleteCategory($id)
	{
		$result = $this->connector->query("DELETE FROM categories WHERE id=".$id);
		return $result;
	}

	// Ελέγχει αν μια κατηγορία είναι γονέας άλλων υποκατηγοριών. Αν δε δοθεί η παράμετρος id ελέγχεται η τρέχουσα κατηγορία
	public function hasSubCategories($id="")
	{
		if ($id=="")
		$id = $this->category_settings["id"];

		$result = $this->connector->query("SELECT * FROM categories WHERE parent_id=".$id);
		if ($this->connector->getNumRows($result)>0)
			return true;
		else
			return false;
	}
		
	// Επαναταξινομεί με συνεχόμενο αύξοντα αριθμό τις κατηγορίες με το δοσμένο κοινό γονέα (parent_id)
	public function reorderCategories($parent_id)
	{
		$result = $this->connector->query("SELECT * FROM categories WHERE parent_id=".$parent_id." ORDER BY sort_order, title");
		$pos = 0;
		while ($myrow = $this->connector->fetchArray($result))
		{
			++$pos;
			$this->connector->query("UPDATE categories SET sort_order=".$pos." WHERE id=".$myrow["id"]);
		}	
	}
	
	// Θέτει τη συγκεκριμένη κατηγορία ως default
	public function setDefaultCategory($id)
	{
		$result = $this->connector->query("UPDATE categories SET default_cat=0");
		if ($result==true)
			$result = $this->connector->query("UPDATE categories SET default_cat=1 WHERE id=".$id);
		
		return $result;
	}

	// Μετακινεί μια κατηγορία είτε αναταξινομώντας της με βάση τη νέα της τιμή sort_order είτε αλλάζοντας τον γονέα της με βάση τον νέο parent_id
	public function moveCategory($id, $new_parent_id, $new_sort_order)
	{
		// Αποθήκευσε το παλιό parent_id για επαναφορά σε περίπτωση αποτυχίας
		$myrow = $this->getCategoryById($id);
		$old_parent_id = $myrow["parent_id"];

		// Βγάλε προσωρινά την επιλεγμένη κατηγορία από τον αρχικό της γονέα
		$result = $this->connector->query("UPDATE categories SET parent_id=-1 WHERE id=$id");

		$this->reorderCategories($new_parent_id); // Επαναταξινόμησε τις υποκατηγορίες του νέου γονέα με συνεχόμενο αύξοντα αριθμό (ξεκινώντας από 1)
		
		// Βρες και αύξησε κατά ένα το sort_order όλων των υποκατηγοριών που έχουν sort_order μεγαλύτερο ή ίσο με το $new_sort_order της υπο μετακίνηση κατηγορίας
		$result = $this->connector->query("SELECT * FROM categories WHERE parent_id=$new_parent_id and sort_order>=$new_sort_order ORDER BY sort_order");						
		while ($myrow = $this->connector->fetchArray($result))
		{
			$this->connector->query("UPDATE categories SET sort_order=".($myrow["sort_order"]+1)." WHERE id=".$myrow["id"]);
		}			
		
		// Μετακίνησε την επιλεγμένη κατηγορία στον νέο γονέα και θέση
		$result = $this->connector->query("UPDATE categories SET parent_id=$new_parent_id, sort_order=$new_sort_order WHERE id=$id");
		
		// Επανέφερε την κατηγορία στην αρχική της θέση σε περίπτωση αποτυχίας
		if ($result==false)
			$this->connector->query("UPDATE categories SET parent_id=$old_parent_id WHERE id=$id");

		return $result;
	}

	// Καθορίζει τα κατάλληλα category_settings ανάλογα με το δοσμένο $action. Μετά το 100 όλα τα menu_type είναι ελεύθερα προς χρήση
	public function actionController($action)
	{
		if ($action=="login")
		{
			$this->category_settings["menu_type"] = 8;
			$this->category_settings["auth_page_type"] = 0;
			$this->category_settings["id"] = -1; // To id=-1 αντιστοιχεί σε σελίδα αυθεντικοποίησης
		}
		else if ($action=="register" or $action=="register_submit" or $action=="activation")
		{
			$this->category_settings["menu_type"] = 8;
			$this->category_settings["auth_page_type"] = 1;
			$this->category_settings["id"] = -1; // To id=-1 αντιστοιχεί σε σελίδα αυθεντικοποίησης
			$this->category_settings["title"] = _CREATE_ACCOUNT;
		}
		else if ($action=="lost_password_request" or $action=="submit_new_password")
		{
			$this->category_settings["menu_type"] = 8;
			$this->category_settings["auth_page_type"] = 3;
			$this->category_settings["id"] = -1; // To id=-1 αντιστοιχεί σε σελίδα αυθεντικοποίησης
			$this->category_settings["title"] = _LOST_PASSWORD_QUESTION;
		}
		else if ($action=="myaccount" and isset($_SESSION["userid"]))
		{
			$this->category_settings["menu_type"] = 8;
			$this->category_settings["auth_page_type"] = 2;
			$this->category_settings["id"] = -1;	 // To id=-1 αντιστοιχεί σε σελίδα αυθεντικοποίησης
			$this->category_settings["title"] = _USER_MYACCOUNT;
		}
		else if ($action=="search" and $this->category_settings["menu_type"] != 5)
		{
			$this->category_settings["menu_type"] = 5;
			$this->category_settings["id"] = -2;	 // To id=-2 αντιστοιχεί σε σελίδα αναζήτησης άρθρων
			$this->category_settings["title"] = _SEARCH;
		}
		else if ($action=="calendar")
		{
			$this->category_settings["menu_type"] = 101;
			$this->category_settings["id"] = -3;	 // To id=-3 αντιστοιχεί σε σελίδα αρχείου άρθρων
			$this->category_settings["title"] = _ARCHIVE;
			$this->category_settings["articles_layout"] = "list";
			$this->category_settings["articles_per_page"] = 99999;
			$this->category_settings["list_show_date"] = 1;
			$this->category_settings["list_show_author"] = 0;
		}
		else if ($action=="newsletter_register_submit" or $action=="subscriber_activation" or $action=="unsubscribe")
		{
			$this->category_settings["menu_type"] = 102;
			$this->category_settings["id"] = -4;	 // To id=-4 αντιστοιχεί σε σελίδα εγγραφής στο Newsletter
			$this->category_settings["title"] = _NEWSLETTER_REGISTRATION;
		}
		else if ($action=="searchtags")
		{
			$this->category_settings["menu_type"] = 103;
			$this->category_settings["id"] = -5;	 // To id=-5 αντιστοιχεί σε σελίδα προβολής άρθρων με συγκεκριμένο tag
			$this->category_settings["title"] = _TAGS;
		}

		return $this->category_settings;
	}

	// Φτιάχνει πίνακα με τα μενού (κατηγορίες) και τις διασυνδέσεις μεταξύ τους
	public function buildMenuData($current_lang_id, $untranslated_categories_policy)
	{
		$menuData = array('items' => array(), 'parents' => array());

		$sql = "SELECT * FROM categories WHERE 1 ORDER BY parent_id, sort_order, title";
		$result = $this->connector->query($this->translator->fixSqlStatement($sql, $current_lang_id, "categories", $untranslated_categories_policy));
		while ($menuItem = mysqli_fetch_assoc($result))
		{
			if ($current_lang_id != $this->translator->default_lang["id"])	 // Αν δεν έχουμε Default γλώσσα
			{
				$translated_fields = $this->translator->fetchTranslatedContent($current_lang_id, $menuItem["id"], "categories");
				if (count($translated_fields)>0)	// Αν υπάρχει μετάφραση στην τρέχουσα γλώσσα
				{
					$menuItem["title"] = $translated_fields["title"];
					$menuItem["description"] = $translated_fields["description"];
				}			
			}		
			
			$menuData['items'][$menuItem['id']] = $menuItem;
			$menuData['parents'][$menuItem['parent_id']][] = $menuItem['id'];
		}
		return $menuData;
	}
	
	// Δημιουργεί και επιστρέφει σε HTML όλη τη δομή ενός μενού (ul>li>ul>li κλπ) ξεκινώντας από τον γονέα $parent_id και φτάνοντας μέχρι βάθος $depth
	public function buildMenu($parent_id, $current_catpath = array(), $depth=9999)
	{
		$html = '';

		if (isset($this->menuData['parents'][$parent_id]) and $depth>0)
		{
			$html = '<ul class="nav_list">';
			foreach ($this->menuData['parents'][$parent_id] as $itemId)
			{
				if ($this->menuData['items'][$itemId]['access']==1 and $_SESSION["perm_frontend_view_registered_content"]==0)  // Δεν εμφανίζει το μενού αν είναι Ιδιωτικό και ο χρήστης δεν έχει εξουσιοδότηση
					continue;

				if (strstr($this->menuData['items'][$itemId]['link'],"?"))
					$param_mark="&";
				else
					$param_mark="?";

				$menu_class="";
				
				$menu_class ="";
				if ($this->menuData['items'][$itemId]['show_in_primarymenu']==0)
					$menu_class = 'noprimarymenu';
				if (in_array($itemId,$current_catpath))
				{
					if ($menu_class!="")
						$menu_class .= ' ';
					$menu_class .= 'active';
				}
				if (!empty($this->menuData['parents'][$itemId]) and count($this->menuData['parents'][$itemId])>0) // Ελέγχει αν η κατηγορία περιέχει υποκατηγορίες και θέτει την αντίστοιχη κλάση
				{
					if ($menu_class!="")
						$menu_class .= ' ';
					$menu_class .= 'has_submenus';
				}
				if ($this->menuData['items'][$itemId]['classname']!="")
				{
					if ($menu_class!="")
						$menu_class .= ' ';
					$menu_class .= $this->menuData['items'][$itemId]['classname'];
				}
				if ($menu_class!="")
					$menu_class = ' class="'.$menu_class.'"';

				if ($this->menuData['items'][$itemId]['menu_type']==3)
				{
					if ($this->menuData['items'][$itemId]['external_link']=="" or $this->menuData['items'][$itemId]['external_link']=="http://")
						$anchor_params = ' href="javascript:;"';
					else
					{
						$anchor_params = ' href="'.$this->menuData['items'][$itemId]['external_link'].'"';
						if (strstr($this->menuData['items'][$itemId]['external_link'],"http://"))
							$anchor_params .= ' target="_blank"';	
					}
				}
				else
					$anchor_params = ' href="index.php?cat_id='.$this->menuData['items'][$itemId]['id'].'"';

				$menu_picture = "";
				if ($this->menuData['items'][$itemId]['picture']!="")
				{
					if ($dimensions = getimagesize($this->menuData['items'][$itemId]['picture']))  // Ελέγχει αν υπάρχει το αρχείο, αν είναι εικόνα και επιστρέφει και τις διαστάσεις της
						$menu_picture = "<img src=".$this->menuData['items'][$itemId]['picture']." ".$dimensions[3]." />";
				}

				$html .= '<li'.$menu_class.'><a'.$anchor_params.'>'.$menu_picture.($menu_picture!=""?"<span>":"").$this->menuData['items'][$itemId]['title'].($menu_picture!=""?"</span>":"").'</a>';

				// find childitems recursively
				$html .= $this->buildMenu($itemId, $current_catpath, ($depth-1));

				$html .= '</li>';
			}
			$html .= '</ul>';
		}

		return $html;
	}
	
	// CMS: Δημιουργεί και επιστρέφει σε μορφή HTML options list όλη τη δομή ενός μενού ξεκινώντας από τον γονέα $parent_id
	public function buildControlMenu($parent_id, $selected_categories_array=array(), $disabled_category=0, $depth=0)
	{		
		$html = '';

		if (isset($this->menuData['parents'][$parent_id]))
		{
			++$depth;
			foreach ($this->menuData['parents'][$parent_id] as $itemId)
			{
				$spaces="";
				for ($i=0; $i<$depth; ++$i)
				{
					$spaces.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				}
				$new_option = '<option value='.$this->menuData['items'][$itemId]['id'];				

				if ($depth>1)
					$new_option .= ' style="background: url(images/categories_tree_line.png) no-repeat '.($depth*20-14).'px 1px;"';
				
				if (in_array($this->menuData['items'][$itemId]['id'], $selected_categories_array))
					$new_option .= ' selected';
				
				if ($this->menuData['items'][$itemId]['id']==$disabled_category)
					$new_option .= ' disabled';

				$new_option .='>'.$spaces.$this->menuData['items'][$itemId]['title'].'</option>';
				
				$html .= $new_option;
				// find childitems recursively
				$html .= $this->buildControlMenu($itemId, $selected_categories_array, $disabled_category, $depth);
				$html .= '</option>';
			}
		}

		return $html;
	} 
	
	// CMS: Δημιουργεί και επιστρέφει σε μορφή HTML ordered λίστας όλη τη δομή ενός μενού ξεκινώντας από τον γονέα $parent_id
	public function buildControlNestedListMenu($parent_id, $selected_categories_array, $disabled_category=0, $depth=0)
	{		
		if ($depth==0)
			$html = '<ol class="sortable">';
		else
			$html = '<ol>';
		
		if (isset($this->menuData['parents'][$parent_id]))
		{
			++$depth;
			foreach ($this->menuData['parents'][$parent_id] as $itemId)
			{
				$extra_style = '';
				if ($this->menuData['items'][$itemId]['default_cat'] == 1)
					$extra_style = 'default';
				
				if (in_array($this->menuData['items'][$itemId]['id'], $selected_categories_array))
					$extra_style .= ' selected';

				if ($extra_style!='')
					$extra_style = ' class="'.$extra_style.'"';
				
				$li = '<li id="cat_'.$this->menuData['items'][$itemId]['id'].'"><div'.$extra_style.'>'.$this->menuData['items'][$itemId]['title'];
				$li .= '<span class="actions"><img class="move" src="images/sortable_move.png" title="Μετακίνηση"><a href="#" class="add_category" title="Νέα υπο-κατηγορία"><img src="images/sortable_add_category.png"></a><a href="#" class="delete_category"title="Διαγραφή κατηγορίας"><img src="images/sortable_delete.png"></a><a href="#" class="default_category" title="Προεπιλεγμένη κατηγορία"><img src="images/icon_default.png"></a></span></div>';
				
				$html .= $li;
				// find childitems recursively
				$html .= $this->buildControlNestedListMenu($itemId, $selected_categories_array, $disabled_category, $depth);
				$html .= '</li>';
			}
		}
		
		$html .= '</ol>';
		
		return $html;
	}

	// Επιστρέφει έναν πίνακα με τα IDs όλων των υποκατηγοριών παιδιών της δοσμένης κατηγορίας
	public function findAllChildCategories($parent_id, $recurcivecall=0)
	{
		$html = "";
		
		if (isset($this->menuData['parents'][$parent_id]))
		{
			foreach ($this->menuData['parents'][$parent_id] as $itemId)
			{
				$html .= $this->menuData['items'][$itemId]['id']."#";
				// find childitems recursively
				$html .= $this->findAllChildCategories($itemId, 1);
			}
		}
		
		if ($recurcivecall==0)
		{
			$html = rtrim($html,"#");
			if ($html!="")
				return explode("#",$html);
			else
				return array();
		}
		else
			return $html;
	}

	// Αποθηκεύει στον πίνακα $cat_path = array('id' => array(), 'title' => array()); το πλήρες path (γονικές κατηγορίες μέχρι το root) της δοσμένης κατηγορίας
	public function buildCategoryPath($cat_id, $current_lang_id=0)
	{
		global $current_lang;

		$cat_path = array('id' => array(), 'title' => array());
		$next_cat_id = "";
		$next_cat_title = "";

		$cur_cat_id = $cat_id;
		$result = $this->connector->query("SELECT * FROM categories WHERE id=$cur_cat_id");
		$loop = 0;
		while ($myrow = $this->connector->fetchArray($result))
		{
			if ($current_lang_id!=0 and $current_lang_id != $this->translator->default_lang["id"])	 // Αν δεν έχουμε Default γλώσσα
			{
				$translated_fields = $this->translator->fetchTranslatedContent($current_lang_id, $myrow["id"], "categories","title");
				if (count($translated_fields)>0)	// Αν υπάρχει μετάφραση στην τρέχουσα γλώσσα
				{
					$myrow["title"] = $translated_fields["title"];
				}			
			}
			
			if ($loop==0)
			{
				$next_cat_id=$myrow["id"];
				$next_cat_title=$myrow["title"];
				++$loop;
			}
			else
			{
				$next_cat_id.="##".$myrow["id"];
				$next_cat_title.="##".$myrow["title"];
			}

			if (($cur_cat_id=$myrow["parent_id"])==0)
				break;
			$result = $this->connector->query("SELECT * FROM categories WHERE id=$cur_cat_id");
		}
		$cat_path['id'] = explode("##",$next_cat_id);
		$cat_path['id'] = array_reverse($cat_path['id']);
		$cat_path['title'] = explode("##",$next_cat_title);
		$cat_path['title'] = array_reverse($cat_path['title']);
		return $cat_path;
	}
	
	// Επιστρέφει σε μια μεταβλητή τον HTML κώδικα του breadcrumb
	public function buildBreadcrumb($cat_path)
	{
		$html='<ul><li class="home"><a href="index.php">'._HOME.'</a></li>';
		
		if ($this->category_settings["id"]<0)
			$html .= '<li><a href="index.php?'.$_SERVER["QUERY_STRING"].'">'.$this->category_settings["title"].'</a></li>';	
		else
		{
			for ($i=0; $i< count($cat_path['id']); ++$i) 
				$html .= '<li><a href="index.php?cat_id='.$cat_path['id'][$i].'">'.$cat_path['title'][$i].'</a></li>';	
		}
		
		if ($html=='<ul>')
			$html = '';
		else
			$html .= '</ul>';

		return $html;
	}

	// Δημιουργεί τον HTML κώδικα του μενού της σελιδοποίησης για τις κατηγορίες με πολλά άρθρα
	public function buildPagination($total_articles, $start)
	{
		$html = "";
		
		if ($total_articles>$this->category_settings["articles_per_page"])
		{
			$html .= "<ul>";

			if ($start==0)
			{
				$html .= '<li class="pagination_first"><span class="pagenav">« '._FIRST_PAGE.'</span></li>';
				$html .= '<li class="pagination_prev"><span class="pagenav">‹ '._PREV_PAGE.'</span></li>';
			}
			else
			{
				$html .= '<li class="pagination_first"><a href="index.php?cat_id='.$this->category_settings["id"].'&start=0" class="pagenav" title="'._FIRST_PAGE.'">« '._FIRST_PAGE.'</a></li>';
				$html .= '<li class="pagination_prev"><a href="index.php?cat_id='.$this->category_settings["id"].'&start='.($start-$this->category_settings["articles_per_page"]).'" class="pagenav" title="'._PREV_PAGE.'">‹ '._PREV_PAGE.'</a></li>';
			}
			
			$displayed_pagenumbers = 8; // Το μέγιστο πλήθος των αριθμών σελίδων (pagenumbers) που θα εμφανίζονται στο μενού της σελιδοποίησης 
			$total_pagenumbers = ceil($total_articles/$this->category_settings["articles_per_page"]);  // Ο συνολικός αριθμός σελίδων
			$current_pagenumber = $start/$this->category_settings["articles_per_page"] + 1; // Το τρέχον pagenumber
			$start_pagenumber = $current_pagenumber - floor($displayed_pagenumbers/2); // Το πρώτο εμφανιζόμενο pagenumber
			
			if ($start_pagenumber<1)
			{
				$start_pagenumber = 1;
			}
			
			if (($start_pagenumber + $displayed_pagenumbers) > $total_pagenumbers)
			{
				$stop_pagenumber = $total_pagenumbers;

				if ($total_pagenumbers < $displayed_pagenumbers)
				{
					$start_pagenumber = 1;
				}
				else
				{
					$start_pagenumber = $total_pagenumbers - $displayed_pagenumbers + 1;
				}
			}
			else
			{
				$stop_pagenumber = $start_pagenumber + $displayed_pagenumbers - 1;
			}


			for ($i=$start_pagenumber; $i<=$stop_pagenumber ; ++$i)
			{
				if ((($i-1)*$this->category_settings["articles_per_page"])==$start)
				{
					$html .= '<li><span class="pagenav">'.$i.'</span></li>';
				}
				else
				{
					$html .= '<li><a href="index.php?cat_id='.$this->category_settings["id"].'&start='.(($i-1)*$this->category_settings["articles_per_page"]).'" class="pagenav" title="'.$i.'">'.$i.'</a></li>';
				}
			}

			$last_page_articles_num = $total_articles%$this->category_settings["articles_per_page"];
			if ($last_page_articles_num==0)
			{
				$last_page_articles_num = $this->category_settings["articles_per_page"];
			}

			if (($start + $last_page_articles_num) == $total_articles)
			{
				$html .= '<li class="pagination_next"><span class="pagenav">'._NEXT_PAGE.' ›</span></li>';
				$html .= '<li class="pagination_last"><span class="pagenav">'._LAST_PAGE.' »</span></li>';
			}
			else
			{
				$html .= '<li class="pagination_next"><a href="index.php?cat_id='.$this->category_settings["id"].'&start='.($start+$this->category_settings["articles_per_page"]).'" class="pagenav" title="'._NEXT_PAGE.'">'._NEXT_PAGE.' ›</a></li>';
				$html .= '<li class="pagination_last"><a href="index.php?cat_id='.$this->category_settings["id"].'&start='.($total_articles-$last_page_articles_num).'" class="pagenav" title="'._LAST_PAGE.'">'._LAST_PAGE.' »</a></li>';
			}
			
			$html .= "</ul>";
			
			$html .= '<p class="counter">'._PAGE.' '.($start/$this->category_settings["articles_per_page"]+1).' '._OF.' '.ceil($total_articles/$this->category_settings["articles_per_page"]).'</p>';
		}

		return $html;
	}

	public function getContentType($menu_type)
	{
		if ($menu_type==0 or $menu_type==1 or $menu_type==7)
			return 0;
		else if ($menu_type==4)
			return 1;
		else
			return -1;
	}

	// Επιστρέφει πίνακα με τις τιμές του πεδίου contact_parameters της κατηγορίας
	public function getContactParametersArray()
	{	
		if ($this->category_settings["contact_parameters"]!="")
			return explode(",",$this->category_settings["contact_parameters"]);
		else
			return array(1,1,1,1,1,1,1,1,1);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit