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/Contacts.php
<?
////////////////////////////////////////////////////////////////////////////////////////
// Class: Contacts
// Purpose: Κλάση επαφών
///////////////////////////////////////////////////////////////////////////////////////

class Contacts
{
	private $connector;
	private $system;
	private $translator;
	private $temp;

	public function __construct($db, $system, $translator)
	{
		$this->connector = $db;
		$this->system = $system;
		$this->translator = $translator;
	}
	
	//	Επιστρέφει πίνακα με τα στοιχεία των πεδίων της κατηγορίας με το δοσμένο id
	public function getCategoryById($id)
	{
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE id=$id");
		$myrow = $this->connector->fetchArray($result);
		
		return $myrow;
	}
	
	// Επιστρέφει πίνακα με όλες τις κατηγορίες επαφών
	public function getCategoriesArray()
	{
		$contact_categories = array();
		$result = $this->connector->query("SELECT * FROM contacts_cats");
		while ($myrow = $this->connector->fetchArray($result))
		{
			$contact_categories[$myrow["id"]] = $myrow;
		}

		return $contact_categories;
	}
	
	// Εισάγει μια νέα κατηγορία με γονέα $parent_id και στη σειρά εμφάνισης $sort_order. Οι υποκατηγορίες που ακολουθούν μετατοπίζονται μια θέση παρακάτω.
	public function insertCategory($title, $description, $parent_id, $state, $sort_order, $access)
	{
		// Μετατόπιση προς τα κάτω κατηγοριών αν είναι απαραίτητο για την εισαγωγή του νέου ενθέματος στη θέση του
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE sort_order>=".$sort_order." and parent_id=".$parent_id." ORDER BY sort_order, id");
		$pos = $sort_order;
		while ($myrow = $this->connector->fetchArray($result))
		{
			++$pos;
			$this->connector->query("UPDATE contacts_cats SET sort_order=".$pos." WHERE id=".$myrow["id"]);
		}
				
		// Εισαγωγή του νέας κατηγορίας
		$result = $this->connector->query("INSERT INTO contacts_cats (title, description, parent_id, state, sort_order, access) VALUES ('$title', '$description', $parent_id, $state, $sort_order, $access)");
		$id = $this->connector->getLastInsertedId();
		
		return $result;
	}
	
	// Ενημέρωση της κατηγορίας με το δεδομένο id
	public function updateCategory($id, $title, $description, $parent_id, $state, $sort_order, $access)
	{
		// Εύρεση των παλιών sort_order και position
		$myrow = $this->getCategoryById($id);
		$old_sort_order = $myrow["sort_order"];
		$old_parent_id = $myrow["parent_id"];
		
		// Μετατόπιση προς τα κάτω κατηγοριών αν είναι απαραίτητο για την τοποθέτηση της κατηγορίας στη νέα της θέση
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE sort_order>=".$sort_order." and parent_id=".$parent_id." ORDER BY sort_order, id");
		$pos = $sort_order;
		while ($myrow = $this->connector->fetchArray($result))
		{
			++$pos;
			$this->connector->query("UPDATE contacts_cats SET sort_order=".$pos." WHERE id=".$myrow["id"]);
		}
								
		$result = $this->connector->query("UPDATE contacts_cats SET title='$title', description='$description', parent_id=$parent_id, state=$state, sort_order=$sort_order, access=$access WHERE id=$id");	
		return $result;
	}
	
	// Διαγραφή κατηγορίας με το συγκεκριμένο id
	public function deleteCategory($id)
	{
		$myrow = $this->getCategoryById($id);
		$catpath = $myrow["catpath"];
		
		$result = $this->connector->query("DELETE FROM contacts_cats WHERE id=$id");
		if ($result==true)
		{
			$this->translator->deleteAllTranslations("contacts_cats", $id); // Διαγραφή μεταφράσεων
		}
		
		return $result;
	}

