/**
  * Get the meta data and merge with standard CGridView column elements
  * to create a column array that fits the CGridView columns API
  * @return array
  */
 protected function getCGridViewColumns()
 {
     $columns = array();
     if ($this->rowsAreExpandable()) {
         $firstColumn = array('class' => 'DrillDownColumn', 'id' => $this->gridId . $this->gridIdSuffix . '-rowDrillDown', 'htmlOptions' => array('class' => 'hasDrillDownLink'));
         array_push($columns, $firstColumn);
     }
     $grandTotals = $this->dataProvider->runQueryAndGrandTotalsData();
     $grandTotalsRow = $grandTotals[0];
     $isFirstRow = true;
     foreach ($this->dataProvider->resolveDisplayAttributes() as $key => $displayAttribute) {
         if (!$displayAttribute->queryOnly) {
             $columnClassName = $this->resolveColumnClassNameForListViewColumnAdapter($displayAttribute);
             $attributeName = $displayAttribute->resolveAttributeNameForGridViewColumn($key);
             $params = $this->resolveParamsForColumnElement($displayAttribute);
             $columnAdapter = new $columnClassName($attributeName, $this, $params);
             $column = $columnAdapter->renderGridViewData();
             $column['header'] = $displayAttribute->label;
             if (!isset($column['class'])) {
                 $column['class'] = 'DataColumn';
             }
             if (isset($grandTotalsRow) && $isFirstRow) {
                 $column['footer'] = Zurmo::t('Core', 'Total');
             }
             if (isset($grandTotalsRow[$displayAttribute->columnAliasName])) {
                 $column['footer'] = $columnAdapter->renderValue($grandTotalsRow[$displayAttribute->columnAliasName]);
             }
             array_push($columns, $column);
             $isFirstRow = false;
         }
     }
     return $columns;
 }
 /**
  * Get the meta data and merge with standard CGridView column elements
  * to create a column array that fits the CGridView columns API
  * @return array
  */
 protected function getCGridViewColumns()
 {
     $columns = array();
     if ($this->rowsAreExpandable()) {
         $firstColumn = array('class' => 'DrillDownColumn', 'id' => $this->gridId . $this->gridIdSuffix . '-rowDrillDown', 'htmlOptions' => array('class' => 'hasDrillDownLink'));
         array_push($columns, $firstColumn);
     }
     foreach ($this->dataProvider->resolveDisplayAttributes() as $key => $displayAttribute) {
         if (!$displayAttribute->queryOnly) {
             $columnClassName = $this->resolveColumnClassNameForListViewColumnAdapter($displayAttribute);
             $attributeName = $displayAttribute->resolveAttributeNameForGridViewColumn($key);
             $params = $this->resolveParamsForColumnElement($displayAttribute);
             $columnAdapter = new $columnClassName($attributeName, $this, $params);
             $column = $columnAdapter->renderGridViewData();
             $column['header'] = $displayAttribute->label;
             if (!isset($column['class'])) {
                 $column['class'] = 'DataColumn';
             }
             array_push($columns, $column);
         }
     }
     return $columns;
 }