Ejemplo n.º 1
0
 public function execute($db = NULL, $as_object = NULL, $object_params = NULL)
 {
     if ($db === NULL and $this->meta()) {
         $db = Database::instance($this->meta()->db());
     }
     return parent::execute($db, $as_object, $object_params);
 }
Ejemplo n.º 2
0
 public function export()
 {
     $export_dir = Kohana::$cache_dir . DIRECTORY_SEPARATOR . 'exports';
     @mkdir($export_dir);
     $filename = $export_dir . DIRECTORY_SEPARATOR . uniqid() . '.csv';
     if (Kohana::$is_windows) {
         $filename = str_replace('\\', '/', $filename);
     }
     $headers_query = new Database_Query_Builder_Select();
     $data_query = new Database_Query_Builder_Select();
     $headers_query->union($data_query);
     $alias_num = 1;
     foreach ($this->get_columns() as $col) {
         $header = "'" . WebDB_Text::titlecase($col->get_name()) . "'";
         $headers_query->select(DB::expr($header));
         if ($col->is_foreign_key()) {
             $fk1_alias = "e{$alias_num}";
             $alias_num++;
             $fk1_table = $col->get_referenced_table();
             $data_query->join(array($fk1_table->get_name(), $fk1_alias), 'LEFT OUTER');
             $data_query->on($this->get_name() . '.' . $col->get_name(), '=', "{$fk1_alias}.id");
             $select = $fk1_alias . '.' . $fk1_table->get_title_column()->get_name();
             if ($fk1_table->get_title_column()->is_foreign_key()) {
                 $fk2_alias = "e{$alias_num}";
                 $alias_num++;
                 $fk2_table = $fk1_table->get_title_column()->get_referenced_table();
                 $data_query->join(array($fk2_table->get_name(), $fk2_alias), 'LEFT OUTER');
                 $data_query->on($fk1_alias . '.' . $fk1_table->get_title_column()->get_name(), '=', "{$fk2_alias}.id");
                 $select = $fk2_alias . '.' . $fk2_table->get_title_column()->get_name();
             }
         } else {
             $select = $this->get_name() . '.' . $col->get_name();
         }
         $data_query->select(DB::expr("REPLACE(IFNULL({$select}, ''),'\r\n', '\n')"));
     }
     $data_query->from($this->get_name());
     $this->add_get_filters();
     $this->apply_filters($data_query);
     $data_query->outfile($filename);
     $headers_query->outfile();
     $headers_query->execute($this->_db);
     if (!file_exists($filename)) {
         throw new Kohana_Exception("Export file not created: {$filename}");
     }
     return $filename;
 }
Ejemplo n.º 3
0
 /**
  * Get an array of permissions for the current user.
  *
  * @return array
  */
 public function get_permissions()
 {
     $default_permissions = array(array('database_name' => '*', 'table_name' => '*', 'column_names' => '*', 'where_clause' => NULL, 'permission' => '*', 'identifier' => '*'));
     $config = Kohana::$config->load('webdb');
     // See if WebDB permissions are being used.
     if (!isset($config->permissions) or empty($config->permissions['table'])) {
         return $default_permissions;
     }
     // Fully-qualify the database name.
     $db_name = '';
     if (!empty($config->permissions['database'])) {
         $db_name = $config->permissions['database'] . '.';
     }
     // For individual permissions tables per database, see if the
     // permissions table exists in the current database.
     if (empty($db_name) and !empty($config->permissions['table'])) {
         if ($current_db = $this->get_database()) {
             if (!in_array($config->permissions['table'], $current_db->list_tables())) {
                 return $default_permissions;
             }
         }
     }
     // Finally, fetch the permissions rows.
     $query = new Database_Query_Builder_Select();
     $query->from($db_name . $config->permissions['table']);
     $query->where('identifier', 'IN', array(Auth::instance()->get_user(), '*'));
     $rows = $query->execute($this->_db)->as_array();
     return $rows;
 }
Ejemplo n.º 4
0
 /**
  * Get a single row as an associative array.
  *
  * @param integer $id The ID of the row to get.
  * @return array
  */
 public function get_row($id)
 {
     $query = new Database_Query_Builder_Select();
     $query->from($this->get_name());
     $query->limit(1);
     $pk_column = $this->get_pk_column();
     $pk_name = !$pk_column ? 'id' : $pk_column->get_name();
     $query->where($pk_name, '=', $id);
     $row = $query->execute($this->_db)->current();
     return $row;
 }
Ejemplo n.º 5
0
 /**
  * Get an array of permissions for the current user.
  *
  * @return array
  */
 public function get_permissions()
 {
     $default_permissions = array(array('database_name' => '*', 'table_name' => '*', 'column_names' => '*', 'where_clause' => NULL, 'permission' => '*', 'identifier' => '*'));
     $config = Kohana::config('webdb');
     if (!isset($config->permissions) || empty($config->permissions['table'])) {
         return $default_permissions;
     }
     $query = new Database_Query_Builder_Select();
     $query->from($config['database'] . '.' . $config['table']);
     $query->where('identifier', 'IN', array(Auth::instance()->get_user(), '*'));
     $rows = $query->execute($this->_db)->as_array();
     return $rows;
 }