diff --git a/modules/Contacts/Contacts.php b/modules/Contacts/Contacts.php index 422c092450a3c169f0e216e50e90b905c8ef0bdb..cc29940aeb934fcf482e20e9a26501672485d516 100644 --- a/modules/Contacts/Contacts.php +++ b/modules/Contacts/Contacts.php @@ -787,8 +787,13 @@ class Contacts extends CRMEntity { $button .= "<input title='". getTranslatedString('LBL_ADD_NEW')." ". getTranslatedString($singular_modname)."' accessyKey='F' class='crmbutton small create' onclick='fnvshobj(this,\"sendmail_cont\");sendmail(\"$this_module\",$id);' type='button' name='button' value='". getTranslatedString('LBL_ADD_NEW')." ". getTranslatedString($singular_modname)."'></td>"; } } + + $projectModuleInstance = Vtiger_Module_Model::getInstance("Project"); + //checking the project module is active. + $isProjectModuleActive = $projectModuleInstance ? $projectModuleInstance->isActive() : false; - $relatedIds = array_merge(array($id), $this->getRelatedPotentialIds($id), $this->getRelatedTicketIds($id)); + //getting related project ids only if the Project module is active + $relatedIds = array_merge(array($id), $this->getRelatedPotentialIds($id), $this->getRelatedTicketIds($id), $isProjectModuleActive ? $this->getRelatedProjectIds($id):array()); $relatedIds = implode(', ', $relatedIds); $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> @@ -1614,6 +1619,20 @@ function get_contactsforol($user_name) return $relatedIds; } + // The function to get projectIds related to contacts. + function getRelatedProjectIds($id) { + $relatedIds = array(); + $db = PearDatabase::getInstance(); + $query = "SELECT DISTINCT vtiger_crmentity.crmid FROM vtiger_contactdetails LEFT JOIN vtiger_project ON + (vtiger_project.linktoaccountscontacts = vtiger_contactdetails.contactid) INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_project.projectid + WHERE vtiger_crmentity.deleted = 0 AND vtiger_contactdetails.contactid = ?"; + $result = $db->pquery($query, array($id)); + for ($i = 0; $i < $db->num_rows($result); $i++) { + $relatedIds[] = $db->query_result($result, $i, 'crmid'); + } + return $relatedIds; + } + } ?> diff --git a/pkg/vtiger/modules/Projects/Project/modules/Project/models/Relation.php b/pkg/vtiger/modules/Projects/Project/modules/Project/models/Relation.php index 72086687f5f3b9e25f311cbdc966e1524ab1139c..f1f2366fc53688ab1e824cfcb55f187a4e8adb42 100644 --- a/pkg/vtiger/modules/Projects/Project/modules/Project/models/Relation.php +++ b/pkg/vtiger/modules/Projects/Project/modules/Project/models/Relation.php @@ -21,6 +21,9 @@ class Project_Relation_Model extends Vtiger_Relation_Model{ $destinationModuleName = $this->getRelationModuleModel()->get('name'); $sourceModuleFocus = CRMEntity::getInstance($sourceModuleName); $sourceModuleFocus->delete_related_module($sourceModuleName, $sourceRecordId, $destinationModuleName, $relatedRecordId); + $destinationModuleFocus = CRMEntity::getInstance($destinationModuleName); + //unlink the relationship with the related module. + $destinationModuleFocus->unlinkRelationship($relatedRecordId, $sourceModuleName, $sourceRecordId); $sourceModuleFocus->trackUnLinkedInfo($sourceModuleName, $sourceRecordId, $destinationModuleName, $relatedRecordId); return true; }