}
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) . ", "
$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();
if ($unique)
$sql .= " GROUP BY person_id";
else
- $sql .= " ORDER BY t.id";
+ $sql .= " ORDER BY contact_id";
- return db_query($sql, "Can't get crm persons");
+ $result = db_query($sql, "Can't get crm persons");
+ // fallback to general contacts
+ if (!db_num_rows($result) && $action && $action != 'general')
+ return get_crm_persons($type, 'general', $entity, $person, $unique);
+ else
+ return $result;
}
function get_crm_person($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();
$ret = db_query($sql, "Can't delete person contacts");
+ foreach($cat_ids as $n => $cid)
+ $cat_ids[$n] = db_escape($cid);
+
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);
+ if ($type)
+ $sql .= " AND t.type=".db_escape($type);
$ret = db_query($sql, "Can't update person contacts");
}
commit_transaction();
function delete_entity_contacts($class, $entity)
{
+ // cleanup
$res = get_crm_persons($class, null, $entity, null, true);
-
+ delete_crm_contacts(null, $class, $entity);
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']);
+ }
}
}
$result = db_query($sql, "could not get sales type");
$row = db_fetch_row($result);
- return $row[0];
+ return is_array($row) ? $row[0] : false;
}
//----------------------------------------------------------------------------------------
.db_escape($entity_id) . ")";
return db_query($sql, "Can't insert crm contact");
}
-
+/*
+ Delete contact selected by unique id.
+*/
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");
}
+/*
+ Delete selected contacts for given person
+*/
+function delete_crm_contacts($person_id = null, $type = null, $entity_id=null, $action = null)
+{
+ $sql = "DELETE FROM ".TB_PREF."crm_contacts WHERE ";
+
+ if ($person_id)
+ $where[] = 'person_id='.db_escape($person_id);
+ if ($type)
+ $where[] = 'type='.db_escape($type);
+ if ($entity_id)
+ $where[] = 'entity_id='.db_escape($entity_id);
+ if ($action)
+ $where[] = 'action='.db_escape($action);
+
+ return db_query($sql.implode(' AND ', $where), "Can't delete crm contact");
+}
/*
Returns person data for given 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];
+}
+
+