Example #1
0
 /**
  * Checks call to see if we can create a table from a magic call (for you wizards).
  * hover_striped, bordered_condensed, etc.
  *
  * @param string $method     Method name
  * @param array  $parameters Method parameters
  *
  * @return mixed
  */
 public static function __callStatic($method, $parameters)
 {
     // Opening a table
     if (TB::str_contains($method, 'open') or $method == 'open') {
         $method = strtolower($method);
         $classes = explode('_', $method);
         $method = array_pop($classes);
         // Fallback to default type if defined
         if (sizeof($classes) == 0) {
             $classes = Kohana::$config->load('tb.table.classes');
         }
         // Filter table classes
         $classes = array_intersect($classes, static::$classes);
         $attributes = TB::set_multi_class_attributes($method, $classes, $parameters, 0, 'table-');
         $attributes = Arr::get($attributes, 0);
         static::$table = new static($attributes);
         return static::$table->open();
     }
     // Set default function
     if (!$method) {
         $method = 'table';
     }
     // Use cases
     switch ($method) {
         case 'close':
             $close = static::table()->close();
             static::$table = NULL;
             return $close;
             break;
         default:
             return call_user_func_array(array(static::table(), $method), $parameters);
             break;
     }
 }
// Register properties
$builder->registerPropertyName('id', 'public_id');
$builder->registerPropertyName('name', 'public_name');
$builder->registerPropertyName('score', 'public_score');
/**
 * Set select order
 */
// Order by score desc
$builder->orderBy(new OrderParameter('score', OrderParameter::DESC));
// Same score? Order by name asc
$builder->orderBy(new OrderParameter('name', OrderParameter::ASC));
// Same score and same name? Sort on ID
$builder->orderBy(new OrderParameter('id', OrderParameter::ASC));
// Set the request parameters
$builder->setRequest($_GET);
/**
 * Select and output data
 */
// Build the select query
$query = $builder->build();
// Load the data
$sql = $query->toQuery($pdo, 'entries');
$results = $pdo->query($sql)->fetchAll();
// Post process results. Very important. Don't forget.
$results = $builder->processResults($query, $results);
// Display the records
$table = new Table(['id', 'name', 'score']);
$table->open();
$table->data($results);
$table->close();
$table->navigation($builder->getNavigation());