Ejemplo n.º 1
0
 /**
  * Gets a model's columns given the a model's config
  *
  * @param ModelConfig		$config
  *
  * @return array(
  *			'columns' => array(detailed..),
  *			'includedColumns' => array(field => full_column_name, ...)),
  *			'computedColumns' => array(key, key, key)
  */
 public static function getColumns($config)
 {
     $model = $config->model;
     $return = array('columns' => array(), 'columnArrays' => array(), 'columnObjects' => array(), 'includedColumns' => array(), 'computedColumns' => array(), 'relatedColumns' => array());
     //check if there are columns to iterate over
     if (count($config->columns) > 0) {
         $columns = array();
         foreach ($config->columns as $field => $column) {
             //get the column object
             if (!($columnObject = Column::get($field, $column, $config))) {
                 continue;
             }
             //save the column object with a $field-based key, as a simple array (to use in knockout), and as a simple array of arrays
             $return['columnObjects'][$field] = $columnObject;
             $return['columns'][] = $columnObject;
             $return['columnArrays'][] = $columnObject->toArray();
             //categorize the columns
             if ($columnObject->isRelated) {
                 $return['relatedColumns'][$columnObject->field] = $columnObject->field;
                 //if there are nested values, we'll want to grab the values slightly differently
                 if (sizeof($columnObject->nested)) {
                     $fk = $columnObject->nested['models'][0]->{$columnObject->nested['pieces'][0]}()->foreign;
                     $return['includedColumns'][$fk] = $model->table() . '.' . $fk;
                 } else {
                     if ($fk = $columnObject->relationshipField->foreignKey) {
                         $return['includedColumns'][$fk] = $model->table() . '.' . $fk;
                     }
                 }
             } else {
                 if ($columnObject->isComputed) {
                     $return['computedColumns'][$columnObject->field] = $columnObject->field;
                 } else {
                     $return['includedColumns'][$columnObject->field] = $model->table() . '.' . $columnObject->field;
                 }
             }
         }
     } else {
         throw new Exception("Administrator: you must provide a valid 'columns' array in each model's config");
     }
     //make sure the table key is included
     if (!array_get($return['includedColumns'], $model::$key)) {
         $return['includedColumns'][$model::$key] = $model->table() . '.' . $model::$key;
     }
     //make sure any belongs_to fields that aren't on the columns list are included
     $editFields = Field::getEditFields($config);
     foreach ($editFields['objectFields'] as $field => $info) {
         if (is_a($info, 'Admin\\Libraries\\Fields\\Relationships\\BelongsTo')) {
             $return['includedColumns'][$info->foreignKey] = $model->table() . '.' . $info->foreignKey;
         }
     }
     return $return;
 }
Ejemplo n.º 2
0
 /**
  * Gets a model's columns given the a model's config
  *
  * @param ModelConfig		$config
  *
  * @return array(
  *			'columns' => array(detailed..),
  *			'includedColumns' => array(field => full_column_name, ...)),
  *			'computedColumns' => array(key, key, key)
  */
 public static function getColumns($config)
 {
     $model = $config->model;
     $return = array('columns' => array(), 'columnArrays' => array(), 'columnObjects' => array(), 'includedColumns' => array(), 'computedColumns' => array(), 'relatedColumns' => array());
     //check if there are columns to iterate over
     if (count($config->columns) > 0) {
         $columns = array();
         foreach ($config->columns as $field => $column) {
             //get the column object
             if (!($columnObject = Column::get($field, $column, $config))) {
                 continue;
             }
             //save the column object with a $field-based key, as a simple array (to use in knockout), and as a simple array of arrays
             $return['columnObjects'][$field] = $columnObject;
             $return['columns'][] = $columnObject;
             $return['columnArrays'][] = $columnObject->toArray();
             //categorize the columns
             if ($columnObject->isRelated) {
                 $return['relatedColumns'][$columnObject->field] = $columnObject->field;
                 if ($fk = $columnObject->relationshipField->foreignKey) {
                     $return['includedColumns'][$fk] = $model->table() . '.' . $fk;
                 }
             } else {
                 if ($columnObject->isComputed) {
                     $return['computedColumns'][$columnObject->field] = $columnObject->field;
                 } else {
                     $return['includedColumns'][$columnObject->field] = $model->table() . '.' . $columnObject->field;
                 }
             }
         }
     } else {
         throw new Exception("Administrator: you must provide a valid 'columns' array in each model's config");
     }
     //make sure the table key is included
     if (!array_get($return['includedColumns'], $model::$key)) {
         $return['includedColumns'][$model::$key] = $model->table() . '.' . $model::$key;
     }
     return $return;
 }
Ejemplo n.º 3
0
Archivo: Column.php Proyecto: ajb/rfpez
 /**
  * Gets the model's columns
  *
  * @param object	$model
  * @param bool		$toArray
  *
  * @return array(
  *			'columns' => array(detailed..),
  *			'includedColumns' => array(field => full_column_name, ...)),
  *			'computedColumns' => array(key, key, key)
  */
 public static function getColumns($model, $toArray = true)
 {
     $return = array('columns' => array(), 'includedColumns' => array(), 'computedColumns' => array(), 'relatedColumns' => array());
     if (isset($model->columns) && count($model->columns) > 0) {
         $columns = array();
         foreach ($model->columns as $field => $column) {
             //get the column object
             if (!($columnObject = Column::get($field, $column, $model))) {
                 continue;
             }
             //if $toArray is true, add the column as an array. otherwise add the column object
             if ($toArray) {
                 $return['columns'][$columnObject->field] = $columnObject->toArray();
             } else {
                 $return['columns'][$columnObject->field] = $columnObject;
             }
             //categorize the columns
             if ($columnObject->isRelated) {
                 $return['relatedColumns'][$columnObject->field] = $columnObject->field;
                 if ($fk = $columnObject->relationshipField->foreignKey) {
                     $return['includedColumns'][$fk] = $model->table() . '.' . $fk;
                 }
             } else {
                 if ($columnObject->isComputed) {
                     $return['computedColumns'][$columnObject->field] = $columnObject->field;
                 } else {
                     $return['includedColumns'][$columnObject->field] = $model->table() . '.' . $columnObject->field;
                 }
             }
         }
     } else {
         //throw exception!
     }
     //make sure the table key is included
     if (!array_get($return['includedColumns'], $model::$key)) {
         $return['includedColumns'][$model::$key] = $model->table() . '.' . $model::$key;
     }
     return $return;
 }