Index: install.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/install.cgi,v retrieving revision 1.61 retrieving revision 1.63 diff -r1.61 -r1.63 7c7 < # Revision : $Id: install.cgi,v 1.61 2001/02/09 03:42:10 alex Exp $ --- > # Revision : $Id: install.cgi,v 1.63 2001/03/02 00:41:24 alex Exp $ 67,70d66 < $inst->{persistant_env} = $in->param('persistant_env') || $inst->{persistant_env} || ($ENV{GATEWAY_INTERFACE} =~ /^CGI-Perl/ ? 1 : 0); < my $persistant_env = $inst->{persistant_env} ? < qq~ Yes No~ : < qq~ Yes No~; 153,159d148 < <
< Persistant Environment:
Leave as No unless using mod_perl, speedycgi, etc
<
< $persistant_env
< < 264,265c253 < db_smtp_server => $smtp, < persistant_env => $in->param('persistant_env') --- > db_smtp_server => $smtp 426,433d413 < # Determine if using mod_perl/fastcgi/speedycgi. < my $default = $inst->{persistant_env} ? "Yes" : "No"; < my $resp = telnet_prompt ( < "Are you running under mod_perl/mod_fastcgi/speedycgi. If you are not sure, just hit enter", < $default, < sub { my $resp = lc substr($_[0],0,1); $resp =~ /^[yn]$/ ? 1 : "Please enter only Yes or No."; } < ); < $inst->{persistant_env} = lc substr($resp,0,1) eq 'y' ? 1 : 0; 662c642 < read CFG, my $data, -s CFG; --- > read CFG, $data, -s CFG; Index: cgi/add.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/add.cgi,v retrieving revision 1.33 retrieving revision 1.36 diff -r1.33 -r1.36 7c7 < # Revision : $Id: add.cgi,v 1.33 2001/02/17 08:02:18 alex Exp $ --- > # Revision : $Id: add.cgi,v 1.36 2001/03/02 00:41:24 alex Exp $ 18c18 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); 30a31,32 > > # We are processing an add request. 41a44,45 > > # We are displaying an add form. 56c60 < $IN->param('Contact_Name') or ($IN->param('Contact_Name', $USER->{Name} || $USER->{Username})); --- > $IN->param('Contact_Name') or ($IN->param('Contact_Name', $USER->{Name} || $USER->{Username})); 74,75d77 < my ($found, $category, $today, $db, $cdb, $cat_links, $sth, $id, $cid, $cname); < my ($rec, $to, $from, $subject, $msg, $host, $refer, $error); 78c80 < $category = _category_list(); --- > my $category = _category_list(); 82c84 < $found = 0; --- > my $found = 0; 108,110c110,114 < $db = $DB->table ('Links'); < $cdb = $DB->table ('Category'); < $cat_links = $DB->table ('CatLinks'); --- > my $db = $DB->table ('Links'); > my $cdb = $DB->table ('Category'); > my $cat_links = $DB->table ('CatLinks'); > my $name = $input->{'Contact_Name'} || $input->{'Contact Name'} || ($USER ? $USER->{Name} : ''); > my $email = $input->{'Contact_Email'} || $input->{'Contact Email'} || ($USER ? $USER->{Email} : ''); 114,117c118,121 < if (! defined $USER) { < my $name = $input->{'Contact_Name'} || $input->{'Contact Name'}; < my $email = $input->{'Contact_Email'} || $input->{'Contact Email'}; < --- > if ($USER) { > $username = $USER->{Username}; > } > else { 119,128c123,126 < my $sth = $user_db->select ( { Email => $email }, ['Username'] ); < if ($sth->rows) { < ($username) = $sth->fetchrow_array; < } < else { < if ($CFG->{user_valid_email}) { < my $user_cols = $user_db->cols; < $name or $db->error ('NOTNULL', 'WARN', $user_cols->{Name}->{form_display} || 'Contact Name'); < $email or $db->error ('NOTNULL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email'); < $email =~ /^.+\@.+\..+$/ or $db->error ('ILLEGALVAL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email', $email); --- > if ($email) { > my $sth = $user_db->select ( { Email => $email }, ['Username'] ); > if ($sth->rows) { > ($username) = $sth->fetchrow_array; 129a128,133 > } > if (! $username) { > my $user_cols = $user_db->cols; > $name or $db->error ('NOTNULL', 'WARN', $user_cols->{Name}->{form_display} || 'Contact Name'); > $email or $db->error ('NOTNULL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email'); > $email =~ /^.+\@.+\..+$/ or $db->error ('ILLEGALVAL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email', $email); 132c136 < $username = $res ? $username : 'admin'; --- > $username = $res ? $email : 'admin'; 136,138d139 < else { < $username = $USER->{Username}; < } 143c144 < $today = GT::Date::date_get(); --- > my $today = GT::Date::date_get(); 148,149c149,150 < $input->{Contact_Name} = $input->{'Contact Name'} if ($input->{'Contact Name'}); < $input->{Contact_Email} = $input->{'Contact Email'} if ($input->{'Contact Email'}); --- > $input->{Contact_Name} = $name; > $input->{Contact_Email} = $email; 160,164c161,172 < $cid = $input->{'CatLinks.CategoryID'}; < if ($cid) { < $sth = $cdb->select ( { ID => $cid }, ['Full_Name'] ); < $sth->rows or return { error => Links::language('ADD_INVALIDCAT', $cid), Category => $category }; < ($cname) = $sth->fetchrow_array; --- > my @cids = $IN->param('CatLinks.CategoryID'); > my @name; > if (@cids) { > foreach my $cid (@cids) { > next if (! $cid); > my $sth = $cdb->select ( { ID => $cid }, ['Full_Name'] ); > $sth->rows or return { error => Links::language('ADD_INVALIDCAT', $cid), Category => $category }; > push @name, $sth->fetchrow; > } > if (@name) { > $input->{'CatLinks.CategoryID'} = \@cids; > } 168,199c176,179 < $input->{ID} = $id = $db->add ( $input ); < if ($id) { < # Mail the message away. < $to = $CFG->{db_admin_email}; < $from = $input->{'Contact_Email'}; < $subject = "Addition to Database: $input->{'Title'}\n"; < $host = defined $ENV{REMOTE_HOST} ? "$ENV{REMOTE_HOST} ($ENV{REMOTE_ADDR})" : 'none'; < $refer = defined $ENV{HTTP_REFERER} ? $ENV{HTTP_REFERER} : 'none'; < my $cfg = Links::Config::load_vars(); < my %tags = ( Host => $host, Referer => $refer, Category => $cname ); < $msg = GT::Template->parse ( $CFG->{admin_root_path} . '/templates/admin/email-val.txt', { %$input, %tags, %$cfg } ); < < # Send to the admin if required. < if ($CFG->{admin_email_add}) { < require GT::Mail; < $GT::Mail::error ||= ''; # Silence -w < GT::Mail->send ( < smtp => $CFG->{db_smtp_server}, < sendmail => $CFG->{db_mail_path}, < from => $from, < subject => $subject, < to => $to, < msg => $msg, < debug => $Links::DEBUG < ) or Links::fatal ("Unable to send mail: $GT::Mail::error"); < } < < # Send the visitor to the success page. < return { Category => $cname, %$input }; < } < else { < $error = ""; --- > my $id = $db->add ( $input ); > $input->{ID} = $id; > if (! $id) { > my $error = ""; 201a182,210 > > # Add some special tags for formatting. > $input->{'Category'} = join "\n", @name; > $input->{Host} = defined $ENV{REMOTE_HOST} ? "$ENV{REMOTE_HOST} ($ENV{REMOTE_ADDR})" : (defined $ENV{REMOTE_ADDR} ? $ENV{REMOTE_ADDR} : 'none'); > $input->{Referer} = defined $ENV{HTTP_REFERER} ? $ENV{HTTP_REFERER} : 'none'; > > # Mail the email. > if ($CFG->{admin_email_add}) { > my $to = $CFG->{db_admin_email}; > my $from = $input->{'Contact_Email'}; > my $subject = "Addition to Database: $input->{'Title'}\n"; > my $cfg = Links::Config::load_vars(); > my $msg = GT::Template->parse ( $CFG->{admin_root_path} . '/templates/admin/email-val.txt', { %$input, %$cfg } ); > > require GT::Mail; > $GT::Mail::error ||= ''; # Silence -w > GT::Mail->send ( > smtp => $CFG->{db_smtp_server}, > sendmail => $CFG->{db_mail_path}, > from => $from, > subject => $subject, > to => $to, > msg => $msg, > debug => $Links::DEBUG > ) or Links::fatal ("Unable to send mail: $GT::Mail::error"); > } > > # Send the visitor to the success page. > return $input; Index: cgi/browser.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/browser.cgi,v retrieving revision 1.14 retrieving revision 1.15 diff -r1.14 -r1.15 7c7 < # Revision : $Id: browser.cgi,v 1.14 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: browser.cgi,v 1.15 2001/03/02 00:41:24 alex Exp $ 9c9 < # Revision : $Id: browser.cgi,v 1.14 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: browser.cgi,v 1.15 2001/03/02 00:41:24 alex Exp $ 24c24 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); Index: cgi/jump.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/jump.cgi,v retrieving revision 1.18 retrieving revision 1.20 diff -r1.18 -r1.20 7c7 < # Revision : $Id: jump.cgi,v 1.18 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: jump.cgi,v 1.20 2001/03/02 00:41:24 alex Exp $ 18c18 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); 30c30 < $id = $IN->param('ID'); --- > $id = $IN->param('ID') || $IN->param('Detailed'); 49c49 < if (! $rec) { --- > if (! $rec or ($rec->{isValidated} eq 'No')) { 60,62c60 < $db->indexing(0); < $db->update ( { Hits => \"Hits + 1" }, { ID => $id } ); < $db->indexing(1); --- > $db->update ( { Hits => \"Hits + 1" }, { ID => $id }, { GT_SQL_SKIP_INDEX => 1 } ); 75a74,78 > } > > # Redirect to a detailed page if requested. > if ($CFG->{build_detailed} and $IN->param('Detailed')) { > $goto = $CFG->{build_detail_url} . '/' . $id . $CFG->{build_index}; Index: cgi/modify.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/modify.cgi,v retrieving revision 1.24 retrieving revision 1.26 diff -r1.24 -r1.26 7c7 < # Revision : $Id: modify.cgi,v 1.24 2001/02/17 05:21:29 alex Exp $ --- > # Revision : $Id: modify.cgi,v 1.26 2001/03/02 00:41:24 alex Exp $ 18c18 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); 35,37c35,37 < $IN->param('modify') and do { _modify(); last CASE; }; < $IN->param('LinkID') and do { _modify_passed_in(); last CASE; }; < $CFG->{user_required} or $USER and do { _list_owned_links(); last CASE; }; --- > $IN->param('modify') and do { _modify(); last CASE; }; > $USER and $IN->param('LinkID') and do { _modify_passed_in(); last CASE; }; > $USER and do { _list_owned_links(); last CASE; }; 86c86 < print Links::SiteHTML::display('error', { error => Links::language('MODIFY_INVALIDID'), LinkID => $lid }); --- > print Links::SiteHTML::display('error', { error => Links::language('MODIFY_NOTOWNER'), LinkID => $lid }); 201a202,217 > # Backward compatibility.. > my $name = $args->{'Contact_Name'} || $args->{'Contact Name'} || ($USER ? $USER->{Name} : ''); > my $email = $args->{'Contact_Email'} || $args->{'Contact Email'} || ($USER ? $USER->{Email} : ''); > $new->{'Contact_Name'} = $name; > $new->{'Contact_Email'} = $email; > > # Make sure a contact name and email were entered and are valid. > my $user_db = $DB->table ('Users'); > my $user_cols = $user_db->cols; > $name or $db->error ('NOTNULL', 'WARN', $user_cols->{Name}->{form_display} || 'Contact Name'); > $email or $db->error ('NOTNULL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email'); > $email =~ /^.+\@.+\..+$/ or $db->error ('ILLEGALVAL', 'WARN', $user_cols->{Email}->{form_display} || 'Contact Email', $email); > if ($db->error) { > return { error => $GT::SQL::error, Category => $category, LinkID => $lid }; > } > 205,208d220 < # Backward compatibility.. < $new->{'Contact_Name'} = $IN->param('Contact_Name') || $IN->param('Contact Name'); < $new->{'Contact_Email'} = $IN->param('Contact_Email') || $IN->param('Contact Email'); < 216c228 < if ($CFG->{user_direct_mod}) { --- > if ($USER and $CFG->{user_direct_mod}) { Index: cgi/page.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/page.cgi,v retrieving revision 1.27 retrieving revision 1.28 diff -r1.27 -r1.28 7c7 < # Revision : $Id: page.cgi,v 1.27 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: page.cgi,v 1.28 2001/03/02 00:41:24 alex Exp $ 19c19 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); Index: cgi/rate.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/rate.cgi,v retrieving revision 1.19 retrieving revision 1.21 diff -r1.19 -r1.21 7c7 < # Revision : $Id: rate.cgi,v 1.19 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: rate.cgi,v 1.21 2001/03/02 04:45:08 alex Exp $ 19c19 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); 95c95 < $click_db->insert ( { LinkID => $id, IP => $ENV{REMOTE_ADDR}, ClickType => 'Rate' } ); --- > $click_db->insert ( { LinkID => $id, IP => $ENV{REMOTE_ADDR}, ClickType => 'Rate', Created => \"NOW()" } ); Index: cgi/search.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/search.cgi,v retrieving revision 1.44 retrieving revision 1.45 diff -r1.44 -r1.45 7c7 < # Revision : $Id: search.cgi,v 1.44 2001/02/15 22:09:45 alex Exp $ --- > # Revision : $Id: search.cgi,v 1.45 2001/03/02 00:41:24 alex Exp $ 19c19 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); Index: cgi/subscribe.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/subscribe.cgi,v retrieving revision 1.17 retrieving revision 1.19 diff -r1.17 -r1.19 7c7 < # Revision : $Id: subscribe.cgi,v 1.17 2001/02/14 06:25:02 alex Exp $ --- > # Revision : $Id: subscribe.cgi,v 1.19 2001/03/02 00:41:24 alex Exp $ 19c19 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); 57d56 < print GT::SQL::query_stack_disp(); 74c73 < if ($DB->table ('MailingList')->select( { Email => $email } )->rows) { --- > if ($DB->table ('MailingList')->select( { Email => $email, ID => $id } )->rows) { 81,82c80,81 < my $username = $USER->{Username}; < if (! $username) { --- > my $res = 0; > if (! $USER) { 84,85c83,84 < my $sth = $user_db->select ( { Email => $email }, ['Username'] ); < my ($username) = $sth->fetchrow_array; --- > my $sth = $user_db->select ( { Email => $email }, ['Username', 'Newsletter'] ); > my ($username, $newsletter) = $sth->fetchrow_array; 88,89c87 < $user_db->insert ( Username => $email, Name => $name, Password => $pass, Status => 'Registered', Email => $email ); < $username = $email; --- > $res = $user_db->insert ( Username => $email, Name => $name, Password => $pass, Status => 'Not Validated', Email => $email, Newsletter => 'Yes' ); 90a89,96 > else { > if ($newsletter eq 'No') { > $res = $user_db->update ( { Newsletter => 'Yes' }, { Username => $username } ); > } > } > } > else { > $res = $DB->table('Users')->update ( { Newsletter => 'Yes' }, { Username => $USER->{Username} }); 92d97 < my $res = $DB->table('Users')->update ( { Newsletter => 'Yes' }, { Username => $username }); 109c114 < if (! $DB->table ('MailingList')->select( { Email => $email } )->rows) { --- > if (! $DB->table ('MailingList')->select( { Email => $email, ID => $id } )->rows) { 116,117c121,122 < my $username = $USER->{Username}; < if (! $username) { --- > my $res = 0; > if (! $USER) { 119,122c124,129 < my $sth = $user_db->select ( { Email => $email }, ['Username'] ); < my $username; < if ($sth->rows) { < ($username) = $sth->fetchrow_array; --- > my $sth = $user_db->select ( { Email => $email }, ['Username', 'Newsletter'] ); > my ($username, $newsletter) = $sth->fetchrow_array; > if ($username) { > if ($newsletter eq 'Yes') { > $res = $user_db->update ( { Newsletter => 'No' }, { Username => $username } ); > } 125,127c132,135 < $DB->table('Users')->update ( { Newsletter => 'No' }, { Username => $username }) ? < return { action => 'unsubscribe' } : < return { error => Links::language('SUBSCRIBE_NOTSUB') }; --- > else { > $res = $DB->table('Users')->update ( { Newsletter => 'No' }, { Username => $USER->{Username} }); > } > return $res ? { action => 'unsubscribe' } : { error => Links::language('SUBSCRIBE_NOTSUB') }; Index: cgi/user.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/user.cgi,v retrieving revision 1.30 retrieving revision 1.31 diff -r1.30 -r1.31 7c7 < # Revision : $Id: user.cgi,v 1.30 2001/02/17 03:51:33 alex Exp $ --- > # Revision : $Id: user.cgi,v 1.31 2001/03/02 00:41:24 alex Exp $ 20c20 < Links::reset_env( { load_user => 1 } ) if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env( { load_user => 1 } ) if ($Links::PERSIST); Index: cgi/admin/Links.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links.pm,v retrieving revision 1.103 retrieving revision 1.106 diff -r1.103 -r1.106 6c6 < # Revision : $Id: Links.pm,v 1.103 2001/02/17 08:03:47 alex Exp $ --- > # Revision : $Id: Links.pm,v 1.106 2001/03/02 00:41:24 alex Exp $ 17c17 < $PERSISTANT $DATE_LOADED $GLOBALS $LANGUAGE/; --- > $PERSIST $DATE_LOADED $GLOBALS $LANGUAGE/; 26c26 < $PERSISTANT = $MOD_PERL || $SPEEDY; --- > $PERSIST = $MOD_PERL || $SPEEDY; 37c37 < if ($PERSISTANT) { --- > if ($PERSIST) { 58c58 < init_vars(\%symbols) unless ($PERSISTANT); --- > init_vars(\%symbols) unless ($PERSIST); 248,251c248,253 < my $root = $TPL->root (); < $TPL->root("$CFG->{admin_root_path}/templates/admin"); < $TPL->parse($file, $IN, { print => 1 }); < $TPL->root($root); --- > GT::Template->parse ( $file, $IN, > { > root => "$CFG->{admin_root_path}/templates/admin", > compress => 0, > print => 1 > }); 279,286d280 < foreach my $key (keys %{$GLOBALS->{$template_set}}) { < my $val = $GLOBALS->{$template_set}->{$key}; < if ($val =~ /^\s*sub\s+{/) { < local $SIG{__DIE__}; < $val = eval "$val"; < $GLOBALS->{$template_set}->{$key} = $@ ? "Error in subroutine: $@" : $val; < } < } 311,319c305,310 < my $orig = $TPL->root(); < ($file =~ /txt$/) and $TPL->compress(0); < < $TPL->clear_vars(); < $TPL->root("$CFG->{admin_root_path}/templates/$template_set"); < my $output = $TPL->parse($file, $vars); < $TPL->compress($CFG->{compress}); < $TPL->root($orig); < --- > my $output = GT::Template->parse ( $file, $vars, > { > root => "$CFG->{admin_root_path}/templates/$template_set", > compress => ($file =~ /txt$/) ? 0 : $CFG->{compress}, > print => 0 > }); 321d311 < 438a429,430 > die @_ if (GT::Base->in_eval()); # Don't do anything if we are in eval. > 477c469 < $info .= GT::Base::stack_trace('Links', 1); --- > $info .= GT::Base::stack_trace('Links', 1, 1); 485c477 < $info .= "Persistant Env: mod_perl ($MOD_PERL) SpeedyCGI ($SPEEDY) Config ($CFG->{persistant_env})\n"; --- > $info .= "Persistant Env: mod_perl ($MOD_PERL) SpeedyCGI ($SPEEDY)\n"; Index: cgi/admin/admin.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/admin.cgi,v retrieving revision 1.50 retrieving revision 1.53 diff -r1.50 -r1.53 7c7 < # Revision : $Id: admin.cgi,v 1.50 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: admin.cgi,v 1.53 2001/03/02 01:01:06 alex Exp $ 16c16 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); 42c42 < fatal("Invalid Request: '$action'"); --- > die "Invalid Request: '$action'"; Index: cgi/admin/browser.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/browser.cgi,v retrieving revision 1.27 retrieving revision 1.29 diff -r1.27 -r1.29 7c7 < # Revision : $Id: browser.cgi,v 1.27 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: browser.cgi,v 1.29 2001/03/02 01:01:06 alex Exp $ 20c20 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/db.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/db.cgi,v retrieving revision 1.35 retrieving revision 1.37 diff -r1.35 -r1.37 7c7 < # Revision : $Id: db.cgi,v 1.35 2001/02/17 05:03:33 alex Exp $ --- > # Revision : $Id: db.cgi,v 1.37 2001/03/02 01:01:06 alex Exp $ 17c17 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/mailer.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/mailer.cgi,v retrieving revision 1.54 retrieving revision 1.56 diff -r1.54 -r1.56 7c7 < # Revision : $Id: mailer.cgi,v 1.54 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: mailer.cgi,v 1.56 2001/03/02 01:01:06 alex Exp $ 22c22 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/nph-build.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/nph-build.cgi,v retrieving revision 1.46 retrieving revision 1.49 diff -r1.46 -r1.49 7c7 < # Revision : $Id: nph-build.cgi,v 1.46 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: nph-build.cgi,v 1.49 2001/03/02 01:01:06 alex Exp $ 22c22 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); 196c196 < GT::Plugins->dispatch ("$CFG->{admin_root_path}/Plugins", 'create_detailed_staggered', \&_build_detailed, { page => $page, offset => $offset }); --- > GT::Plugins->dispatch ("$CFG->{admin_root_path}/Plugins", 'create_detailed_staggered', \&_build_detailed, { page => $page, limit => $offset }); Index: cgi/admin/nph-email.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/nph-email.cgi,v retrieving revision 1.33 retrieving revision 1.35 diff -r1.33 -r1.35 7c7 < # Revision : $Id: nph-email.cgi,v 1.33 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: nph-email.cgi,v 1.35 2001/03/02 01:01:06 alex Exp $ 20c20 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/nph-import.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/nph-import.cgi,v retrieving revision 1.9 retrieving revision 1.11 diff -r1.9 -r1.11 7c7 < # Revision : $Id: nph-import.cgi,v 1.9 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: nph-import.cgi,v 1.11 2001/03/02 01:01:06 alex Exp $ 20c20 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/nph-index.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/nph-index.cgi,v retrieving revision 1.24 retrieving revision 1.26 diff -r1.24 -r1.26 7c7 < # Revision : $Id: nph-index.cgi,v 1.24 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: nph-index.cgi,v 1.26 2001/03/02 01:01:06 alex Exp $ 21c21 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/nph-verify.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/nph-verify.cgi,v retrieving revision 1.24 retrieving revision 1.26 diff -r1.24 -r1.26 7c7 < # Revision : $Id: nph-verify.cgi,v 1.24 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: nph-verify.cgi,v 1.26 2001/03/02 01:01:06 alex Exp $ 19c19 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/setup.cgi =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/setup.cgi,v retrieving revision 1.61 retrieving revision 1.63 diff -r1.61 -r1.63 7c7 < # Revision : $Id: setup.cgi,v 1.61 2001/02/14 06:25:03 alex Exp $ --- > # Revision : $Id: setup.cgi,v 1.63 2001/03/02 01:01:06 alex Exp $ 17c17 < Links::reset_env() if (!$IN or $CFG->{persistant_env}); --- > Links::reset_env() if ($Links::PERSIST); Index: cgi/admin/Links/Admin.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Admin.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -r1.5 -r1.6 6c6 < # Revision : $Id: Admin.pm,v 1.5 2001/01/19 06:22:36 alex Exp $ --- > # Revision : $Id: Admin.pm,v 1.6 2001/03/01 21:09:19 alex Exp $ 17c17,18 < use vars qw /@ISA $ERROR_MESSAGE $VERSION $DEBUG/; --- > use Links qw/$DB/; > use vars qw/@ISA $ERROR_MESSAGE $VERSION $DEBUG/; 20c21 < $VERSION = substr(q$Revision: 1.5 $,10); --- > $VERSION = substr(q$Revision: 1.6 $,10); 28,29c29,32 < my $self = shift; < return $self->SUPER::modify_multi_records(@_) unless ($self->{db}->name eq 'Links'); --- > my $self = shift; > my $name = $self->{db}->name; > my $prefix = $DB->prefix; > return $self->SUPER::modify_multi_records(@_) unless ( $name eq $prefix . 'Links'); 35c38 < ref $self->{cgi}->{modify} eq ref [] or $self->{cgi}->{modify} = [$self->{cgi}->{modify}]; --- > ref $self->{cgi}->{modify} eq 'ARRAY' or $self->{cgi}->{modify} = [$self->{cgi}->{modify}]; 54,55d56 < < # The hash ref, we need, to modify a record. 57,58d57 < < # For through the column names to build our modification hash Index: cgi/admin/Links/Browser.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Browser.pm,v retrieving revision 1.54 retrieving revision 1.55 diff -r1.54 -r1.55 6c6 < # Revision : $Id: Browser.pm,v 1.54 2001/01/24 05:05:24 alex Exp $ --- > # Revision : $Id: Browser.pm,v 1.55 2001/02/28 22:14:12 alex Exp $ 16c16 < use vars qw/@ISA $ATTRIBS/; --- > use vars qw/@ISA $ATTRIBS $AUTOLOAD %SUBS/; 27c27 < # Window Initilization Functions # --- > # Template parsing # 28a29,82 > sub print_template { > # ------------------------------------------------------------------- > # Prints out a template. > # > $_[0]->_template($_[1], $_[2], 1); > } > > sub return_template { > # ------------------------------------------------------------------- > # Returns a template. > # > $_[0]->_template($_[1], $_[2], 0); > } > > sub _template { > # ------------------------------------------------------------------- > # Prints/Returns a template. > # > my ($self, $tpl, $opts, $print) = @_; > return $TPL->parse ($tpl, $opts, { print => $print }); > } > > sub AUTOLOAD { > # ------------------------------------------------------------------- > # Compile on demand methods. > # > my ($pkg, $what) = $AUTOLOAD =~ /^(.*)::([^:]+)$/; > if (exists $SUBS{$what}) { > eval $SUBS{$what}; > if ($@) { > die "$pkg: Unable to compile: $what ($@)"; > } > return $Links::Browser::{$what}->(@_); > } > > # Pass back to the GT::Base AUTOLOAD. > $GT::Base::AUTOLOAD = $AUTOLOAD; > goto >::Base::AUTOLOAD; > } > > sub import { > # ------------------------------------------------------------------- > # If you use Links::Browser qw/compile/ all methods will be precompiled. > # > my ($pkg, $sym) = @_; > if (defined $sym and ($sym eq 'compile')) { > foreach my $sub (keys %SUBS) { > eval "$SUBS{$sub}"; > if ($@) { > die "$pkg: Unable to compile: $sub ($@)"; > } > } > } > } 29a84,87 > # -------------------------------------------------------------------------------------- # > # Window Initilization Functions # > # -------------------------------------------------------------------------------------- # > $SUBS{main_panel_init} = <<'END_OF_SUB'; 42c100 < print $TPL->parse ('browser.html', { --- > $self->print_template ('browser.html', { 52a111 > END_OF_SUB 53a113 > $SUBS{tree_panel_init} = <<'END_OF_SUB'; 63c123 < print $TPL->parse ('browser_tree.html', {}); --- > $self->print_template ('browser_tree.html', {}); 64a125 > END_OF_SUB 65a127 > $SUBS{info_panel_init} = <<'END_OF_SUB'; 75c137 < print $TPL->parse ('browser_info.html', {}); --- > $self->print_template ('browser_info.html', {}); 76a139 > END_OF_SUB 77a141 > $SUBS{code_panel_init} = <<'END_OF_SUB'; 93c157 < print $TPL->parse ('browser_code_init.html', { instructions => $self->code_panel_init_loop () }); --- > $self->print_template ('browser_code_init.html', { instructions => $self->code_panel_init_loop () }); 94a159 > END_OF_SUB 99a165 > $SUBS{code_panel_init_loop} = <<'END_OF_SUB'; 127c193 < else { --- > else { 132a199 > END_OF_SUB 133a201 > $SUBS{code_panel_init_loop_is_leaf} = <<'END_OF_SUB'; 144a213 > END_OF_SUB 145a215 > $SUBS{code_panel_category_expand} = <<'END_OF_SUB'; 163c233 < else { --- > else { 177c247 < if (parent.tree != null) { --- > if (parent.tree != null) { 185a256 > END_OF_SUB 186a258 > $SUBS{code_panel_reload_empty} = <<'END_OF_SUB'; 194c266 < print $TPL->parse ('browser_code_init.html', { instructions => $self->code_panel_init_loop () } ); --- > $self->print_template ('browser_code_init.html', { instructions => $self->code_panel_init_loop () } ); 195a268 > END_OF_SUB 196a270 > $SUBS{code_panel_reload_full} = <<'END_OF_SUB'; 219c293 < else { --- > else { 240c314 < else { --- > else { 242c316 < } --- > } 246c320 < print $TPL->parse ('browser_code_init.html', { instructions => $instructions } ); --- > $self->print_template ('browser_code_init.html', { instructions => $instructions } ); 247a322 > END_OF_SUB 248a324 > $SUBS{category_click} = <<'END_OF_SUB'; 260,261c336,337 < my $navbar = $self->navbar ($category_id); < print $TPL->parse ( "browser_category.html", { navbar => $navbar, Name => Links::language('LINKS_TOP'), links => '' } ); --- > my $navbar = $self->navbar ($category_id); > $self->print_template ( "browser_category.html", { navbar => $navbar, Name => Links::language('LINKS_TOP'), links => '' } ); 267c343 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 269c345 < print $TPL->parse ( "browser_category.html", --- > $self->print_template ( "browser_category.html", 271c347 < navbar => $navbar, --- > navbar => $navbar, 276a353 > END_OF_SUB 281a359 > $SUBS{category_add_form} = <<'END_OF_SUB'; 312,313c390,391 < my $navbar = $self->navbar ($category_id); < print $TPL->parse ( "browser_category_add_form.html", --- > my $navbar = $self->navbar ($category_id); > $self->print_template ( "browser_category_add_form.html", 326a405 > END_OF_SUB 327a407 > $SUBS{category_add} = <<'END_OF_SUB'; 345c425 < my $child_category_id = $category->add ($IN->get_hash) --- > my $child_category_id = $category->add ($IN->get_hash) 347c427 < my $navbar = $self->navbar ($parent_category_id); --- > my $navbar = $self->navbar ($parent_category_id); 351c431 < print $TPL->parse ( "browser_category_add.html", --- > $self->print_template ( "browser_category_add.html", 360a441 > END_OF_SUB 361a443 > $SUBS{category_del_form} = <<'END_OF_SUB'; 372c454 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 376c458 < print $TPL->parse ( "browser_category_del_form.html", --- > $self->print_template ( "browser_category_del_form.html", 379c461 < navbar => $navbar, --- > navbar => $navbar, 382a465 > END_OF_SUB 384c467 < --- > $SUBS{category_del} = <<'END_OF_SUB'; 405c488 < $category->delete ( { ID => $category_id } ) --- > $category->delete ( { ID => $category_id } ) 409,410c492,493 < if ($father_id == 0) { < $father_name = Links::language('LINKS_TOP') --- > if ($father_id == 0) { > $father_name = Links::language('LINKS_TOP') 413c496 < $info = $category->get ( { ID => $father_id }, 'HASH', ['Name'] ) --- > $info = $category->get ( { ID => $father_id }, 'HASH', ['Name'] ) 418c501 < my $navbar = $self->navbar ($father_id); --- > my $navbar = $self->navbar ($father_id); 420c503 < print $TPL->parse ( "browser_category_del.html", --- > $self->print_template ( "browser_category_del.html", 429a513 > END_OF_SUB 430a515 > $SUBS{category_modify_form} = <<'END_OF_SUB'; 442c527 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 445c530 < print $TPL->parse ( "browser_category_modify_form.html", --- > $self->print_template ( "browser_category_modify_form.html", 451c536 < qw/FatherID Full_Name Number_of_Links Has_New_Links --- > qw/FatherID Full_Name Number_of_Links Has_New_Links 455a541 > END_OF_SUB 456a543 > $SUBS{category_modify} = <<'END_OF_SUB'; 468c555 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 473c560 < $category->modify ($IN->get_hash) --- > $category->modify ($IN->get_hash) 476c563 < print $TPL->parse ( "browser_category_modify.html", --- > $self->print_template ( "browser_category_modify.html", 481c568 < navbar => $navbar, --- > navbar => $navbar, 484a572 > END_OF_SUB 485a574 > $SUBS{category_move_form} = <<'END_OF_SUB'; 502,503c591,592 < my $navbar = $self->navbar ($category_id); < my $info = $category->get ( { ID => $category_id }, 'HASH', ['ID', 'Name', 'Number_of_Links'] ) --- > my $navbar = $self->navbar ($category_id); > my $info = $category->get ( { ID => $category_id }, 'HASH', ['ID', 'Name', 'Number_of_Links'] ) 506c595 < print $TPL->parse ( "browser_category_move_form.html", --- > $self->print_template ( "browser_category_move_form.html", 508c597 < navbar => $navbar, --- > navbar => $navbar, 512a602 > END_OF_SUB 513a604 > $SUBS{category_move} = <<'END_OF_SUB'; 540,541c631,632 < else { < $info_to = { ID => 0, FatherID => 0, Name => Links::language('LINKS_TOP'), Full_Name => '' } --- > else { > $info_to = { ID => 0, FatherID => 0, Name => Links::language('LINKS_TOP'), Full_Name => '' } 576c667 < my $navbar = $self->navbar ($info_from->{ID}); --- > my $navbar = $self->navbar ($info_from->{ID}); 578c669 < print $TPL->parse ( "browser_category_move.html", --- > $self->print_template ( "browser_category_move.html", 591a683 > END_OF_SUB 592a685 > $SUBS{category_move_jscriptloop} = <<'END_OF_SUB'; 604c697 < my $sth = $category->select ( { FatherID => $category_to }, ['ID', 'FatherID', 'Name'] ) --- > my $sth = $category->select ( { FatherID => $category_to }, ['ID', 'FatherID', 'Name'] ) 609c702 < if ($self->code_panel_init_loop_is_leaf ($category, $h->{ID})) { --- > if ($self->code_panel_init_loop_is_leaf ($category, $h->{ID})) { 612c705 < else { --- > else { 617a711 > END_OF_SUB 618a713 > $SUBS{category_move_jscriptloop_is_leaf} = <<'END_OF_SUB'; 632a728 > END_OF_SUB 633a730 > $SUBS{category_editors_form} = <<'END_OF_SUB'; 669c766 < $output .= $TPL->parse ('browser_category_editors_row.html', $editor); --- > $output .= $self->return_template ('browser_category_editors_row.html', $editor); 671,672c768,769 < my $navbar = $self->navbar ($category_id); < print $TPL->parse ( "browser_category_editors_form.html", --- > my $navbar = $self->navbar ($category_id); > $self->print_template ( "browser_category_editors_form.html", 680a778 > END_OF_SUB 681a780 > $SUBS{category_related_form} = <<'END_OF_SUB'; 702c801 < my $id_r = $category->get ( { ID => $id }, ['ID'] ) or return $self->javascript_error ( message => Links::language('BROWSER_RELADD', $id ), info_go => -1 ); --- > my $id_r = $category->get ( { ID => $id }, ['ID'] ) or return $self->javascript_error ( message => Links::language('BROWSER_RELADD', $id ), info_go => -1 ); 719,720c818,819 < my $navbar = $self->navbar ($category_id); < print $TPL->parse ( "browser_category_related_form.html", --- > my $navbar = $self->navbar ($category_id); > $self->print_template ( "browser_category_related_form.html", 729a829 > END_OF_SUB 734a835 > $SUBS{link_user_list} = <<'END_OF_SUB'; 746c847 < print $TPL->parse ( "browser_link_owner.html", --- > $self->print_template ( "browser_link_owner.html", 748c849 < navbar => $navbar, --- > navbar => $navbar, 753a855 > END_OF_SUB 754a857 > $SUBS{link_add_form} = <<'END_OF_SUB'; 766c869 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 774c877 < print $TPL->parse ( "browser_link_add_form.html", --- > $self->print_template ( "browser_link_add_form.html", 783a887 > END_OF_SUB 784a889 > $SUBS{link_add} = <<'END_OF_SUB'; 793c898 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 800c905 < print $TPL->parse ( "browser_link_add.html", --- > $self->print_template ( "browser_link_add.html", 807a913 > END_OF_SUB 808a915 > $SUBS{link_modify_form} = <<'END_OF_SUB'; 818c925 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 825c932 < print $TPL->parse ( "browser_link_modify_form.html", --- > $self->print_template ( "browser_link_modify_form.html", 828c935 < navbar => $navbar, --- > navbar => $navbar, 834a942 > END_OF_SUB 835a944 > $SUBS{link_modify} = <<'END_OF_SUB'; 845c954 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 853c962 < $links->modify ($h) --- > $links->modify ($h) 857c966 < print $TPL->parse ( "browser_link_modify.html", --- > $self->print_template ( "browser_link_modify.html", 860c969 < navbar => $navbar, --- > navbar => $navbar, 863a973 > END_OF_SUB 864a975 > $SUBS{link_del_form} = <<'END_OF_SUB'; 874c985 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 879c990 < print $TPL->parse ( "browser_link_del_form.html", --- > $self->print_template ( "browser_link_del_form.html", 887a999 > END_OF_SUB 888a1001 > $SUBS{link_del} = <<'END_OF_SUB'; 898c1011 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 909c1022 < print $TPL->parse ( "browser_link_del.html", --- > $self->print_template ( "browser_link_del.html", 916a1030 > END_OF_SUB 917a1032 > $SUBS{link_move_form} = <<'END_OF_SUB'; 925c1040 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 931c1046 < print $TPL->parse ( "browser_link_move_form.html", --- > $self->print_template ( "browser_link_move_form.html", 938a1054 > END_OF_SUB 939a1056 > $SUBS{link_move} = <<'END_OF_SUB'; 951c1068 < my $navbar = $self->navbar ($old_category_id); --- > my $navbar = $self->navbar ($old_category_id); 978c1095 < print $TPL->parse ( "browser_link_move.html", --- > $self->print_template ( "browser_link_move.html", 987a1105 > END_OF_SUB 988a1107 > $SUBS{link_copy_form} = <<'END_OF_SUB'; 998c1117 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 1004c1123 < print $TPL->parse ( "browser_link_copy_form.html", --- > $self->print_template ( "browser_link_copy_form.html", 1011a1131 > END_OF_SUB 1012a1133 > $SUBS{link_copy} = <<'END_OF_SUB'; 1024c1145 < my $navbar = $self->navbar ($old_category_id); --- > my $navbar = $self->navbar ($old_category_id); 1050c1171 < print $TPL->parse ( "browser_link_copy.html", --- > $self->print_template ( "browser_link_copy.html", 1058a1180 > END_OF_SUB 1059a1182 > $SUBS{link_validate_form} = <<'END_OF_SUB'; 1069c1192 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 1090c1213 < print $TPL->parse ( "browser_link_validate_form.html", --- > $self->print_template ( "browser_link_validate_form.html", 1093c1216 < navbar => $navbar, --- > navbar => $navbar, 1104a1228 > END_OF_SUB 1105a1230 > $SUBS{link_validate} = <<'END_OF_SUB'; 1116c1241 < my $navbar = $self->navbar ($category_id); --- > my $navbar = $self->navbar ($category_id); 1130,1131c1255,1256 < ($action eq 'validate') and do { < $h->{_mode} = 'validate'; --- > ($action eq 'validate') and do { > $h->{_mode} = 'validate'; 1135c1260 < ($action eq 'modify') and do { --- > ($action eq 'modify') and do { 1140c1265 < $chng_db->delete ( LinkID => $h->{ID} ); --- > $chng_db->delete ( LinkID => $h->{ID} ); 1142c1267 < last CASE; --- > last CASE; 1150c1275 < print $TPL->parse ( "browser_link_validate.html", --- > $self->print_template ( "browser_link_validate.html", 1156c1281 < navbar => $navbar, --- > navbar => $navbar, 1159a1285 > END_OF_SUB 1208c1334 < $count = $catlink_db->hits; --- > $count = $catlink_db->hits; 1235c1361 < $output{$link->{ID}} = $TPL->parse ("browser_link_list.html", --- > $output{$link->{ID}} = $self->return_template ("browser_link_list.html", 1315c1441 < --- > 1329a1456,1472 > } > > sub _compile { > # ------------------------------------------------------------------- > # Compile will check %SUBS for the subroutine, and if it exists compile > # it (with an eval). > # > my $sub = shift; > if (exists $SUBS{$sub}) { > local ($@, $SIG{__DIE__}); > eval $SUBS{$sub}; > Links::fatal ("Unable to load: Links::Browser::$sub ($@)") if ($@); > return $Links::Build::{$sub}; > } > else { > Links::fatal ("Invalid method: $sub"); > } Index: cgi/admin/Links/Build.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Build.pm,v retrieving revision 1.42 retrieving revision 1.43 diff -r1.42 -r1.43 6c6 < # Revision : $Id: Build.pm,v 1.42 2001/02/17 02:37:35 alex Exp $ --- > # Revision : $Id: Build.pm,v 1.43 2001/02/19 22:07:18 alex Exp $ 595c595 < $link_db->update ( { isNew => 'No' }, $cond ); --- > $link_db->update ( { isNew => 'No' }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); 604c604 < $link_db->update ( { isNew => 'Yes' }, $cond ); --- > $link_db->update ( { isNew => 'Yes' }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); 612c612 < $cat_db->update ( { Has_New_Links => 'No' }, {}); --- > $cat_db->update ( { Has_New_Links => 'No' }, {}, { GT_SQL_SKIP_CHECK => 1 }); 619c619 < $cat_db->update ( { Newest_Link => $date, Has_New_Links => 'Yes' }, GT::SQL::Condition->new ('ID', 'IN', \$str) ); --- > $cat_db->update ( { Newest_Link => $date, Has_New_Links => 'Yes' }, GT::SQL::Condition->new ('ID', 'IN', \$str), { GT_SQL_SKIP_CHECK => 1 } ); 653c653 < $link_db->update ( { isChanged => 'No' }, $cond ); --- > $link_db->update ( { isChanged => 'No' }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); 662c662 < $link_db->update ( { isChanged => 'Yes' }, $cond ); --- > $link_db->update ( { isChanged => 'Yes' }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); 668c668 < $cat_db->update ( { Has_Changed_Links => 'No' } ); --- > $cat_db->update ( { Has_Changed_Links => 'No' }, {}, { GT_SQL_SKIP_CHECK => 1 } ); 674c674 < $cat_db->update ( { Newest_Link => $date, Has_New_Links => 'Yes' }, GT::SQL::Condition->new ('ID', 'IN', \$str) ); --- > $cat_db->update ( { Newest_Link => $date, Has_New_Links => 'Yes' }, GT::SQL::Condition->new ('ID', 'IN', \$str), { GT_SQL_SKIP_CHECK => 1 } ); 706c706 < $link_db->update ( { isPopular => 'Yes' }, { ID => $id } ); --- > $link_db->update ( { isPopular => 'Yes' }, { ID => $id }, { GT_SQL_SKIP_CHECK => 1 } ); 716c716 < $link_db->update ( { isPopular => 'No' }, { ID => $id } ); --- > $link_db->update ( { isPopular => 'No' }, { ID => $id }, { GT_SQL_SKIP_CHECK => 1 } ); Index: cgi/admin/Links/Category.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Category.pm,v retrieving revision 1.50 retrieving revision 1.53 diff -r1.50 -r1.53 6c6 < # Revision : $Id: Category.pm,v 1.50 2001/01/19 05:06:20 alex Exp $ --- > # Revision : $Id: Category.pm,v 1.53 2001/03/02 05:28:56 alex Exp $ 22c22 < $VERSION = substr(q$Revision: 1.50 $,10); --- > $VERSION = substr(q$Revision: 1.53 $,10); 53d52 < $self->SUPER::indexing(1); 58c57 < $self->SUPER::update ( { Timestmp => \"NOW()" }, { ID => $parent }, { GT_SQL_SKIP_CHECK => 1 } ); --- > $self->SUPER::update ( { Timestmp => \"NOW()" }, { ID => $parent }, { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 } ); 61d59 < $self->SUPER::indexing(0); 65d62 < $self->SUPER::indexing(0); 81d77 < 140,141c136 < my $index = $self->indexing(); < $self->indexing(1); --- > # Remove all the categories. 150d144 < $self->SUPER::indexing($index); 372,373d365 < my $index = $self->{_index}; < $self->{_index} = 0; 387c379 < $self->SUPER::update ( { Number_of_Links => \"Number_of_Links $change" }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); --- > $self->SUPER::update ( { Number_of_Links => \"Number_of_Links $change" }, $cond, { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 } ); 389d380 < $self->{_index} = $index; 567d557 < $self->{db}->select_options ("ORDER BY Full_Name ASC"); 576c566 < my $select = $self->select ( { name => $form_name, values => \%names, blank => 1, value => defined $rec->{FatherID} ? $rec->{FatherID} : "" }); --- > my $select = $self->select ( { name => $form_name, values => \%names, blank => 1, sort => sub { lc $_[0] cmp lc $_[1] }, value => defined $rec->{FatherID} ? $rec->{FatherID} : "" }); Index: cgi/admin/Links/Config.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Config.pm,v retrieving revision 1.52 retrieving revision 1.54 diff -r1.52 -r1.54 6c6 < # Revision : $Id: Config.pm,v 1.52 2001/02/17 08:02:18 alex Exp $ --- > # Revision : $Id: Config.pm,v 1.54 2001/03/02 00:41:25 alex Exp $ 222d221 < $self->set('user_valid_email', 1, $overwrite); 284d282 < $self->set('persistant_env', 0, $overwrite); Index: cgi/admin/Links/ConfigData.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/ConfigData.pm,v retrieving revision 1.118 retrieving revision 1.119 diff -r1.118 -r1.119 6c6 < # Updated : Thu Jan 18 18:48:22 2001 --- > # Updated : Wed Feb 28 19:11:14 2001 18,19c18,19 < 'reg_number' => '', < 'user_validation' => '0', --- > 'reg_number' => '2047-00-LQ', > 'user_validation' => '1', 21c21 < 'build_detailed' => '0', --- > 'build_detailed' => '1', 25c25 < 'fileman_root_url' => 'http://penguin/alex/lsqldev/cgi/admin', --- > 'fileman_root_url' => 'http://penguin/alex/lsqldev/cgi', 44a45 > 'user_valid_email' => '0', 49c50 < 'fileman_root_dir' => '/home/alex/projects/lsqldev/cgi/admin', --- > 'fileman_root_dir' => '/home/alex/projects/lsqldev/cgi', 50a52 > 'build_default_tpl' => 'av', 62d63 < 'search_substring' => '0', 64c65,66 < 'db_gen_category_list' => '0', --- > 'search_substring' => '0', > 'db_gen_category_list' => '1', 67c69 < 'nph_headers' => '1', --- > 'search_bool' => 'AND', 68a71 > 'nph_headers' => '1', 70,71d72 < 'search_bool' => 'AND', < 'last_build' => '2001-01-18', 77d77 < 'isNew' => 'No', 78a79 > 'isNew' => 'No', 86c87,88 < 'date_offset' => '-3', --- > 'last_build' => '2001-02-15 14:11:10', > 'build_image_url' => 'http://penguin/pages2/images', 87a90 > 'date_offset' => '-3', 92d94 < 'error_message' => '', 93a96 > 'error_message' => '', 94a98 > 'build_auto_validate' => '0', 129d132 < 'db_smtp_server' => '', 130a134 > 'db_smtp_server' => '', 133a138,142 > 'search_blocked' => [ > 'isNew', > 'isPopular', > ], > 138c147 < 'build_sort_order_category' => 'isNew,isPopular,Title', --- > 'build_sort_order_category' => 'isNew DESC,isPopular DESC,Title', 146d154 < 'build_dir_per' => '0777', 148c156,157 < 'db_admin_email' => '', --- > 'build_dir_per' => '0777', > 'db_admin_email' => 'alex@gossamer-threads.com', 151a161,166 > 'quick_links' => { > 'admin.cgi?do=page&page=tools_validate.html' => 'Validate Links', > 'nph-build.cgi' => 'Build All', > > }, > 161,166d175 < < 'quick_links' => { < 'admin.cgi?do=page&page=tools_validate.html' => 'Validate Links', < 'nph-build.cgi' => 'Build All', < < }, Index: cgi/admin/Links/Link.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Link.pm,v retrieving revision 1.37 retrieving revision 1.40 diff -r1.37 -r1.40 6c6 < # Revision : $Id: Link.pm,v 1.37 2001/01/31 04:19:37 alex Exp $ --- > # Revision : $Id: Link.pm,v 1.40 2001/03/02 05:26:34 alex Exp $ 22c22 < $VERSION = substr(q$Revision: 1.37 $,10); --- > $VERSION = substr(q$Revision: 1.40 $,10); 100c100 < ($p->{isValidated} eq 'Yes') ? $self->indexing(1) : $self->indexing(0); --- > $p->{GT_SQL_SKIP_INDEX} = $p->{isValidated} eq 'Yes' ? 0 : 1; 102,103d101 < $self->indexing(1); < 110d107 < $cat_db->indexing(0); 130c127 < { GT_SQL_SKIP_CHECK => 1 } --- > { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 } 133d129 < $cat_db->indexing(1); 223c219 < ($set->{isValidated} eq 'Yes') ? $self->indexing(1) : $self->indexing(0); --- > $set->{GT_SQL_SKIP_INDEX} = $set->{isValidated} eq 'Yes' ? 0 : 1; 225d220 < $self->indexing(0); 228d222 < 265d258 < $cat_db->indexing(0); 271c264 < $cat_db->update ( { Number_of_Links => \"Number_of_Links + 1" }, $cond, { GT_SQL_SKIP_CHECK => 1 }); --- > $cat_db->update ( { Number_of_Links => \"Number_of_Links + 1" }, $cond, { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 }); 273c266 < $cat_db->update ( { Has_New_Links => 'Yes' }, $cond, { GT_SQL_SKIP_CHECK => 1 } ); --- > $cat_db->update ( { Has_New_Links => 'Yes' }, $cond, { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 } ); 275c268 < $cat_db->update ( { Newest_Link => $set->{Add_Date} }, $cond, { GT_SQL_SKIP_CHECK => 1 }); --- > $cat_db->update ( { Newest_Link => $set->{Add_Date} }, $cond, { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 }); 289c282 < $cat_db->update ( { Timestmp => \"NOW()" }, GT::SQL::Condition->new ('ID', 'IN', \$str), { GT_SQL_SKIP_CHECK => 1 }); --- > $cat_db->update ( { Timestmp => \"NOW()" }, GT::SQL::Condition->new ('ID', 'IN', \$str), { GT_SQL_SKIP_CHECK => 1, GT_SQL_SKIP_INDEX => 1 }); 548d540 < $db->select_options ("ORDER BY Full_Name ASC"); 554c546 < return $self->select ( { name => $name, values => \%res, value => $id, multiple => $mult } ); --- > return $self->select ( { name => $name, values => \%res, value => $id, multiple => $mult, sort => sub { lc $_[0] cmp lc $_[1] } } ); Index: cgi/admin/Links/SQL.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/SQL.pm,v retrieving revision 1.75 retrieving revision 1.76 diff -r1.75 -r1.76 6c6 < # Revision : $Id: SQL.pm,v 1.75 2001/02/17 03:52:33 alex Exp $ --- > # Revision : $Id: SQL.pm,v 1.76 2001/02/28 22:14:31 alex Exp $ 64c64 < Hits => { pos => 8, type => 'SMALLINT', not_null => 1, default => 0, regex => '^\d+$' }, --- > Hits => { pos => 8, type => 'INT', not_null => 1, default => 0, regex => '^\d+$' }, Index: cgi/admin/Links/Tools.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Tools.pm,v retrieving revision 1.47 retrieving revision 1.50 diff -r1.47 -r1.50 6c6 < # Revision : $Id: Tools.pm,v 1.47 2001/02/14 18:29:17 alex Exp $ --- > # Revision : $Id: Tools.pm,v 1.50 2001/03/01 22:09:47 alex Exp $ 524a525 > my $user_db = $DB->table ('Users'); 559c560,562 < my $reason = Links::load_template ('email-del.txt', $link); --- > my $user = $user_db->get($link->{LinkOwner}); > @{$user}{keys %$link} = (values %$link); > my $reason = Links::load_template ('email-del.txt', $user); 606a610 > my $user_db = $DB->table ('Users'); 623a628,639 > my $user = $user_db->get ($link->{LinkOwner}); > my $update_user = ''; > if ($user and (($user->{Name} ne $link->{Contact_Name}) or ($user->{Email} ne $link->{Contact_Email}))) { > my $name_esc = $IN->html_escape($link->{Contact_Name}); > my $email_esc = $IN->html_escape($link->{Contact_Email}); > $update_user = qq~ > <$font> > Update users name from: '$user->{Name}' => '$link->{Contact_Name}'
> Update email from: '$user->{Email}' => '$link->{Contact_Email}'
> > ~; > } 626a643 > @{$user}{keys %$link} = (values %$link); 631a649 > $update_user 634c652,653 < <$font> --- > <$font> > 715,716c734,752 < if ($res) { $error{$id} = $res; } < else { $chng_db->delete ( LinkID => $id ); } --- > if ($res) { > $error{$id} = $res; > } > else { > my $upd_name = $IN->param("update-name-$id"); > my $upd_email = $IN->param("update-email-$id"); > if ($upd_name or $upd_email) { > my $user_db = $DB->table ('Users'); > my %set; > $set{Name} = $upd_name if ($upd_name); > if ($upd_email) { > my $orig = $user_db->get ( $links->{$id}->{LinkOwner} ); > $set{Email} = $upd_email; > $set{Username} = $upd_email if ($orig->{Username} eq $orig->{Email}); > } > $user_db->update ( \%set, { Username => $links->{$id}->{LinkOwner} } ) or die "err: $GT::SQL::error"; > } > $chng_db->delete ( { LinkID => $id }); > } Index: cgi/admin/Links/mod_perl.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/mod_perl.pm,v retrieving revision 1.14 retrieving revision 1.16 diff -r1.14 -r1.16 6c6 < # Revision : $Id: mod_perl.pm,v 1.14 2001/01/19 06:23:28 alex Exp $ --- > # Revision : $Id: mod_perl.pm,v 1.16 2001/03/02 04:06:58 alex Exp $ 18c18,19 < use Apache::DBI; --- > use GT::Base qw/:all/; # $MOD_PERL $SPEEDY > BEGIN { if ($MOD_PERL) { require Apache::DBI; } } 42,43c43,44 < use Links::Browser; < use Links::Build qw/compile/; --- > use Links::Browser qw/compile/; > use Links::Build qw/compile/; 47c48 < pre_load() if ($Apache::ServerStarting == 1); --- > pre_load() if ($MOD_PERL and ($Apache::ServerStarting == 1)); Index: cgi/admin/Links/Browser/Controler.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Browser/Controler.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -r1.22 -r1.23 6c6 < # Revision : $Id: Controler.pm,v 1.22 2001/01/16 18:36:54 alex Exp $ --- > # Revision : $Id: Controler.pm,v 1.23 2001/02/28 22:14:12 alex Exp $ 37,43c37,39 < if (Links::Browser->can ($action)) { < if ($self->can ($action)) { < if ($self->{admin}) { < return $action; < } < if ($self->$action()) { return $action } < else { return } --- > if (exists $Links::Browser::SUBS{$action}) { > if ($self->{admin}) { > return $action; 45c41,42 < else { return } --- > if ($self->$action()) { return $action } > else { return } 107a105 > print "Content-type: text/html\n\n"; 108a107,108 > print "BASE: '$base' => ", $IN->param('category_id'), "
"; > 324c324 < ($info_node->{Full_Name} =~ /^\Q$info_base->{Full_Name}\E/) and return $info_base->{ID}; --- > ($info_node->{Full_Name} =~ m,^\Q$info_base->{Full_Name}\E(?:/|$),) and return $info_base->{ID}; Index: cgi/admin/Links/Import/L2S2.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Import/L2S2.pm,v retrieving revision 1.23 retrieving revision 1.27 diff -r1.23 -r1.27 6c6 < # Revision : $Id: L2S2.pm,v 1.23 2001/02/05 20:33:55 alex Exp $ --- > # Revision : $Id: L2S2.pm,v 1.27 2001/02/19 23:07:50 jagerman Exp $ 84c84 < open CATS, "<$$opt{source}/categories.db" or critical "Unable to open $$opt{source}/categories.db: $!"; --- > open CATS, "<$$opt{source}/data/categories.db" or critical "Unable to open $$opt{source}/data/categories.db: $!"; 91,92c91,92 < open LINKS, "<$$opt{source}/links.db" or critical "Unable to open $$opt{source}/links.db: $!"; < if (open VALIDATE, "<$$opt{source}/validate.db") { --- > open LINKS, "<$$opt{source}/data/links.db" or critical "Unable to open $$opt{source}/data/links.db: $!"; > if (open VALIDATE, "<$$opt{source}/data/validate.db") { 96c96 < warning "Could not open $$opt{source}/validate.db: $!. Non-validated links will not be imported."; --- > warning "Could not open $$opt{source}/data/validate.db: $!. Non-validated links will not be imported."; 98c98 < if (open EMAIL, "$$opt{source}/email.db") { --- > if (open EMAIL, "$$opt{source}/data/email.db") { 102c102 < warning "Could not open $$opt{source}/email.db: $!. No newsletter users will be imported."; --- > warning "Could not open $$opt{source}/data/email.db: $!. No newsletter users will be imported."; 287a288 > my $ins_pos = @missing_cats; 290c291 < unshift @missing_cats, $father_full_name; --- > splice @missing_cats, $ins_pos, 0, $father_full_name; 299c300 < unshift @missing_cats, $fn; --- > splice @missing_cats, $ins_pos, 0, $fn; 335c336 < else { --- > elsif (!$cat_map{$full_name}) { 344a346,350 > else { > --$Category_counter unless $$opt{straight_import}; > mild_warning("Duplicate category found ($full_name) and skipped"); > next; > } 352a359,362 > if ($cat_map{$_}) { # Already exists > $update_sub_cats->execute($cat_map{$_},"$_/%","$_/%/%") or critical "Unable to execute query `UPDATE ${e_prefix}Category SET FatherID = ? WHERE Full_Name LIKE ? and Full_Name NOT LIKE ?': ".$update_sub_cats->errstr; > next; > } 356c366,369 < if ($father_full) { --- > if ($father_full and exists $cat_map{$father_full}) { > $father_id = $cat_map{$father_full}; > } > elsif ($father_full) { 381c394 < $get_id_sth->execute($_) or critical "Unable to execute query `SELECT ID FROM ${e_prefix}Category WHERE Full_Name = ?': ".$get_id_sth->errstr; --- > $get_id_sth->execute($_) or critical "Unable to execute query `SELECT ID FROM ${e_prefix}Category WHERE Full_Name = ? <- $_': ".$get_id_sth->errstr; 484c497 < y/_/ / for @category_alternates; --- > for (@category_alternates) { y/_/ / } Index: cgi/admin/Links/Import/S1S2.pm =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/Links/Import/S1S2.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -r1.20 -r1.21 6c6 < # Revision : $Id: S1S2.pm,v 1.20 2001/02/17 09:12:09 jagerman Exp $ --- > # Revision : $Id: S1S2.pm,v 1.21 2001/02/21 22:19:22 jagerman Exp $ 528c528,529 < my @missing_cats; # contains the Full_Name's of missing categories --- > my @missing_cats; # contains the Full_Name's of missing categories. > my %missing_cats; # contains Full_name => true for missing categories. 564,574c565,581 < unshift @missing_cats, $father_full_name; < mild_warning "$father_full_name is needed for category $full_name and does not exist. It will be created"; < my $fn = $father_full_name; < while ($fn =~ s[/[^/]*\Z][]) { < $count_cats_sth->execute($fn) or critical "Unable to execute query `SELECT COUNT(*) FROM ${e_prefix}Category WHERE Full_Name = ?': ".$count_cats_sth->errstr; < if ($count_cats_sth->fetchrow_array) { # It exists < last; < } < else { < unshift @missing_cats, $fn; < mild_warning "$fn is needed for category $full_name and does not exist. It will be created"; --- > if ($missing_cats{$father_full_name}++) { > mild_warning "$father_full_name is needed for category $full_name and is already in the list of categories to be created"; > } > else { > my $ins_pos = @missing_cats; > splice @missing_cats, $ins_pos, 0, $father_full_name; > mild_warning "$father_full_name is needed for category $full_name and does not exist. It will be created"; > my $fn = $father_full_name; > while ($fn =~ s[/[^/]*\Z][]) { > $count_cats_sth->execute($fn) or critical "Unable to execute query `SELECT COUNT(*) FROM ${e_prefix}Category WHERE Full_Name = ?': ".$count_cats_sth->errstr; > if ($count_cats_sth->fetchrow_array) { # It exists > last; > } > else { > splice @missing_cats, $ins_pos, 0, $fn; > mild_warning "$fn is needed for category $full_name and does not exist. It will be created"; > } Index: cgi/admin/templates/admin/browser_link_validate_form.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/admin/browser_link_validate_form.html,v retrieving revision 1.3 retrieving revision 1.4 diff -r1.3 -r1.4 55a56,61 > <%if Email ne $Contact_Email%> > > Update users name from: '<%Name%>' => '<%Contact_Name%>'
> Update email from: '<%Email%>' => '<%Contact_Email%>'
> > <%endif%> Index: cgi/admin/templates/admin/home_nav.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/admin/home_nav.html,v retrieving revision 1.4 retrieving revision 1.5 diff -r1.4 -r1.5 9c9 < var url = 'admin.cgi?do=help&topic_url='; --- > var url = 'admin.cgi?do=help&'; 10a11 > var topic_url = ''; 14c15,20 < topic = top.body.content.document.location; --- > if (top.body.content.document.forms.helpme && top.body.content.document.forms.helpme.topic) { > topic = top.body.content.document.forms.helpme.topic.value; > } > else { > topic_url = top.body.content.document.location; > } 17c23 < topic = top.body.document.location; --- > topic_url = top.body.document.location; 20c26 < topic = 'toc'; --- > topic_url = 'toc'; 22c28 < topic = escape(topic); --- > topic_url = escape(topic_url); 27c33 < url = url + topic + '&rand=' + Rand; --- > url = url + ( topic_url ? "topic_url=" + topic_url : "topic=" + topic ) + '&rand=' + Rand; Index: cgi/admin/templates/admin/setup_env.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/admin/setup_env.html,v retrieving revision 1.1 retrieving revision 1.2 diff -r1.1 -r1.2 27a28,29 > # demo 1 hide > # This has been disabled in the online demo. Index: cgi/admin/templates/admin/setup_misc.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/admin/setup_misc.html,v retrieving revision 1.9 retrieving revision 1.10 diff -r1.9 -r1.10 58,65d57 < Running under a persistant environment (like mod_perl, fastcgi or speedycgi)? If so, this must be set to Yes, otherwise it should remain as No. < < < persistant_env < CHECKED<%endif%>>Yes < CHECKED<%endif%>>No < < Index: cgi/admin/templates/admin/setup_user.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/admin/setup_user.html,v retrieving revision 1.8 retrieving revision 1.9 diff -r1.8 -r1.9 63,73d62 < a valid contact name and email address when a link is added? If you set this to no, all added links will be owned < by admin.
< < < user_valid_email < CHECKED<%endif%>>Yes < CHECKED<%endif%>>No < < < < Require Index: cgi/admin/templates/av/email.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/av/email.html,v retrieving revision 1.2 retrieving revision 1.4 diff -r1.2 -r1.4 26,28c26,28 < <%if message%> <

