Sunteți pe pagina 1din 19

DOCUMENTATIE

ATESTAT 2023
Nașu Teodor-Cristian - Matematică – Informatică XII - B

COLEGIUL NAȚIONAL “CALISTRAT HOGAȘ” TECUCI


Nașu Teodor-Cristian

Cuprins

1. Instalare și Utilizare................................................................................................................................2
1.1 Mențiune.....................................................................................................................................2
1.2 Instalare.......................................................................................................................................2
1.2.1 Instalarea web-serverului....................................................................................................2
1.2.2 Instalarea frame-work-ului..................................................................................................5
1.2.3 Instalarea interfatei (front-end)...........................................................................................5
1.3 Utilizare.......................................................................................................................................5
2 Documentatie cod...............................................................................................................................7
2.1 Partea Frontala (front-end).........................................................................................................7
2.1.1 Structura directorului principal............................................................................................7
2.1.2 Directorul src (codul sursa)..................................................................................................7
2.1.3 Directorul build....................................................................................................................7
2.1.4 Componente | Pagini...........................................................................................................8
2.1.5 Componente | Componente functionale in pagini..............................................................9
2.1.6 Componente | Utilitati.........................................................................................................9
2.2 Partea din spate (back-end)......................................................................................................10
2.2.1 Structura directorului.........................................................................................................10
2.2.2 Programe | API..................................................................................................................11
2.2.3 Programe | CLASSES..........................................................................................................12
2.2.4 Programe | CORE...............................................................................................................17
2.3 Structura bazei de date | Fisierul atestat.sql...........................................................................17
2.3.1 Tabelul users......................................................................................................................17
2.3.2 Tabelul tokens....................................................................................................................17
2.3.3 Tabel de conversatie..........................................................................................................17

1
Nașu Teodor-Cristian

1. Instalare și Utilizare
1.1 Mențiune
ADAUGA PARTICULE PENTRU HRISTOS CA IAR STAI 2 SAPTAMANI SA IL SCRII, ITI CUMPAR
O MBERE DACA FACI ASTA
Pentru o utilizare si prezentare mai ușoară, site-ul poate fi accesat si la adresa Atestat
2023, natura serviciilor utilizate pentru livrarea site-ului pot cauza o functionare lenta sau
blocarea acestuia la un anumit nivel de utilizare per ora. În caz contrat va fi necesara
instalarea unui web-server si al framework-ului specific.
Prin utilizarea versiunii disponibile online fiecare utilizator este automat de acord cu
stocarea online a datelor introduse indiferent de metoda utilizata, fapt mentionat si pe
pagina de inregistrare a site-ului.

1.2 Instalare
În directorul atestatului exista 3 componente principale ale site-ului, partea frontala sau
site-ul efectiv, partea din spate sau conexiunea dintre site si baza de date si baza de date
utilizata.
Pentru realizarea procesului de instalare este necesara dezarhivarea directorului ce
contine componentele site-ului.

1.2.1 Instalarea web-serverului


Se va utiliza aplicația XAMPP ce poate fi descărcată de pe site-ul Descărcare XAMPP.
Pe parcursul procesului este necesara instalarea Apache, MySQL, PHP si phpMyAdmin.

2
Nașu Teodor-Cristian

Se recomanda pornirea aplicației cu drepturi de administrator pentru evitarea


problemelor generate de lipsa accesului acesteia la fișiere si procese.
In urma instalării trebuie accesat folderul htdocs din directorul de instalare a XAMPP si
șters conținutul acestuia.

După instalare va fi necesara integrarea parții frontale in web-server. Pentru acest lucru
se va accesa directorul htdocs din folderul de instalare a web-serverului si se va copia in
el directorul cu partea frontala a atestatului (folderul atestat-front).
Pentru a integra partea din spate se repeta același proces de copiere a directorului ce
conține partea din spate (atestat-back) in folderul htdocs.
Pentru a continua cu integrarea bazei de date mai întâi se va porni aplicația XAMPP, iar
prin intermediul acesteia se vor porni doar serviciile Apache si MySQL.

3
Nașu Teodor-Cristian

Apoi se va deschide meniul phpMyAdmin pentru organizarea bazei de date cu butonul


