Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
35.29% covered (danger)
35.29%
6 / 17
CRAP
52.73% covered (warning)
52.73%
29 / 55
abstract_rownosql
0.00% covered (danger)
0.00%
0 / 1
35.29% covered (danger)
35.29%
6 / 17
110.82
52.73% covered (warning)
52.73%
29 / 55
 __construct
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
 getModel
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 save
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 5
 update
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 insert
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 delete
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 isEmpty
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 3
 chooseUpdate
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getToUpdate
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
7 / 7
 getWhere
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
10 / 10
 __set
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 __get
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 3
 __isset
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 __unset
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 setId
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 6
 getId
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 getTab
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
<?php
/*
This file is part of Mkframework.
Mkframework is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License.
Mkframework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with Mkframework.  If not, see <http://www.gnu.org/licenses/>.
*/
/**
* classe abstract_row
* @author Mika
* @link http://mkf.mkdevs.com/
*/
abstract class abstract_rownosql{
    
    private $_bChooseUpdate=false;
    protected $_tProperty=array();
    protected $_tPropertyToUpdate;
    /**
    * constructeur
    * @access public
    */
    public function __construct($tRow=null){
        if($tRow!=null){
            $this->_tProperty=$tRow;
            $this->chooseUpdate();
        }
    }
    /**
    * retourne l'objet model
    * @access public
    * @return object
    */
    public function getModel(){
        $sModel=$this->sClassModel;
        return call_user_func(array($sModel,'getInstance'));
    }
    /**
    * enregistre la row
    * @access public
    */
    public function save(){
        if($this->_bChooseUpdate == true){
            $this->update();
        }else{
            $this->setId($this->insert());
        }
    }
    /**
    * enregistre la row par update
    * @access public
    */
    public function update(){
        $this->getModel()->update($this);
    }
    /**
    * enregistre la row par insertion
    * @access public
    */
    public function insert(){
        return $this->getModel()->insert($this);
    }
    
    /**
    * supprime la row
    * @access public
    */
    public function delete(){
        return $this->getModel()->delete($this);
    }
    
    /**
    * retourne si l'objet est vide ou non (pour verifier suite a une requete par exemple)
    * @return bool
    */
    public function isEmpty(){
      if(empty($this->_tProperty) and empty($this->_tPropertyToUpdate)){
        return true;
      }
      return false;
    }
    
    public function chooseUpdate(){
        $this->_bChooseUpdate=true;
    }
    /**
    * retourne le tableau contenant les proprietes a mettre a jour
    * @access public
    * @return array
    */
    public function getToUpdate(){
        $tToUpdate=array();
        if($this->_tPropertyToUpdate){
            foreach($this->_tPropertyToUpdate as $sVar){
                $tToUpdate[$sVar]=$this->_tProperty[$sVar];
            }
        }
        return $tToUpdate;
    }
    /**
    * retourne le tableau contenant les proprietes id
    * @access public
    * @return array
    */
    public function getWhere(){
        $tWhereId=array();
        $tId=$this->getModel()->getIdTab();
        if($tId){
            foreach($tId as $sVar){
                if(isset($this->_tProperty[$sVar])){
                    $tWhereId[$sVar]=$this->_tProperty[$sVar];
                }
            }
        }
        return $tWhereId;
    }
    
    /**
    * setter
    */
    public function __set($sVar,$sVal){
        $this->_tProperty[$sVar]=$sVal;
        $this->_tPropertyToUpdate[]=$sVar;
    }
    /**
    * getter
    */
    public function __get($sVar){
        if(array_key_exists( (string)$sVar,$this->_tProperty)){
            return $this->_tProperty[$sVar];
        }
        return null;
    }
    /** 
    * isset
    */
    public function __isset($sVar){
        return isset($this->_tProperty[$sVar]);
    }
    
    /** 
    * unset
    */
    public function __unset($sVar){
        unset($this->_tProperty[$sVar]);
    }
    /**
    * force l'id de l'enregistrement
    * @param undefined $uId
    */
    public function setId($uId){
        if($uId == null){ return false; }
        $tColumnId=$this->getModel()->getIdTab();
        $sColumnId=$tColumnId[0];
        
        $this->_tProperty[$sColumnId]=$uId;
        
        $this->chooseUpdate();
    }
    
    public function getId(){
        return implode('::',$this->getWhere());
    }
    public function getTab(){
        return $this->_tProperty;
    }
}