protected function renderContent()
 {
     $placedViewTypes = $this->getPlacedViewTypes();
     $modules = Module::getModuleObjects();
     foreach ($modules as $module) {
         if ($module->isEnabled()) {
             $p = $module->getParentModule();
             $viewClassNames = $module::getViewClassNames();
             foreach ($viewClassNames as $className) {
                 $viewReflectionClass = new ReflectionClass($className);
                 if (!$viewReflectionClass->isAbstract()) {
                     $portletRules = PortletRulesFactory::createPortletRulesByView($className);
                     if ($portletRules != null && $portletRules->allowOnDashboard()) {
                         if ($portletRules->allowMultiplePlacementOnDashboard() && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true || !$portletRules->allowMultiplePlacementOnDashboard() && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) {
                             $metadata = $className::getMetadata();
                             $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'dashboardId' => $this->dashboardId, 'portletType' => $portletRules->getType()));
                             if (isset($metadata['perUser']['title'])) {
                                 $title = $metadata['perUser']['title'];
                             } else {
                                 continue;
                             }
                             MetadataUtil::resolveEvaluateSubString($title);
                             $sortablePortlets[$title] = array('url' => $url, 'title' => $title, 'portletRules' => $portletRules);
                         }
                     }
                 }
             }
         }
     }
     return PortletUtil::renderAddPortletsContent($sortablePortlets);
 }
 protected function renderContent()
 {
     $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id);
     $modules = Module::getModuleObjects();
     $sortablePortlets = array();
     foreach ($modules as $module) {
         if ($module->isEnabled()) {
             $p = $module->getParentModule();
             $viewClassNames = $module::getViewClassNames();
             foreach ($viewClassNames as $className) {
                 $viewReflectionClass = new ReflectionClass($className);
                 if (!$viewReflectionClass->isAbstract()) {
                     $portletRules = PortletRulesFactory::createPortletRulesByView($className);
                     if ($viewReflectionClass->implementsInterface('RelatedPortletViewInterface')) {
                         if ($this->resolveLayoutIdInAllowedOnPortletViewClassNames($className) && $className::allowMultiplePlacement() == false && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) {
                             $metadata = $className::getMetadata();
                             $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'modelId' => $this->modelId, 'portletType' => $portletRules->getType()));
                             $title = $metadata['perUser']['title'];
                             MetadataUtil::resolveEvaluateSubString($title);
                             $sortablePortlets[$title] = array('url' => $url, 'title' => $title, 'portletRules' => $portletRules);
                         }
                     }
                 }
             }
         }
     }
     if (empty($sortablePortlets)) {
         $messageView = new NoPortletsToPlaceView();
         return $messageView->render();
     }
     //Sort by title
     ksort($sortablePortlets);
     return PortletUtil::renderAddPortletsContent($sortablePortlets);
 }
 public function testResolveEvaluateSubString()
 {
     //variable in string, value as array
     $combinedData = "eval:array_combine(array('a', 'b', 'c'), \$array2)";
     $resolveVariableName = 'array2';
     $params = array('1', '2', '3');
     MetadataUtil::resolveEvaluateSubString($combinedData, $resolveVariableName, $params);
     $this->assertEquals('2', $combinedData['b']);
     //variables in array, values in array
     $sum = "eval:(int)(\$x + \$y + \$z)";
     $resolveVariableName = array('x', 'y', 'z');
     $params = array(5, 6, 7);
     MetadataUtil::resolveEvaluateSubString($sum, $resolveVariableName, $params);
     $this->assertEquals(18, $sum);
     //variables in array, value as default value
     $product = "eval:(int)(\$x * \$y)";
     $resolveVariableName = array('x', 'y');
     $params = null;
     $defaultValue = 5;
     MetadataUtil::resolveEvaluateSubString($product, $resolveVariableName, $params, $defaultValue);
     $this->assertEquals(25, $product);
     //combine all in one array of evals
     $evaluateValues = array('combinedData' => "eval:array_combine(array('a', 'b', 'c'), \$array2)", 'sum' => "eval:(int)(\$x + \$y + \$z)", 'product' => "eval:(int)(\$default * \$default)", 'static' => "string");
     $resolveVariableName = array('array2', 'x', 'y', 'z', 'default');
     $params = array(array('1', '2', '3'), 5, 6, 7);
     $defaultValue = 8;
     MetadataUtil::resolveEvaluateSubString($evaluateValues, $resolveVariableName, $params, $defaultValue);
     $this->assertEquals('2', $evaluateValues['combinedData']['b']);
     $this->assertEquals(18, $evaluateValues['sum']);
     $this->assertEquals(64, $evaluateValues['product']);
     $this->assertEquals("string", $evaluateValues['static']);
 }
 protected function saveModalConfigPerUserAndRelationModelId($modalConfigMetadata)
 {
     $user = Yii::app()->user->userModel;
     $metadata = MetadataUtil::getMetadata('CampaignOverallMetricsView', $user);
     $metadata['perUser'][intval($_GET['portletParams']['relationModelId'])] = $modalConfigMetadata;
     MetadataUtil::setMetadata('CampaignOverallMetricsView', $metadata, $user);
 }
 protected function renderContent()
 {
     $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id);
     $content = '<ul class="available-portlets">';
     $modules = Module::getModuleObjects();
     foreach ($modules as $module) {
         if ($module->isEnabled()) {
             $p = $module->getParentModule();
             $viewClassNames = $module::getViewClassNames();
             foreach ($viewClassNames as $className) {
                 $viewReflectionClass = new ReflectionClass($className);
                 if (!$viewReflectionClass->isAbstract()) {
                     $portletRules = PortletRulesFactory::createPortletRulesByView($className);
                     if ($portletRules != null && $portletRules->allowOnDashboard()) {
                         if ($portletRules->allowMultiplePlacementOnDashboard() && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true || !$portletRules->allowMultiplePlacementOnDashboard() && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) {
                             $metadata = $className::getMetadata();
                             $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'dashboardId' => $this->dashboardId, 'portletType' => $portletRules->getType()));
                             $onClick = 'window.location.href = "' . $url . '"';
                             $content .= '<li>';
                             $title = $metadata['perUser']['title'];
                             MetadataUtil::resolveEvaluateSubString($title);
                             $label = '<span>\\</span>' . $title;
                             $content .= ZurmoHtml::link(Zurmo::t('HomeModule', $label), null, array('onclick' => $onClick));
                             $content .= '</li>';
                         }
                     }
                 }
             }
         }
     }
     $content .= '</ul>';
     return $content;
 }
 public function testResolveMetadataForLanguageLocalization()
 {
     //Test AccountsModulePluralLabel
     $metadata = AccountsModule::getMetadata();
     AccountsModule::setMetadata($metadata);
     $metadata = AccountsModule::getMetadata();
     $this->assertEquals("eval:Zurmo::t('AccountsModule', 'AccountsModulePluralLabel', \$translationParams)", $metadata['global']['tabMenuItems'][0]['label']);
     $resolveVariableName = 'translationParams';
     $params = LabelUtil::getTranslationParamsForAllModules();
     MetadataUtil::resolveEvaluateSubString($metadata, $resolveVariableName, $params);
     $this->assertEquals('Accounts', $metadata['global']['tabMenuItems'][0]['label']);
 }
 protected function renderContent()
 {
     $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id);
     $content = '<ul class="available-portlets">';
     $modules = Module::getModuleObjects();
     $sortablePortlets = array();
     foreach ($modules as $module) {
         if ($module->isEnabled()) {
             $p = $module->getParentModule();
             $viewClassNames = $module::getViewClassNames();
             foreach ($viewClassNames as $className) {
                 $viewReflectionClass = new ReflectionClass($className);
                 if (!$viewReflectionClass->isAbstract()) {
                     $portletRules = PortletRulesFactory::createPortletRulesByView($className);
                     if ($viewReflectionClass->implementsInterface('RelatedPortletViewInterface')) {
                         if ($this->resolveLayoutIdInAllowedOnPortletViewClassNames($className) && $className::allowMultiplePlacement() == false && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) {
                             $metadata = $className::getMetadata();
                             $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'modelId' => $this->modelId, 'portletType' => $portletRules->getType()));
                             $title = $metadata['perUser']['title'];
                             MetadataUtil::resolveEvaluateSubString($title);
                             $sortablePortlets[$title] = $url;
                         }
                     }
                 }
             }
         }
     }
     if (empty($sortablePortlets)) {
         $messageView = new NoPortletsToPlaceView();
         return $messageView->render();
     }
     //Sort by title
     ksort($sortablePortlets);
     foreach ($sortablePortlets as $title => $url) {
         $onClick = 'window.location.href = "' . $url . '"';
         $content .= '<li>';
         $label = '<span>\\</span>' . $title;
         $content .= ZurmoHtml::link(Zurmo::t('HomeModule', $label), null, array('onclick' => $onClick));
         $content .= '</li>';
     }
     $content .= '</ul>';
     return $content;
 }
 public static function resolveColumnMetadataByHintType($name, $hintType = 'string', $length = 255, $unsigned = null, $notNull = 'NULL', $default = 'DEFAULT NULL', $collation = null, $resolveName = true)
 {
     // TODO: @Shoaibi: Critical: write tests for: integer, smallint, tinyint, blob, date, datetime, double, string, text, email, url
     //  with and without column ending with _id, check collation, unsigned, type, default
     if ($resolveName) {
         $name = static::resolve($name);
     }
     // map reasonable default values
     $defaults = array('hintType' => 'string', 'length' => 255, 'notNull' => 'NULL', 'default' => 'DEFAULT NULL', 'unsigned' => 'eval:DatabaseCompatibilityUtil::resolveUnsignedByHintType($hintType, ' . RedBeanModelMemberRulesToColumnAdapter::ASSUME_SIGNED . ", '{$name}');", 'collation' => 'eval:DatabaseCompatibilityUtil::resolveCollationByHintType($hintType);');
     foreach ($defaults as $key => $defaultValue) {
         if (!isset(${$key})) {
             MetadataUtil::resolveEvaluateSubString($defaultValue, 'hintType', $hintType);
             ${$key} = $defaultValue;
         }
     }
     // field is set to be NOT NULL in db, its default can't be 'NULL', unsetting variable. // Not Coding Standard
     if ($notNull !== 'NULL') {
         $default = null;
     }
     // resolve hint type to db type.
     $type = DatabaseCompatibilityUtil::mapHintTypeIntoDatabaseColumnType($hintType, $length);
     $column = compact('name', 'type', 'unsigned', 'notNull', 'collation', 'default');
     return $column;
 }
 public static function getDefaultTitle()
 {
     $metadata = self::getMetadata();
     $title = $metadata['perUser']['title'];
     MetadataUtil::resolveEvaluateSubString($title);
     return $title;
 }
