Пример #1
0
 function rebuildPath($parentCol, $pathCol, $srcCol, $fromNode = 0)
 {
     $this->db->startTrans();
     $table = $this->tableName();
     $node = $this->db->GetRow("SELECT * FROM {$table} WHERE pk=?", array($fromNode));
     $parentNode = $this->db->GetRow("SELECT * FROM {$table} WHERE pk=?", array(arrData($node, $parentCol)));
     $childNodes = $this->db->GetAll("SELECT * FROM {$table} WHERE {$parentCol}=?", array($fromNode));
     if (!empty($node)) {
         $path = arrData($parentNode, $pathCol, '/');
         $this->db->update($table, array($pathCol => $path . $node[$srcCol] . '/'), 'pk=?', array($node['pk']));
     }
     foreach ($childNodes as $node) {
         $this->rebuildPath($parentCol, $pathCol, $srcCol, $node['pk']);
     }
     $this->db->completeTrans();
 }