| 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/Civil/includes/ |
Upload File : |
<?
////////////////////////////////////////////////////////////////////////////////////////
// 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.=" ";
}
$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;
}
}