Ejemplo n.º 1
0
 /**
  *
  * @param Database_Query_Builder_Select $query
  */
 public function apply_filters(&$query)
 {
     $profiler = Profiler::start('WebDB', get_class() . '::' . __METHOD__);
     foreach ($this->_filters as $filter) {
         // 'Raw' filters don't require translation
         if ($filter['raw'] === TRUE) {
             $col_name = $this->get_name() . '.' . $filter['column'];
             $query->where($col_name, $filter['operator'], $filter['value']);
             continue;
         }
         $column = $this->_columns[$filter['column']];
         $filter['column'] = $this->join_for($column, $query);
         // LIKE or NOT LIKE
         if ($filter['operator'] == 'like' or $filter['operator'] == 'not like') {
             $filter['value'] = '%' . $filter['value'] . '%';
             $filter['column'] = DB::expr('CONVERT(' . $filter['column'] . ', CHAR)');
         }
         // IS EMPTY
         if ($filter['operator'] == 'empty') {
             $query->where($filter['column'], 'IS', NULL);
             $query->or_where($filter['column'], '=', '');
             $filter['column'] = '';
         }
         // IS NOT EMPTY
         if ($filter['operator'] == 'not empty') {
             $query->where($filter['column'], 'IS NOT', NULL);
             $query->and_where($filter['column'], '!=', '');
             $filter['column'] = '';
         }
         if (!empty($filter['column'])) {
             $query->where($filter['column'], $filter['operator'], $filter['value']);
         }
     }
     // end foreach filter
     Profiler::stop($profiler);
 }
Ejemplo n.º 2
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.º 3
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.º 4
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;
 }