Admin din dreptul MySQL unde este necesara crearea unei baze de date cu numele
atestat.
Acest lucru se realizează in partea stânga prin intermediul butonului Nouă.

Apoi se utilizează câmpul Creează baza de date.

In final se selectează baza de date atestat si din meniul superior se utilizează opțiunea
importă pentru a adăuga fișierul ce conține tabelele necesare.

4
Nașu Teodor-Cristian

In final baza de date poate fi adăugată cu ajutorul butonului Importă din subsolul
paginii.
Datorita unei cantități prea mare de date existente in tabelul users exista posibilitatea ca
procesul de importare sa se finalizeze cu erori, fapt ce va rezulta in lipsa unor utilizatori;
acest lucru nu ar trebui sa afecteze funcționarea aplicației.

1.2.2 Instalarea frame-work-ului


Acest lucru se poate realiza de pe site-ul node.js.

1.2.3 Instalarea interfatei (front-end)


Pentru instalarea modulelor necesare in procesul de compilare se va deschide directorul
atestat-front localizat in folderul htdocs din XAMPP.
Apoi prin intermediul unei linii de comanda localizata cu directorul de lucru in folderul
mentionat se executa comanda npm install

5
Nașu Teodor-Cristian

In urma executarii proiectul este gata de compilare si utilizare.

1.3 Utilizare
Pentru utilizarea proiectului va fi necesara compilarea acestuia si mai apoi deschiderea sa.
Pentru compilare se pot utiliza doua metode. Prima este prin intermediul comenzilor de
compilare pentru productie: npm run build si serve -s build, iar a doua se bazeaza pe
comenzile utilizate in compilarea pentru developare: npm start.
Pentru a evita problemele cauzate de politica de executare a sistemului de operare, in
exemplul actual se va utiliza comanda npm start.
Pentru compilarea proiectului se va executa comanda npm start in aceasi linie de
comanda localizata in directorul atestat-front din folderul htdocs.
In urma executarii si a finalizarii procesului de compilare, o fereastra ce contine pagina
principala a proiectului se va deschide in browser, in caz contrar este necesara
deschiderea cu ajutorul unui motor de cautare a adresei localhost:3000 .

6
Nașu Teodor-Cristian

2 Documentatie cod
2.1 Partea Frontala (front-end)
Partea frontala este creata prin intermediul librariei react. Aceasta se
bazeaza pe realizarea unei functii javascript, numite si componenta, ce preia
o serie de parametrii si executa procedeele necesare pentru procesarea
informatiei. In final, functia returneaza cod HTML ce este utilzat la randul lui
de alte componente, pana in punctul in care totalitatea codului rezultat este
injectat in pagina.
2.1.1 Structura directorului principal
Datorita naturii frame-work-ului utilizat, acesta separa codul sura si componentele
utilizate in mod repetat in compilare in doua foldere distince, src si public.
Directorul public contine datele generice care stau la baza unui site, precum pagina
index.html, imagini, alte fisiere. Acestea contin strict date generale ce nu joaca un rol
important in scrierea codului sursa.
Directorul src contine codul sursa, reprezentat de limbaj HTML imbinat prin intermediul
react.js si al librariei react cu cod javascript.

2.1.2 Directorul src (codul sursa)


Acesta contine componentele functionale utilizate de catre libraria react pentru a fi
injectate in pagina principala.
Fisierul index.js contine strict codul necesar pentru injectarea paginilor reprezentate de
componente in pagina index.
Fisierul app.js este utilizat pentru a conecta diferitele componente in functie de adresa
prezenta in motorul de cautare. Actioneaza precum o functie switch .. case ..
Directorul assets este utilizat pentru a stoca continut media pentru pagini, datorita
naturii librariei utilizate, diferite fisiere media nu au putut fi stocate in folderul assets,
fiind necesar ca acestea sa fie plasate direct in directorul public.
Alte diferite fisiere precum setupTest.js sunt generate de catre librarie si sunt utilizate in
cazul in care este necesara depanarea.

2.1.3 Directorul build


In cazul in care este utilizata comanda npm run build pentru compilarea unei versiuni de
productie a site-ului, acest director va fi generat in folderul principal si va contine
subfoldere ce contin fisire css de stilizare, fisere javascript ce compileaza totalitatea
componentelor si fisiere media.

