]> git.imager.perl.org - bse.git/blob - site/cgi-bin/modules/BSE/TB/Products.pm
modernize edit_prodopts.tmpl
[bse.git] / site / cgi-bin / modules / BSE / TB / Products.pm
1 package BSE::TB::Products;
2 use strict;
3 use Squirrel::Table;
4 use vars qw(@ISA $VERSION);
5 @ISA = qw(Squirrel::Table BSE::TB::TagOwners);
6 use BSE::TB::Product;
7
8 our $VERSION = "1.005";
9
10 sub rowClass {
11   return 'BSE::TB::Product';
12 }
13
14 sub all_visible_children {
15   my ($self, $id) = @_;
16
17   require BSE::TB::OtherParents;
18   my @normal_prods = BSE::TB::Products->visible_children($id);
19   my @step_prods = BSE::TB::Products->visible_step_children($id);
20   
21   my %order =
22     (
23      ( map { $_->{id} => $_->{displayOrder} } @normal_prods ),
24      ( map 
25        { 
26          $_->{childId} => $_->{parentDisplayOrder}
27        } BSE::TB::OtherParents->getBy(parentId => $id)
28      )
29     );
30
31   my %kids = map { $_->{id} => $_ } @step_prods, @normal_prods;
32
33   return @kids{ sort { $order{$b} <=> $order{$a} } keys %kids };
34 }
35
36 sub all_visible_product_tags {
37   my ($self, $id) = @_;
38
39   require BSE::TB::Tags;
40   require BSE::TB::TagMembers;
41   return
42     {
43      tags => [ BSE::TB::Tags->getSpecial(allprods => $id, $id) ],
44      members => [ BSE::TB::TagMembers->getSpecial(allprods => $id, $id) ],
45     };
46 }
47
48 *all_visible_products = \&all_visible_children;
49
50 sub visible_children {
51   my ($class, $id) = @_;
52
53   use BSE::Util::SQL qw/now_sqldate/;
54   my $today = now_sqldate();
55   
56   return BSE::TB::Products->getSpecial(visible_children_of => $id, $today);
57 }
58
59 sub visible_step_children {
60   my ($class, $id) = @_;
61
62   use BSE::Util::SQL qw/now_sqldate/;
63   my $today = now_sqldate();
64   
65   return BSE::TB::Products->getSpecial(visibleStep => $id, $today);
66 }
67
68 {
69   my $tiers;
70   sub pricing_tiers {
71     unless ($tiers) {
72       require BSE::TB::PriceTiers;
73       $tiers = [ sort { $a->display_order <=> $b->display_order }
74                  BSE::TB::PriceTiers->all ];
75     }
76
77     return @$tiers;
78   }
79 }
80
81 1;