	//	Επιστρέφει πίνακα με τις υποκατηγορές που ανήκουν στη δοσμένη κατηγορία. Αν $exclude_empty=true δεν επιστρέφονται οι άδειες, χωρίς φωτογραφίες κατηγορίες
	// Αν $order_by=0 οι υποκακατηγορίες ταξινομούνται βάση του αριθμού ταξινόμησης, ενώ αν $order_by=1 βάση του τίτλου
	public function getSubCategories($category_id, $order_by=0, $exclude_empty=false)
	{
		if ($order_by==0)
			$order_by = "sort_order ASC, title ASC";
		else
			$order_by = "title ASC, sort_order ASC";

		$subcategories_array = array();
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE parent_id=$category_id ORDER BY $order_by");
		while ($myrow = $this->connector->fetchArray($result))
		{
			if ($exclude_empty==false or ($exclude_empty==true and $this->getCategoryTotalNumOfContacts($myrow["id"], true)>0))
				$subcategories_array[] = $myrow;
		}
		
		return $subcategories_array;
	}
	
	// CMS: Δημιουργεί και επιστρέφει σε μορφή HTML options list όλη τη δομή κατηγοριών ξεκινώντας από τον γονέα $parent_id. To option με id κατηγορίας $disabled_category γίνεται disabled (μη επιλέξιμο)
	public function buildCategoriesOptionList($parent_id, $selected_categories_array=array(), $disabled_category=0, $depth=0)
	{		
		$html = '';

		++$depth;
		
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE parent_id=$parent_id ORDER BY sort_order ASC");
		while ($myrow = $this->connector->fetchArray($result))
		{
			if ($myrow['id']==$disabled_category)
				continue;

			$spaces="";
			for ($i=1; $i<$depth; ++$i)
			{
				$spaces.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
			}
			$new_option = '<option value='.$myrow['id'];				

			if ($depth>1)
				$new_option .= ' style="background: url(images/categories_tree_line.png) no-repeat '.(($depth-1)*15-9).'px 1px;"';
			
			if (in_array($myrow['id'], $selected_categories_array))
				$new_option .= ' selected';
			
			if ($myrow['id']==$disabled_category)
				$new_option .= ' disabled';

			$new_option .='>'.$spaces.$myrow['title'].'</option>';
			
			$html .= $new_option;			
			$html .= $this->buildCategoriesOptionList($myrow['id'], $selected_categories_array, $disabled_category, $depth); // find childitems recursively
		}

		return $html;
	}

	// Επιστρέφει array με τα δεδομένα των εγγραφών που θα προβληθούν στον html πίνακα δεδομένων. Υποκατηγορίες υποκατηγοριών αντλούνται αναδρομικά
	// έτσι ώστε αμέσως μετά μια κατηγορία να ακολουθούν όλες οι υποκατηγορίες και οι υποκατηγορίες των υποκατηγοριών κ.ο.κ.
	public function buildCategoriesDataTableArray($state, $table_ordering, $order_type, $parent_id=0, $depth=0)
	{
		$data_array = array();
		$children_array = array();

		$where = "WHERE parent_id=$parent_id";
		if ($state!=-1)
			$where .= " and state=$state";

		$sql = "SELECT * FROM contacts_cats ".$where." ORDER BY ".$table_ordering." ".$order_type;
		$result = $this->connector->query($sql);

		while ($myrow = $this->connector->fetchArray($result))
		{		
			$myrow["depth"] = $depth;
			$data_array[] = $myrow;
			$children_array = $this->buildCategoriesDataTableArray($state, $table_ordering, $order_type, $myrow["id"], ($depth+1));
			if (count($children_array)>0)
				$data_array = array_merge($data_array, $children_array);
		}
		
		return $data_array;
	}

	// Επιστρέφει array με τα δεδομένα των εγγραφών που θα προβληθούν στον html πίνακα δεδομένων. Υποκατηγορίες υποκατηγοριών αντλούνται αναδρομικά
	// έτσι ώστε αμέσως μετά μια κατηγορία να ακολουθούν όλες οι υποκατηγορίες και οι υποκατηγορίες των υποκατηγοριών κ.ο.κ. Αν υπάρχουν μεταφράσεις αντλούνται σύμφωνα με το policy
	public function buildCategoriesDataTableArrayTranslated($state, $table_ordering, $order_type, $parent_id=0, $depth=0)
	{
		$data_array = array();
		$children_array = array();

		$where = "WHERE parent_id=$parent_id";
		if ($state!=-1)
			$where .= " and state=$state";

		$sql = "SELECT * FROM contacts_cats ".$where." ORDER BY ".$table_ordering." ".$order_type;
		$result = $this->connector->query($this->translator->fixSqlStatement($sql, $this->translator->current_lang["id"], "contacts_cats", $this->system->general_settings["untranslated_contacts_policy"]));

		while ($myrow = $this->connector->fetchArray($result))
		{		
			if ($this->translator->current_lang["id"] != $this->translator->default_lang["id"])	 // Αν δεν έχουμε Default γλώσσα
			{
				$translated_fields = $this->translator->fetchTranslatedContent($this->translator->current_lang["id"], $myrow["id"], "contacts_cats");
				foreach ($translated_fields as $field_name=>$value)
				{
					$myrow[$field_name] = $value;
				}
			}

			$myrow["depth"] = $depth;
			$data_array[] = $myrow;
			$children_array = $this->buildCategoriesDataTableArrayTranslated($state, $table_ordering, $order_type, $myrow["id"], ($depth+1));
			if (count($children_array)>0)
				$data_array = array_merge($data_array, $children_array);
		}
		
		return $data_array;
	}