7
Nașu Teodor-Cristian

Pentru publicarea acestuia se utilizeaza comanda serve -s build

2.1.4 Componente | Pagini


O componenta reprezinta o functie javascript ce preia diferite argumente si returneaza
limbaj HTML ce poate fi utilizat in pagina principala.

2.1.4.1 Home.jsx
Returneaza codul HTML ce compune toata structura paginii Acasa a site-ului.

2.1.4.2 Register.jsx
Contine codul HTML pentru a structura pagina de inregistrare bonus urmatoarele
functii javascript necesare pentru verificarea si inregistrarea unui utilizator.
2.1.4.2.1 CheckForm()
Verifica daca fiecare variabila ce contine datele utilizatorului indeplineste conditiile necesare.

2.1.4.2.2 getBase64()
Utilizeaza API-ul oferit de javascript pentru a converti fiserul accesat in baza 64.

2.1.4.2.3 send()
Utilizeaza API-ul creat pentru a se conecta la API-ul bazei de date si a crea un utilizator.

2.1.4.2.4 useEffect()
Functie oferita de libraria react, modificata pentru a executa send() odata apasat Enter.

2.1.4.3 Login.jsx
Contine codul necesar paginii de conectare plus functiile javascript utilizate in proces.
2.1.4.3.1 send()
Utilizeaza API-ul creat pentru a se conecta la API-ul bazei de date si a conecta un utilizator. In
urma executarii cu succes, seteaza in variabila sessionsStorage datele token si uid.

2.1.4.3.2 checkForm()
Verifica daca fiecare variabila ce contine datele utilizatorului indeplineste conditiile necesare.

2.1.4.3.3 useEffect()
Functie oferita de libraria react, modificata pentru a executa send() odata apasat Enter.

2.1.4.4 User.jsx
Utilizeaza valoarea uid din variabila globala sessionStorage pentru a genera codul
HTML ce contine conversatiile, mesaje unei conversatii si optiunile pentru manipularea
unui cont. Contine de asemenea functiile javascript necesare in proces.

8
Nașu Teodor-Cristian

2.1.4.4.1 getChats()
Utilizeaza API-ul pentru a obtine din baza de date conversatiile pentru contul actual.

2.1.4.4.2 getUsers()
Utilizeaza API-ul pentru a obtine utilizatorii din baza de date.

2.1.4.4.3 sendMesaj()
Utilizeaza API-ul pentru a introduce un mesaj in baza de date/conversatie.

2.1.4.4.4 checkToken()
Verifica cu ajutorul valorii token din variabila globala sessionStorage si al API-ului daca
utilizatorul conectat are in continuare permisiunea de a fi conectat si ii atesta autenticitatea
conexiunii.

2.1.4.4.5 logout()
Deconecteaza utilizatorul, sterge valorile uid si token din variabila globala sessionStorage si
trimite motorul de cautare pe pagina principala

2.1.4.4.6 getBase64()
Premia ca parametru locatia unui fisier si o functie ce urmeaza sa fie executata la finalizare.
Converteste un fisier citit in baza 64.

2.1.4.4.7 sendPoza()
Utilizeaza API-ul pentru a face update unei poze in baza de date pentru utilizator.

2.1.4.4.8 stergeCont()
Genereaza o caseta de dialog pentru a confirma prin intermediul parolei, stergerea
utilizatorului, apoi utilizeaza API-ul pentru a sterge din baza de date utilizatorul.

2.1.4.4.9 useEffect()
Functie oferita de libraria react, modificata pentru a executa strict doar la prima incarcare a
paginii functiile getChats(), getUsers() si checkToken().

Exista o a doua instanta a acestei functii ce are rolul de a adauga in pagina executarea
functiei sendMesaj() odata ce este apasata tasta Enter.

2.1.5 Componente | Componente functionale in pagini


Singura componenta functionala utilizata in alta pagina este ChatBox.jsx.
Aceasta preia ca parametru un utilizator si prin intermediul variabilei de sistem
sessionStorage si al parametrului obtine mesajele din conversatia celor doua persoane.
Aceasta componenta nu necesita detaliere a functiilor javascript, deoarece sunt instante
prezentate anterior.

9
Nașu Teodor-Cristian

2.1.6 Componente | Utilitati


