/** * Resolves for a given component whether the user has necessary rights to access the component information. * An example is if a component is account's opportunities and the current user cannot access the opportunities * module. * @param ComponentForReportForm $componentForm * @return bool */ protected static function canCurrentUserAccessComponent(ComponentForReportForm $componentForm) { $modelClassName = $componentForm->getModelClassName(); $moduleClassName = $componentForm->getModuleClassName(); if (!$componentForm->hasRelatedData()) { return self::canCurrentUserCanAccessModule($moduleClassName); } else { foreach ($componentForm->attributeAndRelationData as $relationOrAttribute) { if (!self::canCurrentUserCanAccessModule($moduleClassName)) { return false; } $modelToReportAdapter = ModelRelationsAndAttributesToReportAdapter::make($moduleClassName, $modelClassName, $componentForm->getReportType()); if ($modelToReportAdapter->isReportedOnAsARelation($relationOrAttribute)) { $modelClassName = $modelToReportAdapter->getRelationModelClassName($relationOrAttribute); $moduleClassName = $modelToReportAdapter->getRelationModuleClassName($relationOrAttribute); } } return true; } }
/** * @see resolveAttributeIndexesByComponents * @param ComponentForReportForm $componentForm * @return array */ protected static function resolveAttributeIndexesByComponent(ComponentForReportForm $componentForm) { $attributeIndexes = array(); $modelClassName = $componentForm->getModelClassName(); $moduleClassName = $componentForm->getModuleClassName(); if (!$componentForm->hasRelatedData()) { static::resolveAttributeIndexes($modelClassName, $attributeIndexes); } else { $attributeIndexPrefix = null; foreach ($componentForm->attributeAndRelationData as $relationOrAttribute) { static::resolveAttributeIndexes($modelClassName, $attributeIndexes, $attributeIndexPrefix); $modelToReportAdapter = ModelRelationsAndAttributesToReportAdapter::make($moduleClassName, $modelClassName, $componentForm->getReportType()); if ($modelToReportAdapter->isReportedOnAsARelation($relationOrAttribute)) { $modelClassName = $modelToReportAdapter->getRelationModelClassName($relationOrAttribute); $moduleClassName = $modelToReportAdapter->getRelationModuleClassName($relationOrAttribute); $attributeIndexPrefix = $attributeIndexPrefix . $relationOrAttribute . FormModelUtil::RELATION_DELIMITER; } } } return $attributeIndexes; }