. if (!defined('EG')) die('Direct access not allowed!'); class HardwareModel extends Model_Map { public $id_user = 0; public $type = ''; //device type public $lastId = 0; //the id of the last record inserted public $formStruct = array( 'entries' => array( 'deleted'=> array('type'=>'Select','options'=>'no,yes'), 'id_hard' => array( 'type' => 'Hidden' ) ), ); public function __construct() { $this->_tables='hardware,regusers,hardware_users'; $this->_idFields='id_hard,id_user'; $this->_where=array( 'type' => 'hardware', 'username' => 'regusers', 'id_user' => 'regusers', 'has_confirmed' => 'regusers', 'deleted' => 'regusers', '-deleted' => 'hardware' ); $this->orderBy = 'hardware.id_hard desc'; $this->printAssError = "no"; $this->_popupItemNames = array( 'type'=>'type', 'ask_for_del'=>'ask_for_del', '-deleted'=>'deleted', ); $this->_popupLabels = array( 'type'=>'TYPE', 'ask_for_del'=>'ASK FOR DEL?', '-deleted'=>'DELETED?', ); // $this->databaseConditions['insert'] = array( // 'checkUnique' => 'model', // ); // // $this->databaseConditions['update'] = array( // 'checkUniqueCompl' => 'model', // ); parent::__construct(); } public function insert() { $this->values['created_by'] = (int)$this->id_user; $this->values['updated_by'] = (int)$this->id_user; $this->values['update_date'] = date('Y-m-d H:i:s'); //random ID $randomId = md5(uniqid(mt_rand(),true)); $this->values["type"] = $randomId; parent::insert(); //associate the user to the record if ($this->queryResult) { $resId = $this->db->select("hardware","id_hard","type='$randomId'"); $clean['id'] = $resId[0]['hardware']['id_hard']; $this->lastId = $clean['id']; $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']); //update the history table $this->updateHistory('insert'); $this->associate($clean['id']); } } public function update($id) { $clean['id'] = (int)$id; $this->values['updated_by'] = (int)$this->id_user; $this->values['update_date'] = date('Y-m-d H:i:s'); //save the old fields in the revisions table $this->setWhereQueryClause(array('id_hard' => $clean['id'])); $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); if (count($oldStruct > 0)) { if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) { $oldValues = $oldStruct[0]['hardware']; $revisions = new RevisionsModel(); $revisions->values = $oldValues; $revisions->sanitize(); if ($revisions->insert()) { parent::update($clean['id']); if ($this->queryResult) { $this->lastId = $clean['id']; //update the history table $this->updateHistory('update'); if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) { $this->associate($clean['id']); } } } } } } public function makeCurrent($id_rev) { $clean['id_rev'] = (int)$id_rev; $revisions = new RevisionsModel(); $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']); //save the old fields in the revisions table $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard'])); $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); if (count($oldStruct > 0)) { if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) { //get the values of the revision $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev'])); $newStruct = $revisions->getFields($this->fields.',created_by,updated_by,update_date,type'); if (count($newStruct > 0)) { $revisions->values = $oldStruct[0]['hardware']; $revisions->sanitize(); $this->values = $newStruct[0]['revisions']; $this->values['updated_by'] = (int)$this->id_user; $this->values['update_date'] = date('Y-m-d H:i:s'); $this->sanitize(); if ($revisions->insert()) { if (parent::update($clean['id_hard'])) { $this->lastId = $clean['id_hard']; //update the history table $this->updateHistory('update'); if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user)) { $this->associate($clean['id_hard']); } } } } } else { $this->notice = "