/** * @param array $filters * @return array */ protected function makeReadPermissionsAttributeIndexes(array $filters) { $attributeIndexes = array(); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $this->resolveDisplayAttributes()); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $filters); return $attributeIndexes; }
/** * @param array $filters * @return array */ protected function makeReadPermissionsAttributeIndexes(array $filters) { $moduleClassName = $this->report->getModuleClassName(); $attributeIndexes = array(); ReadPermissionsForReportUtil::resolveAttributeIndexes($moduleClassName::getPrimaryModelName(), $attributeIndexes); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $this->resolveDisplayAttributes()); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $filters); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $this->report->getOrderBys()); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($attributeIndexes, $this->resolveGroupBys()); return $attributeIndexes; }
public function testInferredRelationModelAttributeWithYetAnotherRelation() { Yii::app()->user->userModel = User::getByUsername('sally'); $filter = new FilterForReportForm('MeetingsModule', 'Meeting', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'Account__activityItems__Inferred___opportunities___name'; $indexes = array(); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($indexes, array($filter)); $compareIndexes = array('' => array('owner__User', 'ReadOptimization'), 'Account__activityItems__Inferred___' => array('owner__User', 'ReadOptimization'), 'Account__activityItems__Inferred___opportunities___' => array('owner__User', 'ReadOptimization')); $this->assertEquals($compareIndexes, $indexes); //Test with the super user. There shouldn't be any read permission data Yii::app()->user->userModel = User::getByUsername('super'); $filter = new FilterForReportForm('MeetingsModule', 'Meeting', Report::TYPE_ROWS_AND_COLUMNS); $filter->attributeIndexOrDerivedType = 'Account__activityItems__Inferred___opportunities___name'; $indexes = array(); ReadPermissionsForReportUtil::resolveAttributeIndexesByComponents($indexes, array($filter)); $this->assertEquals(array(), $indexes); }