root/branches/release-33/lib/MT/Touch.pm @ 1723

Revision 1723, 1.7 kB (checked in by bchoate, 20 months ago)

Added non-cacheable flag for MT::Touch.

Line 
1# Movable Type (r) Open Source (C) 2001-2008 Six Apart, Ltd.
2# This program is distributed under the terms of the
3# GNU General Public License, version 2.
4#
5# $Id$
6
7package MT::Touch;
8
9use strict;
10use base qw( MT::Object );
11
12__PACKAGE__->install_properties({
13    column_defs => {
14        id => 'integer not null auto_increment',
15        blog_id => 'integer',
16        object_type => 'string(255)',
17        modified_on => 'datetime',
18    },
19    indexes => {
20        blog_type => {
21            columns => ['blog_id', 'object_type', 'modified_on'],
22        },
23    },
24    primary_key => 'id',
25    datasource => 'touch',
26    cacheable => 0,
27});
28
29sub latest_touch {
30    my $pkg = shift;
31    my ($blog_id, @types) = @_;
32    my $user = grep 'author', @types;
33    my $latest = $pkg->load({ object_type => \@types, blog_id => $blog_id },
34        { sort => 'modified_on', direction => 'descend' });
35    # Special case for 'user' type, which has no blog_id value
36    if ($user) {
37        my $user = $pkg->load({ object_type => 'author', blog_id => 0 });
38        if ($user) {
39            if (!$latest || ($user->modified_on > $latest->modified_on)) {
40                $latest = $user;
41            }
42        }
43    }
44    return $latest ? $latest->modified_on : undef;
45}
46
47sub touch {
48    my $pkg = shift;
49    my ($blog_id, @types) = @_;
50    my ($s,$m,$h,$d,$mo,$y) = gmtime(time);
51    my $mod_time = sprintf("%04d%02d%02d%02d%02d%02d",
52                           1900+$y, $mo+1, $d, $h, $m, $s);
53    foreach my $type (@types) {
54        my $rec = $pkg->get_by_key({
55            blog_id => ($type eq 'author' ? 0 : $blog_id),
56            object_type => $type
57        });
58        $rec->modified_on( $mod_time );
59        $rec->save;
60    }
61    return $mod_time;
62}
63
641;
Note: See TracBrowser for help on using the browser.