Directorul Utils contine singura componenta utilizata indirect de catre celelalte cu
scopul obtinerii unei instante ce conecteaza site-ul si baza de date. Conexiunea si
constructia componentei se realizeaza cu ajutorul librariei axios.
Aceasta este o clasa cu doua functii.
Functia constructor, contine datele de baza pentru stabilirea unei conexiuni intre back-
end si front-end, precum URL-ul de baza (adresa la care este disponibila partea din
spate), metoda de comunicare si headerul ce comunica setari ale conexiunii.
Functia post preia ca parametru datele necesare pentru fiecare conexiune, astfele incat
aceasta sa fie personalizata.

2.2 Partea din spate (back-end)


Are rolul de a oferi o conexiune intre partea frontala si baza de date. Acest
lucru este realizat prin intermediul API-ul ce actioneaza drept o punte de
acces intre cele doua medii, acesta ofera o serie de programe/pagini care pot
fi apelate pentru ca informatia sa fie transmisa si procesata in diferite
moduri.
Back-end-ul este utilizat pentru a inregistra, autentifica si verifica conexiunile
utilizator, cat si interogarea conversatiilor existente.
2.2.1 Structura directorului
Acesta este compus din multiple foldere cu roluri diferite.
Directorul api contine programele necesare API-ului ce actioneaza sub rolul paginilor ce
primesc si proceseaza informatia din partea frontala a site-ului.
Directorul classses contine clasele ultilizate de catre API pentru a indeplini functii mai
complexe intr-o maniera polimorfa prin intermediul unui singur obiect.
Directorul core contine un singur program ce este utilizat pentru a asigura realizarea
corecta a includerii/importarii automate a fiecarei clase in programele necesare. Acesta
elimina procedeul manual de importare a unei clase in cod. De asemenea asigura si
faptul ca fiecare program porneste o sesiune ce contine date impartite de restul
proceselor, la inceputul executarii sale.
Directorul data contine aceasi baza de date prezenta si in directorul principal al
atestatului. Acesta exista pentru a facilita transmiterea mai usoara de informatii prin
site-ul github.com. Nu reprezinta un detaliu esential existenta sa.

10
Nașu Teodor-Cristian

11
Nașu Teodor-Cristian

2.2.2 Programe | API


Prezentat si anterior, API-ul contine totalitatea programelor necesare procesarii
informatiilor primite din partea frontala a site-ului.

2.2.2.1 addMesaj.php
Primeste prin intermediul parametrilor sender, mesaj, uid1, uid2, datele referitoare la
utilizatorul ce doreste sa introduca un mesaj in baza de date, mesajul efectiv, prima persoana
ce participa la conversatie si a doua persoana ce participa la conversatie, acelasi utilizator
prezent in variabila sender. Acesta introduce mai apoi datele in conversatia potrivita.

2.2.2.2 checkToken.php
Primeste prin intermediul variabilei token un cod al carui existenta este verificata in baza de
date, astfel incat, in cazul in care acesta este prezent, rezulta faptul ca utilizatorul s-a conectat
cu succes in trecut si ii este permisa in continuare utilizarea site-ului.

2.2.2.3 deleteUser.php
Primeste prin variabila uid si pass date legate un utilizator prezent in baza de date ce va fi
sters.

2.2.2.4 getChatsFor.php
Primeste prin variabila uid numele unui utilizator si returneaza conversatiile la care utilizatorul
respectiv participa.

2.2.2.5 getFullUsers.php
Primeste prin variabila uid numele unui utilizator. In cazul in care variabila uid nu contine
nimic, programul returneaza toti utilizatorii existenti si datele acestora(nume, parola, imagine
de profil), in caz contrar acesta returneaza toate datele referitoare la utilizatorul specificat.

2.2.2.6 getMessages.php
Primeste prin intermediul variabilelor uid1 si uid2 date referitoare la numele a doi utilizatori.
Acesta verifica daca exista o conversatie intre cele doua persoana si returneaza primele 50 de
mesaje, in caz contrar creeaza o conversatie intre cele doua persoane.

2.2.2.7 getUsers.php
Returneaza doar numele fiecarui utilizator prezent in baza de date.

