Наши скрипты > Sanitarium WebLoG
11/05/2002 + 13/05/2002 Small BuGFix New!
(1/1)
Green Kakadu:
Когда я 10-го выложил обновления уж очень :beer: в веселом настроении был. И закрался в то обновление глючок с форматированием комментариев (типа вместо появляется <p> :)
Вот, исправил.
Чтоб не качать по новой весь дистрибутив, можете лишь скачать те два файла что нужно заменить (comments.cgi и com_admin.cgi), они тут:
http://webscript.ru/sanitarium/comment.zip
13/02/2002 BuGFix!
Для тех у кого не работал просмотр файлового архива и удаление файлов - это исправлено. Скачайте новый дистрибутив и замените только admin.cgi
(изменения внесены в подпрограммы: sub delete_files,sub print_file_list)
P.S. скоро меня NAS побьет за ту помойку ;) из файлов что я устроил у него. Кстати, напомню, джентельменский наборчик утилит для просмотра БД Sanitarium\'a там тоже лежит:
http://webscript.ru/sanitarium/san_utils.zip
:super: :beer: :p
Green Kakadu:
Повторюсь еще разок (если кто-то проглядел):
Для тех у кого не работал просмотр файлового архива и удаление файлов - это исправлено. Скачайте новый дистрибутив и замените только admin.cgi
(изменения внесены в подпрограммы: sub delete_files,sub print_file_list)
Ptiza:
Так, еще один баг обнаружился надысь.
Я использовал в шаблоне "ссылку по теме" не тривиальную комбинацию "ссылка на статью + название статьи", а захотел, чтобы выводилось еще и название категории
Сделал следующее:
[]
Но при "первом проходе", когда статья генерируется, внешний вид этой ссылки получается следующий: Название статьи []. По есть, в скобочках названием категории и не пахнет. Поэтому каждый раз после того, как я ставлю ссылку по теме, мне приходится запускать скрипт relink.cgi, после чего снова регенерировать директорию (или статью). Думаю, что пожелание мое понятно? :)
troll:
Я разобрался с багом периодической поломки баз при сохраниении редактируемых материалов. Лечить получилось только одним путем - перезаписью баз :-(. работает немного медленнее на сервере, зато надежно!
Вот исправление:
в фале Sanitarium_WL.pm замените процедуру
sub modify_data {...}
на этот код:
#!/usr/bin/perl -w
use File::Copy; # обязательно добавить, иначе работать не будет
.......
.......
sub modify_data {
###
my ($id, $pack_rec, $new, %data);
my $self=shift;
$id=shift;
$id=~s/\\d+//go; $id=$&;
if ($id) {
# pack & check modify record
if (@_) {$pack_rec=$self->pack_rec(@_);}
else {croak "write_data: You must get data! \\@_ empty!";}
$pack_rec=~s/\\n//go;
$pack_rec=~s/\\r//go;
# read old database
#open dbm
$self->_open_db(1, 3);
# copy data of database
%data=%dbm;
#close dbm
&_close_db;
# modify data
$data{$id}=$pack_rec;
# create database-duble
$self->{DB_File}.="new";
if (-e "$self->{DB_File}.dat") {
unless (unlink "$self->{DB_File}.dat") {croak "Не удалось удалить резервную базу! $self->{DB_File}!";}
}
$self-> _open_db(1, 1);
%dbm=%data;
&_close_db;
$new=$self->{DB_File};
$self->{DB_File}=~s/new//go;
# replace new to old database
if (-e "$new.dat") {
unlink "$self->{DB_File}.dat";
unlink "$self->{DB_File}.lock";
if (-e "$self->{DB_File}.dat") {croak "Не удалось удалить основную базу! $self->{DB_File}!";}
copy ("$new.dat", "$self->{DB_File}.dat");
unlink "$new.dat";
unlink "$new.lock";
if (-e "$new.dat") {croak "Не удалось удалить резервную базу! $self->{DB_File}!";}
}
}
else { croak "modify_data: Отсутствующий или неправильный id записи! \\$id = $id"; }
### end sub
}
И все будер РУЛЕЗ!! :-)
troll:
после долгих разборок стала ясна причина "поломки баз". На самом деле скрипт Санитара их сам и ломает... :-) просто как грабли - вся причина в подпрограммке modify_fileds. Заплатку быстро сделать не получилось, пришлось переписать около 5 процедур, чтобы обойти все вызовы этой процедурки... :-(
Вывод - пользуйтесь TrollBase, который на http://www.spam.net.ua - он на данный момент стабильнее.
Навигация
Перейти к полной версии