discourse-legacysite-perl/site/slowtwitch.com/cgi-bin/articles/admin/Plugins/OverrideModDate.pm
2024-06-17 21:49:12 +10:00

154 lines
4.3 KiB
Perl

# ==================================================================
# Plugins::OverrideModDate - Auto Generated Program Module
#
# Plugins::OverrideModDate
# Author : Gossamer Threads Inc.
# Version : 1.0
# Updated : Mon Sep 24 14:34:23 2007
#
# ==================================================================
#
package Plugins::OverrideModDate;
# ==================================================================
use strict;
use GT::Base;
use GT::Plugins qw/STOP CONTINUE/;
use Links qw/:objects/;
use Links::Build;
use Links::SiteHTML;
# Inherit from base class for debug and error methods
@Plugins::OverrideModDate::ISA = qw(GT::Base);
# Your code begins here.
# PLUGIN HOOKS
# ===================================================================
sub post_modify_link {
# -------------------------------------------------------------------
# Modify a single link.
#
my $ret = shift;
return $ret if (!$ret);
my $new = {};
my $update = 0;
Links::init_date();
if ($IN->param('Add_Date') =~ /^\d\d\d\d-\d\d-\d\d$/) {
$new->{Add_Date} = $IN->param('Add_Date');
$update = 1;
}
if ($IN->param('Mod_Date') =~ /^\d\d\d\d-\d\d-\d\d$/) {
$new->{Mod_Date} = $IN->param('Mod_Date');
$update = 1;
}
my $id = $IN->param('ID') || $IN->param('LinkID');
if ($id and $update) {
$DB->table('Links')->update({ %$new }, { ID => $id });
}
return $ret;
}
sub pre_handle {
# ---------------------------------------------------
# Determine what to do.
#
my @args = @_;
my $link_id = $IN->param('LinkID');
if ($CFG->{user_required} and !$USER) {
$PLG->action(STOP);
print $IN->redirect(Links::redirect_login_url('modify'));
return @args;
}
# Perform the link modification
if ($IN->param('modify')) {
return @args;
}
elsif ($USER) {
# Display the link modify form (for a specific link)
if ($IN->param('LinkID')) {
$PLG->action(STOP);
_modify_passed_in();
}
}
return @args;
}
sub _modify_passed_in {
# --------------------------------------------------------
# Display link that was passed in.
#
my $lid = $IN->param('LinkID');
my $link_db = $DB->table('Links');
my $mtl = Links::Build::build('title', Links::language('LINKS_MODIFY'), "$CFG->{db_cgi_url}/modify.cgi?LinkID=$lid");
my $sth = $link_db->select({ ID => $lid, LinkOwner => $USER->{Username} }, VIEWABLE);
if ($USER->{Status} eq 'Administrator') {
$sth = $link_db->select({ ID => $lid }, VIEWABLE);
}
if ($sth->rows) {
my $link = $sth->fetchrow_hashref;
my @ids = $DB->table('CatLinks')->select('CategoryID', { LinkID => $link->{ID} })->fetchall_list;
$IN->param('CatLinks.CategoryID', \@ids);
$link->{Contact_Name} ||= $USER->{Name} || $USER->{Username};
$link->{Contact_Email} ||= $USER->{Email};
my $category = {};
if ($CFG->{db_gen_category_list} < 2) {
require Links::Tools;
$category = Links::Tools::category_list();
$category->{Category} = sub { Links::Tools::category_list_html() };
}
print $IN->header();
print Links::SiteHTML::display('modify', {
main_title_loop => $mtl,
%$link,
%$category
});
}
elsif (!$CFG->{user_required}) {
require Links::User::Modify;
Links::User::Modify::_modify_form();
}
else {
print $IN->header();
print Links::SiteHTML::display('error', { error => Links::language('MODIFY_NOTOWNER'), LinkID => $lid, main_title_loop => $mtl });
}
}
sub post_add_link {
# -------------------------------------------------------------------
# Modify a single link.
#
my $ret = shift;
return $ret if (!$ret);
my $new = {};
my $update = 0;
Links::init_date();
if ($IN->param('Add_Date') =~ /^\d\d\d\d-\d\d-\d\d$/) {
$new->{Add_Date} = $IN->param('Add_Date');
$update = 1;
}
if ($IN->param('Mod_Date') =~ /^\d\d\d\d-\d\d-\d\d$/) {
$new->{Mod_Date} = $IN->param('Mod_Date');
$update = 1;
}
my $id = $ret->{ID};
if ($id and $update) {
$DB->table('Links')->update({ %$new }, { ID => $id });
}
return $ret;
}
# Always end with a 1.
1;