Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Legacy/Model.php
Строк: 88
<?php
namespace ConcreteCoreLegacy;

/**
 * @deprecated
 */
class Model {

    protected 
$_table;

    public function 
__construct($_table false) {
        if (
$_table) {
            
$this->_table $_table;
        }
    }

    public function 
load($where$args = array()) {
        
$db Loader::db();
        
$r $db->GetRow('select * from ' $this->_table ' where ' $where$args);
        foreach(
$r as $key => $value) {
            
$this->{$key} = $value;
        }
        if (
$r && count(array_keys($r) > 0)) {
            return 
true;
        }
        return 
false;
    }

    public function 
Find($where$args = array()) {
        
$db Loader::db();
        
$return = array();
        
$r $db->GetAll('select * from ' $this->_table ' where ' $where$args);
        foreach(
$r as $row) {
            
$o = new $this;
            
$o array_to_object($o$row);
            
$return[] = $o;
        }
        return 
$return;
    }

    public function 
Save() {
        return 
$this->Replace();
    }

    public function 
Replace() {
        
$db Loader::db();
        
$data = array();

        
$primaryKeys $this->getPrimaryKeys();

        foreach(
$this as $key => $value) {
            if (!
in_array($key, array('_table'))) {
                
$data[$key] = $value;
            }
        }

        
$columnName $this->getAutoIncrementColumnName();
        
$db->Replace($this->_table$data$primaryKeys);
        
$this->setAutoincrementColumn($columnName);
        return 
1;
    }

    protected function 
getPrimaryKeys() {
        
$db Loader::db();
        
$primaryKeys = array();
        
$sm $db->getSchemaManager();
        
$details $sm->listTableDetails($this->_table);
        
$index $details->getPrimaryKey();
        
$columns $index->getColumns();
        foreach(
$columns as $column) {
            
$primaryKeys[] = $column;
        }
        return 
$primaryKeys;
    }

    protected function 
getAutoIncrementColumnName() {
        
$db Loader::db();
        
$sm $db->getSchemaManager();
        
$details $sm->listTableDetails($this->_table);
        foreach(
$details->getColumns() as $name => $column) {
            if(
$column->getAutoincrement()) {
                return 
$name;
            }
        }
        return 
null;
    }
    
    protected function 
setAutoIncrementColumn($name) {
        if(empty(
$name)) {
            return;
        }

        if(
property_exists($this$name) && empty($this->$name)) {
            
$db Loader::db();
            
$this->$name $db->lastInsertId();
        }
    }

    public function 
Insert() {
        
$db Loader::db();
        
$data = array();

        foreach(
$this as $key => $value) {
            if (!
in_array($key, array('_table'))) {
                
$data[$key] = $value;
            }
        }

        
$columnName $this->getAutoIncrementColumnName();
        
$db->insert($this->_table$data);
        
$this->setAutoincrementColumn($columnName);
    }

    public function 
Delete() {
        if (
$this->_table) {
            
$db Loader::db();
            
$primaryKeys $this->getPrimaryKeys();
            
$data = array();
            foreach(
$primaryKeys as $key) {
                
$data[$key] = $this->{$key};
            }
            
$db->delete($this->_table$data);
        }
    }

}
Онлайн: 0
Реклама