diff options
Diffstat (limited to 'h-source/admin/Library/Model/Tree.php')
-rwxr-xr-x | h-source/admin/Library/Model/Tree.php | 287 |
1 files changed, 0 insertions, 287 deletions
diff --git a/h-source/admin/Library/Model/Tree.php b/h-source/admin/Library/Model/Tree.php deleted file mode 100755 index d7b655d..0000000 --- a/h-source/admin/Library/Model/Tree.php +++ /dev/null @@ -1,287 +0,0 @@ -<?php - -// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -// See COPYRIGHT.txt and LICENSE.txt. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Model_Tree extends Model_Base { - - public function __construct() { - parent::__construct(); - } - - //method to create the first part of where clause - //$index: the index of $this->_tablesArray - public function createTreeWhere($index) { - if (isset($this->on)) - { - return $this->on; - } - else - { - $whereArray = array(); - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $whereArray[] = $this->_tablesArray[$i].'.'.$this->_idFieldsArray[$i+1].'='.$this->_tablesArray[$i+1].'.'.$this->_idFieldsArray[$i+1]; - } - $whereString = !empty($whereArray) ? implode(' and ',$whereArray) : null; - return $whereString; - } - } - - //create the list of tables of the select query - //$index: the index of $this->_tablesArray - public function createTablesList($index) { - if (isset($this->from)) - { - return $this->from; - } - else - { - $tablesString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $tablesString .= $this->_tablesArray[$i] . ','; - } - $tablesString .= $this->_tablesArray[count($this->_tablesArray)-1]; - return $tablesString; - } - } - - //method to create the list of fields of the select query - public function createFieldsList($index) { - $fieldsString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $fieldsString .= $this->_tablesArray[$i] . '.*,'; - } - $fieldsString .= $this->_tablesArray[count($this->_tablesArray)-1].'.*'; - return $fieldsString; - } - - - //method to create the where clause and the list of tables and fields of the select query - //$tableName: the table name ($this->_tablesArray) - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - //return: $elements = array('tables'=>$tables,'where'=>$where,'fields'=>$fields) - public function treeQueryElements($tableName,$choice = 'all') - { - $index = array_search($tableName,$this->_tablesArray); - $subArray = ($choice === 'all') ? array_slice($this->_tablesArray,$index) : array($tableName); //this array is necessary to verify that the where clause makes sense - $tables = ($choice === 'all') ? $this->createTablesList($index) : $tableName; - $where = ($choice === 'all') ? $this->createTreeWhere($index) : null; - $fields = ($choice === 'all') ? $this->createFieldsList($index) : $tableName.'.*'; - - $wherePlus = $this->createWhereClause(); - - if (!isset($this->on)) - { - $on = null; - - if (isset($where) and isset($wherePlus)) - { - $where .= ' AND ' . $wherePlus; - } - else if (!isset($where) and isset($wherePlus)) - { - $where .= $wherePlus; - } - } - else - { - $on = (strcmp($where,'-') !== 0) ? $where : null; - $where = $wherePlus; - } - - return array('tables' => $tables,'where' => $where,'fields'=>$fields,'on'=>$on); - } - - - //method to obtain the values of the whole tree - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - public function getAll($choice = 'all') { - return $this->getFields('',$choice); - } - - //method to get the values of the selected fields - //it walks the tree by means of a join query - //$fields: the fields that have to be excracted from the tableName - public function getFields($fields = '',$choice = 'all') - { - $elements = $this->treeQueryElements($this->_tablesArray[0],$choice); - - $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; - - return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit,$elements['on'],$this->using); - } - - public function send() - { - $table = $this->getFields($this->select); - - if ($this->toList) - { - $key = $this->listArray[0]; - $value = isset($this->listArray[1]) ? $this->listArray[1] : null; - $this->toList = false; - return $this->getList($table, $key, $value); - } - else - { - return $table; - } - } - - //call the getAll method with $tableName = $this->_tablesArray[0] - //the fields that have to be extracted from the table - public function getTable($fields = null) { - return isset($fields) ? $this->getFields($fields) : $this->getAll(); - } - - //select the values of a specified record - //$id: the id (primary key) of the record - //$fields: the comma separated list of fields that have to be extracted - public function selectId($id,$fields = null) { - $this->setWhereQueryClause(array($this->_idFieldsArray[0] => (int)$id)); - - $this->using = null; - - if (isset($fields)) - { - $values = $this->getFields($fields,'other'); - } - else - { - $values = $this->getAll('other'); - } - - return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); - - } - - //get the number of records () - //the number of records of the table $tableName is returned - public function rowNumber() { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getMax($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getMin($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getSum($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getAvg($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - //check if the table has the field $field equal to $value - public function has($field,$value) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - -// //get the number of records of the table $this->_tablesArray[0] -// public function rowNumber() { -// return $this->recordNumber($this->_tablesArray[0]); -// } - - //method to call the delete query (overriding of the del method of Model.php) - //check the referential integrity - public function del($id = null, $whereClause = null) - { - $this->queryResult = false; - - if (isset($whereClause)) - { - return parent::del(null,$whereClause); - } - else - { - if ($this->_onDelete === 'check' and isset($this->_reference)) - { - if (isset($this->_reference[0]) and isset($this->_reference[1])) - { - if ($this->db->recordExists($this->_reference[0],$this->_reference[1],(int)$id)) - { - $this->notice = $this->_resultString->getString('associate'); - $this->identifierValue = null; - $this->result = false; - } - else - { - return parent::del((int)$id); - } - } - else - { - throw new Exception('you have forgotten to set \'$this->_reference\' or you have forgotten to set $this->_onDelete = \'nocheck\''); - } - } - else - { - return parent::del((int)$id); - } - } - return false; - } - - //method to obtain one columns from the tables $this->_tablesArray as an associative array - //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys - public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) { - - $keyField = isset($keyField) ? $keyField : $valueField; - $valueFieldArray = explode(':',$valueField); - $keyFieldArray = explode(':',$keyField); - - $keyFieldTable = $keyFieldArray[0]; - $valueFieldTable = $valueFieldArray[0]; - - $keyFieldName = $keyFieldArray[1]; - $valueFieldName = $valueFieldArray[1]; - - $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); - - $temp = $this->where; //save the $this->where array - $this->where = array(); - - if (strcmp($keyFieldTable,$valueFieldTable) !== 0) { - throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); - } - - if (!in_array($keyFieldTable,$this->_tablesArray)) { - throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); - } - - $elements = $this->treeQueryElements($keyFieldTable,''); - - $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit,$elements['on'],$this->using); - $this->where = $temp; - - $returnArray = array(); - foreach ($table as $record) { - $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; - } - - return $returnArray; - - } - -}
\ No newline at end of file |