Report abuse

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
34
35
36
37
38
39
40
# package CustomFields::Util, line 212

# Populate where the fields are in @pre_sort
for (my $i = 0; $i < scalar @pre_sort; $i++) {
    my $basename = $pre_sort[$i]->{basename};
    $markers{$basename} = $i;
}

if($app->user) {
    my $author_id = $app->user->id;

    require MT::PluginData;
    my $plugindata = MT::PluginData->get_by_key({ plugin => 'CustomFields', key => "field_order_$author_id" });
    my $data = $plugindata->data || {};
    $data->{$blog_id} ||= {};

    my $order = $data->{$blog_id}->{$obj_type};
    if($order) {
        # Break up order and populate @post_sort from the markers
        foreach my $basename (split ',', $order) {
            my $i = $markers{$basename};
            next if !defined($i);
            push @post_sort, $pre_sort[$i];
        }

        # Now we add any fields that weren't in our order 
        # For example if someone set the order and then added fields
        foreach my $basename (keys %markers) {
            my $found = index $order, $basename;
            next unless $found == -1;

            my $i = $markers{$basename};
            push @post_sort, $pre_sort[$i];
        }

        return \@post_sort;
    }
}

return \@pre_sort;