$Id: ChangeLog,v 1.241 2004/02/18 14:17:07 lukasz Exp $

wersja 1.3.0 Apophis (18/02/2004):

  - zmiana wersji biblioteki Smarty z 2.5.0 na 2.6.0 (alec)
  - dodane contrib/warn&msg (Rafa Ramocki/Tomasz Chiliski)
  - jeszcze jedna poprawka w bazie w zwizku z BTS#103 (alec)
    MySQL:
	ALTER TABLE `users` CHANGE `gguin` `gguin` INT(11) DEFAULT '0';
    PostgreSQL:
	UPDATE users SET gguin=0 WHERE gguin IS NULL;
	ALTER TABLE users UPDATE gguin SET DEFAULT 0;
	ALTER TABLE users UPDATE gguin SET NOT NULL;
  - w genfake.php dodane generowanie przyk. opat staych (alec)
  - naliczanie kwartalne taryf i opat staych, przy okazji mae 
    usystematyzowanie w kolumnie period (naliczanie: 0-tygodniowe, 
    1-miesiczne, 2-kwartalne, 3-roczne) (alec)
	UPDATE assignments SET period = 4 WHERE period = 1;
	UPDATE assignments SET period = 1 WHERE period = 0;
	UPDATE assignments SET period = 0 WHERE period = 4;
	UPDATE assignments SET period = 3 WHERE period = 2;
	UPDATE payments SET period = 4 WHERE period = 1;
	UPDATE payments SET period = 1 WHERE period = 0;
	UPDATE payments SET period = 0 WHERE period = 4;
	UPDATE payments SET period = 3 WHERE period = 2;
  - lista sieci domylnie sortowana jest po nazwie (alec)
  - lista urzdze do podczenia jest sortowana po nazwie (alec)
  - naprawiona nawigacja na licie faktur - BTS#0000104 (alec)
  - zmiany w reloadzie demona: z tabeli 'timestamps' odczytywany jest
    czas i porwnywany z czasem z poprzedniego przeadowania, wpis 
    '_force' nie jest usuwany, wic nie ma problemw z uruchamianiem
    kilku demonw rwnoczenie (lexx/alec)
  - aktualizacja ethercodes.txt (alec)
  - BTS#0000109: poprawione bdne dziaanie funkcji loadavg() i hostname()
    na systemach BSD w Sysinfo.class.php (sfor/alec)
  - teraz w MGC moemy zdefiniowa sekcje ktra bdzie wywoywa inne
    podsekcje - dla przykadu - mamy 5 sekcji dotyczcych dns (dns1... dns5) -
    tworzymy dla nich co takiego:

    [mgc:dns]
    instances = dns1 dns2 dns3 dns4 dns5

    i teraz jeeli moemy wywoa:

    lms-mgc -i dns

    zamiast:

    lms-mgc -i "dns1 dns2 dns3 dns4 dns5"

    Jeeli sekcja jaka ma pole 'instances', to tylko to pole zostanie uznane,
    a pozostae ustawienia sekcji zostan zignorowane (lukasz)
  - dodana moliwo ustawienia daty operacji finansowej (alec)
  - poprawione formatowanie maili, wyrzucone zbdne puste linie (lexx)
          
wersja 1.1.8 Cronos (01/02/2004):

  - netdevmap korzysta z obrazkw w formacie PNG (brak obsugi GIF na 
    niektrych systemach) (Lexx)
  - poprawione zliczanie rekordw na pustych listach, BTS#90 (alec)
  - dodane sortowanie listy userw wg wysokoci abonamentu (alec)
  - poprawione sortowanie listy komputerw wg waciciela (alec)
  - dodane sortowanie listy urzdze sieciowych wg iloci zajtych portw (alec)
  - dodane 'wywietl ponownie formularz' w nodeadd (alec)
  - poprawione bdne ustawianie statusu podczas dodawania komputera (alec)
  - porzdki w dokumentacji - wyrzucone obrazki oraz usunite commit logi,
    wic niech nie dziwi mniejsza objto tarballa w porwnaniu z
    1.1.7 (alec)
  - dodane sprawdzenie czy wpisano liczb w polu szybkiego wyszukiwania
    komputera i uytkownika, co zapobiega bdowi w zapytaniu do bazy (alec)
  - lms-notify-sms niedugo bdzie mona wysya smsy z upomnieniami o
    zalegociach. Wymagany pakiet gnokii (hunter)
  - dodane uprawnienie 'dostp do korespondencji seryjnej' (alec)
  - urzdzeniom sieciowym mona przypisywa adresy IP oraz MAC (lexx/alec)
  - w genfake.php poprawione czyszczenie bazy oraz dodane generowanie
    danych osprztu i pocze sieciowych (alec)
  - poprawka w GetMACs() zgodnie z BTS#0000092 (alec)    
  - moliwo podania terminu i rodzaju patnoci przy pisaniu faktury z palca
    (lukasz):
    MySQL:
    	ALTER TABLE `invoices` ADD `paytype` VARCHAR(255) DEFAULT '' NOT NULL AFTER `paytime`;
    PostgreSQL:
	ALTER TABLE invoices ADD paytype VARCHAR(255);
	UPDATE invoices SET paytype='';
	ALTER TABLE invoices ALTER COLUMN paytype ADD NOT NULL; 
	ALTER TABLE invoices ALTER COLUMN paytype SET DEFAULT '';
  - 'opaty stae' (alec)
    MySQL:
    CREATE TABLE payments (
	id INT(11) NOT NULL auto_increment,
	name VARCHAR(255) NOT NULL default '',
	value DECIMAL(9,2) NOT NULL default '0',
	creditor VARCHAR(255) NOT NULL default '',
	period INT(11) NOT NULL default '0',
	at INT(11) NOT NULL default '0',
	description text,
	PRIMARY KEY  (id),
	UNIQUE KEY id (id),
	KEY id_2 (id)
    ) TYPE=MyISAM;
    PostgreSQL:
    CREATE SEQUENCE "payments_id_seq";
    CREATE TABLE payments (
	id integer DEFAULT nextval('payments_id_seq'::text) NOT NULL,
	name VARCHAR(255) DEFAULT '' NOT NULL,
	value NUMERIC(9,2) DEFAULT 0 NOT NULL,
	creditor VARCHAR(255) DEFAULT '' NOT NULL,
	period integer DEFAULT 0 NOT NULL,
	at integer DEFAULT 0 NOT NULL,
	description text,
	PRIMARY KEY (id)
    );
  - poprawiona weryfikacja danych w taryfach: warto taryfy moe by ujemna,
    warto podatku nie moe by ujemna (alec)
  - na licie uytkownikw, zamiast arwki pojawia si wykrzyknik, jeli
    uytkownik nie posiada adnych komputerw (alec)
  - naprawione bdne przeliczanie adresw sieci w lms-makeiptables 
    i lms-makeipchains wynikajce ze zmiany formatu pola w bazie (alec)
  - w opcji 'networks' dla skryptw perlowych nazwy sieci mona podawa
    maymi literami - istotne dla bazy PostgreSQL, ktra ma zapytania
    case-sensitive (alec)
  - poprawiony interfejs 'mailingu', dodane sprawdzanie poprawnoci e-maila
    oraz nieuwzgldnianie uytkownikw usunitych (alec)
  - w oknie 'Informacje o LMS' dodana wersja serwera bazy danych (alec)
  - kosmetyka bazy zgodnie z BTS#000103, czyli poprawki zapobiegajce bdom
    podczas odtwarzania kopii bazy na nowszych wersjach postgresa (alec)
    MySQL:
	ALTER TABLE `admins` CHANGE `lastlogindate` `lastlogindate` INT(11) DEFAULT '0';
	ALTER TABLE `admins` CHANGE `failedlogindate` `failedlogindate` INT(11) DEFAULT '0';
    PostgreSQL:
	UPDATE admins SET lastlogindate=0 WHERE lastlogindate IS NULL;
	UPDATE admins SET failedlogindate=0 WHERE failedlogindate IS NULL;	 
	ALTER TABLE admins UPDATE lastlogindate SET DEFAULT 0;
	ALTER TABLE admins UPDATE lastlogindate SET NOT NULL;
	ALTER TABLE admins UPDATE failedlogindate SET DEFAULT 0;
	ALTER TABLE admins UPDATE failedlogindate SET NOT NULL;
	
