Example #1
0
 /**
  * Set level for descendents.
  *
  * @param Model $Model Model using this behavior.
  * @param int|string $id Record ID
  * @return void
  */
 protected function _setChildrenLevel(Model $Model, $id)
 {
     $settings = $Model->Behaviors->Tree->settings[$Model->alias];
     $primaryKey = $Model->primaryKey;
     $depths = array($id => (int) $Model->data[$Model->alias][$settings['level']]);
     $children = $Model->children($id, false, array($primaryKey, $settings['parent'], $settings['level']), $settings['left'], null, 1, -1);
     foreach ($children as $node) {
         $parentIdValue = $node[$Model->alias][$settings['parent']];
         $depth = (int) $depths[$parentIdValue] + 1;
         $depths[$node[$Model->alias][$primaryKey]] = $depth;
         $Model->updateAll(array($Model->escapeField($settings['level']) => $depth), array($Model->escapeField($primaryKey) => $node[$Model->alias][$primaryKey]));
     }
 }