<%message%>

< <%endif%> --- > <%if error%> >

<%error%>

> <%else%> 34a35 > <%endif%> 41,44c42,46 < Name: < < Email: < --- > > <%ifnot Username%> >
> Name: Email: > <%endif%> Index: cgi/admin/templates/default/email.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/default/email.html,v retrieving revision 1.4 retrieving revision 1.5 diff -r1.4 -r1.5 16,20c16,24 < <%if action eq 'subscribe'%> <

You have been successfully subscribed to our newsletter

< <%endif%> < <%if action eq 'unsubscribe'%> <

You have been successfully removed from our newsletter

--- > <%if error%> >

<%error%>

> <%else%> > <%if action eq 'subscribe'%> >

You have been successfully subscribed to the list.

> <%endif%> > <%if action eq 'unsubscribe'%> >

You have been successfully removed from the list.

> <%endif%> Index: cgi/admin/templates/help/help_guide_plugins_install.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/help/help_guide_plugins_install.html,v retrieving revision 1.1 retrieving revision 1.2 diff -r1.1 -r1.2 66,67c66,68 < Table To do this we will need a GT::SQL::Editor < object.

--- > Table to do this we will need a GT::SQL::Editor > object. However, we should first check to make sure the column doesn't > already exist (as they may be upgrading the plugin):

