/** * Update the value for relation * @param string $sourceModule Source module name * @param int $sourceRecord Source record */ public function reloadValue($sourceModule, $sourceRecord) { $currentUser = vglobal('current_user'); $user = new Users(); vglobal('current_user', $user->retrieveCurrentUserInfoFromFile(Users::getActiveAdminId())); vglobal('currentModule', $sourceModule); $db = PearDatabase::getInstance(); $params = $this->get('field')->getFieldParams(); $sourceRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); $targetModel = Vtiger_RelationListView_Model::getInstance($sourceRecordModel, $params['module']); $fieldInfo = Vtiger_Functions::getModuleFieldInfoWithId($params['field']); $query = $targetModel->getRelationQuery(); $explodedQuery = explode('FROM', $query, 2); $relationQuery = 'SELECT DISTINCT ' . $fieldInfo['columnname'] . ' FROM' . $explodedQuery[1] . ' AND ' . $fieldInfo['columnname'] . " <> ''"; vglobal('current_user', $currentUser); $result = $db->query($relationQuery); $currentValue = self::COMMA; while ($value = $db->getSingleValue($result)) { $currentValue .= $value . self::COMMA; } $db->update($this->get('field')->get('table'), [$this->get('field')->get('column') => $currentValue], $sourceRecordModel->getEntity()->tab_name_index[$this->get('field')->get('table')] . ' = ?', [$sourceRecord]); }
public static function getInstanceFromFieldId($fieldId, $moduleTabId = false) { $fieldModel = Vtiger_Cache::get('FieldModel', $fieldId); if ($fieldModel) { return $fieldModel; } $field = Vtiger_Functions::getModuleFieldInfoWithId($fieldId); $fieldModel = new self(); $fieldModel->initialize($field); Vtiger_Cache::set('FieldModel', $fieldId, $fieldModel); return $fieldModel; }