/**
  *
  */
 public function removeRelationship($pm_rel_table_name_or_num, $pn_relation_id)
 {
     $va_path = array_keys($this->getAppDatamodel()->getPath($this->tableName(), $pm_rel_table_name_or_num));
     $vn_rel_id = $t_rel_item = null;
     if (sizeof($va_path) == 3 && ($t_rel = $this->getAppDatamodel()->getInstance($va_path[1]))) {
         $t_rel->setTransaction($this->getTransaction());
         $t_rel_item = $this->getAppDatamodel()->getInstance($va_path[2], true);
         if ($t_rel->load($pn_relation_id)) {
             $vn_rel_id = $t_rel->get($t_rel_item->primaryKey());
         }
     }
     if ($vn_rc = parent::removeRelationship($pm_rel_table_name_or_num, $pn_relation_id)) {
         if ($vn_rel_id && $t_rel_item) {
             $this->_setCurrent($t_rel_item->tableName(), $vn_rel_id);
         }
     }
     return $vn_rc;
 }
Exemplo n.º 2
0
 /**
  * Override BaseModel::removeRelationship() to update current location fields in ca_objects
  *
  * @param mixed $pm_rel_table_name_or_num
  * @param int $pn_relation_id
  *
  * @return int
  */
 public function removeRelationship($pm_rel_table_name_or_num, $pn_relation_id)
 {
     if ($vn_rc = parent::removeRelationship($pm_rel_table_name_or_num, $pn_relation_id)) {
         if ($this->relationshipChangeMayAffectCurrentLocation($pm_rel_table_name_or_num, null, null)) {
             $this->deriveCurrentLocationForBrowse();
         }
     }
     return $vn_rc;
 }