69,72c70,75 <
my $editor = $DB->table ('Links');
< unless ($editor->add_col ( 'Review', { type => 'TEXT' }) {
<     $Plugins::Pluginname::error = "Unable to add column to Links: $GT::SQL::error";
<     return;
---
>     
unless (exists $DB->table('Links')->cols->{'Review'}) {
>     my $editor = $DB->table ('Links');
>     unless ($editor->add_col ( 'Review', { type => 'TEXT' }) {
>         $Plugins::Pluginname::error = "Unable to add column to Links: $GT::SQL::error";
>         return;
>     }
Index: cgi/admin/templates/snap/email.html
===================================================================
RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/snap/email.html,v
retrieving revision 1.2
retrieving revision 1.4
diff -r1.2 -r1.4
43,44c43,51
< <%if message%>
<     

<%message%>

--- > <%if error%> >

<%error%>

> <%else%> > <%if action eq 'subscribe'%> >

You have been successfully subscribed to the list.

> <%endif%> > <%if action eq 'unsubscribe'%> >

You have been successfully removed from the list.

> <%endif%> 45a53 > 49c57,61 < Name: Email: --- > <%ifnot Username%> >
> Name: Email: > <%endif%> > Index: cgi/admin/templates/yahoo/email.html =================================================================== RCS file: /usr/local/gossamer/lsqldev/cgi/admin/templates/yahoo/email.html,v retrieving revision 1.2 retrieving revision 1.4 diff -r1.2 -r1.4 47,49c47,55 < < <%if message%> <

<%message%>

--- > <%if error%> >

<%error%>

> <%else%> > <%if action eq 'subscribe'%> >

You have been successfully subscribed to the list.

> <%endif%> > <%if action eq 'unsubscribe'%> >

You have been successfully removed from the list.

> <%endif%> 54c60,64 < Name: Email: --- > <%ifnot Username%> >
> Name: Email: > <%endif%> > Index: Base.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Base.pm,v retrieving revision 1.62 retrieving revision 1.65 diff -r1.62 -r1.65 6c6 < # $Id: Base.pm,v 1.62 2001/02/14 06:57:09 alex Exp $ --- > # $Id: Base.pm,v 1.65 2001/02/28 04:49:09 alex Exp $ 24c24 < $VERSION = sprintf "%d.%03d", q$Revision: 1.62 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.65 $ =~ /(\d+)\.(\d+)/; 226c226,227 < defined $level or ($level = 1); --- > (defined($level) and $level =~ /^\d+$/) or ($level = 1); > 463c464 < my $stack = stack_track('GT::Base', 1); --- > my $stack = stack_trace('GT::Base', 1); 515c516 < my ($ls, $fh); --- > my ($ls, $spc, $fh); 521a523 > $spc = ' '; 525a528 > $spc = ' '; 534,536c537,547 < if ($] > 5.00503) { < eval { $args = (@DB::args) ? ("with arguments
   (" . join (", " => map { defined $_ ? $_ : '' } @DB::args) . ")") : "with no arguments"; }; < if ($@) { $args = "strange arguments: $@"; } --- > my @args; > for (@DB::args) { > eval { my $a = $_ }; # workaround for a reference that doesn't think it's a reference > my $print = $@ ? \$_ : $_; > push @args, defined $print ? $print : '[undef]'; > } > if (@args) { > my $args = join ", ", @args; > $args =~ s/\n\s*\n/\n/g; > $args =~ s/\n/\n$spc$spc$spc$spc/g; > $out .= qq!$pkg ($$): $sub called at $file line $line with arguments $ls$spc$spc ($args).$ls!; 539c550 < $args = (@DB::args) ? ("with arguments
   (" . join (", " => map { defined $_ ? $_ : '' } @DB::args) . ")") : "with no arguments"; --- > $out .= qq!$pkg ($$): $sub called at $file line $line with no arguments.$ls!; 541,543d551 < $args =~ s/\n\s*\n/\n/g; < $args =~ s/\n/\n\t/g; < $out .= qq!$pkg ($$): $sub called at $file line $line $args.$ls!; 783c791 < Revision: $Id: Base.pm,v 1.62 2001/02/14 06:57:09 alex Exp $ --- > Revision: $Id: Base.pm,v 1.65 2001/02/28 04:49:09 alex Exp $ Index: CGI.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/CGI.pm,v retrieving revision 1.48 retrieving revision 1.52 diff -r1.48 -r1.52 6c6 < # $Id: CGI.pm,v 1.48 2001/02/14 06:55:16 alex Exp $ --- > # $Id: CGI.pm,v 1.52 2001/03/02 04:54:23 alex Exp $ 20c20 < $FORM_PARSED $POST_MAX $CRLF %PARAMS %COOKIES/; --- > $INPUT_SEPARATOR $FORM_PARSED $POST_MAX $CRLF %PARAMS %COOKIES/; 24c24 < $VERSION = sprintf "%d.%03d", q$Revision: 1.48 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.52 $ =~ /(\d+)\.(\d+)/; 36a37 > $INPUT_SEPARATOR = chr(35); 135c136 < # with a \0. --- > # with $INPUT_SEPARATOR. 143c144 < map { $_ => ref $PARAMS{$_}->[0] ? $PARAMS{$_}->[0] : join("\0", @{$PARAMS{$_}}) } --- > map { $_ => ref $PARAMS{$_}->[0] ? $PARAMS{$_}->[0] : join($INPUT_SEPARATOR, @{$PARAMS{$_}}) } 373,376c374,385 < $toencode =~ s/&/&/g; < $toencode =~ s//>/g; < $toencode =~ s/"/"/g; --- > if (ref($toencode) eq 'SCALAR') { > $$toencode =~ s/&/&/g; > $$toencode =~ s/ $$toencode =~ s/>/>/g; > $$toencode =~ s/"/"/g; > } > else { > $toencode =~ s/&/&/g; > $toencode =~ s/ $toencode =~ s/>/>/g; > $toencode =~ s/"/"/g; > } 468,469c477,486 < for ( split /&/, shift ) { < /([^=]+)=(.*)/ and push @{$PARAMS{unescape($1)}}, unescape($2) --- > for ( split /&/, shift ) { > /([^=]+)=(.*)/ or next; > my ($key, $val) = (unescape($1), unescape($2)); > > # Need to remove cr's on windows. > if ($^O eq 'MSWin32') { > $key =~ s/\r\n/\n/g; > $val =~ s/\r\n/\n/g; > } > push @{$PARAMS{$key}}, $val; 972c989 < the same key or joined as a string with \0. --- > the same key or joined as a string with $INPUT_SEPARATOR. 996c1013 < L. --- > L. 1005c1022 < Revision: $Id: CGI.pm,v 1.48 2001/02/14 06:55:16 alex Exp $ --- > Revision: $Id: CGI.pm,v 1.52 2001/03/02 04:54:23 alex Exp $ Index: Date.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Date.pm,v retrieving revision 1.33 retrieving revision 1.34 diff -r1.33 -r1.34 6c6 < # $Id: Date.pm,v 1.33 2001/02/09 02:38:11 alex Exp $ --- > # $Id: Date.pm,v 1.34 2001/02/28 04:49:27 alex Exp $ 54c54 < $VERSION = sprintf "%d.%03d", q$Revision: 1.33 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.34 $ =~ /(\d+)\.(\d+)/; 523c523,526 < die "Can't handle date: $date" if ($count++ > 255); --- > if ($count++ > 255) { > warn "GT::Date - can't handle date: $date\n"; > return 0; > } 718c721 < Revision: $Id: Date.pm,v 1.33 2001/02/09 02:38:11 alex Exp $ --- > Revision: $Id: Date.pm,v 1.34 2001/02/28 04:49:27 alex Exp $ Index: Dumper.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Dumper.pm,v retrieving revision 1.15 retrieving revision 1.17 diff -r1.15 -r1.17 6c6 < # $Id: Dumper.pm,v 1.15 2001/02/12 22:07:13 jagerman Exp $ --- > # $Id: Dumper.pm,v 1.17 2001/03/01 16:50:16 jagerman Exp $ 24c24 < $VERSION = sprintf "%d.%03d", q$Revision: 1.15 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.17 $ =~ /(\d+)\.(\d+)/; 71c71 < return $self; --- > return $self; 248c248 < $val =~ s/(['\\])/\\$1/g; --- > $val =~ s/('|\\(?=['\\]|$))/\\$1/g; 301c301 < Revision: $Id: Dumper.pm,v 1.15 2001/02/12 22:07:13 jagerman Exp $ --- > Revision: $Id: Dumper.pm,v 1.17 2001/03/01 16:50:16 jagerman Exp $ Index: HTML.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/HTML.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -r1.7 -r1.8 6c6 < # $Id: HTML.pm,v 1.7 2001/02/11 01:11:24 aki Exp $ --- > # $Id: HTML.pm,v 1.8 2001/02/28 21:17:20 aki Exp $ 19d18 < use GT::URI::HTTP; 24c23 < @ISA = qw| GT::Base Exporter |; --- > @ISA = qw| Exporter GT::Base |; 754c753 < Revision: $Id: HTML.pm,v 1.7 2001/02/11 01:11:24 aki Exp $ --- > Revision: $Id: HTML.pm,v 1.8 2001/02/28 21:17:20 aki Exp $ Index: MD5.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/MD5.pm,v retrieving revision 1.9 retrieving revision 1.10 diff -r1.9 -r1.10 6c6 < # $Id: MD5.pm,v 1.9 2001/01/16 20:33:37 jagerman Exp $ --- > # $Id: MD5.pm,v 1.10 2001/03/01 00:36:44 jagerman Exp $ 27c27 < $VERSION = sprintf "%d.%03d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.10 $ =~ /(\d+)\.(\d+)/; 46a47,48 > use integer; > Index: Mail.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Mail.pm,v retrieving revision 1.26 retrieving revision 1.28 diff -r1.26 -r1.28 6c6 < # $Id: Mail.pm,v 1.26 2001/02/14 01:50:53 sbeck Exp $ --- > # $Id: Mail.pm,v 1.28 2001/02/19 23:43:14 alex Exp $ 31c31 < $VERSION = sprintf "%d.%03d", q$Revision: 1.26 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.28 $ =~ /(\d+)\.(\d+)/; 43c43,44 < NOIO => "No input to parse!" --- > NOIO => "No input to parse!", > NOEMAIL => "No message head was specified", 180d180 < $self->{mail_attach} ||= []; 275c275 < --- > 421a422,423 > > my $attach; 427c429,434 < my $attach = $self->new_part (@_); --- > elsif (ref $_[0] eq 'GT::Mail::Parts') { > $attach = $_[0]; > } > else { > $attach = $self->new_part (@_); > } 471c478 < if ((@{$self->{head}->{parts}} > 0) or (@{$self->{mail_attach}} > 0)) { --- > if (@{$self->{head}->{parts}} > 0) { 492c499 < if (($num_parts == $num) and (@{$self->{mail_attach}} <= 0)) { --- > if ($num_parts == $num) { 503,509d509 < # If we have email objects to attach, attach them. < if (@{$self->{mail_attach}} > 0) { < $self->_build_attach_email ($code); < $self->debug ("Boundary\n\t--$bound--") if ($self->{_debug}); < $code->($CRLF . '--' . $bound . '--' . $CRLF); < } < 511c511 < if ((@{$self->{head}->{parts}} > 0) or (@{$self->{mail_attach}} > 0)) { --- > if (@{$self->{head}->{parts}} > 0) { 518c518 < return 1; --- > return $self->{head}; 537c537 < if (ref($file) and (ref($file) eq 'GLOB')) { --- > if (ref($file) and (ref($file) eq 'GLOB') and fileno($file)) { 686,687c686,698 < $self->debug ("Setting multipart boundary to ($bound).") if ($self->{_debug}); < $self->{head}->set ("Content-Type" => qq!multipart/mixed; boundary="$bound"!); --- > > # Set the content boundary unless it has already been set > my $c = $self->{head}->get('Content-Type'); > if ($c) { > $self->debug(qq|Setting content type to ($c; boundary="$bound")|) if $self->{_debug}; > $self->{head}->set('Content-Type' => $c . qq|; boundary="$bound"|); > } > else { > $self->debug ("Setting multipart boundary to ($bound).") if ($self->{_debug}); > $self->{head}->set ('Content-Type' => qq!multipart/mixed; boundary="$bound"!) > } > > 721,745d731 < sub _build_attach_email { < # -------------------------------------------------------------------------- < # Private method that handles attaching the rfc/822 emails. < # < my ($self, $code) = @_; < my $num_attach = $#{$self->{mail_attach}}; < my $bound = $self->{head}->multipart_boundary; < for my $num (0 .. $num_attach) { < next unless $self->{mail_attach}->[$num]; < $self->debug ("Attaching rfc/822 email with name msg.$num") if ($self->{_debug}); < my $new_part = $self->new_part ( < type => 'message/rfc822', < encoding => '7bit', < 'Content-Disposition' => qq!inline; filename="msg.$num"!, < ); < (my $head = $new_part->header_as_string) =~ s/\015?\012/$CRLF/g; < $code->($head . $CRLF); < $self->{mail_attach}->[$num]->build_email ($code) or return; < if ($num != $num_attach) { < $self->debug ("Boundary\n\t--$bound") if ($self->{_debug}); < $code->($CRLF . '--' . $bound . $CRLF); < } < } < } < 782,784c768,779 < $part->set ( < "Content-Type" => qq!multipart/mixed; boundary="$bound"! < ); --- > > # Set the content boundary unless it has already been set > my $c = $part->get('Content-Type'); > if ($c) { > $self->debug(qq|Setting content type to ($c; boundary="$bound")|) if $self->{_debug}; > $part->set('Content-Type' => $c . qq|; boundary="$bound"|); > } > else { > $self->debug ("Setting multipart boundary to ($bound).") if ($self->{_debug}); > $part->set ('Content-Type' => qq!multipart/mixed; boundary="$bound"!) > } > 841,875d835 < sub read { < # my ($self, $io, $out, $bytes) = @_; < # Assume it's a filehandle < if (ref $_[1]) { < if ($_[3]) { < return read($_[1], $_[2], $_[3]); < } < else { < $_[2] = <$_[1]>; < return $_[2]; < } < } < < # The fun part, a string < else { < defined($_[1]) and length($_[1]) or return; < $_[1] =~ tr/\r//d; < if ($_[3]) { < $_[2] = substr($_[1], 0, $_[3]); < substr($_[1], 0, $_[3]) = ''; < return length($_[2]) || undef; < } < else { < if (index($_[1], "\n") == -1 and length($_[1])) { < $_[2] = $_[1]; < $_[1] = undef; < return $_[2]; < } < $_[2] = substr($_[1], 0, index($_[1], "\n") + 1); < substr($_[1], 0, index($_[1], "\n") + 1) = ''; < return $_[2]; < } < } < } < 1090c1050 < Revision: $Id: Mail.pm,v 1.26 2001/02/14 01:50:53 sbeck Exp $ --- > Revision: $Id: Mail.pm,v 1.28 2001/02/19 23:43:14 alex Exp $ Index: Robot.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Robot.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -r1.11 -r1.12 6c6 < # $Id: Robot.pm,v 1.11 2001/02/12 17:20:01 aki Exp $ --- > # $Id: Robot.pm,v 1.12 2001/02/28 21:18:11 aki Exp $ 32c32 < 'hits_interval' => 0, --- > 'hits_interval' => 1, 67c67,68 < 'log_file' => undef --- > 'log_file' => undef, > 'log_format' => '%p %t: %m' 347a349 > $self->debug( "Checking $uri..." ) if ($self->{_debug}); 360c362 < $self->_log_message( "Queuing $validated_uri" ) if ( $self->{log_file} ); --- > $self->_log_message( "Queuing $validated_uri" ) if ($self->{log_file}); 872a875 > $self->debug( "Checking $uri..." ) if ($self->{_debug}); 878c881 < $self->_log_message( "Ignoring $uri as it moves to another host." ) if ( $self->{log_file} ); --- > $self->_log_message( "Ignoring $uri as it moves to another host." ) if ($self->{log_file}); 953c956 < my $self = shift; --- > my $self = shift; 955,956c958,966 < my $file = $self->{log_file}; < print $file "$message\n"; --- > my $file = $self->{log_file}; > my $str = $self->{log_format}; > my %replace = ( > 't' => scalar(localtime()), > 'p' => $$, > 'm' => $message > ); > $str =~ s/\%(.)/$replace{$1}||$1/ge; > print $file "$str\n"; 1117c1127 < Revision: $Id: Robot.pm,v 1.11 2001/02/12 17:20:01 aki Exp $ --- > Revision: $Id: Robot.pm,v 1.12 2001/02/28 21:18:11 aki Exp $ Index: SQL.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL.pm,v retrieving revision 1.70 retrieving revision 1.71 diff -r1.70 -r1.71 6c6 < # $Id: SQL.pm,v 1.70 2001/02/13 20:19:40 jagerman Exp $ --- > # $Id: SQL.pm,v 1.71 2001/03/01 18:48:26 jagerman Exp $ 29c29 < $VERSION = sprintf "%d.%03d", q$Revision: 1.70 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.71 $ =~ /(\d+)\.(\d+)/; 58c58 < 'FKRELATION' => "%s breaks foreign key relation with the %s table.", --- > 'FKRELATION' => "Column %s breaks foreign key relation with the %s table.", 790c790 < Revision: $Id: SQL.pm,v 1.70 2001/02/13 20:19:40 jagerman Exp $ --- > Revision: $Id: SQL.pm,v 1.71 2001/03/01 18:48:26 jagerman Exp $ Index: Socket.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Socket.pm,v retrieving revision 1.28 retrieving revision 1.32 diff -r1.28 -r1.32 6c6 < # $Id: Socket.pm,v 1.28 2001/01/24 19:23:52 aki Exp $ --- > # $Id: Socket.pm,v 1.32 2001/03/02 04:07:31 alex Exp $ 28c28 < $VERSION = sprintf "%d.%03d", q$Revision: 1.28 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.32 $ =~ /(\d+)\.(\d+)/; 117c117 < my ( $self, $sock, $options ); --- > my ( $self, $options ); 120c120 < if (! ref ($self) and (ref ( $self ) ne 'GT::Socket') ) { --- > if (! ref ($_[0]) and (ref ( $_[0] ) ne 'GT::Socket') ) { 122a123,125 > else { > $self = shift; > } 129d131 < shift; 182,191c184,201 < eval { < local $SIG{ALRM} = sub { $fh = undef; $self->error( 'TIMEOUT', 'WARN', $host ); alarm(0); die 'TIMEOUT' }; < alarm($self->{timeout}); < my $err = connect($fh, $paddr); < alarm(0) if ($self->{timeout}); < $err or die $self->error( 'TIMEOUT', 'WARN', $host ); < }; < $@ and return undef; < } else { < connect($fh, $paddr) or return $self->error( 'TIMEOUT', 'WARN', $host ); --- > { > local $SIG{__DIE__}; > eval { > local $SIG{ALRM} = sub { $fh = undef; $self->error( 'TIMEOUT', 'WARN', $host ); alarm(0); die 'TIMEOUT\n' }; > alarm($self->{timeout}); > connect($fh, $paddr) or die 'CONNECT'; > }; > } > alarm(0) if ($self->{timeout}); > if ($@ and $@ =~ /^TIMEOUT/) { > return $self->error ('TIMEOUT', 'WARN', $host); > } > elsif ($@) { > return $self->error ('CONNECT', 'WARN', $host); > } > } > else { > connect($fh, $paddr) or return $self->error( 'CONNECT', 'WARN', $host ); 818c828 < Revision: $Id: Socket.pm,v 1.28 2001/01/24 19:23:52 aki Exp $ --- > Revision: $Id: Socket.pm,v 1.32 2001/03/02 04:07:31 alex Exp $ Index: TempFile.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/TempFile.pm,v retrieving revision 1.18 retrieving revision 1.20 diff -r1.18 -r1.20 6c6 < # $Id: TempFile.pm,v 1.18 2001/02/09 02:26:17 alex Exp $ --- > # $Id: TempFile.pm,v 1.20 2001/03/01 20:51:32 alex Exp $ 45c45 < if (-d $dir and -w _) { --- > if (-d $dir and -w _ and -x _) { 70c70 < if ($filename !~ m#^([a-zA-Z0-9_ '":/\\\.]+)$#) { die "$class: Invalid filename: $filename"; } --- > ($filename =~ /^(.+)$/) and ($filename = $1); # Detaint. 72d71 < $filename = $1; 154c153 < Revision: $Id: TempFile.pm,v 1.18 2001/02/09 02:26:17 alex Exp $ --- > Revision: $Id: TempFile.pm,v 1.20 2001/03/01 20:51:32 alex Exp $ Index: Template.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Template.pm,v retrieving revision 1.61 retrieving revision 1.72 diff -r1.61 -r1.72 6c6 < # $Id: Template.pm,v 1.61 2001/02/14 06:24:34 alex Exp $ --- > # $Id: Template.pm,v 1.72 2001/03/01 21:37:08 alex Exp $ 20c20 < use vars qw(@ISA $VERSION $DEBUG $ATTRIBS $ERRORS $TEMPLATE_OBJ $error); --- > use vars qw(@ISA $VERSION $DEBUG $ATTRIBS $ERRORS $error); 22c22 < $VERSION = sprintf "%d.%03d", q$Revision: 1.61 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.72 $ =~ /(\d+)\.(\d+)/; 37c37,38 < 'UNKNOWNTAG' => "Unknown Tag: '%s'" --- > 'COMPILE' => "Error: Unable to compile function: %s. Reason: %s", > 'UNKNOWNTAG' => "Unknown Tag: '%s'", 49,59c50 < my ($self); < if (ref $_[0]) { < $self = shift; < } < else { < $TEMPLATE_OBJ ||= new GT::Template; < $self = $TEMPLATE_OBJ; < $self->clear_vars; # Remove existing vars if called as class method. < shift; < } < --- > my $self = ref $_[0] ? shift : (shift, new GT::Template); 73a65 > $self->{root} = $opt->{root} if (defined $opt->{root}); 161a154,155 > $self->{opt}->{package} = exists $opt->{package} ? $opt->{package} : caller(1) || 'main'; > 218d211 < 242a236,246 > elsif ($tag eq 'lastloop') { > substr($$txt, $last_pos - $tag_len) = ''; > $self->{lastloop} = 1; > return $print ? 1 : \$return; > } > elsif ($tag eq 'nextloop') { > substr($$txt, $last_pos - $tag_len) = ''; > $self->{nextloop} = 1; > return $print ? 1 : \$return; > } > 268c272,277 < my ($var, $comp, $val) = split(/\s*\b\s*/, $tag, 3); --- > $tag =~ s/([\:\w]+)\b\s*//; > my $var = $1; > my ($comp, $val); > if (length($tag)) { > ($comp, $val) = $tag =~ /^(\S+?)\s*(?=(?:[^"']["'])|(?:[^\$]\$)|\b)\s*(.+)$/; > } 270d278 < 355c363 < my $err = sprintf ($ERRORS->{BADINC}, $errfile, $! ? $! : 'File does not exist'); --- > my $err = $self->{opt}->{escape} ? \sprintf($ERRORS->{BADINC}, $errfile, $! ? $! : 'File does not exist') : sprintf($ERRORS->{BADINC}, $errfile, $! ? $! : 'File does not exist'); 430c438,443 < my ($var, $comp, $val) = split(/\s+/, $tag, 3); --- > $tag =~ s/([\:\w]+)\b\s*//; > my $var = $1; > my ($comp, $val); > if (length($tag)) { > ($comp, $val) = $tag =~ /^(\S+?)\s*(?=(?:[^"']["'])|(?:[^\$]\$)|\b)\s*(.+)$/; > } 492,493d504 < my %vars = %{$self->{VARS}}; < local $self->{VARS} = \%vars; 496c507 < my $err = sprintf ($ERRORS->{LOOPNOTHASH}, $next); --- > my $err = $self->{opt}->{escape} ? \sprintf ($ERRORS->{LOOPNOTHASH}, $next) : sprintf ($ERRORS->{LOOPNOTHASH}, $next); 508c519,527 < $print ? $self->_parse_tags($loop_tpl) : ($return .= ${$self->_parse_tags($loop_tpl)}); --- > $print ? $self->_parse_tags(\$loop_tpl) : ($return .= ${$self->_parse_tags($loop_tpl)}); > if ($self->{lastloop}) { > $self->{lastloop} = 0; > last; > } > elsif ($self->{nextloop}) { > $self->{nextloop} = 0; > next; > } 520c539 < $print ? $self->_parse_tags($loop_tpl) : ($return .= ${$self->_parse_tags($loop_tpl)}); --- > $print ? $self->_parse_tags(\$loop_tpl) : ($return .= ${$self->_parse_tags($loop_tpl)}); 525,526d543 < my %vars = %{$self->{VARS}}; < local $self->{VARS} = \%vars; 530c547 < my $err = sprintf ($ERRORS->{LOOPNOTHASH}, $vars); --- > my $err = $self->{opt}->{escape} ? \sprintf ($ERRORS->{LOOPNOTHASH}, $vars) : sprintf ($ERRORS->{LOOPNOTHASH}, $vars); 543a561,568 > if ($self->{lastloop}) { > $self->{lastloop} = 0; > last; > } > elsif ($self->{nextloop}) { > $self->{nextloop} = 0; > next; > } 631c656 < exists $self->{VARS}->{$1} or return sprintf ($ERRORS->{BADVAR}, $1, $package, $func); --- > exists $self->{VARS}->{$1} or return $self->{opt}->{escape} ? \sprintf($ERRORS->{BADVAR}, $1, $package, $func) : sprintf($ERRORS->{BADVAR}, $1, $package, $func); 644c669 < $ret = $self->{opt}->{strict} ? sprintf ($ERRORS->{CANTLOAD}, $package, join(",
\n" => @err)) : ''; --- > $ret = $self->{opt}->{strict} ? $self->{opt}->{escape} ? \sprintf($ERRORS->{CANTLOAD}, $package, join(",
\n" => @err)) : sprintf($ERRORS->{CANTLOAD}, $package, join(",
\n" => @err)) : ''; 766a792,793 > # If a tag starts with sub { then we assume it's a code ref, compile it, run it and > # return it. 768a796,805 > if (index ($ret, 'sub {') == 0) { > $self->{VARS}{$str} = eval "package $self->{opt}->{package}; $ret"; > if (ref $self->{VARS}{$str} eq 'CODE') { > $ret = &{$self->{VARS}{$str}}($self->{VARS}); > $ret = defined($ret) ? $ret : ''; > } > else { > $self->{VARS}{$str} = $ret = sprintf($ERRORS->{COMPILE}, $str, $@); > } > } 773c810 < return $strict ? sprintf($ERRORS->{UNKNOWNTAG}, $str) : ''; --- > return $strict ? $self->{opt}->{escape} ? \sprintf($ERRORS->{UNKNOWNTAG}, $str) : sprintf($ERRORS->{UNKNOWNTAG}, $str) : ''; 1030c1067 < Revision: $Id: Template.pm,v 1.61 2001/02/14 06:24:34 alex Exp $ --- > Revision: $Id: Template.pm,v 1.72 2001/03/01 21:37:08 alex Exp $ 1032a1070,1071 > > Index: URI.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/URI.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -r1.17 -r1.18 6c6 < # $Id: URI.pm,v 1.17 2001/02/12 18:55:40 alex Exp $ --- > # $Id: URI.pm,v 1.18 2001/02/28 21:16:07 aki Exp $ 353c353 < GT::URI Makes requests and reterives resources internet servers. --- > GT::URI Makes requests and retrieves resources from internet servers. 545c545 < Revision: $Id: URI.pm,v 1.17 2001/02/12 18:55:40 alex Exp $ --- > Revision: $Id: URI.pm,v 1.18 2001/02/28 21:16:07 aki Exp $ Index: MD5/Crypt.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/MD5/Crypt.pm,v retrieving revision 1.1 retrieving revision 1.3 diff -r1.1 -r1.3 2c2,3 < # Gossamer Thread module library. --- > # Gossamer Thread module library. gt_md5_crypt was added which uses > # "$GT$" as the magic string instead of the unix "$1$" or apache "$apr1$" 32c33 < @EXPORT = qw(unix_md5_crypt apache_md5_crypt); --- > @EXPORT = qw(unix_md5_crypt apache_md5_crypt gt_md5_crypt); 65a67,68 > local $^W; > 79,82c82,92 < # change the Magic string to match the one used by Apache < local $Magic = '$apr1$'; < < unix_md5_crypt(@_); --- > # change the Magic string to match the one used by Apache > local $Magic = '$apr1$'; > > unix_md5_crypt(@_); > } > > sub gt_md5_crypt { > # change the Magic string to put our signature in the password > local $Magic = '$GT$'; > > unix_md5_crypt(@_); Index: Mail/Encoder.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Mail/Encoder.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -r1.14 -r1.15 6c6 < # $Id: Encoder.pm,v 1.14 2001/02/13 05:54:16 sbeck Exp $ --- > # $Id: Encoder.pm,v 1.15 2001/02/19 21:19:04 sbeck Exp $ 98d97 < print "Not a ref!\n"; 113d111 < print "Got a file handle!!\n"; 128c126 < if (ref $in) { --- > if (not ref $in) { 192a191 > unless ($ref) { $in =~ s/\015?\012/\n/g } 199c198 < $in =~ s/\A([^\r\n]*?\r?\n)//m; --- > $in =~ s/^(.*?\r?\n)//m; 201c200 < length($_) or last; --- > (defined and length) or last; 224a224 > s/\015?\012/$CRLF/g; 225a226,228 > unless ($ref) { > (defined($in) and length($in)) or last; > } 316c319 < Revision: $Id: Encoder.pm,v 1.14 2001/02/13 05:54:16 sbeck Exp $ --- > Revision: $Id: Encoder.pm,v 1.15 2001/02/19 21:19:04 sbeck Exp $ Index: Mail/POP3.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Mail/POP3.pm,v retrieving revision 1.13 retrieving revision 1.15 diff -r1.13 -r1.15 6c6 < # $Id: POP3.pm,v 1.13 2001/02/13 05:55:07 sbeck Exp $ --- > # $Id: POP3.pm,v 1.15 2001/02/27 13:12:43 sbeck Exp $ 29a30 > use GT::MD5 qw/md5_hex/; 162a164 > $_[0]->debug('--- Attempting to read') if ($_[0]->{_debug}); 163a166 > $_[0]->debug('--- Read ' . length($line) . ' bytes') if ($_[0]->{_debug}); 186a190,192 > > $self->debug('Connected to ' . $self->{host} . ' on port ' . $self->{port}) if ($self->{_debug}); > 188c194 < select((select($self->{sock}) , $| = 1)[0]); --- > select((select($self->{sock}), $| = 1)[0]); 196c202 < $self->debug ("Connected to ($self->{host})") if ($self->{_debug}); --- > $self->debug ("Going to login") if ($self->{_debug}); 216,222c222 < < eval { < require MD5; < 1; < } < or return $self->error ("NOMD5", "WARN", $@); < $hash = MD5->hexhash ($self->{msg_id} . $self->{pass}); --- > $hash = md5_hex($self->{msg_id} . $self->{pass}); 224,225c224,230 < $_ = $self->send ("APOP " . $self->{user} . " " . $hash); /^\+/ or return $self->error ("LOGIN", "WARN", "APOP Login failed: $_"); < /^\+OK \S+ has (\d+) /i and ($self->{count} = $1); --- > local ($_) = $self->send ("APOP " . $self->{user} . " " . $hash); /^\+/ or return $self->error ("LOGIN", "WARN", "APOP Login failed: $_"); > if (/^\+OK \S+ has (\d+) /i) { > $self->{count} = $1; > } > elsif (!/^\+OK/i) { > return $self->error('LOGIN', 'WARN', $_); > } 243c248 < $_ = $self->send ("USER " . $self->{user}); /^\+/ or return $self->error ("LOGIN", "WARN", "USER POP Login failed: $_"); --- > local($_) = $self->send ("USER " . $self->{user}); /^\+/ or return $self->error ("LOGIN", "WARN", "USER POP Login failed: $_"); 249c254,259 < /^\+OK \S+ has (\d+) /i and ($self->{count} = $1); --- > if (/^\+OK \S+ has (\d+) /i) { > $self->{count} = $1; > } > elsif (!/^\+OK/i) { > return $self->error('LOGIN', 'WARN', $_); > } 261,262c271,272 < $num or return $self->error ("BADARGS", "FATAL", '$obj->head ($msg_num);. No message number passed to head.'); < $self->debug ("Getting head of message @_ ... ") if ($self->{_debug}); --- > $num or return $self->error ("BADARGS", "FATAL", '$obj->head ($msg_num);. No message number passed to head.'); #' > $self->debug ("Getting head of message @_ ... ") if ($self->{_debug}); 264c274 < $_ = $self->send ("TOP $num 0"); /^\+OK/ or return $self->error ("ACTION", "WARN", "TOP $num 0", $_); --- > local($_) = $self->send ("TOP $num 0"); /^\+OK/ or return $self->error ("ACTION", "WARN", "TOP $num 0", "($_)"); 268c278 < (index($_, '.') == 0) and last; --- > (index($_, '.') == 0) and CORE::last; #' 271c281 < if (index($header, '>' == 0)) { --- > if (index($header, '>') == 0) { 290c300 < defined($num) or return $self->error ("BADARGS", "FATAL", '$obj->retr ($msg_numm, $code);'); --- > defined($num) or return $self->error ("BADARGS", "FATAL", '$obj->retr ($msg_numm, $code);'); #' 292c302,310 < $self->debug ("Getting message $num ... ") if ($self->{_debug}); --- > $self->debug ("Getting message $num ... ") if ($self->{_debug}); #' > > # Get the size of the message > my $size; > my $l = $self->list($num) or return; > (undef, $size) = split /\s+/ => $l; > > local ($_) = $self->send ("RETR $num"); /^\+OK/ or return $self->error ("ACTION", "WARN", "RETR $num", $_); #' > my $s = $self->{sock}; 295,299c313,319 < local ($_) = $self->send ("RETR $num"); /^\+OK (\d+)/ or return $self->error ("ACTION", "WARN", "RETR $num", $_); < my $size = $1; < my $s = $self->{sock}; < read($s, my $body, $size); < my $dot = <$s>; --- > my $body = ' ' x $size; $body = ''; > while(<$s>) { > /^\.\015\012/ and CORE::last; > $body .= $_; > } > # CORE::read($s, my $body, $size); > # my $dot = <$s>; 314a335,342 > sub last { > my ($self) = @_; > > local($_) = $self->send ("LAST"); /^\+OK/ or return $self->error ("ACTION", "WARN", "LAST", $_); > s/^\+OK\s*//i; > return $_; > } > 347c375 < $_ = $self->send ("STAT"); /^\+OK/ or return $self->error ("ACTION", "WARN", "STAT", $_); --- > local($_) = $self->send ("STAT"); /^\+OK/ or return $self->error ("ACTION", "WARN", "STAT", $_); 367,368c395,399 < $_ = $self->send ("LIST $num"); /^\+OK/ or return $self->error ("ACTION", "WARN", "LIST $num", $_); < ($num) and return $_; --- > local($_) = $self->send ("LIST $num"); /^\+OK/ or return $self->error ("ACTION", "WARN", "LIST $num", $_); > if ($num) { > s/^\+OK\s*//i; > return $_; > } 372c403 < (index($_, '.') == 0) and last; --- > (index($_, '.') == 0) and CORE::last; 386c417 < $_ = $self->send ("RSET"); /^\+OK/ and return $self->error ("ACTION", "WARN", "RSET", $_); --- > local($_) = $self->send ("RSET"); /^\+OK/ and return $self->error ("ACTION", "WARN", "RSET", $_); 397c428 < $_ = $self->send ("DELE $num"); /^\+OK/ or return $self->error ("ACTION", "WARN", "DELE $num", $_); --- > local($_) = $self->send ("DELE $num"); /^\+OK/ or return $self->error ("ACTION", "WARN", "DELE $num", $_); 412a444 > local $_; 418d449 < $num ||= sub { $_[0] =~ /(\d+) (.+)/ and $ret->{$1} = $2 }; 422,423c453,459 < last if /^\./; < $num->($_); --- > CORE::last if /^\./; > if ($num and ref($num) eq 'CODE') { > $num->($_); > } > else { > /^(\d+) (.+)/ and $ret->{$1} = $2; > } 720c756 < Revision: $Id: POP3.pm,v 1.13 2001/02/13 05:55:07 sbeck Exp $ --- > Revision: $Id: POP3.pm,v 1.15 2001/02/27 13:12:43 sbeck Exp $ Index: Mail/Parse.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Mail/Parse.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -r1.24 -r1.25 6c6 < # $Id: Parse.pm,v 1.24 2001/02/13 22:06:29 sbeck Exp $ --- > # $Id: Parse.pm,v 1.25 2001/02/27 13:14:12 sbeck Exp $ 33c33 < $VERSION = substr q$Revision: 1.24 $, 10; --- > $VERSION = substr q$Revision: 1.25 $, 10; 260,267c260 < my @header_lines; < while ($$in =~ /^(.*?$CRLF)/g) { < if ($1 eq $CRLF) { < last; < } < push @header_lines, $1; < } < $part->extract(\@header_lines) or return $self->error($GT::Mail::Parts::error, 'WARN'); --- > $part->extract ([map { $_ . $CRLF } split($CRLF => $$in)]) or return $self->error($GT::Mail::Parts::error, 'WARN'); 410c403 < my ($delim, $close) = ("$CRLF--$bound$CRLF", "$CRLF--$bound--$CRLF"); --- > my ($delim, $close) = ("--$bound", "--$bound--"); 413,416c406,408 < $loc = index($$in, $delim); < if ($loc != -1) { < $_[3] = \do{substr($$in, 0, $loc)}; < substr($$in, 0, $loc + length($delim)) = ''; --- > if ($$in =~ s/(.*?)(?:\A|$CRLF)\Q$delim\E$CRLF//sm) { > my $data = $1; > $_[3] = \$data; 420,423c412,414 < $loc = index($$in, $close); < if ($loc != -1) { < $_[3] = \do{substr($$in, 0, $loc)}; < substr($$in, 0, $loc + length($close)) = ''; --- > elsif ($$in =~ s/(.*)(?:\A|$CRLF)\Q$close\E(?:\Z|$CRLF)//sm) { > my $data = $1; > $_[3] = \$data; 427d417 < 433a424 > my $F; 443c434 < my ($delim, $close) = ("$CRLF--$inner_bound$CRLF", "$CRLF--$inner_bound--$CRLF"); --- > my ($delim, $close) = ("--$inner_bound", "--$inner_bound--"); 448,451c439,441 < $loc = index($$in, $delim); < if ($loc != -1) { < push(@saved, split($CRLF => substr($$in, 0, $loc))); < substr($$in, 0, $loc + length($delim)) = ''; --- > if ($$in =~ s/(.*?)(?:\A|$CRLF)\Q$delim\E$CRLF//s) { > push(@saved, split($CRLF => $1)); > $self->debug("Found delim($delim)") if $self->{_debug}; 454,455c444 < $loc = index($$in, $close); < if ($loc != -1) { --- > elsif ($$in =~ s/(.*)(?:\A|$CRLF)\Q$close\E(?:\Z|$CRLF)//s) { 457a447 > 480,483c470,472 < $loc = index($$in, $delim); < if ($loc != -1) { < push(@saved, split($CRLF => substr($$in, 0, $loc))); < substr($$in, 0, $loc + length($delim)) = ''; --- > if ($$in =~ s/(.*?)(?:\A|$CRLF)\Q$delim\E$CRLF//s) { > push(@saved, split($CRLF => $1)); > $self->debug("Found delim($delim)") if $self->{_debug}; 486,487c475 < $loc = index($$in, $close); < if ($loc != -1) { --- > elsif ($$in =~ s/(.*)(?:\A|$CRLF)\Q$close\E(?:\Z|$CRLF)//s) { 489c477 < substr($$in, 0, $loc + length($close)) = ''; --- > $self->debug("Found close($close)") if $self->{_debug}; 545,546c533,534 < $$out =~ s/[ \t]+?\n/\n/g; # rule #3 (trailing space must be deleted) < $$out =~ s/=\n//g; # rule #5 (soft line breaks) --- > $$out =~ s/[ \t]+?\015?\012/\012/g; # rule #3 (trailing space must be deleted) > $$out =~ s/=\015?\012//g; # rule #5 (soft line breaks) 704c692 < Revision: $Id: Parse.pm,v 1.24 2001/02/13 22:06:29 sbeck Exp $ --- > Revision: $Id: Parse.pm,v 1.25 2001/02/27 13:14:12 sbeck Exp $ Index: Mail/Parts.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/Mail/Parts.pm,v retrieving revision 1.28 retrieving revision 1.30 diff -r1.28 -r1.30 5c5 < # $Id: Parts.pm,v 1.28 2001/02/13 05:56:29 sbeck Exp $ --- > # $Id: Parts.pm,v 1.30 2001/02/27 13:15:22 sbeck Exp $ 21c21 < $CRLF = "\r\n"; --- > $CRLF = "\015\012"; 295a296,297 > $type ||= 'text'; > $subtype ||= 'plain'; 311c313 < $self->multipart_boundary ("---------=_" . scalar (time) . "-$$-" . scalar (@{$self->{parts}})); --- > $self->multipart_boundary ("---------=_" . scalar (time) . "-$$-" . int(rand(time)/2)); 448c450,452 < $ret .= $tag . ': ' . $self->get ($key) . $CRLF; --- > my $val = $self->get ($key); > $val =~ s/[\r\n]//g; > $ret .= $tag . ': ' . $val . $CRLF; 451c455,457 < $ret .= $tag . ': ' . $self->mime_type . $CRLF; --- > my $val = $self->mime_type; > $val =~ s/[\r\n]//g; > $ret .= $tag . ': ' . $val . $CRLF; 562a569 > $self->{body_in} ||= ''; Index: SQL/Admin.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Admin.pm,v retrieving revision 1.61 retrieving revision 1.65 diff -r1.61 -r1.65 6c6 < # $Id: Admin.pm,v 1.61 2001/02/10 22:59:18 aki Exp $ --- > # $Id: Admin.pm,v 1.65 2001/03/01 03:07:03 jagerman Exp $ 48c48 < $VERSION = sprintf "%d.%03d", q$Revision: 1.61 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.65 $ =~ /(\d+)\.(\d+)/; 118d117 < 1184c1183 < print "(" . join (", " => @{$attribs{values}}) . ")" if ($attribs{values} and ($attribs{values} !~ /^\s*$/sm)); --- > print "(" . join (", " => @{$attribs{values}}) . ")" if ($attribs{values} and (ref $attribs{values})); 1229c1228 < $attribs{form_size} ||= 20; --- > $attribs{form_size} ||= $attribs{form_type} eq 'SELECT' ? 0 : 20; 1242a1242,1244 > > my $values = join (", " => @{$attribs{values}}) if ($attribs{values}); > $values = GT::CGI->html_escape($values); 1248,1250c1250,1254 < Column Type$attribs{type}\n~; < print " Column Value" . join (", " => @{$attribs{values}}) . "\n" if ($attribs{values}); < unless ($self->{db}->pk ($column)) { --- > Column Type$attribs{type} > Column Value > ~; > my @pk = $self->{db}->pk; > if (! grep { $column eq $_ } @pk) { 1257c1261,1271 < ~; --- > > ~; > } > else { > print qq~ > > Not Null > > Yes (Can't change primary key) > > ~; 1273,1274c1287,1288 < Form Names
(Stored in Database) < Form Values
(Displayed on Form) --- > Form Names
(Stored in Database)
Only for checkbox, multi-select or radio forms. > Form Values
(Displayed on Form)
Only for checkbox, multi-select or radio forms. 1595c1609 < $attribs{form_size} = $self->{cgi}->{form_size} || 20; --- > $attribs{form_size} = $self->{cgi}->{form_size} || ($attribs{form_type} eq 'SELECT') ? 0 : 20; 1636,1637c1650,1651 < Form Names
(Stored in Database) < Form Values
(Displayed on Form) --- > Form Names
(Stored in Database)
Only for checkbox, multi-select or radio forms. > Form Values
(Displayed on Form)
Only for checkbox, multi-select or radio forms. 1875d1888 < 1880,1885d1892 < if (not $attribs{form_names}) { < $errors .= "
  • You must specify the names for the enum in the 'Form Names' text area. One per line.
  • \n"; < } < if (not $attribs{form_values}) { < $errors .= "
  • You must specify the values for the enum field in the 'Form Values' text area. One per line.
  • \n"; < } 1887,1888c1894,1895 < elsif (@{$attribs{values}}) { < $errors .= "
  • You should not enter anything in the 'Column Value' unless you are creating an enum field: '@{$attribs{values}}'
  • \n"; --- > else { > delete $attribs{values}; 1895c1902,1905 < $errors and return $self->editor_add_field_form ("
      $errors
    "); --- > else { > delete $attribs{form_names}; > delete $attribs{form_values}; > } 1896a1907 > $errors and return $self->editor_add_field_form ("
      $errors
    "); 1946a1958 > $attribs{values} = [split /\s*,\s*/, $self->{cgi}->{values}]; 1954,1958c1966,1967 < if (not @{$attribs{form_names}}) { < $errors .= "
  • You must specify the names for the enum in the 'Form Names' text area. One per line.
  • \n"; < } < if (not @{$attribs{form_values}}) { < $errors .= "
  • You must specify the values for the enum field in the 'Form Values' text area. One per line.
  • \n"; --- > if (not @{$attribs{values}}) { > $errors .= "
  • You must specify the values for the enum field in the Values text area.
  • \n"; 1962,1965c1971,1975 < if ($attribs{form_type} =~ /^CHECKBOX|SELECT|RADIO$/) { < if (! (@{$attribs{form_names}} or @{$attribs{form_values}}) ) { < $errors .= "
  • For checkbox and select fields, you must specify in form names and form values what you want displayed, one entry per line."; < } --- > delete $attribs{values}; > } > if ($attribs{form_type} =~ /^CHECKBOX|MULTIPLE|RADIO$/) { > if (! (@{$attribs{form_names}} or @{$attribs{form_values}}) ) { > $errors .= "
  • For checkbox and select fields, you must specify in form names and form values what you want displayed, one entry per line."; 1967a1978,1981 > else { > delete $attribs{form_names}; > delete $attribs{form_values}; > } 2015c2029 < # Relation does not plat fare :( --- > # Relation does not play fare :( 2159c2173 < $hash->{$col} = $c->{$col}->{view_name} || $col; --- > $hash->{$col} = $c->{$col}->{form_display} || $col; 2545c2559 < Revision: $Id: Admin.pm,v 1.61 2001/02/10 22:59:18 aki Exp $ --- > Revision: $Id: Admin.pm,v 1.65 2001/03/01 03:07:03 jagerman Exp $ Index: SQL/Base.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Base.pm,v retrieving revision 1.7 retrieving revision 1.10 diff -r1.7 -r1.10 6c6 < # $Id: Base.pm,v 1.7 2001/02/17 08:01:21 alex Exp $ --- > # $Id: Base.pm,v 1.10 2001/03/01 03:07:27 jagerman Exp $ 28c28 < $VERSION = sprintf "%d.%03d", q$Revision: 1.7 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.10 $ =~ /(\d+)\.(\d+)/; 168c168 < ## --- > # 172c172,177 < my $cond = shift; --- > my $cond; > if (ref $_[0] eq 'GT::SQL::Condition' or ref $_[0] eq 'HASH') { $cond = shift } > elsif (not @_ % 2 and not ref $_[0] and defined ($_[0])) { $cond = {@_} } > elsif (@_) { > return $self->error('BADARGS', 'FATAL', 'Arguments to count() must either be a hash or a hash ref or GT::SQL::Condition object'); > } 272c277 < # query => value # Find all rows using GT_GT::SQL::Search module --- > # query => value # Find all rows using GT::SQL::Search module 363,368c368,369 < if ($ins) { < return $cond; < } < else { < return ''; < } --- > > return $self->_fix_cond($ins ? $cond : ''); 369a371,376 > > # Calling _fix_cond prior to returning allows a subclass to declare its own > # _fix_cond subroutine to modify (or add to) the condition as required. By > # default _fix_cond simply returns the condition untouched. Note that this is > # called with '' for the condition if the condition is empty. > sub _fix_cond { return $_[1] } Index: SQL/Condition.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Condition.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -r1.16 -r1.17 6c6 < # $Id: Condition.pm,v 1.16 2001/02/07 01:35:15 alex Exp $ --- > # $Id: Condition.pm,v 1.17 2001/02/21 04:22:09 alex Exp $ 23c23 < $VERSION = sprintf "%d.%03d", q$Revision: 1.16 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.17 $ =~ /(\d+)\.(\d+)/; 37a38 > $self->{not} = 0; 45c46 < elsif (ref $var eq $class) { --- > elsif (!@tmp and ref $var eq $class) { 64a66,75 > ## > # $obj->not; > # ---------------- > # Negates the current condition. > ## > sub not > { > $_[0]->{not} = 1; > return $_[0]; > } 118c129 < if (not ref $col) { --- > if (! ref $col) { 148,153c159 < if ($sql) { < $cond = "( $sql )"; < } < else { < $cond = ''; < } --- > $cond = $sql ? "( $sql )" : ''; 156,157c162,164 < < return join " $bool ", @cond; --- > my $final = join " $bool ", @cond; > $self->{not} and $final and ($final = "NOT ($final)"); > return $final; 273a281,292 > To negate your queries you can use the C function. > > my $cond = GT::SQL::Condition->new ('a', '=', '5'); > $cond->not; > > would translate into NOT (a = '5'). You can also do this all on one line > like: > > print GT::SQL::Condition->new ('a', '=', '5')->not->sql; > > would return the sql right away. > 281c300 < Revision: $Id: Condition.pm,v 1.16 2001/02/07 01:35:15 alex Exp $ --- > Revision: $Id: Condition.pm,v 1.17 2001/02/21 04:22:09 alex Exp $ Index: SQL/Driver.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Driver.pm,v retrieving revision 1.47 retrieving revision 1.51 diff -r1.47 -r1.51 6c6 < # $Id: Driver.pm,v 1.47 2001/02/14 18:49:31 alex Exp $ --- > # $Id: Driver.pm,v 1.51 2001/03/02 02:29:42 alex Exp $ 30c30 < $VERSION = sprintf "%d.%03d", q$Revision: 1.47 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.51 $ =~ /(\d+)\.(\d+)/; 223c223 < my %field_def = map { $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () } keys %{$self->{schema}->{cols}->{$field}}; --- > my %field_def = map { defined $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () } keys %{$self->{schema}->{cols}->{$field}}; 550a551,552 > my $ls = defined $ENV{REQUEST_METHOD} ? '
    ' : "\n"; > my $spc = defined $ENV{REQUEST_METHOD} ? ' ' : ' '; 552,557c554,568 < local ($@); < eval { $args = (@DB::args) ? ("with arguments
       (" . join (", " => map { defined $_ ? $_ : '' } @DB::args) . ")") : "with no arguments"; }; < if ($@) { $args = "strange arguments: $@"; } < $args =~ s/\n\s*\n/\n/g; < $args =~ s/\n/\n\t/g; < $stack .= qq!$sub called at $file line $line $args.
    \n!; --- > my @args; > for (@DB::args) { > eval { my $a = $_ }; # workaround for a reference that doesn't think it's a reference > my $print = $@ ? \$_ : $_; > push @args, defined $print ? $print : '[undef]'; > } > if (@args) { > my $args = join ", ", @args; > $args =~ s/\n\s*\n/\n/g; > $args =~ s/\n/\n$spc$spc$spc$spc/g; > $stack .= qq!$sub called at $file line $line with arguments $ls$spc$spc ($args).$ls!; > } > else { > $stack .= qq!$sub called at $file line $line with no arguments.$ls!; > } 582a594 > 585a598 > my @args; 587,588c600,603 < my $arg = $_; < $arg ||= 'undef'; --- > eval { my $a = $_ }; # workaround for a reference that doesn't think it's a reference > my $print = $@ ? \$_ : $_; > my $arg = defined $print ? $print : '[undef]'; > Index: SQL/Editor.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Editor.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -r1.19 -r1.20 6c6 < # $Id: Editor.pm,v 1.19 2001/02/12 17:19:44 aki Exp $ --- > # $Id: Editor.pm,v 1.20 2001/02/18 19:15:10 alex Exp $ 22c22 < $VERSION = sprintf "%d.%03d", q$Revision: 1.19 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.20 $ =~ /(\d+)\.(\d+)/; 39c39 < $self->{schema} = $opts->{table}; --- > $self->{table} = $opts->{table}; 44c44 < $self->{schema}->connect; --- > $self->{table}->connect; 70c70 < my $c = $self->{schema}->cols; --- > my $c = $self->{table}->cols; 73,74c73,74 < my $defs = $self->{schema}->{driver}->_column_sql ($col); < my $table = $self->{schema}->name; --- > my $defs = $self->{table}->{driver}->_column_sql ($col); > my $table = $self->{table}->name; 76,79c76,77 < # Auto add a new position number if not specified. < if (! exists $col->{pos}) { < $col->{pos} = keys (%$c) + 1; < } --- > # Auto add a new position number. > $col->{pos} = keys (%$c) + 1; 83,86c81,84 < unless ($self->{schema}->check_schema) { < my $name = $self->{schema}->name; < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$name.def"); < return undef; --- > unless ($self->{table}->check_schema) { > my $name = $self->{table}->name; > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$name.def"); > return; 92c90 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 113c111 < my $table = $self->{schema}->name; --- > my $table = $self->{table}->name; 126c124 < delete $self->{schema}->cols->{$name}; --- > delete $self->{table}->cols->{$name}; 129c127 < @{$self->{schema}->pk} = grep !/^\Q$name\E$/, @{$self->{schema}->pk}; --- > @{$self->{table}->pk} = grep !/^\Q$name\E$/, @{$self->{table}->pk}; 132,134c130,132 < for (keys %{$self->{schema}->fk}) { < for my $col (keys %{$self->{schema}->fk->{$_}}) { < if ($col eq $name) { delete $self->{schema}->fk->{$_}->{$col} } --- > for (keys %{$self->{table}->fk}) { > for my $col (keys %{$self->{table}->fk->{$_}}) { > if ($col eq $name) { delete $self->{table}->fk->{$_}->{$col} } 140,142c138,140 < for (keys %{$self->{schema}->$index()}) { < @{$self->{schema}->$index()->{$_}} = grep !/^\Q$name\E$/, @{$self->{schema}->$index()->{$_}}; < if (not @{$self->{schema}->$index()->{$_}}) { delete $self->{schema}->$index()->{$_} } --- > for (keys %{$self->{table}->$index()}) { > @{$self->{table}->$index()->{$_}} = grep !/^\Q$name\E$/, @{$self->{table}->$index()->{$_}}; > if (not @{$self->{table}->$index()->{$_}}) { delete $self->{table}->$index()->{$_} } 147,148c145,146 < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 155c153 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 169c167 < exists $self->{schema}->cols->{$col} or return $self->error ("NOCOL", "WARN", $col); --- > exists $self->{table}->{schema}->{cols}->{$col} or return $self->error ("NOCOL", "WARN", $col); 172c170,173 < $defs->{pos} = $self->{schema}->{cols}->{$col}->{pos}; --- > my $orig = $self->{table}->{schema}->{cols}->{$col}; > > # Set the position, can't be changed. > $defs->{pos} = $orig->{pos}; 175,178c176,179 < my $table = $self->{schema}->name; < if ($defs->{type} ne $self->{schema}->cols->{$col}->{type} or < $defs->{size} ne $self->{schema}->cols->{$col}->{size} < ) --- > my $table = $self->{table}->name; > if (exists $defs->{type} and ($defs->{type} ne $orig->{type}) or > exists $defs->{size} and ($defs->{size} ne $orig->{size}) or > exists $defs->{not_null} and ($defs->{not_null} ne $orig->{not_null})) 180a182,190 > } > if (ref $defs->{values} and ref $orig->{values}) { > my $orig_list = join ("", @{$defs->{values}}); > my $new_list = join ("", @{$orig->{values}}); > if ($new_list ne $orig_list) { > $change = 1; > } > } > if ($change) { 184c194 < if (exists $self->{schema}->fk->{$col}) { --- > if (exists $self->{table}->fk->{$col}) { 190,193c200,203 < $self->{schema}->cols->{$col} = $defs; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); < return undef; --- > $self->{table}->{schema}->{cols}->{$col} = $defs; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); > return; 197c207 < my $def = $self->{schema}->{driver}->_column_sql ($defs); --- > my $def = $self->{table}->{driver}->_column_sql ($defs); 201c211 < $self->{schema}->{driver}->do ($query) or return; --- > $self->{table}->do ($query) or return; 204c214,215 < $self->save_state or return undef; --- > $self->save_state or return; > 221,222c232,233 < map { exists $self->{schema}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @{$indexes}; < exists $self->{schema}->unique->{$index_name} and return $self->error ("INDXEXISTS", "WARN", $index_name); --- > map { exists $self->{table}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @{$indexes}; > exists $self->{table}->unique->{$index_name} and return $self->error ("INDXEXISTS", "WARN", $index_name); 224c235 < $table = $self->{schema}->name; --- > $table = $self->{table}->name; 230c241 < my $sth = $self->{schema}->{driver}->do ($query) or return undef; --- > my $sth = $self->{table}->{driver}->do ($query) or return undef; 234,236c245,247 < $self->{schema}->unique->{$index_name} = $indexes; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def") or return undef; --- > $self->{table}->unique->{$index_name} = $indexes; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def") or return undef; 243c254 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 259c270 < exists $self->{schema}->unique->{$index_name} or return $self->error ("NOUNIQUE", "WARN", $index_name); --- > exists $self->{table}->unique->{$index_name} or return $self->error ("NOUNIQUE", "WARN", $index_name); 261c272 < $table = $self->{schema}->name; --- > $table = $self->{table}->name; 264,266c275,277 < delete $self->{schema}->unique->{$index_name}; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > delete $self->{table}->unique->{$index_name}; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 273c284 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 291,293c302,304 < map { exists $self->{schema}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @{$indexes}; < exists $self->{schema}->index->{$index_name} and return $self->error ("INDXEXISTS", "WARN", $index_name); < my $table = $self->{schema}->name; --- > map { exists $self->{table}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @{$indexes}; > exists $self->{table}->index->{$index_name} and return $self->error ("INDXEXISTS", "WARN", $index_name); > my $table = $self->{table}->name; 296,298c307,309 < $self->{schema}->index->{$index_name} = $indexes; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > $self->{table}->index->{$index_name} = $indexes; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 307c318 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 322c333 < exists $self->{schema}->index->{$index_name} or return $self->error ("NOINDEX", "WARN", $index_name); --- > exists $self->{table}->index->{$index_name} or return $self->error ("NOINDEX", "WARN", $index_name); 325,327c336,338 < delete $self->{schema}->index->{$index_name}; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > delete $self->{table}->index->{$index_name}; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 332c343 < my $table = $self->{schema}->name; --- > my $table = $self->{table}->name; 335c346 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 354c365 < map { exists $self->{schema}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @fields; --- > map { exists $self->{table}->cols->{$_} or return $self->error ("NOCOL", "WARN", $_) } @fields; 356,357c367,368 < my ($table, %add) = ($self->{schema}->name); < if ($self->{schema}->pk) { --- > my ($table, %add) = ($self->{table}->name); > if ($self->{table}->pk) { 360,361c371,372 < $self->{schema}->{driver}->do ($query) or return undef; < %add = map { $_ => 1 } @{delete $self->{schema}->{pk}}; --- > $self->{table}->{driver}->do ($query) or return undef; > %add = map { $_ => 1 } @{delete $self->{table}->{schema}->{pk}}; 366,368c377,379 < $self->{schema}->{pk} = [keys %add]; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > $self->{table}->{schema}->{pk} = [keys %add]; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 376c387 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 389c400 < $self->{schema}->pk || return $self->error ("NOPK", "WARN"); --- > $self->{table}->pk || return $self->error ("NOPK", "WARN"); 392,394c403,405 < $self->{schema}->{pk} = []; < unless ($self->{schema}->check_schema) { < $self->{schema}->load_state ("$GT::SQL::DEF_PATH/$self->{schema}->{name}.def"); --- > $self->{table}->{schema}->{pk} = []; > unless ($self->{table}->check_schema) { > $self->{table}->load_state ("$GT::SQL::DEF_PATH/$self->{table}->{name}.def"); 399c410 < my $table = $self->{schema}->name; --- > my $table = $self->{table}->name; 402c413 < $self->{schema}->{driver}->do ($query) or return undef; --- > $self->{table}->{driver}->do ($query) or return undef; 417c428 < $self->{schema}->fk (@_) or return undef; --- > $self->{table}->fk (@_) or return undef; 424c435 < delete $self->{schema}->{fk}->{$table} or return $self->error ("FKNOEXISTS", "WARN", $table); --- > delete $self->{table}->{schema}->{fk}->{$table} or return $self->error ("FKNOEXISTS", "WARN", $table); 529c540 < my $table = $self->{schema}->name; --- > my $table = $self->{table}->name; 531c542 < my $tmp = $self->{schema}->fk_tables() || []; --- > my $tmp = $self->{table}->fk_tables() || []; 535c546 < $self->{schema}->{driver}->do (qq!DROP TABLE $table!) or return; --- > $self->{table}->{driver}->do (qq!DROP TABLE $table!) or return; 549c560 < if ( keys %{$self->{schema}->weight()} ) { --- > if ( keys %{$self->{table}->weight()} ) { 555c566 < 'schema' => $self->{schema}, --- > 'schema' => $self->{table}, 570c581 < my $fk = $self->{schema}->fk() or return; --- > my $fk = $self->{table}->fk() or return; 601c612 < schema => $self->{schema}, --- > schema => $self->{table}, 614c625 < foreach my $table (@{$self->{schema}->fk_tables}) { --- > foreach my $table (@{$self->{table}->fk_tables}) { 629c640 < foreach my $table (@{$self->{schema}->fk_tables}) { --- > foreach my $table (@{$self->{table}->fk_tables}) { 649c660 < foreach my $table (keys %{$self->{schema}->fk}) { --- > foreach my $table (keys %{$self->{table}->fk}) { 651,652c662,663 < if ($fc = $self->{schema}->fk->{$table}->{$mycol}) { < delete $self->{schema}->fk->{$table}->{$mycol}; --- > if ($fc = $self->{table}->fk->{$table}->{$mycol}) { > delete $self->{table}->fk->{$table}->{$mycol}; 654c665 < next if keys %{$self->{schema}->fk->{$table}}; --- > next if keys %{$self->{table}->fk->{$table}}; 882c893 < Revision: $Id: Editor.pm,v 1.19 2001/02/12 17:19:44 aki Exp $ --- > Revision: $Id: Editor.pm,v 1.20 2001/02/18 19:15:10 alex Exp $ Index: SQL/Table.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Table.pm,v retrieving revision 1.101 retrieving revision 1.110 diff -r1.101 -r1.110 6c6 < # $Id: Table.pm,v 1.101 2001/02/09 06:51:07 sbeck Exp $ --- > # $Id: Table.pm,v 1.110 2001/03/01 18:20:45 jagerman Exp $ 28c28 < $VERSION = sprintf "%d.%03d", q$Revision: 1.101 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.110 $ =~ /(\d+)\.(\d+)/; 61a62 > $self->{_index} = 1; 234c235 < $self->_index_record($self->{last_insert}, $sth); --- > $self->_index_record($self->{last_insert}, $sth) unless ($opts->{GT_SQL_SKIP_INDEX}); 284c285 < # $obj->update ($hash_ref, $condition); --- > # $obj->update ($hash_ref, $condition, $opts); 289c290 < # $obj->update ($hash_ref_1, $hash_ref_2); --- > # $obj->update ($hash_ref_1, $hash_ref_2, $opts); 303a305,306 > $opts ||= {}; > $where ||= {}; # Update all. 347c350 < $self->_update_index ($sth); --- > $self->_update_index ($sth) unless ($opts->{GT_SQL_SKIP_INDEX}); 897c900 < # Sets the AUTO INCRIMENT column. --- > # Sets the AUTO INCREMENT column. 1253c1256 < $self->debug ("AUTO_INCRIMENT column $col specified but is not the primary key.") if ($self->{_debug}); --- > $self->debug ("AUTO_INCREMENT column $col specified but is not the primary key.") if ($self->{_debug}); 1541c1544 < $self->error ('UNIQUE', 'WARN', join (",", keys %$check), join (",", values %$check)); --- > $self->error ('UNIQUE', 'WARN', join (",", map $self->{schema}->{cols}->{$_}->{form_display} || $_, keys %$check), join (",", values %$check)); 1715c1718 < $cols .= (exists ($self->{schema}->{cols}->{$_}->{form_name}) ? $self->{schema}->{cols}->{$_}->{form_name} : $_) . ','; --- > $cols .= ($self->{schema}->{cols}->{$_}->{form_display} || $_) . ','; 1734c1737 < $self->error ('ILLEGALVAL', 'WARN', $column->{form_name} || $name, $value); --- > $self->error ('ILLEGALVAL', 'WARN', $column->{form_display} || $name, $value); 1749c1752 < $self->error ("ILLEGALVAL", "WARN", $column->{form_name} || $name, $value); --- > $self->error ("ILLEGALVAL", "WARN", $column->{form_display} || $name, $value); 2315a2319,2321 > Passing in GT_SQL_SKIP_INDEX => 1 will not index the fields. You can > also use the C method to do this. > 2397a2404,2406 > Passing in GT_SQL_SKIP_INDEX => 1 will not index the fields. You can > also use the C method to do this. > 2543c2552 < Revision: $Id: Table.pm,v 1.101 2001/02/09 06:51:07 sbeck Exp $ --- > Revision: $Id: Table.pm,v 1.110 2001/03/01 18:20:45 jagerman Exp $ 2545a2555 > Index: SQL/Display/HTML.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Display/HTML.pm,v retrieving revision 1.47 retrieving revision 1.53 diff -r1.47 -r1.53 6c6 < # $Id: HTML.pm,v 1.47 2001/02/17 20:25:40 alex Exp $ --- > # $Id: HTML.pm,v 1.53 2001/03/02 05:29:13 alex Exp $ 24c24 < $VERSION = sprintf "%d.%03d", q$Revision: 1.47 $ =~ /(\d+)\.(\d+)/; --- > $VERSION = sprintf "%d.%03d", q$Revision: 1.53 $ =~ /(\d+)\.(\d+)/; 27c27 < $INPUT_SEPARATOR = "\0"; --- > $INPUT_SEPARATOR = chr(35); 265c265 < elsif ($sort_f and ref $sort_f) { @keys = sort { $sort_f->($a, $b) } keys %hash; } --- > elsif ($sort_f and ref $sort_f) { @keys = sort { my $ret = $sort_f->($hash{$a}, $hash{$b}, $a, $b); $ret; } keys %hash; } 451c451 < my $def = exists $opts->{def} ? $self->{def} : return $self->error ("BADARGS", "FATAL", "No type hash passed to view creator display_text (" . (caller())[2] . ")" ); --- > my $def = exists $opts->{def} ? $opts->{def} : return $self->error ("BADARGS", "FATAL", "No type hash passed to view creator display_text (" . (caller())[2] . ")" ); 454d453 < $val =~ s/\Q$INPUT_SEPARATOR\E|\n/
    \n/g; 455a455,468 > > # If they are using checkbox/radio/selects then we map form_names => form_values. > if (ref $def->{form_names} and ref $def->{form_values}) { > if (@{$def->{form_names}} and @{$def->{form_values}}) { > my %map = map { $def->{form_names}->[$_] => $def->{form_values}->[$_] } (0 .. $#{$def->{form_names}}); > my @keys = split /\Q$INPUT_SEPARATOR\E|\n/, $val; > $val = ''; > > foreach (@keys) { > $val .= $map{$_} ? $map{$_} : $_; > $val .= "
    "; > } > } > } 587a601,618 > $opts->{def} ||= $self->{db}->{schema}->{cols}->{$opts->{name}}; > > # Deep copy $opts->{def} => $def > my $def = {}; > while (my ($k, $v) = each %{$opts->{def}}) { > if (! ref $v) { > $def->{$k} = $v; > } > elsif (ref $v eq 'HASH') { > $def->{$k} = {}; > foreach my $k1 (keys %{$opts->{def}->{$k}}) { $def->{$k}->{$k1} = $opts->{def}->{$k}->{$k1}; } > } > elsif (ref $v eq 'ARRAY') { > $def->{$k} = []; > foreach my $v1 (@{$opts->{def}->{$k}}) { push @{$def->{$k}}, $v1; } > } > else { $def->{$k} = $v; } > } 589,591c620,622 < (exists $opts->{def}->{form_names}) and < (ref ($opts->{def}->{form_names}) eq 'ARRAY') and < (@{$opts->{def}->{form_names}}) --- > (exists $def->{form_names}) and > (ref ($def->{form_names}) eq 'ARRAY') and > (@{$def->{form_names}}) 594c625 < $names = $opts->{def}->{form_names}; --- > $names = $def->{form_names}; 597,599c628,630 < (exists $opts->{def}->{values}) and < (ref ($opts->{def}->{values}) eq 'ARRAY') and < (@{$opts->{def}->{values}}) --- > (exists $def->{values}) and > (ref ($def->{values}) eq 'ARRAY') and > (@{$def->{values}}) 602c633 < $names = $opts->{def}->{values}; --- > $names = $def->{values}; 607,609c638,640 < (exists $opts->{def}->{form_values}) and < (ref ($opts->{def}->{form_values}) eq 'ARRAY') and < (@{$opts->{def}->{form_values}}) --- > (exists $def->{form_values}) and > (ref ($def->{form_values}) eq 'ARRAY') and > (@{$def->{form_values}}) 612c643 < $values = $opts->{def}->{form_values}; --- > $values = $def->{form_values}; 615,617c646,648 < (exists $opts->{def}->{values}) and < (ref ($opts->{def}->{values}) eq 'ARRAY') and < (@{$opts->{def}->{values}}) --- > (exists $def->{values}) and > (ref ($def->{values}) eq 'ARRAY') and > (@{$def->{values}}) 620c651 < $values = $opts->{def}->{values}; --- > $values = $def->{values}; Index: SQL/Driver/ODBC.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Driver/ODBC.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -r1.17 -r1.18 6c6 < # $Id: ODBC.pm,v 1.17 2001/01/31 05:33:47 alex Exp $ --- > # $Id: ODBC.pm,v 1.18 2001/03/02 02:29:42 alex Exp $ 128c128 < $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () --- > defined $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () 464c464 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 489c489 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 517c517 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); Index: SQL/Driver/ORACLE.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Driver/ORACLE.pm,v retrieving revision 1.28 retrieving revision 1.29 diff -r1.28 -r1.29 6c6 < # $Id: ORACLE.pm,v 1.28 2001/01/31 05:33:47 alex Exp $ --- > # $Id: ORACLE.pm,v 1.29 2001/03/02 02:29:42 alex Exp $ 125c125 < $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () --- > defined $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () 418c418 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 443c443 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 471c471 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); Index: SQL/Driver/PG.pm =================================================================== RCS file: /usr/local/gossamer/library/GT/SQL/Driver/PG.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -r1.3 -r1.4 6c6 < # $Id: PG.pm,v 1.3 2001/01/30 05:25:52 alex Exp $ --- > # $Id: PG.pm,v 1.4 2001/03/02 02:29:42 alex Exp $ 102c102 < $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () --- > defined $self->{schema}->{cols}->{$field}->{$_} ? ($_ => $self->{schema}->{cols}->{$field}->{$_}) : () 305c305 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 330c330 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); 358c358 < $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default}); --- > defined $args->{default} and $out .= ' DEFAULT ' . GT::SQL::Driver->quote ($args->{default});