/** * Override to call a different report adapter class for calendar. * @param string $moduleClassName * @param string $modelClassName * @return ModelRelationsAndAttributesToReportAdapter based object */ protected function makeModelRelationsAndAttributesToReportAdapter($moduleClassName, $modelClassName) { assert('is_string($moduleClassName)'); assert('is_string($modelClassName)'); $rules = ReportRules::makeByModuleClassName($moduleClassName); $model = new $modelClassName(false); return new CalendarModelRelationsAndAttributesToRowsAndColumnsReportAdapter($model, $rules, $this->report->getType(), $moduleClassName); }
/** * @param $moduleClassName * @return bool */ public static function canCurrentUserCanAccessModule($moduleClassName) { assert('is_string($moduleClassName)'); if ($moduleClassName::getStateMetadataAdapterClassName() != null) { $reportRules = ReportRules::makeByModuleClassName($moduleClassName); return $reportRules->canUserAccessModuleInAVariableState(Yii::app()->user->userModel); } else { return RightsUtil::canUserAccessModule($moduleClassName, Yii::app()->user->userModel); } }
/** * @return array|null */ protected function getDerivedAttributesData() { if (!isset(self::$derivedAttributesData[get_class($this->model)]) || self::$derivedAttributesData[get_class($this->model)] === null) { $attributes = array(); $calculatedAttributes = CalculatedDerivedAttributeMetadata::getAllByModelClassName(get_class($this->model)); foreach ($calculatedAttributes as $attribute) { $attributes[$attribute->name] = array('label' => $attribute->getLabelByLanguage(Yii::app()->language), 'derivedAttributeType' => 'CalculatedNumber'); } self::$derivedAttributesData[get_class($this->model)] = array_merge($attributes, $this->rules->getDerivedAttributeTypesData($this->model)); } return self::$derivedAttributesData[get_class($this->model)]; }
/** * @param $modelClassName * @param array $attributeIndexes * @param null $attributeIndexPrefix * @throws PartialRightsForReportSecurityException if the current user is lacking rights to at least one of the * states. */ public static function resolveAttributeIndexes($modelClassName, &$attributeIndexes, $attributeIndexPrefix = null) { assert('is_string($modelClassName)'); assert('is_string($attributeIndexPrefix) || $attributeIndexPrefix == null'); $moduleClassName = $modelClassName::getModuleClassName(); if (null != ($stateMetadataAdapterClassName = $moduleClassName::getStateMetadataAdapterClassName())) { $reportRules = ReportRules::makeByModuleClassName($moduleClassName); $stateAdapterClassName = $reportRules->resolveStateAdapterUserHasAccessTo(Yii::app()->user->userModel); if ($stateAdapterClassName !== null && $stateAdapterClassName !== false) { $stateAttributeName = $stateAdapterClassName::getStateAttributeName(); $stateAdapter = new $stateAdapterClassName(array('clauses' => array(), 'structure' => '')); $attributeIndexes[$attributeIndexPrefix] = array($stateAttributeName, $stateAdapter->getStateIds()); } elseif ($stateAdapterClassName === false) { throw new PartialRightsForReportSecurityException(); } } }
/** * @param $moduleClassName * @return Rules based object */ protected function resolveMergeTagsRulesByModuleClassName($moduleClassName) { if ($moduleClassName == 'UsersModule') { return new UsersMergeTagsRules(); } else { return ReportRules::makeByModuleClassName($moduleClassName); } }
/** * @return array */ public static function getDefaultMetadata() { $metadata = array('SecurableItem' => array('nonReportable' => array('permissions'))); return array_merge(parent::getDefaultMetadata(), $metadata); }
/** * Based on the current user, return the reportable modules and their display labels. Only include modules * that the user has a right to access. * @return array of module class names and display labels. */ public static function getReportableModulesAndLabelsForCurrentUser() { $moduleClassNamesAndLabels = array(); $modules = Module::getModuleObjects(); foreach (self::getReportableModulesClassNamesCurrentUserHasAccessTo() as $moduleClassName) { if ($moduleClassName::getStateMetadataAdapterClassName() != null) { $reportRules = ReportRules::makeByModuleClassName($moduleClassName); $label = $reportRules->getVariableStateModuleLabel(Yii::app()->user->userModel); } else { $label = $moduleClassName::getModuleLabelByTypeAndLanguage('Plural'); } if ($label != null) { $moduleClassNamesAndLabels[$moduleClassName] = $label; } } return $moduleClassNamesAndLabels; }
/** * @return array */ public static function getDefaultMetadata() { $metadata = array('Permitable' => array('nonReportable' => array('policies', 'rights'))); return array_merge(parent::getDefaultMetadata(), $metadata); }
/** * @return array */ public static function getDefaultMetadata() { $metadata = array('Autoresponder' => array('nonReportable' => array('files')), 'AutoresponderItem' => array('nonReportable' => array('autoresponderItemActivities', 'emailMessage'))); return array_merge(parent::getDefaultMetadata(), $metadata); }
/** * Gets derived attribute date by report rules * @return array */ protected function getDerivedAttributesDataByReportRules() { return $this->rules->getDerivedAttributeTypesData($this->model); }