wersja 1.1.7 Hathor (14/12/2003):

  - adresy sieci w bazie trzymamy teraz jako bigint, do przelicze
    uywamy funkcji INET_NTOA() i INET_ATON(), zwizane z tym
    podniesienie wymaga odnonie wersji bazy danych (Mysql 3.23.xx,
    PostgreSQL 7.3.x) i nastpujce zmiany w bazie (alec):
    MySQL:
	UPDATE networks SET address=INET_ATON(address);
        ALTER TABLE networks CHANGE address address INT(16) UNSIGNED NOT NULL;
    PostgreSQL:
        CREATE OR REPLACE FUNCTION inet_ntoa(bigint) RETURNS text AS '
        SELECT 
    	    ($1/(256*256*256))::text
    	    ||''.''||
	    ($1/(256*256) - $1/(256*256*256)*256)::text
    	    ||''.''||
    	    ($1/256 - $1/(256*256)*256)::text
    	    ||''.''||
    	    ($1 - $1/256*256)::text;
	' LANGUAGE SQL;
	CREATE OR REPLACE FUNCTION inet_aton(text) RETURNS bigint AS '
	SELECT
    	    split_part($1,''.'',1)::int8*(256*256*256)+
    	    split_part($1,''.'',2)::int8*(256*256)+
    	    split_part($1,''.'',3)::int8*256+
    	    split_part($1,''.'',4)::int8;
	' LANGUAGE SQL;
	ALTER TABLE networks ADD ipaddr bigint;
        UPDATE networks SET ipaddr = inet_aton(address); 
        ALTER TABLE networks DROP COLUMN address;
        ALTER TABLE networks RENAME COLUMN ipaddr to address;
        ALTER TABLE networks ALTER COLUMN address set NOT NULL;
  
  - przeliczanie adresw IP int<->char przerzucone z PHP na
    baz danych (alec)
  - poprawione contrib/customer do nowej konstrukcji LMS() oraz 'initLMS.php'
    w contrib - przykadowy plik ktry pokazuje jak si inicjuje klas LMS'a
    eby wszystko adnie chodzio (lukasz)
  - poprawiony byk w lms-payments, polegajcy na zwace przy generowaniu
    faktur jeeli pole pesel'a byo puste (MaReK/lukasz)
  - dodane sortowanie po ownerid na licie komputerw (alec)
  - naprawione kapitalizowanie polskich znakw diakrytycznych w
    useredit - dokadniej, przerzucone z PHP na baz danych (alec)
  - zmiana typu kolumn ptrzechowujcych wartoci pienine (hunter/alec/lukasz)
    MySQL:
	ALTER TABLE cash MODIFY value DECIMAL(9,2);
	ALTER TABLE tariffs MODIFY value DECIMAL(9,2);
	ALTER TABLE invoicecontents MODIFY value DECIMAL(9,2);
	ALTER TABLE invoicecontents MODIFY taxvalue DECIMAL(9,2);
	ALTER TABLE invoicecontents MODIFY count DECIMAL(9,2);
	ALTER TABLE tariffs MODIFY taxvalue DECIMAL(9,2);
    PostgreSQL:    
	ALTER TABLE cash ADD val numeric(9,2);
	UPDATE cash SET val=value;
	ALTER TABLE cash ALTER val SET NOT NULL;
	ALTER TABLE cash ALTER val SET DEFAULT 0;
	ALTER TABLE cash DROP COLUMN value;
	ALTER TABLE cash RENAME val TO value;	
	ALTER TABLE tariffs ADD val numeric(9,2);
	ALTER TABLE tariffs ADD taxv numeric(9,2);
	UPDATE tariffs SET val=value;
	UPDATE tariffs SET taxv=taxvalue;
	ALTER TABLE tariffs ALTER val SET NOT NULL;
	ALTER TABLE tariffs ALTER val SET DEFAULT 0;
	ALTER TABLE tariffs DROP COLUMN value;
	ALTER TABLE tariffs RENAME val TO value;	
	ALTER TABLE tariffs ALTER taxv SET NOT NULL;
	ALTER TABLE tariffs ALTER taxv SET DEFAULT 0;
	ALTER TABLE tariffs DROP COLUMN taxvalue;
	ALTER TABLE tariffs RENAME taxv TO taxvalue;
	ALTER TABLE invoicecontents ADD val numeric(9,2);
	ALTER TABLE invoicecontents ADD taxv numeric(9,2);
	ALTER TABLE invoicecontents ADD cnt numeric(9,2);
	UPDATE invoicecontents SET val=value;
	UPDATE invoicecontents SET taxv=taxvalue;
	UPDATE invoicecontents SET cnt=count;
	ALTER TABLE invoicecontents ALTER val SET NOT NULL;
	ALTER TABLE invoicecontents ALTER val SET DEFAULT 0;
	ALTER TABLE invoicecontents ALTER taxv SET NOT NULL;
	ALTER TABLE invoicecontents ALTER taxv SET DEFAULT 0;
	ALTER TABLE invoicecontents ALTER cnt SET NOT NULL;
	ALTER TABLE invoicecontents ALTER cnt SET DEFAULT 0;
	ALTER TABLE invoicecontents DROP COLUMN value;
	ALTER TABLE invoicecontents RENAME val TO value;
	ALTER TABLE invoicecontents DROP COLUMN taxvalue;
	ALTER TABLE invoicecontents RENAME taxv TO taxvalue;
	ALTER TABLE invoicecontents DROP COLUMN count;
	ALTER TABLE invoicecontents RENAME cnt TO count;	
  - dodana moliwo tworzenia faktur poprzez PHP-UI (lukasz)
  - ujednolicony reload dla almsd i ui, teraz almsd przeadowuje si przy 
    standardowych ustawieniach ui (nie wymagana tabela reload) (Lexx)