2.2.2.8 login.php
Primeste prin intermediul variabilelor uid si pass, referitoare al numele unui utilizator si parola
sa. Verifica daca datele primite sunt valide si prezente in baza de date. In cazul in care datele
sunt valide, este generat un cod de acces(reprezentat in baza de date si site de token).
Returneaza codul de acces/token-ul in cazul in care procesul reuseste, respectiv un mesaj de
eroare in caz contrar.

2.2.2.9 register.php
Primeste prin intermediul variabilelor user, pass, again, poza, date referitoare la numele unui
utilizator, parola sa, confirmarea parolei si poza de profil. Programul verifica daca datele sunt

12
Nașu Teodor-Cristian

valide si nu se repeta in baza de date si creeaza un utilizator ce contine datele respective, in


caz contrar returneaza o eroare.

2.2.2.10 setPicture.php
Primeste prin intermediul variabilei poza si uid, date referitoare la poza de profil al unui
utilizator si numele acestuia. Programul schimba in baza de date poza utilizatorului cu cea
primita anterior in parametrul poza.

2.2.3 Programe | CLASSES


Specificat si anterior, directorul classes contine clase ce sunt utilizate de catre API intr-o
maniera polimorfica pentru a realiza actiuni complexe, acestea contin seturi de date si
functii menite la indeplinirea scopurilor sale.

2.2.3.1 Dbh.php
Prescurtare a database handler, aceasta reprezinta clasa ce realizeaza conexiunea
directa cu baza de date si ofera functii de baza SQL pentru interogarea bazei de date
atestat.
2.2.3.1.1 Variabile globale
Clasa dispune de variabilele globale:

 _instance
Obiect ce face referinta la orice instanta activa ce contine clasa Dbh.
 _pdo
Obiect ce contine conexiunea efectiva cu baza de date.
 _query
Variabila ce stocheaza interogarea ce urmeaza sa fie executata.
 _result
Variabila ce contine rezultat returnat in urma executarii interogarii.
 _count
Variabila ce contine numarul de coloane dintr-un rezultat.

2.2.3.1.2 Functia constructor (__construct)


Are rolul de a incerca realizarea unei conexiuni cu baza de date, utilizand datele de conectare
specificate in interiorul sau.

2.2.3.1.3 getInstance()
Verifica daca deja exista instante ale clasei Dbh si returneaza acea instanta, in caz contrar
realizeaza cu ajutorul functiei constructor. Are rolul de recicla orice proces anterior deja
prezent in server, previne crearea a multiple clase Dbh.

2.2.3.1.4 query()
Primeste prin intermediul parametrilor sql si param, comanda sql si parametrii ce apartin
acesteia. Utilizeaza conceptul de prepared statements pentru a atribui parametrii comenzii
sql, iar mai apoi executa interogarea rezultata si returneaza rezultatul apelului.

13
Nașu Teodor-Cristian

2.2.3.1.5 insert()
Primeste prin intermediul varibilei table si data, date referitoare la tabelul in care urmeaza sa
opereze si sub forma unei liste de tip dictionar/asociativa, parametri ce descriu datele ce
urmeaza sa fie inserat (sub forma cheie => valoare). Functia genereaza o comanda SQL de
inserare utilizand valorile primite.

2.2.3.1.6 select()
Primeste prin intermediul parametrilor table si were informatii referitoare la un tabel si
conditia de interogare (sub forma [valoare, operator, valoare]). Functia genereaza comanda
SQL necesara pentru selectarea din tabelul precizat conform conditiilor din variabila where.

2.2.3.1.7 select_order()
Functie proiectata special pentru interogarea unui tabel de mesaje si ordonarea rezultatelor
in functie de coloana timp. Primeste prin variabilele table si where, tabelul de interogare si
conditia de selectare a datelor (sub forma [valoare, operator, valoare]). Returneaza o
comanda SQL necesara pentru selectarea din tabelul precizat, conform conditiilor din
variabila where, ordonate descrescator in functie de coloana timp.

2.2.3.1.8 update()
Primeste prin variabila table, tabelul de interogare, variabila id, cheia primara care
actioneaza drept conditie si prin intermediul variabilei fields sub forma unei liste de timp
dictionar/asociativa valorile ce urmeaza sa fie innoite. Functia returneaza o comanda SQL
update ce innoieste in tabelul specificat, valorile primite in parametrul fields, cu conditia id.

