00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 require_once 'Varien/Db/Tree/Node/Exception.php';
00029
00030 class Varien_Db_Tree_Node {
00031
00032 private $left;
00033 private $right;
00034 private $id;
00035 private $pid;
00036 private $level;
00037 private $title;
00038 private $data;
00039
00040
00041 public $hasChild = false;
00042 public $numChild = 0;
00043
00044
00045 function __construct($nodeData = array(), $keys) {
00046 if (empty($nodeData)) {
00047 throw new Varien_Db_Tree_Node_Exception('Empty array of node information');
00048 }
00049 if (empty($keys)) {
00050 throw new Varien_Db_Tree_Node_Exception('Empty keys array');
00051 }
00052
00053 $this->id = $nodeData[$keys['id']];
00054 $this->pid = $nodeData[$keys['pid']];
00055 $this->left = $nodeData[$keys['left']];
00056 $this->right = $nodeData[$keys['right']];
00057 $this->level = $nodeData[$keys['level']];
00058
00059 $this->data = $nodeData;
00060 $a = $this->right - $this->left;
00061 if ($a > 1) {
00062 $this->hasChild = true;
00063 $this->numChild = ($a - 1) / 2;
00064 }
00065 return $this;
00066 }
00067
00068 function getData($name) {
00069 if (isset($this->data[$name])) {
00070 return $this->data[$name];
00071 } else {
00072 return null;
00073 }
00074 }
00075
00076 function getLevel() {
00077 return $this->level;
00078 }
00079
00080 function getLeft() {
00081 return $this->left;
00082 }
00083
00084 function getRight() {
00085 return $this->right;
00086 }
00087
00088 function getPid() {
00089 return $this->pid;
00090 }
00091
00092 function getId() {
00093 return $this->id;
00094 }
00095
00096
00097
00098
00099
00100
00101 function isParent() {
00102 if ($this->right - $this->left > 1) {
00103 return true;
00104 } else {
00105 return false;
00106 }
00107 }
00108 }