/** * Add related object selection */ public function addSubAction() { $this->_checkCanEdit(); $this->_checkLoaded(); $baseField = Request::post('basefield', 'string', false); $subObject = Request::post('subobject', 'string', false); $subField = Request::post('subfield', 'string', false); $join = Request::post('join', 'integer', 1); if (!$baseField || !$subObject || !$subField || !$join) { Response::jsonError($this->_lang->WRONG_REQUEST); } $query = $this->_session->get('query'); $basePart = $query->getRootPart(); $childPart = $query->findChild($basePart->getId(), $baseField); if ($childPart !== false) { $query->removePart($childPart->getId()); } $newPart = new Db_Query_Part(); $newPart->setObject($subObject); $newPart->setParentField($baseField); $newPart->setChildField($subField); $newPart->setJoinType($join); if (!$query->addPart($newPart, $basePart->getId())) { Response::jsonArray(array('success' => false, 'msg' => $this->_lang->CANT_EXEC)); } $basePart->setFieldCfg($baseField, 'selectSub', true); $basePart->setFieldCfg($baseField, 'isLink', true); $this->_session->set('query', $query); Response::jsonSuccess(); }