2.2.3.1.9 delete()
Primeste prin intermediul variabilei table, tabelul de interogare si prin intermediul variabilei
where, conditia de interogare (sub forma [valoare, operator, valoare]). Functia returneaza o
comanda SQL ce sterge din tabelul precizat liniile ce se supun conditiei primite.

2.2.3.1.10 truncate()
Primeste prin intermediul variabilei table, tabelul de interogare. Functia executa direct
comanda SQL truncate, asupra tabelului precizat.

2.2.3.1.11 special_query()
Primeste prin intermediul variabilei sql, o comanda sql. Functia testeaza daca executarea
comenzii returneaza erori sau nu, apoi returneaza 1 in cazul in care comanda este executata
cu succes, in caz contrar returneaza 0.

2.2.3.1.12 result()
Returneza rezultatul executarii celei mai recente interogari, rezultat stocat in variabila
globabla _result.

14
Nașu Teodor-Cristian

2.2.3.2 Token.php
Aceasta clasa are rolul de a verifica existenta codurilor de conectare/tokens, coduri ce
au rolul de a confirma faptul ca un utilizator a finalizat procesul de conectare cu succes,
actioneaza precum o cheie de acces temporara. Token-urile sunt sterse odata la o ora
pentru a asigura „securitatea”.
2.2.3.2.1 Variabile globale
Singura variabila globala existenta este _db. Aceasta contine un obiect al clasei Dbh.

2.2.3.2.2 Functia constructor (__construct)


Initializeaza variabila _db cu clasa Dbh.

2.2.3.2.3 checkToken()
Primeste prin intermediul variabilei token. Functia reinnoieste tabelul tokens din baza de
date si verifica daca token-ul primit exista in tabel, in cazul in care exista returneaza 1, altfel
returneaza 0.

2.2.3.2.4 generateToken()
Preia timpul actual in forma unix (numarul de secunde ce au trecut din 1 ianuarie 1970 pana
in prezent) si verifica daca aceasta valoare exista in tabelul tokens, in caz contrar returneaza
valoare. Functia genereaza un token, reprezentarea timpului in format unix.

2.2.3.2.5 updateToken()
Functia acceseaza tabelul tokens si verifica daca valorile din tabel au fost generate cu o ora in
urma, in cazul in care exista valori generate cu o ora in urma acestea sunt sterse. Timpul la
care acestea au fost generate poate fi determinat deoarece valorile sunt efectiv timpul la
care au fost create.

2.2.3.2.6 getAllToken()
Functia returneaza toate valorile tabelului tokens.

2.2.3.2.7 removeToken()
Functia prin intermediul parametrului token, un token. Aceasta sterge valoarea primita din
tabelul tokens, in cazul in care valoarea este prezenta.

2.2.3.3 User.php
Aceasta clasa are rolul de a executa procesele necesare pentru crearea, verificarea,
stergerea, etc. al unui utilizator.
2.2.3.3.1 Variabile globale
 _db Contine obiectul clasei Dbh.
 _uid Contine numele unui utilizator.
 pass Contine parola unui utilizator.

15
Nașu Teodor-Cristian

2.2.3.3.2 Functia constructor (__construct)


Primeste prin intermediul variabilelor uid si pass, numele si parola unui utilizator. Initializeaza
variabila _db cu clasa Dbh si atribuie variabilelor globale _uid si _pass, valorile primite
anterior.

2.2.3.3.3 setCreds()
Primeste prin intermediul variabilelor uid si pass, numele si parola unui utilizator si le atribuie
variabilelor globale _uid si _pass.

2.2.3.3.4 fullCheck()
Selecteaza din baza de date utilizatorul ce detine parola specificata in _pass, in cazul in care
un utilizator este returnat, se verifica daca numele utilizatorului corespunde cu cel specificat
in _pass si returneaza 1, in caz contrar 0.

2.2.3.3.5 removeUser()
Verifica daca exista un utilizator ce ale carui date corespund cu cele din _uid si _pass. In cazul
in care exista, acesta este sters din baza de date.

2.2.3.3.6 createUser()
Primeste prin intermediul variabilei img, o imagine in baza 64. Functia verifica daca in baza
de date exista utilizatori cu aceleasi date precum cele din _uid si _pass. In cazul in care nu
exista, este inserat in tabelul users o linie ce contine datele din variabilele globale plus
imaginea specificata anterior.