	// Επιστρέφει τον αριθμό σειράς της πρώτης στην σειρά κατηγορίας που έχουν κοινό το δεδομένο γονέα (parent_id)
	public function minSortOrderCategory($parent_id)
	{
		$result = $this->connector->query("SELECT MIN(sort_order) FROM contacts_cats WHERE parent_id=".$parent_id);
		$myrow = $this->connector->fetchArray($result);
		return $myrow["MIN(sort_order)"];
	}

	// Επιστρέφει τον αριθμό σειράς της τελευταίας στην σειρά κατηγορίας που έχουν κοινό το δεδομένο γονέα (parent_id)
	public function maxSortOrderCategory($parent_id)
	{
		$result = $this->connector->query("SELECT MAX(sort_order) FROM contacts_cats WHERE parent_id=".$parent_id);
		$myrow = $this->connector->fetchArray($result);
		return $myrow["MAX(sort_order)"];
	}

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

	// Μετακινεί την κατηγορία με το συγκεκριμένο id μια θέση πάνω ($direction="up") ή κάτω ($direction="down") σε σχέση με τα υπόλοιπες κατηγορίες με τον ίδιο γονέα
	public function moveCategory($id, $direction)
	{
		if ($myrow = $this->getCategoryById($id))
		{
			if ($direction=="up")
				$result2 = $this->connector->query("SELECT * FROM contacts_cats WHERE sort_order<".$myrow["sort_order"]." and parent_id=".$myrow["parent_id"]." ORDER BY sort_order DESC LIMIT 0,1");
			else
				$result2 = $this->connector->query("SELECT * FROM contacts_cats WHERE sort_order>".$myrow["sort_order"]." and parent_id=".$myrow["parent_id"]." ORDER BY sort_order ASC LIMIT 0,1");

			if ($myrow2 = $this->connector->fetchArray($result2))
			{
				$tmp_order = $myrow2["sort_order"];
				$this->connector->query("UPDATE contacts_cats SET sort_order=".$myrow["sort_order"]." WHERE id=".$myrow2["id"]);
				$this->connector->query("UPDATE contacts_cats SET sort_order=".$tmp_order." WHERE id=".$id);
			}
			
			$this->reorderCategories($myrow["parent_id"]);
		}
	}
	
	// Εναλλάσει τη κατάσταση (ενεργή/ανενεργή) της κατηγορίαςμε το συγκεκριμένο id
	public function toggleCategoryState($id)
	{
		$myrow = $this->getCategoryById($id);
		
		if ($myrow["state"]==1)
			$new_state = 0;
		else
			$new_state = 1;

		$result = $this->connector->query("UPDATE contacts_cats SET state='$new_state' WHERE id=".$myrow["id"]);
		return $result;
	}

	// Εναλλάσει το επίπεδο πρόσβασης (0=Δημόσιο, 1=Μέλη) της κατηγορίας με το συγκεκριμένο id
	public function toggleCategoryAccess($id)
	{
		$myrow = $this->getCategoryById($id);
		
		if ($myrow["access"]==1)
			$new_access_level = 0;
		else
			$new_access_level = 1;

		$result = $this->connector->query("UPDATE contacts_cats SET access='$new_access_level' WHERE id=".$myrow["id"]);
		return $result;
	}
	
