From: Janusz Dobrowolski Date: Tue, 11 May 2010 12:27:55 +0000 (+0000) Subject: Initialversion of contacts db support. X-Git-Tag: v2.4.2~19^2~879 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=4a2c4a82ae39f874b2d07bfd4811b9c7ce832ca5;p=fa-stable.git Initialversion of contacts db support. --- diff --git a/includes/db/crm_contacts_db.inc b/includes/db/crm_contacts_db.inc new file mode 100644 index 00000000..1f4051a6 --- /dev/null +++ b/includes/db/crm_contacts_db.inc @@ -0,0 +1,267 @@ +. +***********************************************************************/ + +function add_crm_person($ref, $name, $name2, $address, $phone, $phone2, $fax, $email, $lang, $notes, + $cat_ids=null, $entity=null) +{ + $sql = "INSERT INTO ".TB_PREF."crm_persons (ref, name, name2, address, + phone, phone2, fax, email, lang, notes) + VALUES (" + .db_escape($ref) . ", " + .db_escape($name) . ", " + .db_escape($name2) . ", " + .db_escape($address) . ", " + .db_escape($phone) . ", " + .db_escape($phone2) . ", " + .db_escape($fax) . ", " + .db_escape($email) . ", " + .db_escape($lang) . ", " + .db_escape($notes) + .")"; + + begin_transaction(); + + $ret = db_query($sql, "Can't insert crm person"); + $id = db_insert_id(); + if ($ret && $cat_ids) { + if(!update_person_contacts($id, $cat_ids, $entity)) + return null; + } + commit_transaction(); + return $id; +} + +function update_crm_person($id, $ref, $name, $name2, $address, $phone, $phone2, $fax, $email, + $lang, $notes, $cat_ids, $entity=null) +{ + $sql = "UPDATE ".TB_PREF."crm_persons SET " + ."ref=".db_escape($ref) . ", " + ."name=".db_escape($name) . ", " + ."name2=".db_escape($name2) . ", " + ."address=".db_escape($address) . ", " + ."phone=".db_escape($phone) . ", " + ."phone2=".db_escape($phone2) . ", " + ."fax=".db_escape($fax) . ", " + ."email=".db_escape($email) . ", " + ."lang=".db_escape($lang) . ", " + ."notes=".db_escape($notes) + ." WHERE id = ".db_escape($id); + + begin_transaction(); + + $ret = db_query($sql, "Can't update crm person"); + if ($ret) { + if(!update_person_contacts($id, $cat_ids, $entity)) + return null; + } + commit_transaction(); + return $id; +} + +function delete_crm_person($person, $with_contacts=false) +{ + begin_transaction(); + + if ($with_contacts) { + $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE person_id=".db_escape($person); + db_query($sql, "Can't delete crm contacts"); + } + $sql = "DELETE FROM ".TB_PREF."crm_persons WHERE id=".db_escape($person); + $ret = db_query($sql, "Can't delete crm person"); + + commit_transaction(); + return $ret; +} +/* + Retrieve full contact data from database for selected type/action/entity or person +*/ +function get_crm_persons($type=null, $action=null, $entity=null, $person=null, $unique=false) +{ + $sql = "SELECT t.*, p.*, r.id as contact_id FROM ".TB_PREF."crm_persons p," + .TB_PREF."crm_categories t, " + .TB_PREF."crm_contacts r WHERE "; + $sel = array('r.type=t.type', 'r.action=t.action', 'r.person_id=p.id'); + + if ($type) + $sel[] = 't.type='.db_escape($type); + + if ($action) + $sel[] = 't.action='.db_escape($action); + + if ($entity) + $sel[] = 'r.entity_id='.db_escape($entity); + + if ($person) + $sel[] = 'r.person_id='.db_escape($person); + + $sql .= implode (" AND ", $sel); + + if ($unique) + $sql .= " GROUP BY person_id"; + else + $sql .= " ORDER BY t.id"; + + return db_query($sql, "Can't get crm persons"); +} + +function get_crm_person($id) +{ + $sql = "SELECT * FROM ".TB_PREF."crm_persons WHERE id=".db_escape($id); + + $res = db_query($sql, "Can't get crm persons"); + + $person = db_fetch($res); + $person['contacts'] = get_person_contacts($id); + + return $person; +} + +/* + Returns all contacts for given person id +*/ +function get_person_contacts($id) +{ + $sql = "SELECT t.id FROM " + .TB_PREF."crm_categories t, " + .TB_PREF."crm_contacts r WHERE r.type=t.type AND r.action=t.action + AND r.person_id=".db_escape($id); + + $contacts = array(); + $ret = db_query($sql, "Can't get crm person contacts"); + while($cont = db_fetch_row($ret)) + $contacts[] = $cont[0]; + return $contacts; +} + +function update_person_contacts($id, $cat_ids, $entity_id=null) +{ + $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE person_id=".db_escape($id); + + begin_transaction(); + + $ret = db_query($sql, "Can't delete person contacts"); + + if($ret && count($cat_ids)) { + array_walk($cat_ids,'db_escape'); + $sql = "INSERT INTO ".TB_PREF."crm_contacts (person_id,type,action,entity_id) + SELECT ".db_escape($id).",t.type, t.action,".db_escape($entity_id, true)." + FROM ".TB_PREF."crm_categories t WHERE t.id=".implode(' OR t.id=', $cat_ids); + $ret = db_query($sql, "Can't update person contacts"); + } + commit_transaction(); + return $ret; +} + +function delete_entity_contacts($class, $entity) +{ + $res = get_crm_persons($class, null, $entity, null, true); + + while($person = db_fetch($res)) { + delete_crm_person($person['id'], true); + } +} + +//----------------------------------------------------------------------------------------------- + +function add_crm_category($type, $action, $name, $description) +{ + $sql = "INSERT INTO ".TB_PREF."crm_categories (type, action, name, description) + VALUES (".db_escape($type) . ", " + .db_escape($action) . ", " + .db_escape($name) . ", " + .db_escape($description) + .")"; + db_query($sql,"The insert of the crm category failed"); +} + +function update_crm_category($selected_id, $type, $action, $name, $description) +{ + $sql = "UPDATE ".TB_PREF."crm_categories SET "; + if ($type) + $sql .= "type=".db_escape($type) . ","; + if ($action) + $sql .= "action=".db_escape($action) . ","; + $sql .= "name=".db_escape($name) . "," + ."description=".db_escape($description) + ." WHERE id = ".db_escape($selected_id); + db_query($sql,"The update of the crm category failed"); +} + +function delete_crm_category($selected_id) +{ + // preserve system categories + $sql="DELETE FROM ".TB_PREF."crm_categories WHERE system=0 AND id=".db_escape($selected_id); + db_query($sql,"could not delete crm category"); +} + +function get_crm_categories($show_inactive) +{ + $sql = "SELECT * FROM ".TB_PREF."crm_categories"; + if (!$show_inactive) $sql .= " WHERE !inactive"; + $sql .= " ORDER BY type, action"; + return db_query($sql,"could not get areas"); +} + +function get_crm_category($selected_id) +{ + $sql = "SELECT * FROM ".TB_PREF."crm_categories WHERE id=".db_escape($selected_id); + + $result = db_query($sql,"could not get crm category"); + return db_fetch($result); +} + +function get_crm_category_name($id) +{ + $sql = "SELECT name FROM ".TB_PREF."crm_categories WHERE id=".db_escape($id); + + $result = db_query($sql, "could not get sales type"); + + $row = db_fetch_row($result); + return $row[0]; +} + +//---------------------------------------------------------------------------------------- +// Contact is relation between person and entity in some category +// +function add_crm_contact($type, $action, $entity_id, $person_id) +{ + $sql = "INSERT INTO ".TB_PREF."crm_contacts (person_id, type, action, entity_id) VALUES (" + .db_escape($person_id) . "," + .db_escape($type) . "," + .db_escape($action) . "," + .db_escape($entity_id) . ")"; + return db_query($sql, "Can't insert crm contact"); +} + +function delete_crm_contact($id) +{ + $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE id=".db_escape($id); + + return db_query($sql, "Can't delete crm contact"); +} + +/* + Returns person data for given contact id +*/ +function get_crm_contact($id) +{ + $sql = "SELECT t.type, t.action, p.*, r.person_id, r.id FROM ".TB_PREF."crm_persons p," + .TB_PREF."crm_categories t, " + .TB_PREF."crm_contacts r WHERE r.type=t.type AND r.action=t.action AND r.person_id=p.id" + ." AND r.id=".db_escape($id); + $ret = db_query($sql, "Can't get crm contact"); + if($ret) + return db_fetch($ret, "Can't fetch contact data"); + return $ret; +} + +?> \ No newline at end of file