2.2.3.3.7 updateImge()
Primeste prin intermediul variabilei img, o imagine in baza 64. Functia innoieste valoare poza
din tabelul users, pentru utilizatorul ce are acelasi nume precum cel specificat in _uid.

2.2.3.3.8 takenUser()
Functia selecteaza totalitatea liniilor din tabelul users si verifica daca exista un utilizator ale
carui date coincid cu cele specificate in _uid si _pass. In cazul in care exista un utilizator cu
aceleasi date este returnata valoare 1, altfel este returnat 0

2.2.3.3.9 getUsers()
Functia selecteaza totalitatea liniilor din tabelul users si le returneaza.

16
Nașu Teodor-Cristian

2.2.3.4 Chat.php
Aceasta clasa are rolul de a executa interogarile necesare pentru obtinerea si crearea
unui tabel cu conversatii.
2.2.3.4.1 Variabile globale
 _db Contine obiectul clasei Dbh.
 _uid1 Contine numele primului utilizator ce participa la o conversatie
 _uid2 Contine numele celui de al doilea utilizator ce participa la o conversatie
 _chat Contine numele tabelului ce contine conversatia actuala

2.2.3.4.2 Functia constructor (__construct)


Primeste prin intermediul variabilelor uid1 si uid2 numele a doi utilizator ce participa la o
conversatie. Initializeaza variabila _db cu clasa Dbh si _uid1 si _uid2 cu variabilele primite
anterior.

2.2.3.4.3 setUsers()
Primeste prin intermediul variabilelor uid1 si uid2 numele a doi utilizatori ce participa la
conversatie si le atribuie variabilelor globale _uid1 si _uid2; reseteaza variabila _chat.

2.2.3.4.4 testFor()
Genereaza cele doua nume posibile ale tabelelor ce contin conversatia dintre _uid1 si _uid2
si verifica in baza de date daca exista. In cazul in care unul dintre tabele exista returneaza 1 si
seteaza in _chat numele tabelului, in caz contrar returneaza 0.

2.2.3.4.5 createChat()
In cazul in care nu exista tabelul ce contine conversatia dintre _uid1 si _uid2, creeaza un
tabel cu numele „chat” + _uid1 + _uid2.

2.2.3.4.6 getMessages()
Primeste prin intermediul variabilei numberOf un numar ce reprezinta o cantitate de mesaje.
Selecteaza din baza de date tabelul cu numele prezent in variabila _chat si returneaza
primele `numberOf` mesaje sub forma unei liste.

17
Nașu Teodor-Cristian

2.2.4 Programe | CORE


In directorul core exista un singur program cu numele init.php
Rolul programului este de a fi implementat la fiecare initializare a fisierelor din API.
Acesta porneste o sesiune globala si ofera acces la variabilele din acesta. A doua functie
a sa este de a seta headerele necesare pentru politica CORS utilizata in comunicare cu
front-end-ul. In ultimul rand, principala sa functie este de a verifica daca sunt utilizate
clase externe si executa automat procesul de includere/importare al acestora.

2.3 Structura bazei de date | Fisierul atestat.sql


Acesta contine tabelel necesare pentru functionarea site-ului plus un set de
date.
2.3.1 Tabelul users
Contine datele legate de fiecare utilizator.

 Coloana UID
Contine numele unui utilizator.
 Coloana PASS
Contine parola unui utilizator.
 Coloana poza
Contine poza de profil al unui utilizator, in baza 64.

2.3.2 Tabelul tokens


Contine codurile de verificare/tokens pentru diferiti utilizatori.

 Coloana DATA
Contine un cod de verificare/token.

2.3.3 Tabel de conversatie


Acesta contine mesajele unei conversatii dintre doi utilizatori.
Are numele de forma „chat” + nume_utilizator1 + nume_utilizator2

 Coloana UID
Contine numele utilizatorului ce a trimis mesajul in conversatie.
 Coloana MESAJ
Contine mesajul efectiv trimis in conversatie.
 Coloana TIMP
Contine data la care mesajul a fost trimis, reprezentat sub forma de timp
unix.

18

S-ar putea să vă placă și