	// Ελέγχει αν μια κατηγορία είναι γονέας άλλων υποκατηγοριών
	public function hasSubCategories($id)
	{
		$result = $this->connector->query("SELECT * FROM contacts_cats WHERE parent_id=".$id);
		if ($this->connector->getNumRows($result)>0)
			return true;
		else
			return false;
	}
	
	// Αποθηκεύει στον πίνακα $cat_path = array('id' => array(), 'title' => array()); το πλήρες path (από το παιδί μέχρι τον αρχικό πατέρα) της δοσμένης κατηγορίας
	public function buildCategoryPath($cat_id, $current_lang_id=0)
	{
		global $current_lang;

		$cat_path = array();
		$next_cat_id = "";
		$next_cat_title = "";

		$cur_cat_id = $cat_id;
		$result = $this->connector->query("SELECT * FROM contacts_cats 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"], "contacts_cats","title");
				if (count($translated_fields)>0 and $translated_fields["title"]!="")	// Αν υπάρχει μετάφραση στην τρέχουσα γλώσσα
				{
					$myrow["title"] = $translated_fields["title"];
				}			
			}
			
			$cat_path[] = array('id'=>$myrow["id"], 'title'=>$myrow["title"]);

			if (($cur_cat_id=$myrow["parent_id"])==0)
				break;
			
			$result = $this->connector->query("SELECT * FROM contacts_cats WHERE id=$cur_cat_id");
		}
		
		$cat_path = array_reverse($cat_path);
		
		return $cat_path;
	}

	// Επιστρέφει το συνολικό αριθμό επαφών που περιέχονται στην κατηγορία. Αν το $subcats είναι True προσμετράει και τις επαφές των υποκατηγοριών της
	public function getCategoryTotalNumOfContacts($category_id, $subcats=true, $total_photos=0)
	{
		$result = $this->connector->query("SELECT * FROM contacts WHERE category_id=$category_id");
		$total_items = $this->connector->getNumRows($result);
		
		if ($subcats==true)
		{
			$result = $this->connector->query("SELECT * FROM contacts_cats WHERE parent_id=$category_id");
			while ($myrow = $this->connector->fetchArray($result))
			{
				$total_items = $total_items + $this->getCategoryTotalNumOfContacts($myrow["id"], $subcats, $total_items);
			}
		}

		return $total_items;
	}
		


