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

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

Added copyright block.

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});
27
28sub latest_touch {
29    my $pkg = shift;
30    my ($blog_id, @types) = @_;
31    my $user = grep 'author', @types;
32    my $latest = $pkg->load({ object_type => \@types, blog_id => $blog_id },
33        { sort => 'modified_on', direction => 'descend' });
34    # Special case for 'user' type, which has no blog_id value
35    if ($user) {
36        my $user = $pkg->load({ object_type => 'author', blog_id => 0 });
37        if ($user) {
38            if (!$latest || ($user->modified_on > $latest->modified_on)) {
39                $latest = $user;
40            }
41        }
42    }
43    return $latest ? $latest->modified_on : undef;
44}
45
46sub touch {
47    my $pkg = shift;
48    my ($blog_id, @types) = @_;
49    my ($s,$m,$h,$d,$mo,$y) = gmtime(time);
50    my $mod_time = sprintf("%04d%02d%02d%02d%02d%02d",
51                           1900+$y, $mo+1, $d, $h, $m, $s);
52    foreach my $type (@types) {
53        my $rec = $pkg->get_by_key({
54            blog_id => ($type eq 'author' ? 0 : $blog_id),
55            object_type => $type
56        });
57        $rec->modified_on( $mod_time );
58        $rec->save;
59    }
60    return $mod_time;
61}
62
631;
Note: See TracBrowser for help on using the browser.