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


      

Commands

last

Parameters.  [options] [uid]

Short Description.  shows last logged messages

  -n, --number <number>  Number of messages to show

  -s, --search <text>    Show only messages containing text
  
  <uid>                  UID of user whose messages will be shown

laststatus

Parameters.  [options] [uid]

Short Description.  shows last logged changes of statuses

  -n, --number <number>  Number of statuses to show

  -s, --search <text>    Show only statuses containing text
  
  <uid>                  UID of user whose statuses will be shown


Variables

log

Type.  number

Default value.  0

define if plugin logs messages 

log_ignored

Type.  bool

Default value.  0

define if plugin logs ignored messages (NFY).

log_status

Type.  bool

Default value.  0

define if plugin logs changes of people's statuses from contact list
list (variable ,,log'' must be other than 0)

path

Type.  text

Default value.  ~/.ekg2/logsqlite.db

Path to file with database. If file doesn't exists, it will be created.
Recognized codes:
* %S - our session
* %Y, %M, %D - year, month, day
Examples:
- logging to directores by session:
    log_path = "~/.ekg2/logsqlite/%S.db"
  e.g. /home/users/leafnode/.ekg/logsqlite/gg:123.db
- logging to directores by session (directory) and date (file):
    log_path = "~/.ekg2/logsqlite/%S/%Y-%M-%D.db"
  e.g. /home/users/leafnode/.ekg2/logsqlite/jid:fr@h.pl/2004-05-31.db
- logging to /tmp with session and date:
    log_path = "/tmp/%S-%Y.%M.%D.db"
  e.g. /tmp/gg:31337-2004.05.31.db

last_limit_msg

Type.  number

Default value.  10

maximal number of messages displayed by command logsqlite:last

last_limit_status

Type.  number

Default value.  10

maximal number of statuses displayed by command logsqlite:laststatus

last_in_window

Type.  bool

Default value.  0

define if messages displayed by command will be displayed in chat
window with this person. Opening of unexisting window will be defined
by variable logsqlite:last_open_window. 

last_open_window

Type.  bool

Default value.  0

define if in the case of displaying of the person's message by lastlong
in chat window with him the window will be opened if it's not
(anybody understand that description?)

last_print_on_open

Type.  bool

Default value.  0

define if after opening a new chat window, logsqlite will display there 
last_limit last messages with this person