X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fdb%2Fcrm_contacts_db.inc;h=e5a91fb1be4561bbca0c811b37074ab15ef63402;hb=e771cab507c120f329e50a71807dd4c53c0ace96;hp=94a5a991594034f10bba5c8a1d81732171628f29;hpb=3f3cfa578adbc2b71f4fd9c8d0f5536d26af43d8;p=fa-stable.git diff --git a/includes/db/crm_contacts_db.inc b/includes/db/crm_contacts_db.inc index 94a5a991..e5a91fb1 100644 --- a/includes/db/crm_contacts_db.inc +++ b/includes/db/crm_contacts_db.inc @@ -41,7 +41,7 @@ function add_crm_person($ref, $name, $name2, $address, $phone, $phone2, $fax, $e } function update_crm_person($id, $ref, $name, $name2, $address, $phone, $phone2, $fax, $email, - $lang, $notes, $cat_ids, $entity=null) + $lang, $notes, $cat_ids, $entity=null, $type=null) { $sql = "UPDATE ".TB_PREF."crm_persons SET " ."ref=".db_escape($ref) . ", " @@ -60,7 +60,7 @@ function update_crm_person($id, $ref, $name, $name2, $address, $phone, $phone2, $ret = db_query($sql, "Can't update crm person"); if ($ret) { - if(!update_person_contacts($id, $cat_ids, $entity)) + if(!update_person_contacts($id, $cat_ids, $entity, $type)) return null; } commit_transaction(); @@ -147,9 +147,11 @@ function get_person_contacts($id) return $contacts; } -function update_person_contacts($id, $cat_ids, $entity_id=null) +function update_person_contacts($id, $cat_ids, $entity_id=null, $type=null) { $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE person_id=".db_escape($id); + if ($type) + $sql .= " AND type=".db_escape($type); begin_transaction(); @@ -163,6 +165,8 @@ function update_person_contacts($id, $cat_ids, $entity_id=null) $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); + if ($type) + $sql .= " AND t.type=".db_escape($type); $ret = db_query($sql, "Can't update person contacts"); } commit_transaction(); @@ -171,10 +175,14 @@ function update_person_contacts($id, $cat_ids, $entity_id=null) function delete_entity_contacts($class, $entity) { + delete_crm_contacts(null, $class, $entity); + // cleanup $res = get_crm_persons($class, null, $entity, null, true); - while($person = db_fetch($res)) { - delete_crm_person($person['id'], true); + $rels = get_person_contacts($person['id']); + if (count($rels) == 0) { + delete_crm_person($person['id']); + } } } @@ -261,17 +269,20 @@ function delete_crm_contact($id) /* Delete selected contacts for given person */ -function delete_crm_contacts($person_id, $type = null, $entity_id=null, $action = null) +function delete_crm_contacts($person_id = null, $type = null, $entity_id=null, $action = null) { - $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE person_id=".db_escape($person_id); + $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE "; + + if ($person_id) + $where[] = 'person_id='.db_escape($person_id); if ($type) - $sql .= ' AND type='.db_escape($type); + $where[] = 'type='.db_escape($type); if ($entity_id) - $sql .= ' AND entity_id='.db_escape($entity_id); + $where[] = 'entity_id='.db_escape($entity_id); if ($action) - $sql .= ' AND action='.db_escape($action); + $where[] = 'action='.db_escape($action); - return db_query($sql, "Can't delete crm contact"); + return db_query($sql.implode(' AND ', $where), "Can't delete crm contact"); } /* @@ -289,4 +300,16 @@ function get_crm_contact($id) return $ret; } -?> \ No newline at end of file +/* + Check for whether category is used in contacts. +*/ +function is_crm_category_used($id) +{ + $row = get_crm_category($id); + $sql = "SELECT COUNT(*) FROM ".TB_PREF."crm_contacts WHERE type='".$row['type']."' AND action='".$row['action']."'"; + $result = db_query($sql, "check relations for crm_contacts failed"); + $contacts = db_fetch($result); + return $contacts[0]; +} + +