Thread Frage zu insert_node (2 answers)
Opened by pktm at 2010-06-12 00:57

pktm
 2010-06-12 00:57
#138261 #138261
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Im Code für das Board hier gibt es in WWW::Battie::NestedSet die Methode insert_node.
Der kann eine $id übergeben werden, aber was genau passiert dann damit?

Hier mal der Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
sub insert_node {
my ($class, $rs, $id, $data) = @_;
my $var = $class . "::_nested_set";
no strict 'refs';
my ($left_id, $right_id, $parent_id) = (1, 2, 0);
$data->{title} = 'root' unless defined $data->{title};
if ($id) {
my $cat = $rs->find($id) or return;
my $upper = $rs->search({
left_id => { '<=' => $cat->left_id },
right_id => { '>=' => $cat->right_id },
});
$upper->update({
right_id => \'right_id + 2',
});
my $right = $rs->search({
left_id => { '>' => $cat->left_id },
right_id => { '>' => $cat->right_id },
});
$right->update({
left_id => \'left_id + 2',
right_id => \'right_id + 2',
});
($left_id, $right_id, $parent_id) = ($cat->right_id, $cat->right_id + 1, $cat->id);
}
my $node = $rs->create({
%$data,
left_id => $left_id,
right_id => $right_id,
parent_id => $parent_id,
});
return $node;
}


Soll der neue Knoten als erstes Element innerhalb dieses Knotens eingefügt werden?

Dann irritiert mich noch ein bißchen das hier:
Code: (dl )
($left_id, $right_id, $parent_id) = ($cat->right_id, $cat->right_id + 1, $cat->id);


Wenn der Knoten mit $id left_id = 5 und right_id = 6 hat, dann bekommt der neue Knoten left_id = 6 und right_id = 7. Überlappen die sich dann nicht?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Frage zu insert_node