wersja 1.1.6 Seth (08/12/2003):

  - literwka: http://bts.rulez.pl/bug_view_page.php?bug_id=0000088
    (chilek/lukasz)
  - poprawiony modu upgrade:
    http://bts.rulez.pl/bug_view_page.php?bug_id=0000085 (chilek/lukasz)
  - poprawione dodawanie taryf (alec)
  - byk w skrypcie lms-makearp
    http://bts.rulez.pl/bug_view_page.php?bug_id=0000086 (chilek/lukasz)
  - opis taryfy moe by NULL (alec)
    MySQL:
    	ALTER TABLE tariffs CHANGE description description text;
    PostgreSQL:
    	ALTER TABLE tariffs ALTER COLUMN description DROP NOT NULL;  

wersja 1.1.5 Amaonet (04/12/2003):

  - dodane opcje do ustawienie waciciela oraz praw dostpu skryptw
    tworzonych przez lms-traffic-* (lukasz)
  - contrib/customer przystosowane do nowego API baz danych
  - dodana moliwo czenia/odczania urzdze sieciowych i komputerw 
    do urzdzenia podczas jego edycji (alec)
  - poprawka w funkcji ScanNodes() zapobiegajca bdom w wypadku braku
    programu nbtscan w systemie (alec)
  - poprawione wyszukiwanie komputerw po adresie IP, moliwe jest wyszukiwanie
    tekstowe po fragmencie adresu (alec)
  - na wykresach statystyk dostpne s dane komputerw usunitych z bazy oraz
    dodano opcja usuwania statystyk tych komputerw podczas kompaktowania 
    bazy (alec)
  - dodana moliwo wymiany urzdze (lexx)
  - poprawione bugi z rozpoznawanie adresw prywatnych w skryptach oraz
    literwka w lms-iptables (lukasz/wojboj)
  - lms-notify przystosowane do nowych finansw (lukasz)
  - w katalogu /daemon pojawia si wersja alfa programu do generowania
    konfigw i przeadowywania usug (alec)
  - w index.php dodano now funkcj do parsowania pliku konfiguracyjnego, 
    w peni kompatybilna z daemonem w c i czciowo z lms-mgc (alec)
  - do lms.pgsql dodane sql'owe funkcje inet_ntoa() i inet_aton() dla
    przyszych zastosowa (alec)
  - poprawione bdne zliczanie userw w panelu powitalnym (alec)
  - poprawione wartoci domylne formularza dodawania userw (alec)
  - usunicie usera na licie nie powoduje ju przejcia do userinfo (alec)
  - w sumie fakturki mona uzna za skoczone - teraz si bardzo adnie
    wystawiaj i loguj i bardzo adnie si drukuj, co oczywicie wymaga
    poprawek w bazie danych (lukasz):
    MySQL:
	ALTER TABLE `tariffs` ADD `taxvalue` INT DEFAULT '0' NOT NULL AFTER `value`;
	ALTER TABLE `tariffs` ADD `sww` VARCHAR(255) DEFAULT '' AFTER `taxvalue`;
	ALTER TABLE `assignments` ADD `invoice` TINYINT( 1 ) DEFAULT '0' NOT NULL;
	ALTER TABLE `cash` ADD `invoiceid` INT DEFAULT '0' NOT NULL ;
    PostgreSQL:
	ALTER TABLE tariffs ADD taxvalue integer;
	ALTER TABLE tariffs ALTER taxvalue SET DEFAULT 0;
	UPDATE tariffs SET taxvalue=0;
	ALTER TABLE tariffs ALTER taxvalue SET NOT NULL;
	ALTER TABLE tariffs ADD sww varchar(255);
	ALTER TABLE tariffs ALTER sww SET DEFAULT NULL;
	ALTER TABLE assignments ADD invoice smallint;
	ALTER TABLE assignments ALTER invoice SET DEFAULT 0;
	UPDATE assignments SET invoice=0;
	ALTER TABLE assignments ALTER invoice SET NOT NULL;
	ALTER TABLE cash ADD invoiceid;
	ALTER TABLE cash ALTER invoiceid SET DEFAULT 0;
	UPDATE cash SET invoiceid=0;
	ALTER TABLE cash ALTER invoiceid SET NOT NULL;
    MySQL:
	CREATE TABLE invoices (
    	    id INT NOT NULL AUTO_INCREMENT ,
    	    number INT NOT NULL ,
    	    cdate INT NOT NULL ,
    	    paytime TINYINT( 8 ) NOT NULL ,
    	    customerid INT NOT NULL ,
    	    name VARCHAR( 255 ) NOT NULL ,
    	    address VARCHAR( 255 ) NOT NULL ,
    	    nip VARCHAR( 16 )DEFAULT '' ,
    	    zip VARCHAR( 6 ) NOT NULL ,
    	    city VARCHAR( 32 ) NOT NULL ,
    	    phone VARCHAR( 255 ) NOT NULL ,
    	    finished TINYINT( 1 ) NOT NULL DEFAULT '0',
    	    PRIMARY KEY (id),
    	    UNIQUE KEY id (id),
    	    KEY id_2 (id)
	) TYPE=MyISAM;
	CREATE TABLE invoicecontents (
    	    invoiceid INT NOT NULL ,
    	    value DOUBLE NOT NULL ,
    	    taxvalue INT NOT NULL ,
	    sww VARCHAR( 255 ) DEFAULT '',
    	    content VARCHAR( 16 ) NOT NULL ,
    	    count INT NOT NULL ,
	    description VARCHAR( 255 ) NOT NULL ,
	    tariffid INT NOT NULL
	);
    PostgreSQL:
	CREATE SEQUENCE "invoices_id_seq";
	CREATE TABLE invoices (
	    id integer DEFAULT nextval('invoices_id_seq'::text) NOT NULL,
    	    number integer NOT NULL,
    	    cdate integer NOT NULL,
    	    paytime smallint NOT NULL,
    	    customerid integer NOT NULL,
    	    name varchar(255) NOT NULL,
    	    address varchar(255) NOT NULL,
    	    nip varchar(16) DEFAULT NULL,
    	    zip varchar(6) NOT NULL,
    	    city varchar(32) NOT NULL,
    	    phone varchar(255) NOT NULL,
    	    finished smallint DEFAULT 0 NOT NULL,
	    PRIMARY KEY (id)
	);
	CREATE TABLE invoicecontents (
	    invoiceid integer NOT NULL,
	    value float4 NOT NULL,
	    taxvalue integer NOT NULL,
	    sww varchar(255) DEFAULT NULL,
	    content varchar(16) NOT NULL,
	    count integer NOT NULL,
	    description varchar(255) NOT NULL,
	    tariffid integer NOT NULL
	);	 
    
    BTW. to jeszcze nie koniec, pozostaje mi dopisanie moliwoci rcznego
    wypisania faktury za pojedycz usug/zdarzenie. Za kilka godzin powinno
    by i to dostpne. Faktury s wystawiane przez lms-payments, o ile podczas
    dodawania 'assignmentu' do usera zaznaczyo si pole 'faktura'. Docelowo
    bdzie mona tworzy pojedycze faktury, ale to najwczeniej jutro.
  - z racji zmienionego kawaek czasu temu systemu finansw lms-mgc nie ma ju
    %TID i %TVAL (lukasz)
  - dodany PESEL do rekordu uytkownika, upgrade bazy (lukasz):
    MySQL:
	ALTER TABLE `users` ADD `pesel` VARCHAR(11) DEFAULT '' AFTER `nip`;
	ALTER TABLE `invoices` ADD `pesel` VARCHAR(11) DEFAULT '' AFTER `nip`;
    PostgreSQL:
	ALTER TABLE users ADD pesel varchar(11);
	ALTER TABLE users ALTER pesel SET DEFAULT NULL;
	ALTER TABLE invoices ADD pesel varchar(11);
	ALTER TABLE invoices ALTER pesel SET DEFAULT NULL;

    Jeeli uytkownik nie posiada NIPu, to wtedy na fakturze umieszczany jest
    PESEL.
  - do faktur zostao dodane miejsce wystawienia (lukasz);
  - zamiana nazewctwa w tabelach z 'sww' na 'pkwiu' (lukasz);
    MySQL:
	ALTER TABLE `tariffs` CHANGE `sww` `pkwiu` VARCHAR( 255 );
	ALTER TABLE `invoicecontents` CHANGE `sww` `pkwiu` VARCHAR( 255 );
    PostgreSQL:
	ALTER TABLE tariffs RENAME sww TO pkwiu;
	ALTER TABLE invoicecontents RENAME sww TO pkwiu;  

