/**
  * 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);
 }
Example #7
0
 /**
  * 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);
 }