Example #10
0
 protected static function resolveTabMenuForDynamicLabelContent(&$items)
 {
     foreach ($items as $key => $item) {
         if (isset($items[$key]['dynamicLabelContent'])) {
             MetadataUtil::resolveEvaluateSubString($items[$key]['dynamicLabelContent']);
             if (isset($items[$key]['items'])) {
                 static::resolveTabMenuForDynamicLabelContent($items[$key]['items']);
             }
         }
     }
 }
 /**
  * @param array $metadata
  */
 public static function setMetadata(array $metadata)
 {
     $className = get_called_class();
     if (YII_DEBUG) {
         $className::assertMetadataIsValid($metadata);
     }
     MetadataUtil::setMetadata($className, $metadata);
     GeneralCache::cacheEntry($className . 'Metadata', $metadata);
 }
Example #12
0
 /**
  * Sets new metadata.
  * @param $metadata An array of metadata.
  * @param $user The current user.
  */
 public static function setMetadata(array $metadata, User $user = null)
 {
     $className = get_called_class();
     if (YII_DEBUG) {
         self::assertMetadataIsValid($metadata);
     }
     MetadataUtil::setMetadata($className, $metadata, $user);
     if ($user == null) {
         GeneralCache::forgetEntry($className . 'Metadata');
     }
 }
 /**
  * Sets new metadata.
  * @param $metadata An array of metadata.
  * @param $user The current user.
  */
 public static function setMetadata(array $metadata, User $user = null)
 {
     $className = static::resolveMetadataClassNameToUse();
     if (YII_DEBUG) {
         $className::assertMetadataIsValid($metadata);
     }
     MetadataUtil::setMetadata($className, $metadata, $user);
     if ($user == null) {
         GeneralCache::cacheEntry($className . 'Metadata', $metadata);
     }
 }
 /**
  * @return CFormModel
  * @throws NotSupportedException
  */
 protected function resolveForm()
 {
     if ($this->formModel !== null) {
         return $this->formModel;
     }
     if ($this->formModelClassName == null) {
         throw new NotSupportedException();
     } else {
         $formModelClassName = $this->formModelClassName;
     }
     $formModel = new $formModelClassName();
     $user = Yii::app()->user->userModel;
     $metadata = MetadataUtil::getMetadata('CampaignOverallMetricsView', $user);
     $campaignId = 0;
     if (isset($this->params['relationModel'])) {
         $campaignId = $this->params['relationModel']->id;
     } elseif (isset($this->params['relationModelId'])) {
         $campaignId = $this->params['relationModelId'];
     }
     if (isset($metadata['perUser'][$campaignId])) {
         $formModel->beginDate = $metadata['perUser'][$campaignId]['beginDate'];
         $formModel->endDate = $metadata['perUser'][$campaignId]['endDate'];
         $formModel->groupBy = $metadata['perUser'][$campaignId]['groupBy'];
     } else {
         $metadata = self::getMetadata();
         $perUserMetadata = $metadata['perUser'];
         $this->resolveEvaluateSubString($perUserMetadata, null);
         $formModel->setAttributes($perUserMetadata);
     }
     $this->formModel = $formModel;
     return $formModel;
 }