wersja 1.1.4 Tanith (03/10/2003):
  
  - lista taryf zliczaa take uytkownikw usunitych (lukasz)
  - do listy sieci dodane nowe pole: interfejs - bardzo przydatne przy
    budowaniu skryptw iptables/ipchains/htb gdy mamy sieci adresowe na
    rnych interfejsach, dostpne w lms-mgc jako %IFACE, %DIFACE i %NIFACE,
    co jak zwykle niesie upgrade formatu bazy (lukasz):
    MySQL:
        ALTER TABLE networks ADD interface VARCHAR(8) AFTER mask;
    PostgreSQL:
    	ALTER TABLE networks ADD interface VARCHAR(8);
  - usunita maa literwka powodujca to i driver od MySQL'a nie dostawa
    informacji o hocie do bazy danych z lms.ini, a co za tym idzie zawsze
    prbowa si czy z localhost'em (lukasz)    
  - reload.php uzywa sqlTSfmt() ktry jest obsolete (lexx/lukasz)
  - nowo dodawany komputer domylnie nie mia dostpu (lukasz)
  - ilo sieci w podsumowaniu bya zwikszana o 2 (lukasz)
  - kosmetyka kodu (s/this->ADB->/this->DB->/g i nie tylko) (lukasz)
  - dodany (przeniesiony z contrib) modu traffic-stats i bin/lms-traffic, 
    do korzystania z nich wymagane jest utworzenie tabeli 'stats' w bazie 
    danych (alec)
    MySQL:
	DROP TABLE IF EXISTS stats;
	CREATE TABLE stats (
	    nodeid int(11) NOT NULL DEFAULT '0',
	    dt int(11) NOT NULL DEFAULT '0',
	    upload int(11) DEFAULT '0',
	    download int(11) DEFAULT '0',
	    PRIMARY KEY (nodeid, dt)
	) TYPE=MyISAM;
    PostgreSQL:
	DROP TABLE stats;
	CREATE TABLE stats (
	    nodeid integer DEFAULT 0 NOT NULL,
	    dt integer DEFAULT 0 NOT NULL,
	    upload integer DEFAULT 0,
	    download integer DEFAULT 0,
	    PRIMARY KEY (nodeid, dt)
	);    
  - nowa dokumentacja (sgml/html/txt) (alec)
  - poprawiony bug pozwalajcy na zapisanie mac adresu ze znakiem '-' podczas
    edycji danych komputera - teraz podobnie jak podczas dodawania - zamienia
    wszystkie '-' na ':' (lukasz)
  - maa zmiana filozofii tablicy tariffs - 'NULL' to nie ustawiony limit, '0'
    to brak limitu - dlaczego? dowiecie si lada dzie ;-) (lukasz):
    MySQL:
	ALTER TABLE tariffs CHANGE uprate uprate INT(11), CHANGE downrate downrate INT(11); 
    PostgreSQL:
	ALTER TABLE tariffs ALTER uprate DROP NOT NULL;
	ALTER TABLE tariffs ALTER uprate DROP DEFAULT;
	ALTER TABLE tariffs ALTER downrate DROP NOT NULL;
	ALTER TABLE tariffs ALTER downrate DROP DEFAULT;
  - 'maa' rewolucja w finansach, a co za tym idzie 'duy' upgrade bazy, ale
    mam nadziej e sobie poradzicie (lukasz):
    
    0) Wykonaj BEZWZGLDNIE backup bazy danych.
    
    1) Stwrz tabel 'assignments':
    MySQL:
    DROP TABLE IF EXISTS assignments;
    CREATE TABLE assignments (
    	id int(11) NOT NULL auto_increment,
	tariffid int(11) NOT NULL default '0',
	userid int(11) NOT NULL default '0',
	period int(11) NOT NULL default '0',
	at int(11) NOT NULL default '0',
	PRIMARY KEY  (id),
	UNIQUE KEY id (id),
	KEY id_2 (id)
    ) TYPE=MyISAM;
    
    PostgreSQL:
    DROP SEQUENCE "assignments_id_seq";
    CREATE SEQUENCE "assignments_id_seq";
    DROP TABLE assignments;
    CREATE TABLE assignments (
    	id integer default nextval('assignments_id_seq'::text) NOT NULL,
	tariffid integer default 0 NOT NULL,
	userid integer default 0 NOT NULL,
	period integer default 0 NOT NULL,
	at integer default 0 NOT NULL,
	PRIMARY KEY (id)
    );
    2) Uruchom modu 'upgrade01' - czyli po zalogowaniu sie do LMS'a
    wpiszcie w url na kocu '?m=upgrade01', np.
    'http://serwer.pl/lms/?m=upgrade01'. UWAGA! Modu ten naley uruchomi
    TYLKO RAZ! Jak go uruchomisz wicej ni raz, popsujesz sobie ca baz
    danych.

    3) Teraz mona usun nieuywane pola z bazy danych:
    MySQL:
	ALTER TABLE users DROP tariff, DROP payday;
    PostgreSQL:
	ALTER TABLE users DROP tariff; ALTER TABLE users DROP payday;	

    4) Dopiszcie do crona lms-payments tak aby by uruchamiany codziennie o
       godzinie 0:00.

    5) Voila.

  - nowy skrypt w bin: lms-traffic-logiptables, loguje transfery do loga
    akceptowalnego przez lms-traffic alec'a, wicej info w sample/lms.ini
    (lukasz)
  - optymalizacja kodu w wielu miejscach (lukasz)
  - ewidencja sprztu sieciowego, narazie brzydka i gupia ale dziaa,
    oczywicie potrzebna nowa tabela (lexx)
    MySQL:
    DROP TABLE IF EXISTS netdevices;
    CREATE TABLE netdevices (
        id int(11) NOT NULL auto_increment,
        name varchar(32) default NULL,
        description varchar(255) default NULL,
        producer varchar(64) default NULL,
        model varchar(32) default NULL,
        serialnumber varchar(32) default NULL,
        ports int(10) default NULL,
        PRIMARY KEY  (id),
        KEY name (name)
    ) TYPE=MyISAM;

    PostgreSQL:
    DROP SEQUENCE "netdevices_id_seq";
    CREATE SEQUENCE "netdevices_id_seq";
    DROP TABLE netdevices;
    CREATE TABLE netdevices (
        id integer default nextval('netdevices_id_seq'::text) NOT NULL,
        name varchar(32) default NULL,
        description varchar(255) default NULL,
        producer varchar(64) default NULL,
        model varchar(32) default NULL,
        serialnumber varchar(32) default NULL,
        ports integer default NULL,
        PRIMARY KEY (id)
    );
  - Ewidencja urzdze sieciowych - dodano pole lokalizacja, oczywicie
    upgrade bazy (Lexx)
    MySql:
	ALTER TABLE `netdevices` ADD `location` VARCHAR( 255 ) AFTER `name` ;
    PosgreSQL:
	ALTER TABLE netdevices ADD COLUMN location varchar(255);
  - do moduu 'Statystyki' dodano moliwo kompaktowania bazy danych (alec)
  - poprawiony http://bts.rulez.pl/bug_view_page.php?bug_id=0000072 (lukasz)
  - od teraz wpisy w tablicy arp '00:00:00:00:00:00' nie s ignorowane, za to
    wpisy statyczne (0x6/PERM) s (lukasz)
  - dalej netdev, tym razem psujemy poczenia (Lexx)
    MySql:
	CREATE TABLE netlinks (
	  id int(11) NOT NULL auto_increment,
	  src int(11) NOT NULL default '0',
	  dst int(11) NOT NULL default '0',
	  PRIMARY KEY  (id)
	) TYPE=MyISAM;
    PosgreSQL"
	CREATE SEQUENCE "netlinks_id_seq";
	CREATE TABLE netlinks (
	  id integer default nextval('netlinks_id_seq'::text) NOT NULL,
	  src integer default 0 NOT NULL,
	  dst integer default 0 NOT NULL,
	  PRIMARY KEY  (id)
	);
  - komputery mog si lczy do urzdze sieciowych (Lexx)
    MySql:
	ALTER TABLE `nodes` ADD `netdev` INT(11) NOT NULL default '0' AFTER `modid` ;
    PosgreSQL:
	ALTER TABLE nodes ADD netdev integer;
	ALTER TABLE nodes ALTER COLUMN netdev SET default 0;
	UPDATE nodes SET netdev = 0;
	ALTER TABLE nodes ALTER COLUMN netdev SET NOT NULL;  	
  - update moduu 'nodesearch' wynikajcy ze zmiany sposobu zapisu
    adresw IP w bazie danych i inne drobne poprawki (alec)
  - poprawione bdy w GetTariff() wystpujce na postgresie (alec)
  - bdy teraz pokazuj si jako popupy (lukasz)
  - nowy skrypt - bin/lms-traffic-htbiptlimits - do limitowania pasma (lukasz)
  - nowe pliki doc/UPGRADE.mysql, doc/UPGRADE.pgsql do upgrade'u bazy z wersji
    1.0 do 1.1 (alec)
  - lms-payments nie zapisuje nic do tabeli cash jeeli warto obcienia
    jest zerowa (lukasz)
  - zmiany w dokumentacji (lukasz):
    - wyrzucenie INSTALL.*
    - zrobienie README i README.html - podrcznika uyszkodnika
    - posprztanie i inne
  - poprawiona (mam nadziej) obsuga bdw - teraz to s tooltipy (lukasz)
	
wersja 1.1.3 (29/08/2003):

  - zmieniona filozofia uytkownikw - teraz usunicie uytkownika tak
    naprawd go nie usuwa, a jedynie ukrywa - tj. mona dobra si do
    uytkownika po jego ID, mona go wyszuka, ale nie mona mu doda
    komputerw i nie wida go na licie uytkownikw, natomiast w informacji o
    nim jest informacja o tym e uytkownik jest usunity, co oczywicie
    wymaga modyfikacji bazy danych: (lukasz)
    MySQL:
	ALTER TABLE users ADD deleted BOOL DEFAULT '0' NOT NULL;
    PostgreSQL:
	ALTER TABLE users ADD deleted int2;
	UPDATE users SET deleted=0;
	ALTER TABLE users ALTER COLUMN deleted SET DEFAULT 0;
	ALTER TABLE users ALTER COLUMN deleted SET NOT NULL;
    (dla tych co zdyli zrobi to na ENUM
    MySQL:
 	ALTER TABLE users CHANGE deleted deleted CHAR(1) DEFAULT 'N' NOT NULL;
	UPDATE users SET deleted=1 WHERE deleted='Y';
	UPDATE users SET deleted=0 WHERE deleted='N';
	ALTER TABLE users CHANGE deleted deleted BOOL DEFAULT '0' NOT NULL;
    PostgreSQL: metoda taka sama jak z polem access w tabeli nodes, patrz niej;
    )
  - zmienione 'opata ab' na bardziej intuicyjne 'obcienie' (lukasz)
  - zmiana formatu zapisu adresu IP w bazie danych, wymagane upgrejdy bazy
    (lukasz):
    MySQL:
        UPDATE nodes SET ipaddr=INET_ATON(ipaddr);
	ALTER TABLE nodes CHANGE ipaddr ipaddr INT(16) UNSIGNED NOT NULL;
    PostgreSQL:
	UPDATE nodes SET ipaddr=(split_part(ipaddr,'.',1)::int4*(256^3)+
				split_part(ipaddr,'.',2)::int4*(256^2)+
				split_part(ipaddr,'.',3)::int4*256+
				split_part(ipaddr,'.',4)::int4);
	ALTER TABLE nodes ADD ipaddr2 BIGINT;
	UPDATE nodes SET ipaddr2 = ipaddr::text::int8; 
	ALTER TABLE nodes DROP COLUMN ipaddr;
	ALTER TABLE nodes RENAME COLUMN ipaddr2 to ipaddr;
	ALTER TABLE nodes ALTER COLUMN ipaddr set NOT NULL;

  - zmiana formatu zapisu czy komputer ma dostp czy te nie - teraz nie ma
    jakiego gupiego chara ale jest boolean (znaczy si stary MySQL udaje e
    to boolean i daje tinyint), a co za tym idzie kolejny upgrade (lukasz):
	UPDATE nodes SET access='1' WHERE access='Y';
	UPDATE nodes SET access='0' WHERE access='N';
	ALTER TABLE nodes CHANGE access access BOOL NOT NULL DEFAULT '1';
    a w PostgreSQL pola s typu int2 :
	UPDATE nodes SET access= CASE access WHEN 'Y' THEN '1' ELSE '0' END;
	ALTER TABLE nodes ADD access2 int2; 
	UPDATE nodes SET access2 = access::text::int2; 
	ALTER TABLE nodes DROP COLUMN access;
	ALTER TABLE nodes RENAME COLUMN access2 TO access;
	ALTER TABLE nodes ALTER COLUMN access SET NOT NULL;
	ALTER TABLE nodes ALTER COLUMN access SET DEFAULT 0;
    dodatkowe operacje poprawiajce baz (zalecane):
    MySQL:
	ALTER TABLE nodes CHANGE ownerid ownerid INT(11) DEFAULT '0' NOT NULL;
	ALTER TABLE nodes CHANGE mac mac VARCHAR(20) NOT NULL;
    PostgreSQL:
	ALTER TABLE nodes ALTER COLUMN ownerid SET DEFAULT '0'; 
	ALTER TABLE nodes ALTER COLUMN mac SET NOT NULL;
	
  - zoptymalizowany kod do wywietlania duych sieci (lukasz)
  - podawanie dnia naliczania opaty podczas dodawania usera nic dawao
    (lukasz)
  - wczone z powrotem transakcje przy adowaniu backupu bazy danych
    (lukasz)
  
wersja 1.1.2 (24/08/2003):

  - moliwo wystawiania faktur (Lexx)
  - Dodatkowa opcja %date_month_name w szablonach mailingu, rozwizywana do
    nazwy aktualnego miesica (w/g LC_NUMERIC? hunter)
  - pewne zmiany w dokumentacji dot. postgresa, aktualizacja lms.pgsql (alec)
  - zrobione po ludzku wykrywanie pustej tabeli admins - w tym momencie LMS
    przy pustej tablicy bdzie dozwala dostp do moduu adminadd (lukasz)
  - lms-mgc nie uwzgldnia adresu sieci i broadcasta przy generowaniu regu
    (lukasz)
  - podczas wyboru MAC'a ignorowane s wpisy '00:00:00:00:00:00' i
    'FF:FF:FF:FF:FF:FF' (lukasz)
  - nowa zabawka w contrib/ - bandlogger+htblimiter - w oparciu o HTB oraz
    iptables (lukasz)
  - i stalo si - LMS nie wymaga ju ADOdb - ma wasne biblioteki do obsugi
    mysql'a i postgresa (lukasz)
  - zamienione wszystkie '<?' (krtkie tagi PHP) na '<?php' - w sumie tak
    powinno by od pocztku, ale kto by na to wpad, co nie? (lukasz)

wersja 1.1.1 (09/08/2003):

  - moliwo wydruku osb ktre s zaduone (MichalZ)
  - dodane %TID (id taryfy) i %TVAL (warto taryfy) do lms-mgc (lukasz)
  - poprawione problemy ze zmian kolejnoci sortowania na licie osb
    odczonych bd zaduonych (lukasz)
  - naprawiony bug z oper (zamiana exit(0) na die) (lukasz)
  - wprowadzono moliwo ustawienia dnia zapaty, konieczne zmiany w SQL to:
    MySQL: ALTER TABLE `users` ADD `payday` INT DEFAULT '5' NOT NULL;
    PostgreSQL: ALTER TABLE users ADD payday integer;
		ALTER TABLE users ALTER COLUMN payday SET DEFAULT 0;
		ALTER TABLE users ALTER COLUMN payday SET NOT NULL;
    gdzie zamiast '5', moemy poda domylny dzie zapaty, tj. jeeli teraz
    opaty w Twojej sieci s naliczane kadego pitego dnia miesica, to
    wtedy spowoduje to przypisanie kademu uytkownikowi takiego dnia
    patnoci (lukasz)
  - w zwizku z powysz innowacj, nie istnieje lms-eachmonth, a
    lms-payments, ktry powinien by odpalany z crona codziennie! (lukasz)
  - cleanup kodu (wywalenie gwnie mieci i troch poprawnego kodowania...)
    (lukasz)

wersja 1.1.0 (23/06/2003):

  - support do drugiego serwera dns (w lms-mgc jako %DNS2)
    wymagany upgrade:
    MySQL: ALTER TABLE `networks` ADD `dns2` VARCHAR( 16 ) AFTER `dns`
    PostgreSQL: ALTER TABLE networks ADD dns2 VARCHAR(16);
- jeeli w tym samym katalogu co index.php znajduje si plik, LMS wykorzysta
    go zamiast /etc/lms/lms.ini
  - mona ustawi domylne wartoci dla adresu, miasta i kodu pocztowego
    nowego uytkownika;
  - w zwizku z cigymi sprzeczkami nt. wprowadzenia nazwy klienta zmieniem
    teksty (dla przykadu) 'Nazwisko i imi' na 'Nazwisko/nazwa i imi'. Brzmi
    durnie ale kompromis niezy (lukasz)
  - dodany ChangeLog.en (warden)
  - usunita nieuywana tabela 'options' i wygenerowany od nowa lms.mysql
    (lukasz)
			
wersja 1.0.0 (18/05/2003):

  - poprawione ikonki (wiem, s obrzydliwe, ale nikt nie zrobi adniejszych)
  - dosy rozbudowana dokumentacja (niestety nadal uboga, ale lepszy rydz ni
    grzybki atomowe)
  - uff...

wersja 1.0.0rc1 (17/05/2003):

  - przymiarki do dokumentacji (Lexx)
  - porzdki w LMS.class.php (lukasz)
  - contrib/customers - prosta strona dla ciekawych uytkownikw - w zwizku z
    czym znikn obskurny button ze strony logowania z napisem 'Stan konta'
    (lukasz)
  - zrobione wstpnie rne poziomy dostpu (lukasz)
  - poprawione lms-notify (lukasz)
  - dodane 'uyteczne linki' do strony powitalnej (lukasz)
  - poprawione wydruki: listing wedug aktualnego sortowania oraz filtra (warden)
  - dodane 'skanuj' przy dodawaniu komputera - wyszukuje hosty przy uyciu
    programu nbtscan (kennyGRV/lukasz)
  - dodana informacja o producencie karty sieciowej w nodeinfobox (lukasz)
  - poprawione byki z wywietlaniem ostatnich 10 operacji finansowych
    uytkownika (lukasz)
  - wymieniona cz ikon (lukasz)
  - poprawki powrotnych redirectw (lukasz)
  - zabezpieczenie przed porbanymi przegldarkami ktre majstruj z refererem
    podczas wylogowywania si (lukasz)
  - dodane info o hocie na grze obok logo (warden & lukasz)
  - powrciy lms-scripts do katalogu bin/ (lexx & lukasz)
  - na stronie tytuowej zamiast ID zalogowanego admina jest teraz wersja PHP
  - finalnie poprawione lms-notify
  - poprawiony template maila (byko/lukasz)
  - poprawione sprawdzanie adresu email (repcio/lukasz)
  - sporo porzdkw
  
wersja 1.0pre10 (15/04/2003):

  - poprawki zgodnoci ze Smarty-2.5.0 (niestety, automatycznie 2.5.0 jest
    wymagane przez LMS'a)
  - usunite zbdne title w licie userw
  - poprawione wywietlanie nazwiska usera w popupie od usuwania usera
  - na stronie powitalnej troch statystyk
  - usunity dosy powany bd w lib/Session.class.php
  - jak zwykle kosmetyka (literwki i tym podobne)
  - logosy by Pierzak

wersja 1.0pre9 'CVS-Has-Been-Crashed-Edition' (13/04/2003):
  
  - wymaga Smarty-2.4.2
  - tooltips
  - force ssl
  - przy dodawaniu usera domylna taryfa to nie ta najdrosza, a ta
    najczciej uywana
  - nazwa sieci moe ju zawiera kropk
  - nazwa komputera moe zawiera _ (podkrelenie)
  - sporo kosmetyki (popupy i opisy pl formularzy)
  - logosy by Pierzak

wersja 1.0pre8 (30/03/2003):

  - poprawiony bug z edycj uytkownika i traceniem zawartoci pola z
    komentarzem
  - przeniesiony formularz dodawania sieci do oddzielnej strony
  - poprawione kilka innych bugw	

wersja 1.0pre7 (24/03/2003):

  - poprawiony powany bug w lms-mgc powodujcy traktowanie jako
    prywatnej sieci tylko 192.168.1.0/24 a nie 192.168.0.0/16
  - zrobiona lista uytkownikw odczonych i zaduonych
  - poprawione dodawanie userw (nie dodawali si lub imi nie zostawao
    zapisywane (BTS: 0000019)
  - w przypadku odrzucenia danych do dodania uytkownika gubio si miasto w
    fromularzu
  - poprawione templejty tak by LMS by zgodny ze Smarty'm 2.4.2

wersja 1.0pre6 (17/03/2003):

  - moliwo edycji imienia i nazwiska uytkownika
  - sporo kosmetyki, poprawek w sortowaniu i nie tylko
  - SetBalanceZERO w LMS.class.php zeruje saldo
  - %abonament zmienia si w kwot abo zapisan w tariffs.value
  - usunite polskie locales, sprawiao to wicej problemw
    ni poytku
  - may update dokumentacji
  - dodany katalog contrib z rnymi dodatkami do LMS
  - dodano lms.spec do contrib/ zgodnego ze specyfikacj PLD
  - atka usprawniajca odpalenie LMS w PLD
  - support do pustych hase
  - zrobiony usersearch, nodesearch i par innych rzeczy ;)
  - sprawdzenie stanu konta przez usera
  - czciowo wydruki
  - dodane adne cacune i sodkie README
  - poprawiony pagelimiter w licie uytkownikw
  - opcja wczajca sharing mac-addr
  - automagiczna instalacja domylnego admina z poziomu pliku lms.mysql
  - pole "Imi" moe by puste

wersja 1.0pre5 (26/01/2003):
 
  - PLIKI KONFIGURACYJNE PRZENIESIONE DO KATALOGU /etc/lms/ !!!
  - podzia listy uytkownikw na strony
  - poprawiony bug przy dodawaniu nowego usera
  - Pamitanie ostatniej wybranej podsieci i ostatniego wpisanego 
    komentarza do wpat
  - przykadowe configi przeniesione do sample
  - utworzony katalog ze skryptami perlowymi - bin - znadjduj si
    tam niektre skrypty z moduu lms-scripts
  - oddzielny formularz do dodawania nowych operacji finansowych
  - informacje o taryfie i moliwo jej edycji wreszcie.
  - poprawione parsowanie wprowadzanych danych w niektrych miejscach
    poprzez uycie regexpw (dziki mteg za podsunicie pomysu)
  - dodano nowe pola w tablicy z uytkownikami, aby je wykorzysta i
    bezproblemowo mc ich uywa naley wykona nastpujce komendy z
    poziomu klienta mysql:

    ALTER TABLE `users` ADD `gguin` INT AFTER `phone3`;
    ALTER TABLE `users` ADD `zip` VARCHAR(6) AFTER `address` ,
    ADD `city` VARCHAR(32) AFTER `zip`, ADD `nip` varchar(16) AFTER `city`;
  - dodano opcj do lms-notify:
      -D, --template-file=/etc/lms/another.template.txt
    uruchamia ona alternatywny plik template, przydatne przy wysyaniu
    upomnienia, etc.
  - Teraz %b we wzorcu wiadomoci rozwija si do - (saldo) (czyli jest to
    kwota do zapaty, ksigowi nie znaj liczb ujemnych :)
    %date-y %date-m %desc rozwijaj si odpowiednio do: aktualnego roku,
    nazwy miesica (set LANG=pl ?) i opisu pakietu z tariffs.
    %last_10_in_a_table zmienia si w maksymalnie 10 ostatnich operacji na
    koncie.
	  
wersja 1.0pre4 (21/01/2003):

  - pene przeportowanie obsugi SQL'a na ADODB
  - support do MySQL i PostgreSQL
  - pola uprate i downrate w taryfach. upgrade:
  
    ALTER TABLE tariffs ADD uprate INT DEFAULT '0' NOT NULL AFTER
    value , ADD downrate INT DEFAULT '0' NOT NULL AFTER uprate;

  - poprawka kolumny table na tablename w timestamps. upgrade:

    ALTER TABLE `timestamps` CHANGE `table` `tablename` VARCHAR( 255 ) 
    NOT NULL

  - lista uytkownikw: dodana kwota abonamentu miesicznego poniej
    aktualnego salda uytkownika (Goblin)
  - lista uytkownikw: uytkownik ktrego komputery s odczone
    jest pokazywany na szaro
  - wyszukiwanie uytkownikw;
  - oddzielny formularz dodawania uytkownikw;
  - wyszukiwanie uytkownikw;
  - moliwo zdefiniowania sposobu reloadu (albo via sql, albo exec
    jakiej komendy);
  - poprawki w dodawaniu taryf;
  
wersja 1.0pre3 (27/12/2002):

  - poprawione pobieranie hostname i uptime (Marcoos)
  - zmiana typu kolumny value w tabeli cash z float na double
  - zmiana typu kolumny value w tabeli tariffs z float na double
  - dodane blokowanie dostpu do aplikacji poza okrelonymi hostami
    lub klasami adresowymi
  - poprawka parsowania cieek do katalogw z configa

wersja 1.0pre2 (25/12/2002):

  - parsowanie configa nie zapisuje odrazu zmiennych odczytanych
    z ini jako globalnych, a do tablicy $_CONFIG (nie mona napisa 
    niczego poprzez plik ini)
  - dodane sprawdzanie czy istniej katalogi backups i templates_c 
    oraz czy mona do nich zapisywa
  - naprawiony modu od dodawania taryf
  - posprztane w niektrych plikach
  - poprawiony plik doc/lms.mysql i doc/INSTALL

wersja 1.0pre1 (24/12/2002):

  - przepisane obiektowo
  - napisane z wykorzystaniem engine'u template'owego Smarty
  - dodana opcja mailingu
  - bardzo fajne sortowanie (tm) :-)
  - wprowadzone cacheowanie wynikw (nawala, ale co tam dziaa)

wersja 0.4:

  - napisana od nowa, cakowicie z wykorzystaniem sesji, oraz
    paru uatwie jeeli chodzi o SQL'a
  - dodana moliwo definicji podsieci, nie ma ju
    koniecznoci dubania w rdach aby zmieni ustawienia
    podsieci
  - serwer jest konfigurowany poprzez demona w perlu, suchajcego
    na sockecie TCP/IP
  - rozbudowane sortowanie
  - dane administratorw s trzymane w bazie danych i nie trzeba
    rcznie ustawia hase w pliku .htpasswd

wersja 0.3:
   
  - obsuga finansw i rozlicze uytkownikw

wersja 0.2:

  - obsuga komputerw, generowanie plikw od maskarady na iptables i od
    DHCP
  - pomoc w wyszukiwaniu mac-adresw poprzez listowanie widocznych adresw w
    trakcie dodawania

wersja 0.1:

  - autoryzacja oparta o .htpasswd w serwerze www
  - prosta baza uytkownikw zawierajca dane osobowe oraz status
    uytkownikw
