Plugin: logsqlite

Wstęp

Plugin ten służy do zapisywania informacji o otrzymanych i wysłanych wiadomościach, a także opcjonalnie zmianach statusu użytkowników z listy kontaktów.

Sposób użycia

Aby skorzystać z pluginu, należy ustawić zmienną logsqlite:log na 1. Dane będą logowane do pliku, który jest określony przez zmienną logsqlite:path - domyślnie ~/.ekg2/logsqlite.db. Jeśli ten plik nie istnieje, to zostanie stworzony, razem z odpowiednią strukturą. Po ustawieniu opcji logsqlite:log_status logowane będą także zmiany statusów osób z listy użytkowników.

Odpowiednie ustawienie zmiennej logsqlite:path pozwala na logowanie do różnych plików zależnie od daty i od sesji. Jest to przydatna opcja, ponieważ baza może szybko urosnąć, spowalniając działanie pluginu. W ścieżce wystarczy umieścić odpowiednie znaki, które zostaną podmienione na generowane na bieżąco wartości. %S zostanie podmienione na nazwę sesji, a %Y, %M i %D zostanie podmienione na odpowiednio rok, miesiąc i dzień odebrania wiadomości lub statusu.

Przykład 2.1. Przykłady ustawień zmiennej logsqlite:path

~/.ekg2/logsqlite/%S.db
np. /home/users/leafnode/.ekg/logsqlite/gg:123.db
~/.ekg2/logsqlite/%S/%Y-%M-%D.db
np. /home/users/leafnode/.ekg2/logsqlite/jid:fr@h.pl/2004-05-31.db
/tmp/%S-%Y.%M.%D.db
np. /tmp/gg:31337-2004.05.31.db

ekg2 nie zapewnia możliwości przeszukiwania stworzonej bazy danych, oprócz polecenia logsqlite:last. Wyświetla ono ostatnio zalogowane wiadomości - domyślną ilość wyświetlanych wiadomości określa zmienna logsqlite:last_limit. Opcjonalnie, do polecenia można podać parametr -n [liczba] określający na bieżąco ile wierszy ma być wyświetlone. Drugi opcjonalny parametr to identyfikator użytkownika lub nazwa użytkownika z bieżącej sesji, którego wiadomości mają być wyświetlane.

Domyślnie polecenie logsqlite:last wyświetla wiadomości w bieżącym oknie. Można to zmienić przez ustawienie opcji logsqlite:last_in_window i logsqlite:last_open_window. Pierwsza z tych zmienny określa, czy wiadomości wyświetlane przez logsqlite:last mają być wyświetlane w okienku z rozmową z danym użytkownikiem (wiadomości bez wskazania użytkownika będą wyświetlane w oknie statusu). Po ustawieniu drugiej zmiennej na 1 ekg2 będzie otwierało okno z rozmową z danym użytkownikiem jeśli ono nie istnieje.

Struktura bazy danych

Tabela log_msg


   session text - nazwa sesji
   uid text - id użytkownika, który wysłał wiadomość bądź ją odbierze
   nick text - pseudonim
   type text - typ wiadomości ("chat", "msg", "sys")
   sent boolean - czy wiadomość jest wysyłana czy odbierana
   ts timestamp - czas odebrania wiadomości
   sentts timestamp - czas wysłania wiadomości
   body text - treść wiadomości

         

Tabela log_status


   session text - nazwa sesji
   uid text - id użytkownika zmieniającego stan
   nick text - pseudonim
   ts timestamp - czas zajścia zmiany stanu
   status text - stan
   desc text - opis


      

Polecenia

last

Parametry.  [opcje] [uid]

Krótki opis.  wyświetla ostatnie zalogowane wiadomości

  -n, --number <liczba>  Ilość wiadomości do wyświetlenia

  -s, --search <tekst>   Wyświetl tylko wiadomości zawierające podany
                         tekst
  
  <uid>                  UID użytkownika którego wiadomości mają być
                         wyświetlone


Zmienne

log

Typ.  liczba

Domyślna wartość.  0

określa, czy plugin loguje wiadomości

log_ignored

Typ.  bool

Domyślna wartość.  0

określa, czy logujemy ignorowane wiadomości (NFY).

log_status

Typ.  bool

Domyślna wartość.  0

określa, czy będą logowane zmiany stanu ludzi z listy (zmienna
,,log'' musi być różna od 0)

path

Typ.  tekst

Domyślna wartość.  ~/.ekg2/logsqlite.db

ścieżka do pliku z bazą danych. Jeśli plik nie istnieje, to zostanie stworzony.
Rozpoznawane znaki:
* %S - sesja nasza
* %Y, %M, %D - rok, miesiąc, dzień
Rozszerzenie pliku zależy od typu pliku logowanie (txt, xml, itp.)
Przykłady:
- logowanie do katalogów wg. sesji:
    log_path = "~/.ekg2/logsqlite/%S.db"
  np. /home/users/leafnode/.ekg/logsqlite/gg:123.db
- logowanie do katalogow wg. sesji (katalog) i daty (plik):
    log_path = "~/.ekg2/logsqlite/%S/%Y-%M-%D.db"
  np. /home/users/leafnode/.ekg2/logsqlite/jid:fr@h.pl/2004-05-31.db
- logowanie do /tmp z sesją i datą:
    log_path = "/tmp/%S-%Y.%M.%D.db"
  np. /tmp/gg:31337-2004.05.31.db

last_limit

Typ.  liczba

Domyślna wartość.  10

maksymalna ilość wiadomości wyświetlanych przez polecenie
logsqlite:last

last_in_window

Typ.  bool

Domyślna wartość.  0

określa czy wiadomości wyświetlane przez polecenie będą wyświetlane w
oknie rozmowy z daną osobą. To, czy nieistniejące okienko będzie
otwierane, określa zmienna logsqlite:last_open_window

last_open_window

Typ.  bool

Domyślna wartość.  0

określa czy w przypadku wyświetlania wiadomości danej osoby przez
lastlog w okienku rozmowy z nią, to okienko będzie otwierane jeśli
jeszcze nie istnieje (ktoś zrozumiał co tu napisałem?)

last_print_on_open

Typ.  bool

Domyślna wartość.  0

określa, czy po otwarciu nowego okna rozmowy, logsqlite wypisze w nim
last_limit ostatnich wiadomości powiązanych z rozmówcą

persistent_open

Typ.  bool

Domyślna wartość.  1

określa, czy baza ma być otwierana jednorazowo po załadowaniu wtyczki
i zamykana przy jej wyładowaniu (1), czy też otwierana każdorazowo przy
wywołaniu żądania (0)