// ----------------------------------------------------------------------------------------------------------------------------------------------------------

	

	// Επιστρέφει τα στοιχεία της επαφής με το δεδομένο id
	public function getContactById($id)
	{
		$result = $this->connector->query("SELECT * FROM contacts WHERE id=".$id);
		return $this->connector->fetchArray($result);
	}	

	// Εισάγει ένα νέα επαφή με τη σειρά εμφάνισης $sort_order. Οι επαφές που ακολουθούν μετατοπίζονται μια θέση παρακάτω.
	public function insertContact($category_id, $title, $address, $city, $country, $zipcode, $tel, $fax, $cellphone, $email, $website, $extra_info, $image, $state, $sort_order, $access)
	{
		// Μετατόπιση προς τα κάτω επαφών αν είναι απαραίτητο για την εισαγωγή της νέας επαφής στη θέση της
		$result = $this->connector->query("SELECT * FROM contacts WHERE sort_order>=".$sort_order." and category_id=".$category_id." ORDER BY sort_order, id");
		$pos = $sort_order;
		while ($myrow = $this->connector->fetchArray($result))
		{
			++$pos;
			$this->connector->query("UPDATE contacts SET sort_order=".$pos." WHERE id=".$myrow["id"]);
		}

		// Εισαγωγή της νέας επαφής
		$result = $this->connector->query("INSERT INTO contacts (category_id, title, address, city, country, zipcode, tel, fax, cellphone, email, website, extra_info, image, state, sort_order, access) VALUES ($category_id, '$title', '$address', '$city', '$country', '$zipcode', '$tel', '$fax', '$cellphone', '$email', '$website', '$extra_info', '$image', $state, $sort_order, $access)");
		return $result;
	}

	// Ενημέρωση της επαφής με το δεδομένο id
	public function updateContact($id, $category_id, $title, $address, $city, $country, $zipcode, $tel, $fax, $cellphone, $email, $website, $extra_info, $image, $state, $sort_order, $access)
	{
		// Εύρεση των παλιών sort_order και category_id
		$myrow = $this->getContactById($id);
		$old_sort_order = $myrow["sort_order"];
		$old_category_id = $myrow["category_id"];
		
		// Μετατόπιση προς τα κάτω επαφών αν είναι απαραίτητο για την τοποθέτηση της επαφής στη νέα της θέση
		if ($sort_order!=$old_sort_order or $category_id!=$old_category_id)
		{
			$result = $this->connector->query("SELECT * FROM contacts WHERE sort_order>=".$sort_order." and category_id=".$category_id." ORDER BY sort_order, id");
			$pos = $sort_order;
			while ($myrow = $this->connector->fetchArray($result))
			{
				++$pos;
				$this->connector->query("UPDATE contacts SET sort_order=".$pos." WHERE id=".$myrow["id"]);
			}
		}
				
		$result = $this->connector->query("UPDATE contacts SET category_id=$category_id, title='$title', address='$address', city='$city', country='$country', zipcode='$zipcode', tel='$tel', fax='$fax', cellphone='$cellphone', email='$email', website='$website', extra_info='$extra_info', image='$image', state=$state, sort_order=$sort_order, access=$access WHERE id=$id");	
		return $result;
	}

	// Διαγραφή επαφής με το συγκεκριμένο id
	public function deleteContact($id)
	{
		$result = $this->connector->query("DELETE FROM contacts WHERE id=$id");
		if ($result==true)
		{
			$this->translator->deleteAllTranslations("contacts", $id); // Διαγραφή μεταφράσεων
		}

		return $result;
	}

	// Επαναταξινομεί με συνεχόμενο αύξοντα αριθμό τις επαφές που βρίσκονται στη κατηφορία $category_id
	public function reorderContacts($category_id)
	{
		$result = $this->connector->query("SELECT * FROM contacts WHERE category_id=".$category_id." ORDER BY sort_order, id");
		$pos=0;
		while ($myrow = $this->connector->fetchArray($result))
		{
			++$pos;
			$this->connector->query("UPDATE contacts SET sort_order=".$pos." WHERE id=".$myrow["id"]);
		}						
	}

	// Επιστρέφει πίνακα με όλες τις επαφές ταξινομημένα με βάση το όνομά τους
	public function getContactsOrderedByName()
	{
		$contacts_array = array();
		$result = $this->connector->query("SELECT * FROM contacts ORDER BY title ASC");
										
		while ($myrow = $this->connector->fetchArray($result))
		{
			$contacts_array[] = $myrow;
		}

		return $contacts_array;
	}

	// Επιστρέφει πίνακα με όλες τις επαφές ταξινομημένες με βάση κατηγορία και μετά τη θέση τους
	public function getContactsOrderedByCategory()
	{
		$contacts_array = array();
		$result = $this->connector->query("SELECT * FROM contacts ORDER BY category_id ASC, sort_order ASC");
										
		while ($myrow = $this->connector->fetchArray($result))
		{
			$contacts_array[] = $myrow;
		}

		return $contacts_array;
	}

	// Επιστρέφει πίνακα με όλες τις επαφές της δεδομένης κατηγορίας
	public function getCategoryContacts($category_id, $order_by = 'sort_order ASC')
	{
		$contacts_array = array();
		$result = $this->connector->query("SELECT * FROM contacts WHERE category_id=".$category_id." ORDER BY ".$order_by);
										
		while ($myrow = $this->connector->fetchArray($result))
		{
			$contacts_array[] = $myrow;
		}

		return $contacts_array;
	}

	// Επιστρέφει πίνακα με όλες τις επαφές της δεδομένης κατηγορίας. Αν υπάρχουν μεταφράσεις αντλούνται σύμφωνα με το policy
	public function getCategoryContactsTranslated($category_id, $order_by = 'sort_order ASC')
	{
		$contacts_array = array();
		
		$sql = "SELECT * FROM contacts WHERE category_id=".$category_id." and state=1 ORDER BY ".$order_by;
		$result = $this->connector->query($this->translator->fixSqlStatement($sql, $this->translator->current_lang["id"], "contacts", $this->system->general_settings["untranslated_contacts_policy"]));
										
		while ($myrow = $this->connector->fetchArray($result))
		{
			if ($this->translator->current_lang["id"] != $this->translator->default_lang["id"])	 // Αν δεν έχουμε Default γλώσσα
			{
				$translated_fields = $this->translator->fetchTranslatedContent($this->translator->current_lang["id"], $myrow["id"], "contacts");
				foreach ($translated_fields as $field_name=>$value)
				{
					$myrow[$field_name] = $value;
				}
			}

			$contacts_array[] = $myrow;
		}

		return $contacts_array;
	}

	// Επιστρέφει τον αριθμό σειράς της πρώτης στην σειρά επαφής της δοσμένης κατηγορίας
	public function minSortOrderContact($category_id)
	{
		$result = $this->connector->query("SELECT MIN(sort_order) FROM contacts WHERE category_id=".$category_id);
		$myrow = $this->connector->fetchArray($result);
		return $myrow["MIN(sort_order)"];
	}

	// Επιστρέφει τον αριθμό σειράς της τελευταίας στην σειρά επαφής της δοσμένης κατηγορίας
	public function maxSortOrderContact($category_id)
	{
		$result = $this->connector->query("SELECT MAX(sort_order) FROM contacts WHERE category_id=".$category_id);
		$myrow = $this->connector->fetchArray($result);
		return $myrow["MAX(sort_order)"];
	}
	
	// Εναλλάσει τη κατάσταση (ενεργό/ανενεργό) της επαφής με το συγκεκριμένο id
	public function toggleContactState($id)
	{
		$myrow = $this->getContactById($id);
		
		if ($myrow["state"]==1)
			$new_state = 0;
		else
			$new_state = 1;

		$result = $this->connector->query("UPDATE contacts SET state='$new_state' WHERE id=".$myrow["id"]);
		return $result;
	}

	// Εναλλάσει το επίπεδο πρόσβασης (0=Δημόσιο, 1=Μέλη) της επαφής με το συγκεκριμένο id
	public function toggleContactAccess($id)
	{
		$myrow = $this->getContactById($id);
		
		if ($myrow["access"]==1)
			$new_access_level = 0;
		else
			$new_access_level = 1;

		$result = $this->connector->query("UPDATE contacts SET access='$new_access_level' WHERE id=".$myrow["id"]);
		return $result;
	}
	
	// Μετακινεί την επαφή με το συγκεκριμένο id μια θέση πάνω ($direction="up") ή κάτω ($direction="down") σε σχέση με τις υπόλοιπες επαφές στην ίδια κατηγορία
	public function moveContact($id, $direction)
	{
		if ($myrow = $this->getContactById($id))
		{
			if ($direction=="up")
				$result2 = $this->connector->query("SELECT * FROM contacts WHERE sort_order<".$myrow["sort_order"]." and category_id=".$myrow["category_id"]." ORDER BY sort_order DESC LIMIT 0,1");
			else
				$result2 = $this->connector->query("SELECT * FROM contacts WHERE sort_order>".$myrow["sort_order"]." and category_id=".$myrow["category_id"]." ORDER BY sort_order ASC LIMIT 0,1");

			if ($myrow2 = $this->connector->fetchArray($result2))
			{
				$tmp_order = $myrow2["sort_order"];
				$this->connector->query("UPDATE contacts SET sort_order=".$myrow["sort_order"]." WHERE id=".$myrow2["id"]);
				$this->connector->query("UPDATE contacts SET sort_order=".$tmp_order." WHERE id=".$id);
			}
			
			$this->reorderContacts($myrow["category_id"]);
		}
	}

	// Επιστρέφει πίνακα με όλες τις ενεργές επαφές
	public function getAllActiveContacts()
	{
		$contacts_array = array();
		
		$result = $this->connector->query("SELECT id, title as name, email FROM contacts WHERE state=1");
		
		while ($myrow = $this->connector->fetchAssoc($result))	
		{
			if ($myrow["email"]!="")
				$contacts_array[] = $myrow;
		}

		return $contacts_array;
	}

	// Επιστρέφει πίνακα με όλα τα email των επαφών
	public function getAllEmails()
	{
		$emails_array = array();
		
		$result = $this->connector->query("SELECT DISTINCT email FROM contacts");
		
		while ($myrow = $this->connector->fetchArray($result))	
		{
			if ($myrow["email"]!="")
				$emails_array[] = $myrow["email"];
		}

		return $emails_array;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit