Sistem Pentru Comunicare In Cadrul Unor Grupuri de Lucru

Sistem pentru comunicare in cadrul unor grupuri de lucru

Cuprins

Capitolul 1. Introducere

1.1 Obiectivele lucrării

1.2. Structura lucrării

Capitolul 2. Cerințe și specificații

Capitolul 3. Analiza problemei

Capitolul 4. Proiectarea sistemului

4.1. Diagrama cazurilor de utilizare

4.2. Structura datelor

4.2.1. Modelul conceptual al datelor

4.2.2. Descrierea tabelelor

4.3. Structura programelor, module, algoritmi originali elaborați

4.3.1 Structura programelor. Arhitectura aplicației

4.3.2. Funcții folosite în cadrul lucrării

Capitolul 5. Implementarea sistemului informatic

5. 1. Arhitectura client-server

5.2. Tehnologii folosite

5.2.1 Php

5.2.2 MySql

5.2.3 Apache

5.2.4 Html

5.2.5 C.S.S

5.2.6 JavaScript

5.2.7. AJAX

5.2.8. JQUERY

5.3. Implementarea

5.4. Intrumente utilizate

5.4.1. Macromedia Dreamweaver

5.4.2. Firebug

5.4.3. PhpMyAdmin

Capitolul 6. Testare și evaluare

6.1. Testarea sistemului

6.1.2. Nevoia testării

6.1.3. Tipuri de teste

6.1.4. Metode de testare

6.1.5. Ustensile folosite

6.1.6. Teste unitare

Capitolul 7. Concluzii

Capitolul 8 .Bibliografie

Capitolul 9. Anexe. Manualul utilizatorului

9.1. Introducere

9.2. Organizarea aplicației

9.3. Funcționalități

9.3.1. Conectare

9.3.2. Secțiune administrator

9.3.2. Sectiune client

9.3.3. Ieșirea din aplicație

TABELA FIGURILOR

Figura 1. Diagrama de cazuri de utilizare in cazul clientului……………………………….13

Figura 2. Diagrama de cazuri de utilizare in cazul adminului………………………………14

Figura 3. Modelul conceptual al datelor……………………………………………………….15

Figura 4. Arhitectura “Three-tier”……………………………………………………………….17

Figura 5. Pagina de start din situl de prezentare………………………………………………19

Figura 6. Structura paginii de start din situl de prezentare…………………………………..20

Figura 7. Structura paginii de administrare a proiectelor…………………………………….20

Figura 8 – Comunicare prin internet intre clienti si server…………………………………..24

Figura 9. Cele patru etape de prelucrare a unui script PHP…………………………………..27

Figura10. Panoul de acces al aplicației………………………………………………………….44

Figura 11. Logarea în cadrul secțiunii de administrare………………………………………..44

Figura 12. Prezentarea generală a aplicației………………………………………………………45

Figura 13. Lista membrii firma………………………………………………………………….45

Figura 14. Formular adăugare membrii firma…………………………………………………..46

Figura 15. Mesaje eroare………………………………………………………………………….46

Figura 16. Lista clienți……………………………………………………………………………47

Figura 17. Formular adăugare clienți……………………………………………………………48

Figura 18. Mesaje eroare…………………………………………………………………………..48

Figura 19. Lista proiecte………………………………………………………………………….49

Figura 20. Formular adăugare proiecte………………………………………………………….50

Figura 21. Mesaje eroare………………………………………………………………………….50

Figura 22. Lista tipuri de proiecte……………………………………………………………….51

Figura 23. Formular adăugare tip de proiecte………………………………………………….51

Figura 24. Mesaje eroare…………………………………………………………………………51

Figura 25. Lista taskuri de proiecte…………………………………………………………….52

Figura 26. Formular adaugare task de proiecte………………………………………………..53

Figura 27. Mesaje eroare…………………………………………………………………………53

Figura 28. Calendar evenimente……………………………………………………………….54

Figura 29. Lista tichete…………………………………………………………………………54

Figura 30. Detalii tichete……………………………………………………………………….55

Figura 31. Răspuns tichet…………………………………………………………………….55

Figura 32. Lista mesaje………………………………………………………………………..56

Figura 33. Formular adăugare mesaje………………………………………………………..56

Figura 34. Prezentare generală interfața client……………………………………………….57

Figura 35. Prezentare meniu proiecte………………………………………………………..57

Figura 36. Prezentare meniu profil…………………………………………………………..58

Figura 37. Prezentare meniu mesaje………………………………………………………….58

Figura 38. Formular contact……………………………………………………………………59

Figura 39. Buton ieșire…………………………………………………………………………59

CAPITOLUL 1

Introducere

1.1. Obiectivele lucrării

Obiectivul principal al acestei lucrării este acela de a crea un sistem pentru comunicare în cadrul unor grupuri de lucru capabil să răspundă prompt la solicitările clienților, oferind astfel suport și calitate serviciilor furnizate. Sistemul este creat pentru o firmă ce se ocupa cu realizarea de site-uri și materiale publicitare. Acesta are rolul de a automatiza toate operațiile din cadrul firmei și de a crește rapiditatea cu care firma poate să răspundă solicitărilor venite atât din partea clienților cât și din partea persoanelor care lucrează în cadrul ei.

Comunicarea are o foarte mare influență asupra personalității deoarece în ziua de azi individul se definește în funcție de ceilalți iar comportamentul reprezintă o construcție a persoanei în interacțiunea cu ceilalți. Interacțiunea atrage concomitent comunicarea.

Eficiența unei organizații se bazează pe specializarea funcțiilor la nivel de compartimente și de indivizi și pe complementaritatea acestor funcții. Din aceste caracteristici de bază ale activității organizaționale rezultă necesitatea schimbului de informații între compartimente, între indivizi, între organizație și mediul său socio-economic.

Pe lângă variabilele individuale care influențează performanța (aptitudini, competențe, motivație, trăsături de personalitate, stare de sănătate) și alte variabile organizaționale, de natură tehnică, tehnologică și de organizare a activității, comunicarea interpersonală și organizațională este considerată ca un factor important.

Cercetările au arătat că feedback-ul, cunoașterea rezultatelor imediate și finale ale activității proprii, are o influență pozitivă indiferent de sursa de la care provine (șefi, colegi). Comunicarea rezultatelor are un rol informațional și totodată motivațional, de aceea am implementat, în cadrul sistemului, posibilitatea de a trmite mesaje vizibile atât prin mail cât și în cadrul aplicației. Managerul de proiect poate comunica cu clientul prin intermediul unei interfețe simple și ușor de utilizat. Clientul își poate spune părerea cu privire la ceea ce s-a lucrat asupra unui proiect până la un anumit moment sau poate face adăugări suplimentare. În schimb trebuie să avem în vedere că excesul de feedback poate deteriora performanța, iar deficitul poate duce la un comportament aleator și ineficient.

Sistemul este gândit și proiectat pentru a furniza acces securizat pentru două categorii de utilizatori: administratorul sistemului incluzând și angajații, și clienții firmei. Partea de administrare destinată doar utilizatorilor autorizați (administratori) permite un management eficient și rapid al proiectelor. Cea de-a doua parte este partea destinată clienților firmei, aceștia pot vizualiza starea proiectelor, își pot modifica profilul și de asemena pot comunica prin intermediul mesajelor cu managerul de proiect.

1.2. Structura lucrării

Lucrarea pe care o vom dezvolta în continuare este formată din 9 capitole distincte care tratează de la probleme teoretice legate de conceptul de managementul relațiilor cu clienții până la a prezenta un prototip de sistem care să se ocupe de relația și interacțiunea cu aceștia. Încheierea lucrării se realizează cu un capitol in care se prezintă un manual de utilizare al sistemului de comunicare pentru a usura munca celor care il utilizeaza, dar si cateva anexe de cod.

Primul capitol al lucrării denumit Introducere, este un capitol în care se prezintă obiectivele acestei lucrări, rolul sistemului proiectat dar și o scurtă descriere atât a sistemului cât și a lucrării.

Capitolul Cerințe și specificații descrie funcționalitățile specifice sistemului dar și câteva specificații tehnice care au contribuit la realizarea acestuia.

Capitolul Analiza problemei realizează o scurtă prezentare a contextului lucrării, a domeniului în care se poate aplica, dar și aspectele principale ale activității din viața reală care urmează a fi modelată prin intermediul sistemului informatic.

Capitolul Proiectarea sistemului se ocupă de partea de proiectare a sistemului informatic propriu-zis. Această etapă de proiectare începe cu structura datelor având în vedere că lucrăm cu o bază de date, aceasta fiind reprezentată de crearea modelului conceptual al datelor. În plus sunt descrise atât arhitectura aplicației, structura programelor dar și câteva funcții folosite în cadrul lucrării. Toate aceste detalii legate de proiectarea sistemului vor fi descrise în amănunt, fiind însoțite și de numeroase capturi de ecran.

Capitolul Implementarea sistemului realizează o scurtă prezentare a tehnologiilor și instrumentelor care au fost utilizate în procesul de dezvoltare a sistemului de comunicare precum și enumerarea celor mai importante caracteristici. În plus este descris modelul fizic, respectiv implementarea propriu zisa a sistemului.

Capitolul Testare și evaluare cuprinde noțiuni teoretice legate de noțiunea de testare, tipurile de teste, metodele de testare, ustensilele folosite pentru testare dar și un exemplu de test realizat asupra proiectului. Acest capitol ne ajută să înțelegem nevoia testării unui sistem informatic ata din perspectiva timpului dar și a banilor investiți.

Capitolul numit Concluzii se ocupă cu prezentarea unor concluzii privind atât sistemele de comunicare în cadrul unor grupuri de lucru cât și importanta comunicării în cadrul unui grup.

Capitolul Anexe care contine Manualul utilizatorului se va ocupa de descrierea sistemului proiectat și implementat. Scopul acestui capitol este de a fi un ghid de utilizare a unei aplicații de acest tip. Pentru a ușura înțelegerea sistemului propus de noi, prezentarea va fi însoțită de numeroase capturi de ecran care vor ușura înțelegerea funcționării sistemului.

CAPITOLUL 2

Cerințe și specificații

Tema acestei lucrări a fost aleasă deoarece în prezent sistemele informatice reprezintă o importanță în fuctionarea unei firme datorită capacității lor de a gestiona rapid un volum mare de informații și realizarea de operații complexe în câteva minute. În plus consider că existența unui sistem de comunicare în cadrul unor grupuri de lucru este obligatorie.

Sistemul are posibilitatea de a gestiona proiecte, de a face aduagari, ștergeri și modificări asupra acestora. Se rețin informații despre membrii departamentului dar și despre clienții firmei. Aceștia se conectează prin intermediul unui username și al unei parole personalizate. Membrii departamentului sunt clasificați după nivelul de acces care poate fi ca și admin sau staff. În funcție de statutul lor în cadrul firmei, managerul de proiect îi poate adăuga în echipa de lucru specifică unui anumit proiect. Proiectele pot avea atribuite și o serie de taskuri care trebuiesc îndeplinite până la o dată scadenta.

Se pot stabili întâlniri intre managerul de proiect și persoanele care lucrează la un anumit proiect, cu scopul de a discuta anumite nelămuriri sau anumite detalii tehnice legate de proiect, dar și cu clienții firmei. Aceste sistem de stabilire a întâlnirilor este realizat prin intermediul mesajelor, și ajuta la o mai bună gestionare a relației dintre clienți și managerul de proiect. De asemenea prin intermediul mesajelor clientul poate trimite un feedback în care își poate spune părerea referitoare la muncă depunsa pentru proiectul său proiectele acestuia.

Membrii departamentului își pot vedea datele scadente ale proiectelor la care lucrează în cadrul unui calendar de evenimente. Astfel ei își pot gestiona timpul pe care îl mai au la dispoziție pentru rezolvarea sarcinilor primite și obținerea unui produs final eficient și cât mai complex. Am ales această opțiune de a implemtenta un calendar de evenimente pentru a veni în ajutorul personalului de lucru.

Sistemul asigura posibilitatea de conexiune în funcție de statutul persoanei care se loghează. Astfel pentru clienți am implementat o nouă interfață, diferită de cea a membrilor firmei, în care aceștia își pot vizualiza dar și modifica profilul. Au posibilitatea de a vizualiza stadiul de lucru al proiectelor dar și revizuirile aduse. Dacă observă anumite lucruri care nu le sunt pe plac sau vor să facă anumite precizări, pot trimite mesaje managerului de proiect și le pot comunica detaliile dorite. Acest lucru este posibil prin intermediul unei interfețe de mesagerie și contact care face posibilă trimiterea mesajului și pe mailul managerului de proiect dar aceasta este vizibilă și în cadrul aplicației, astfel încât managerul indiferent dacă este logat sau nu pe contul lui de mail, are posibilitatea de a vizualiza mesajele primise. Această interfață oferă de asemenea și posibilitatea de a adăuga și fișiere.

Proiectarea sistemului se va face având la bază modelele aferente metodei Merise cu scopul modelării sistemului și anume: modelul conceptual al datelor, modelul logic și modelul fizic al datelor cu scopul de a identifica prelucrările realizate asupra datelor.

Sistemul creat este implementat și dezvoltat în limbajul de programare PHP însă s-au folosit și alte tehnologii precum: Html, Css, JavaScript, AJAX . Rularea propriu zisă a aplicației se realizează local cu ajutorul programului XAMPP ce emulează cu succes toate funcțiile unui server online și pune la dispoziția dezvoltatorului de aplicații și un sistem de management al bazelor de date prin utilizarea funcției phpMyAdmin.

CAPITOLUL 3

Analiza problemei

Deoarece în prezent sistemele informatice reprezintă o importanță în fuctionarea unei firme datorită capacității lor de a gestiona rapid un volum mare de informații și realizarea de operații complexe în câteva minute, am ales realizarea acestui site pentru a ușura activitatea depusă de un manager de proiect. M-am documentat asupra acestei probleme și am ajuns să înțeleg necesitatea și importanta utilizării unui sistem pentru comunicare în cadrul unor grupuri de lucru.

Personal am incercat să implementez un sistem care să cuprindă mai mult decât cele existente pe piață. Am implementat activitatea unui manager de proiect în cadrul unui site web. Am ales varianta de a crea un site și nu un program care poate fi instalat pe un calculator deoarece acesta fiind găzduit de mediul online mă pot conecta atât din cadrul firmei cât și de acasă. Consider că această variantă este mai utilă și mai ușor de folosit. În schimb datele sunt vizibile numai celor care dispun de un ușer și o parolă criptată, deci nu exista riscul ca anumite persoane nedorită să vadă activitatea și datele corespunzătoare persoanelor înscrise în cadrul aplicației.

Scopul acestei lucrări este cel de a veni în ajutor persoanelor care lucrează în cadrul unei firme, în principal al managerului de proiect. Sistemul prin funcționalitățile sale descrie succint activitatea unui manager de proiect. Ajuta la menținerea comunicării între membrii firmei, intre managerul de proiect și persoanele care lucrează la un anumit proiect dar și cu clienții firmei. De asemenea find un sistem găzduit de spațiul online ajuta la stocarea unui volum mai mare de date, vizibile sau nu în funcție de dorința programatorului respectiv a administratorului.

Activitatea unui manager de proiect este una destul de elaborioasa. El este responsabil cu crearea unei echipe care trebuie să funcționeze într-un mod eficient, pentru a realiza cerințele clientului. El monitorizează dezvoltarea proiectului de la primul moment (planul inițial), până la ultimul minut al proiectului în companie (predarea site-ului). Este responsabil cu managementul de risc (acesta poate fi implementat și pus în practică, în condiții de risc specificate în contract) .

Managerul de proiect coordonează munca în echipă, comunica direct cu clientul și obține necesarul de informații pentru atingerea unui scop comun ( un site bine făcut după nevoile clientului).

Managerul, ca persoană care gestionează resursele materiale, financiare și umane ale unei organizații își asumă funcții specifice: planificare, organizare, comandă, coordonare și control. Exercitarea fiecăreia din aceste funcții presupune comunicarea cu ceilalți membrii ai organizației și cu persoane, grupuri sociale și instituții exterioare organizației. Bunul mers al întregii organizații, supraviețuirea ei în mediul social, depind de modul în care managerul gestionează o a patra resursă, de natură subtilă – informația. De fapt circulația informației -comunicarea – este cea care leagă între ele celelalte resurse. Prin activitatea sa, managerul stabilește structurile și imprimă stilul de comunicare, își consolidează puterea. Managerul există ca putere reală în organizație și își îndeplinește funcțiile comunicând.

Scopurile comunicării manageriale sunt strâns legate de obiectivele generale ale organizației: informare, comandă și instruire, influențare și convingere, îndrumare și sfătuire, integrare și menținere. Managerul face să circule informația utilă atingerii acestor obiective, coordonează sursele intermediare de comunicare, face să ajungă informațiile utile la timpul potrivit și la persoana potrivită, folosește informația pentru a face clare scopurile organizației pentru angajați, pentru a-i cointeresa și a le crea satisfacția atingerii scopurilor.

CAPITOLUL 4

Proiectarea sistemului

Realizarea sistemului presupune modelarea situației reale și utilizarea modelului într-un mediu controlat [http3]. Modelul reprezintă o reprezentare bazată pe relații, iar utilizarea lui constă într-o înțelegere mai profundă a realității.

4.1. Diagrama cazurilor de utilizare

Există 2 module în acest proiect, care repartizează cazurile de utilizare în funcție de aplicația care este activă: poate fi vorba de aplicația de gestionare (modul admin), sau de aplicația de comunicare (modul utilizator).

Modulul Admin conține clasele pentru gestionarea proiectelor, membrilor firmei, clientilor, tichetelor mesajelor calendarului de evenimente, precum și gestionarea utilizatorilor și a abonaților.

Modulul Client conține clasele pentru vizualizarea proiectelor ( cu detaliile aferente) pe site, vizualizarea informațiilor despre profilul acestuia precum și modulul de trimitere a mesajelor si de comunicare cu managerul de proiect .

Datorită sistemului de securitate bazat pe user și parolă criptată, utilizatorii neautentificați au drepturi limitate.

Figura 1. Diagrama de cazuri de utilizare in cazul clientului

Figura 2. Diagrama de cazuri de utilizare in cazul adminului

4.2. Structura datelor

4.2.1. Modelul conceptual al datelor

Modelul conceptual al datelor (MCD) este un model realizat având în vedere doar realitatea obiectivă, el fiind independent de prelucrarea informatică [Ș.Crișcotă, 2003]. Realitatea este definită sub formă de enunțuri de unde se vor putea deduce entitățile, asociațiile etc. care vor constitui mai departe modelul conceptual al datelor.

Printre conceptele utilizate în MCD se află [C. Georgescu, 2008]:

entitatea – care reprezintă obiectul material sau imaterial cu o existență proprie și conformă cu necesitățile gestiunii întreprinderii;

asociația – este relația dintre entități;

legătura – reflectă relația între o entitate și o asociație și este caracterizată prin cardinalitatea să;

cardinalitatea – exprimă funcționalitatea și totalitatea sau parțialitatea unei relații.

Ținând cont de conceptele MCD-ului prezentate și de obiectivele pe care ni le-am propus spre a fi dezvoltate a rezultat un model conceptual care va fi prezentat în figură 3.

Figura 3. Modelul conceptual al datelor

4.2.2. Descrierea tabelelor

După cum se poate observa în cadrul figurii 4.1., modelul conceptual al datelor este format din opt entități și nouă asociații care au cardinalități diferite. În continuarea capitolului vor fi prezentate fiecare entitate și asociație a modelului, ordinea acestora fiind aleatoare.

Prima entitate pe care o vom prezenta în continuare este entitatea UTILIZATOR care va conține toate datele necesare pentru identificarea unui utilizator în cadrul aplicației. Aceasta entitate are mai multe proprietăți: id_utilizator care reține codul specific fiecărui utilizator, username va reține un nume sugestiv pentru conectarea unui utilizator, parola va conține parola de autentificare, email va reține adresa de email, nume și prenume vor reține numele respectiv prenumele reale ale utilizatorilor, companie va reține compania la care lucrează, adresa și oraș vor reține date referiotoare la adresa utilizatorului, telefon va reține numărul de telefon, nivel_acces va reține o valoare numerică respectiv 1 pentru client, 2 pentru membru al departamentului și 9 pentru administrator. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi id_utilizator.

Entitatea PROIECTE care va conține toate proiectele în prezent în cadrul unității.Aceasta entitate are cinci proprietăți: id_proiect care va codifica și va reține proiectul, atributul titlu va conține numele proiectului, data_început și data_finalizare vor conține data de început respectiv data de finalizare a proiectului, și atributul cost va conține costul aferent unui proiect. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi identificator id_proiect.

Entitatea TIP_PROIECTE care va conține tipurile proiectelor pe care unitatea le-a efectuat. Această entitate are trei proprietăți: id_tip_proiect reține tipul specific unui proiect, titlu va conține numele tipului de proiect, atributul descriere reține o scurtă descriere a tipului de proiect. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi identificator id_tip_proiect .

Entitatea TASKURI care va conține taskurile asignate.Aceasta entitate are șase proprietăți: id_task care va codifica și va reține taskul, atributul titlu va conține numele taskului, detalii va conține o scurtă descriere a taskului, data_creare și data_finalizare vor conține data de început respectiv data de finalizare a taskului și atributul status va reține cât din task s-a efectuat. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi identificator id_task..

Entitatea TICHETE care va conține tichetele trimise de către managerul de proiect fiecărui angajat din cadrul unității.Aceasta entitate are șase proprietăți: id_tichet care va codifica și va reține tichetul, atributul prioritate va conține nivelul de prioritate al acestuia fata de celelalte tichete existente, subiect și conținut vor conține mesajul tichetului, atributul data_creare va conține dată la care a fost inițiat, și atributul status va reține dacă tichetul mai este valabil sau a expirat, respectiv dacă este închis sau deschis. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi identificator id_tichet.

Entitatea MESAJE care va conține mesajele trimise intre managerul de proiect și clienții firmei.Aceasta entitate are următoarele proprietăți: id_mesaj care va codifica și va reține mesajul, atributele subiect și conținut vor conține mesajul trimis,

data_creare va conține dată la care mesajul a fost trimis. Deoarece fiecare entitate trebuie să aibă și un identificator, care va identifica în mod unic înregistrările, pentru această entitate va fi identificator id_mesaj.

După ce fiecare entitate a modelului a fost prezentată, în continuare vor fi prezentate asociațiile. Prima asociație pe care o vom descrie în continuare este asociația PARTICIPA_PROIECT care realizează relația dintre entitatea UTILIZATOR și entitatea PROIECTE. Între entitatea UTILIZATOR și asociația PARTICIPA_PROIECT există o legătură de cardinalitate de tipul unu la mulți, ceea ce înseamnă că un angajat participa la maxim n proiecte . Între asociația PARTICIPA_PROIECT și entitatea PROIECTE există o legătură de cardinalitate 1,n ceea ce înseamnă că la un singur proiect lucrează mai mulți angajați la un moment dat.

Asociația RĂSPUNS_TICHETE reprezintă relația dintre entitatea UTILIZATOR și entitatea TICHETE, iar între entitatea UTILIZATOR și asociație există o legătură de cardinalitate 1,n ceea ce înseamnă că un angajat poate primi mai multe tichete.

4.3. Structura programelor, module, algoritmi originali elaborați în cadrul lucrării

4.3.1 Structura programelor. Arhitectura aplicației

În principiu arhitectura aplicațiilor este structurata pe următoarele 3 nivele:

Figura 4. Arhitectura “Three-tier”

1.Baza de date

Serverul SQL. Acest nivel include logica aplicației ( răspunde la interogările aplicației, face prelucrări masive)

2. Serverul de aplicație

Asigura legătura între nivelul 3 (clientul) și nivelul 1 (serverul SQL) și realizează diverse prelucrări de date.

3. Interfața cu uilizatorul

Înglobează mai puțin logica aplicației și se limitează doar la validări și prelucrări minimale. O interfață utilizator este bine scrisă atunci când programul se comportă exact așa cum se așteaptă utilizatorii săi.

Fiecare dintre aceste trei nivele ale aplicației pot rula pe sisteme hard separate. Cea mai comună configurație este ca baza de date și serverul de aplicație să fie pe același server.

Aplicația a fost proiectată sub formă a 2 situri diferite, dar care au o bază de date comună. Diferntele majore apărute între cele două „ sub-aplicatii” sunt în mare măsură legate de aspect și de funcționalități diferite. În continuare voi discuta strict despre aspect, întrucât funcționalitățile au fost aduse în discuție în alt capitol al prezenței lucrări.

3.1.Proiectarea interfetei

3.1. Site de prezentare

Figura 5. Pagina de start din situl de prezentare

Atât că interfața, cât și ca programare site-ul este alcătuit dintr-un header ce conține logo, meniu principal cu cele mai importante secțiuni din site și meniul secundar care conține butoanele de logare, respectiv vizualizare mesaje dar și meniul pentru tichete taskuri și proiecte.

3.2. Structura

Schema sitului arată o structură simplă, ergonomică și fluentă. Aplicația își păstrează structura indiferent de elementul de meniu activ.

Strunctura sitului se poate observa în imaginea de mai jos :

Figura 6. Structura paginii de start din situl de prezentare

Figura 7. Structura paginii de administrare a proiectelor

3.3. Culori

Pentru acesta parte a aplicației am ales tonuri neutre de gri, care nu obosesc ochiul. Pentru contrast, am decis să folosesc o nuanța de albastru. Culorile nu sunt foarte îndrăznețe, pentru că estimăm că utilizatorii sitului apreciază bunul gust și eleganța.

3.4. Dinamism

Deasemenea scopul aplicației este să fie utilizat și de către persoane care nu au pregătire în domeniul IT. De accea elemente care ascund text, formulare cu auto-sugestii, meniuri dinamice, sunt toate elemente noi, care aduc prospețime unui asemenea site.

Dinamismul, mișcarea este sugerată de elementele mobile ale sitului, folosite

cu limitare, pentru a nu deranja ochiul vizitatorului.

3.5. Interacțiune cu utilizatorul

Aplicația interacționează cu utilizatorul. Acesta, poate, pe lângă o navigare clasică, să comunice. Utilizatorul își poate exprima opinii, poate nota, poate împarte mai departe preferințele sale. Butoanele de acțiuni au în tot situl același format( schema și culoare), tocmai pentru a sugera utilizatorului locul unde acesta poate interveni pe site.

Scopul principal al aplicației este de a oferi utilizatorului un mediu profesionist pentru gestiunea proiectelor. Gestiune înseamnă 4 operații:

creeare

editare

vizualizare

ștergere

Pentru orice element, aceste 4 operații sunt posibile. De acea, am încercat să păstrez aceiași linie în construirea formularelor de creare și editare

Afișarea elementelor, se face în aproape toate cazurile sub formă de tabel, cu coloane sortabile.

4.3.3. Functii folosite in cadrul lucrarii

1. Functia de conectarea la baza de date

private function connect_db($server, $user, $pass)

{

return mysql_connect($server, $user, $pass);

}

2. Functia de adaugare a unui element in baza de date

public function insert($table = null, $data)

{ if ($table === null or empty($data) or !is_array($data)) {

$this->error("Invalid array for table: <b>".$table."</b>.");

return false;

}

$q = "INSERT INTO `" . $table . "` "; //q reprezinta interogarea

$v = ''; //v reprezinta valoarea

$k = ''; //k reprezinta cheia, respectiv id-ul

foreach ($data as $key => $val) :

$k .= "`$key`, ";

if (strtolower($val) == 'null')

$v .= "NULL, ";

elseif (strtolower($val) == 'now()')

$v .= "NOW(), ";

else

$v .= "'" . $this->escape($val) . "', ";

endforeach;

$q .= "(" . rtrim($k, ', ') . ") VALUES (" . rtrim($v, ', ') . ");";

if ($this->query($q)) {

return $this->insertid();

} else

return false;

}

3. Functia de filtrare

function sanitize($string, $trim = false, $int = false, $str = false)

{ $string = filter_var($string, FILTER_SANITIZE_STRING);

$string = trim($string);

$string = stripslashes($string);

$string = strip_tags($string);

$string = str_replace(array('‘', '’', '“', '”'), array("'", "'", '"', '"'), $string);

if ($trim)

$string = substr($string, 0, $trim);

if ($int)

$string = preg_replace("/[^0-9\s]/", "", $string);

if ($str)

$string = preg_replace("/[^a-zA-Z\s]/", "", $string);

return $string; }

CAPITOLUL 5

Implementarea sistemului informatic

5. 1. Arhitectura client-server

Modelul client-server este o structură sau arhitectură de aplicație distribuită care partajează procesarea între furnizorii de servicii numiți servere și elementele care solicită servicii, numite clienți.

Clienții și serverele comunică printr-o rețea de calculatoare, de obicei prin Internet, având suporturi hardware diferite, dar pot rula și pe același sistem fizic. Un server (fizic) rulează unul sau mai multe programe server, care partajează resursele existente cu clienții. Clientul nu partajează niciuna dintre resursele proprii, ci apelează la resursele serverului prin funcțiile server.

Clienții inițiază comunicația cu serverele și așteaptă mesajele acestora. Pentru menținerea legăturii între cei doi, indiferent de pauzele care intervin, se folosește conceptul de sesiune, care de obicei este limitată în timp.

Figura 8 – Comunicare prin internet intre clienti si server

Protocoalele de aplicație principale, cum ar fi HTTP, SMTP, Telnet, și DNS folosesc modelul client- server. Interacțiunea dintre client și server este adesea descrisă folosind diagrame de secvența. Tipurile de clienți includ browserele, clienții de e-mail, clienții chat online. Tipurile de servere includ servere web, servere FTP, servere de aplicații, servere de baze de date, servere de nume, servere de mail, servere de fișiere, servere de imprimare, și serverele terminale. Cele mai multe servicii web sunt, de asemenea, tipuri de servere.

5.2. Tehnologii folosite

În acest capitol sunt enumerate și prezentate pe scurt cele mai importante caracteristici ale tehnologiilor și instrumentelor care au contribuit mai mult sau mai puțin la realizarea sistemului.

5.2.1 Php

PHP este un limbaj de programare folosit inițial pentru a produce pagini web dinamice. Acesta se folosește în principal înglobat în codul HTML, dar începând de la versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI) permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare.

Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici:

Familiaritatea: sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;

Simplitatea: sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;

Eficiența: PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;

Securitate: PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitate: fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existențe: Apache, IIS, Zeus etc;

Gratuitate: este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.

5.2.2 MySql

O bază de date este un ansamblu unitar de date, structurate, corelate logic între ele și memorate împreună cu descrierea formală a structurii lor și a legăturilor logice dintre ele, a cărui gestionare este realizată de un sistem software unitar și specializat, numit sistem de gestiune a bazei de date.

Avantajele utilizării MySQL

Viteza sa de acces și dimensiunile sale reduse o face ideală pentru website-uri. La toate acestea se adaugă și faptul că este open-source aceasta însemnând că este gratuit.

Este rapid: Scopul principal al oamenilor care au dezvoltat MySQL a fost viteza.

Este ieftin: MySQL este gratuit sub licența open-source GPL și taxa pentru o licență comercială este rezonabilă.

Este ușor de utilizat: Se poate construi și interacționa cu o bază de date MySQL folosind câteva afirmații simple, în limbaj SQL, care este limbajul standard pentru comunicarea cu RDBMS.

Poate rula pe mai multe sisteme de operare: MySQL rulează pe mai multe sisteme de operare (Windows, Linux, Mac OS, cele mai multe versiuni de Unix-inclusiv Solaris și AIX, FreeBSD, OS/2, IRIX și altele.

Se oferă suport tehnic pe scară largă: Un grup mare de utilizatori asigură suport gratuit în cadrul diferitelor forum-uri. Dezvoltatorii MySQL oferă suport, de asemenea, prin intermediul poștei electronice.

Este sigur: Sistemul flexibil de autorizație al MySQL-ului permite anumitor utilizatori sau grupurilor de utilizatori anumite privilegii (cum ar fi privilegiul de a crea o bază de date sau ștergerea de date). Parolele sunt encrypted language, care este limbajul standard pentru comunicarea cu RDBMS.

Modul de funcționare MySQL

Sistemul de gestiune a bazelor de date MySQL este format din server-ul de MySQL, mai multe programe utilitare care ajută la administrarea bazei de date MySQL și unele programe de sprijin de care are nevoie server-ul MySQL.

Inima sistemului este serverul MySQL și este administratorul sistemului de baze de date. El se ocupă de toate instrucțiunile bazei de datePentru crearea unei baze de date, serverul MySQL, creează un subdirector în directorul de date, cu numele bazei de date și atașează fișierele necesare cu formatul solicitat în subdirectorul acesta. În același mod, pentru a adăuga datele la baza de date, se trimite un mesaj server-ului MySQL, oferindu-i-se datele și locul unde trebuie atașate acestea.

Înainte de a se putea trece la instrucțiuni adresate server-ului MySQL, acesta trebuie să ruleze la acel moment dat. MySQL este, de obicei, setat astfel încât acesta să înceapă să ruleze odată cu sistemul de calcul și să continue să ruleze tot timpul. Cu toate acestea, nu este necesar să înceapă să ruleze odată cu pornirea computerul [J. Valade, 2009].

Figura 9. Cele patru etape de prelucrare a unui script PHP

5.2.3 Apache

Încă de la începutul dezvoltării web-ului, Centrul Național pentru Aplicații Super Computerizate (NCSA) a creat un server Web care avea să devină numărul unu încă din anul 1995. Original derivat din codul serverului web NCSA și o mulțime de alte programe, serverul Apache a ajuns să fie unul dintre cele mai utilizate servere de Web. Prima versiune Apache (0.6.2) a fost distribuită spre a fi utilizată în aprilie 1995.

Caracteristici generale Apache

Suportă ultima variantă de HTTP. Apache fiind unul dintre primele servere web care au integrat protocolul HTTP 1.1.

Simplu, dar puternic, bazat pe fișiere de configurare serverul Apache nu vine cu o interfața grafică pentru administratori. Acesta este dotat cu un singur fișier de configurare numit primar httpd. Conf care se poate utiliza pentru a configura Apache.

Oferă sport pentru găzduire virtuală. Apache este de asemenea unul dintre primele servere Web care suportă ambele metode de găzduire atât cea bazată pe IP cât și cea virtuală.

Oferă suport pentru autentificare HTTP. Autentificarea de bază în mediul Web este suportată de Apache, acesta fiind gata pentru a primi mesaje de bază pentru autentificare, care reprezintă cea mai utilizată metoda implementată de browser-ele Web. Apache poate implementa o autentificare de bază, folosind fie fișiere standard pentru parole, apeluri SQL sau programele de autentificare externe.

Oferă suport pentru programare în limbaj PHP. Acest limbaj de programare a devenit foarte folosit iar Apache oferă un suport excelent pentru PHP folosind modul mod_php.

Conține un server Proxy integrat. Apache poate fi transformat într-un server Proxy de tip cache.

Oferă suport pentru Server-Side Includes (SSI): Apache distribuie un set de SSI care îi oferă o mare flexibilitate dezvoltatorului site-ului Web.

Suport pentru Socket Layer securizată (SSL): Puteți crea cu ușurință un Web SSL site folosind OpenSSL și modul mod_ssl pentru Apache.

Avantajele utilizării Apache

Apache este un server web extrem de configurabil având un design modular. Capacitățile serverului Web Apache sunt foarte ușor de extins. Oricine are noțiuni de programare C sau Pearl poate crea module care să aducă noi funcții pentru Apache. Acest lucru înseamnă că există o grămadă de module Apache disponibile pentru a fi utilizate.

Apache este o tehnologie gratuită, open source. Faptul că este gratuit nu este la fel de important ca faptul că este open source.

Apache lucrează foarte bine cu Pearl, PHP, și alte limbaje de programare. Majoritatea aplicațiilor Web încă sunt create cu ajutorul limbajelor de programare.

Apache rulează pe Linux și alte sisteme Unix. Linux este folosit în special în aria de calcul a întreprinderilor. Linux și Apache merg mână în mână în lumea întreprinderilor din ziua de azi.

Alte sisteme Unix cum ar fi FreeBSD, Solaris și noul Mac OS X, de asemenea, joacă un rol important în extinderea orizontului utilizării Apache-ului.

Apache de asemenea rulează pe Windows. Deși Apache va rula mult mai bine pe platforma Windows cu versiunea 2.0. Apache a lansat deja pe piața Windows versiunea 1.3.X. [M. Kabir, 2002].

5.2.4 Html

HTML a apărut pentru prima dată la începutul anilor 1990 fiind bazat pe Standard Markup Language (SGML). A fost creat special pentru realizarea documentelor ce aveau să fie utilizate de către World Wide Web. Încă de la începuturile sale, HTML a adus multe schimbări și îmbunătățiri. Noi caracteristici au fost adăugate, în timp ce alte caracteristici au devenit depășite și eliminate din caietul de sarcini.

HTML este alcătuit dintr-un set de markeri codați, numiți etichete care înconjoară și diferențiază biții de text, indicând funcția și scopul textului acestor etichete "marca". Tag-urile sunt încorporate direct într-un document de text simplu în cazul în care acesta poate fi interpretat de către de software-ul calculatorului.

Este un open source standard, nu este deținut sau controlat de către nici o companie sau individ. Nu există nici o licență pentru cumpărarea software-ul sau pentru specializarea necesară pentru propriile documente HTML. Toată lumea este liberă de a crea și publică pagini Web reprezentând o deschidere foarte benefică cea ce face Web-ul așa puternic. HTML este realizat astfel încât să poată permite realizarea schimbului de informații într-un mod liber și ușor.

XHTML, spre deosebire de XML, oferă un set finit de etichete predefinite. XHTML este similar cu HTML 4.01, cu doar câteva reguli mai stricte a modului în care trebuie să fie scris [J. Lowery, 2010].

5.2.5 C.S.S

Termenul CSS (Cascading Style Sheets) semnifică “foi în stilul cascadă”. Această tehnologie asigură proiectanților de pagini web posibilitatea de a crea un stil pentru fiecare tag HTML utilizat la un moment dat și dă posibilitatea acestora să aplice ulterior implicit acest stil în toate paginile site-ului pentru elementul de pagina respectiv.

Posibilitatea aplicării stilurilor reprezintă o importantă extindere a posibilităților de design, evitând astfel folosirea de fișiere grafice mari ce determină încetinirea încărcării păgânilor și manipularea greoaie a acestora.

Utilizând stilurile CSS cititorii vor putea vizualiza textul din pagină exact așa cum a fost proiectat. Textul și proprietățile lui, inițial controlate de browsere, se reîntorc apoi la autor.

Standardul CSS permite specificarea și referirea informațiilor cu privire la stil în mai multe moduri. Stilurile se pot specifica în interiorul fiecărui tag HTML, în cadrul secțiunii HEAD a documentelor HTML sau într-un fișier extern cu extensia '. CSS'. În interiorul aceluiași document HTML pot fi referite mai multe fișiere CSS externe.

Stilul reprezintă o colecție de atribute ale textului și ale modului de aranjare a documentului ce pot fi aplicate în mod selectiv unui document sau doar unei părți din acesta. Atributele pot fi tipul de font, mărimea și grosimea acestuia, marginile, paragrafele și orice altceva ce influențează aspectul textului în pagină. Gruparea atributelor în stiluri permite aplicarea aceleiași colecții de atribute în diferite părți.

Ca orice limbaj informatic CSS-ul are și el o istorie în spate concretizata în 4 versiuni (1, 2, 2.1 și cea actuală 3). A fost inventat pentru a separa aspectul paginilor web de conținutul lor. Înainte de apariția lui toate stilizările erau implementate în HTML, lucrur care ducea la o complexitate ridicată, lizibilitate redusă și multă redundantă. Cu toate că programatorul își dorea ca toate tiltlurile să aibe același font, era nevoit să specifice acest lucru de fiecare dată când crea un titlu. Iar când erau necesare modificări, trebuia iarăși să parcurgă întreg documentul și de a face modificări în toate locurile. Folosind CSS toate regulile se găsesc de obicei într-un singur document (există desigur și excepții) și modificările se fac cu un efort mult mai mic. Un alt avanatj este prezentat de faptul că anumite reguli pot fi folosite la mai multe elemente prin simpla înlănțuire a elementelor care se doresc a fi formatate.

Toate îmbunătățirile care s-au făcut la CSS în ultimii ani precum și accentul care se pune pe acest limbaj au ca scop crearea de site-uri de calitate, SEO friendly care să apară sus inmotoarele de căutare. Pentru că acest lucru să fie posibil luați în considerare mai mulți factori, o parte din aceștia implicând direct CSS-ul. O pagină de calitate are un timp de încărcare foarte scurt iar conținutul paginii este bine structurat, clar și ușor de parcurs de roboții motoarelor de căutare. Acesta este scopul CSS-ului, stilistul internetului.

5.2.6 JavaScript

JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit și pentru acesul la obiecte încastrate (embedded objects) în alte aplicații.

Este creat de Netscape și apare pentru prima dată în Navigator 2.0. Are două forme primare, și anume:

• partea interpretată de server (serverside), rezervată exclusiv produselor Netscape LiveWire,

• partea interpretată de client (clientside), accesibilă utilizatorilor Web prin intermediul paginilor HTML

JavaScript organizează toate elementele unei pagini Web într-o ierarhie, fiecare element fiind văzut că un obiect, iar obiectul având proprietăți și metode. La baza limbajului stau trei blocuri funcționale, și anume: valori (tipuri de date suportate de JavaScript), obiecte (colecții de proprietăți care pot fi apelate cu un singur nume), funcții (proceduri care pot fi executate de o aplicație; funcțiile asociate unui obiect se numesc metode).

JavaScript este un limbaj de programare mult mai complex decât CSS-ul, care se învața mai greu, de aceea dezvoltarea unor scripturi în JavaScrip este mai complicată și mai scumpă.

Personal am creat și utilizat javascript pentru a oferi dinamism și mișcare paginilor web, dar și pentru transmiterea parametrilor, în anumite formulare.

5.2.7 AJAX

Ajax prescurtare pentru Asynchronous JavaScript and XML, este o tehnică de programare pentru crearea de aplicații web interactive. Intenția este să facă paginile web să devină mai rapide și deci mai acceptate, prin schimbul în fundal al unor cantități mici de date cu serverul, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului. Aceasta are ca scop creșterea interactivității, vitezei și ușurinței în utilizare a aplicațiilor web.

Ajax nu este o tehnologie în sine. Termenul este folosit pentru definirea aplicațiilor web ce folosesc un ansamblu de tehnologii:

HTML sau XHTML pentru structura semantică a informațiilor;

CSS pentru prezentarea informațiilor;

Javascript pentru interactivitate, pentru procesarea informațiilor prezentate;

Obiectul XMLHttpRequest pentru schimbul și manipularea informațiilor într-o manieră asincronă cu server-ul web;

XML este folosit de obicei pentru transferarea datelor între server și client, deși orice format funcționează, inclusiv HTML preformatat, text simplu etc.

Avantaje

Datorită faptului că generează local pagina HTML și downloadeaza doar scriptul JavaScript și datele, paginile web Ajax pot părea că se încarcă relativ repede. De asemenea, mulțumită funcționalității "load on demand" a conținutului, unele pagini web încarcă stub-uri ale event handler-elor, iar apoi rulează funcțiile "on the fly". Această tehnică reduce considerabil lățimea de banda folosită pentru aplicații web. În plus, clientul de Ajax împarte workload-ul cu serverul, astfel încât încărcarea acestuia din urmă este redusă.

Un alt beneficiu de ordin mai puțin pragmatic este ca Ajax tinde să încurajeze programatorii să separe clar metodele, funcțiile și format-urile folosite în diferite aspecte ale transferului de informații pe web

Dezavantaje

Pagina încărcată dinamic nu apare în history-ul browser-ului, astfel încât butonul Back nu se va comporta după așteptări. S-au propus variate soluții la această problemă, precum folosirea de IFRAME-uri care să înregistreze în history schimbările.

O altă problemă este ca udate-ul paginii dinamice face dificilă folosirea de bookmark-uri. O soluție propusă la această problemă este folosirea URL-ului, mai specific a acelei părți ce determină porțiunea dinamică, pentru a permite întoarcerea la starea inițială a paginii.

5.2.8. JQUERY

JQuery este o platformă de dezvoltare JavaScript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și cereri tip AJAX.

JQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente, și să respecte filosofia"Unobtrusive JavaScript". Biblioteca a fost lansată în 2006 de către John Resig.

Am folosit funcții jquery din librarila Jquery-min.js, care se găsește gratuit pe internet. Modulele în care am implementat funcții jquery sunt cele de ligthbox, de ascundere sau afișare a unor texte, modulul care afișează un calendar în dreptul formularului de introducere a datei etc

5.4. Instrumente utilizate

Acest ultim subcapitol descrie cele mai importante instrumente uitilizate în conceperea sistemului de gestiune și comunicare care preponderent este implementat în limbajul PHP.

5.4.1. Macromedia Dreamweaver

Adobe Dreamweaver este un program profesional pentru dezvoltarea website-urilor, fiind utilizat atât pentru crearea de pagini web standard cât și pentru crearea de aplicații dinamice.

În ultimul timp Dreamweaver s-a reorientat către limbajele de programare pentru standardele Web. În plus față de crearea paginilor standard HTML consolidate cu ajutorul CSS-urilor, este de asemenea potrivit pentru a codifica o gamă largă de formate Web, inclusiv JavaScript, XML și ActionScript chiar și acele metode care incorporează web 2.0 cum ar fi Ajax

Dreamweaver este cu adevărat un instrument proiectat de dezvoltatori pentru Web. A fost proiectat încă de la început de către dezvoltatorii săi pentru a lucra profesional în mediul Web, pentru a accelera construirea site-urilor și întreținerea acestora. Deoarece dezvoltatorii Web rareori folosesc doar un singur program, Dreamweaver poate integra fără probleme programe importante mass-media precum: Adobe Photoshop, Adobe Fireworks și Adobe Flash.

Datorită faptului că lumea este într-o continuă dezvoltare, însăși arhitectura extensibilă a Dreamweaver-ului se orientează spre customizarea unei a treia generații de modele de servere. Mai mult decât atât, Dreamweaver poate rezolva o problemă a incompatibilității dintre comenzile generate în cod și afișarea rezultatelor în browser-ul web. Include specificații pentru validarea limbajului HTML astfel încât să se poată vizualiza codul existent sau codul prelucrat într-un anumit browser.

Panoul de comandă are rolul de a simplifica procesul de activare și întreținere a site-urilor Web de mari dimensiuni. Multitudinea de comenzi încorporate în Dreamweaver permite dezvoltatorilor Web să automatizeze cele mai dificile pagini Web create de către aceștia permițându-le totodată să introducă și să personalizeze frecvent propriul cod într-un mod cât mai rapid și accesibil [D. Schultz, C. Cook, 2008].

5.4.2. Firebug

Firebug este o extensie pentru Firefox și Chrome indispensabila oricărui programator web. Printre facilitați se număra vizualizarea codului sursa al paginii, vizualizarea regulilor CSS în ordniea moștenirii, editarea virtuală a regulilor CSS și parțial a codului sursa împreună cu vizualizare live în browser a modificărilor, executare de instrucțiuni JavaScript, etc.

Firebug este gratuit și licențiat sub licența BSD. Firebug a fost scris inițial în ianuarie 2006 de Joe Hewitt, unul dintre creatorii originali Firefox. Grupul de lucru Firebug supraveghează dezvoltarea open source și extinderea Firebug. Acesta are două implementări majore: O extensie (add-on) pentru Mozilla Firefox și o punere în aplicare bookmarklet numit Firebug Lițe. O versiune cross-browser-ul este în dezvoltare. În prezent, Firebug are peste 3 milioane de utilizatori activi zilnic.

În plus față de depanarea paginii web, Firebug este un instrument util pentru testarea de securitate web și de analiză de performanță a paginii web.

5.4.3. PhpMyAdmin

PhpMyAdmin este un instrument software gratuit, scris în PHP, destinat să se ocupe de administrarea MySQL pe World Wide Web. PhpMyAdmin suportă o gamă largă de operațiuni cu MySQL. Operațiunile cel mai frecvent utilizate sunt suportate de către interfața de utilizator (gestionarea bazelor de date, tabele, câmpuri, relații, indici, utilizatori, permisiuni, etc), în timp ce încă mai au capacitatea de a executa direct orice declarație SQL.

CAPITOLUL 6

Testare si evaluare

6.1. Testarea sistemului

În cadrul proiectului am dezvoltat un software care permite utilizatorilor să gestioneze în mod eficient activitatea desfășurată într-o firmă care se ocupa cu realizarea de proiecte din domeniul IT. Cu puțin efort am ajuns să produc un număr mare de linii de cod pe zi. Între aceste linii sunt ascunse erori care au că rezultat, buguri sau diminuarea calității produsului. Este aproape imposibil ca un programator să dezvolte sute de linii de cod fără a comite cea mai mică greșeală. Este știut faptul că un software bug-free nu există. Totuși, există o modalitate de a elimina cât mai multe bug-uri posibil: Proiectarea, crearea și rularea testelor pe întreaga aplicație.

În următorul caz, vom vedea de ce nu trebuie să neglijăm testele, și cum m-am gândit să le creez și să le execut.

6.1.2. Nevoia testării

Când o echipă (sau un om în cazul de față) lucrează la un proiect, se remarcă tendința de a „uita” să creeze și să efectueze teste. Absența testelor poate avea consecințe nefaste atât asupra bugetului, cât și asupra calendarului.

Testarea unei aplicații asigură clientul că produsul răspunde exact cerințelor. Testele definite și executate servesc ca dovadă, pentru atestarea funcționării corecte și pentru respectarea caietului de sarcini. În informatică, dezvoltatorii au tendința de a nu acorda importanța cuvenită testelor. În industria constructoare de mașini sau avioane testele sunt vitale pentru demostrarea că un model este 100% în conformitate cu regulile de securitate.

În informatică este la fel de important că testele să fie făcute cu seriozitate. O aplicație care nu este corect testată, va pune probleme și pe viitor. Fiecare bug descoperit, va fi raportat și va necesita timp pentru reparație. Eliminarea bugurilor în producție costă de n ori mai mult decât eliminatea bugurilor în fază de dezvoltare.

De asemenea, dosarul de testare are rolul de furniza o documentație care poate fi folosită la mentenanța aplicației.

6.1.3. Tipuri de teste

Există cinci familii majore de testare:

1. Testele de instalare

Testele de instalare aduc asigurări că aplicația va putea fi instalată și folosită pe diferite platforme, fără a fi întâlnite probleme.

2. Testele funcționale

Sunt destinate pentru a verifica dacă aplicația răspunde corect la cererile clientului, și dacă aceasta răspunde fără incidente. Aceste teste vor fi definite și create după studierea caietului de sarcini. De asemenea, tot din caietul de sarcini se va testa prezența sau absența funcționalităților aplicației.

Dacă sunt constatate erori, este imperativ ca acestea să fie corectate într-un timp cât mai scurt.

3. Testele de integrare

Au rolul de a testa dacă acele componente care funcționează corect în mod individual, funcționează corect și asamblate. Pentru aceste teste, nu trebuie să considerăm logica următoare că fiind corectă: „Dacă funcția A funcționează bine, și funcția B funcționează bine, atunci A și B funcționează corect împreună”. Acesta logică este falsă.

4. Teste de regresie

Au rolul de a testa dacă o modificare în program a afectat în mod negativ o altă componentă. Nu este neobișnuit că adăugarea de noi functonalitati să producă disfuncții ale modificărilor anterioare. Din aceste motive programatorii evită să modifice codul în ultimul moment. Adăugarea de cod, fără testare, poate duce la blocări ale aplicației.

5. Teste de presiune

Aceste teste verifică comportamentul aplicației în condiții de stres. În general în caietul de sarcini se specifică numărul de utilizatori și timpul de răspuns așteptat.

Acesta este motivul pentru care este util detectarea unei astfel de probleme de performanță înainte de punerea în producție pentru a nu pierde un număr mare de utilizatori și redibilitate.

6.1.4. Metode de testare

În funcție de cerința, se poate aplica o metodă de testare. Avem la dispoziție două metode de testare:

• manuală

• automată

În cadrul acestui proiect m-am concentart asupra testelor funcționale, executate manual. Procedura cea mai riguroasă pentru crearea unor teste corecte, constă în crearea planului de teste, a suitelor de teste și a cazurilor de teste.

1. Cazul de test

Conține o listă de acțiuni de efectuat. Acestea sunt „step” -uri sau etape. Fiecare etapă contiene două informații:

• acțiunea efectuată

• rezultatul așteptat

Cazul de test are deci rolul de a descrie ce parte din program trebuie testată și cum anume. În a doua etapă, cazul de test descrie rezultatele așteptate la execuția unui test.

2. Suita de teste

Este asemănată cu un folder. Ea poate conține un ansamblu de suite de test și de cazuri de test. Odată definite ansamblurile de teste, pentru fiecare componentă, putem creea planuri de testare.

3. Planuri de testare

Un plan de testare grupează ansablurile de suite de teste care trebuiesc executate. Execuția poate fi manuală sau automată. La execuția unui test, testerul va citi acțiunile de executat și apoi va verifica dacă programul răspunde conform așteptărilor. În cazul fiecărui test se specifică dacă acesta a fost efectuat cu succes sau nu. În cazul unui eșec, testerul va semnala dacă incidentul este minor, major sau blocant. Incidentele majore și blocante sunt reparate cât mai repede posibil.

În cadurul etapei de testare, suitele de test se repede de mai multe ori, pentru a se verifica corectitudinea răspunsurilor și după corecția bugurilor.

6.1.5. Ustensile folosite

Pentru scrierea și execuția planurilor de teste nu este necesar un program informatic. O metodă neporfesionista ar fi un pix și o hârtie, pentru scrierea testelor la mână. Evident, acesta metodă nu este nici performanță, nici competentă. Am căutat și găsit un produs gratuit, open-source și foarte ușor de utilizat.

1. TestLink

TestLink este o aplicație PHP, care permite gestionarea tuturor tipurilor de teste, de cazuri de test, până la planuri și etape de testare. Faptul că este open-source este un avantaj deloc neglijabil: este gratuit. Aplicația se instalează pe un server, și poate fi accesată de oriunde. Pe lângă funcții de create, modificare, ștergere a testelor, aplicația furnizează și

Un export al cazurilor de test în format Word, Excel etc. Acesta este un avantaj

Major, pentru că în acest fel se crează și o documentație profesionistă a dosarului de testare.

6.1.6. Teste unitare

Testele unitare sunt o modelitate de asigurare a unui comportament corect, a unei părți bine determinate a unui program (modul sau unitate). Testele sunt scrise pentru a verifica conformitatea între rezultatul unei funcții și valoarea așteptată. Testul definește un criteriu de oprire, și specifică rezultatul oepratiei (succes sau eșec). Testul permite verificare relației între intrare și ieșire.

Pentru efectuarea testelor unitare am folosit Junit, un framework de teste unitare, pentru limbajul de programare Java. Bliblioteca a fost creată de Kent Bleck și Erich Gamma.

1. Strategia de testare

Înainte de scrierea testelor este preferabilă stabilirea unor detalii. Testele vor fi clasificate după importantă și frecvența de utilizare, astfel:

În continuare voi împărți diferitele tipuri de teste în funcție de coeficientul de utilizare.

• Testele cu coeficient 1 sunt critice: Un număr mare de teste este necesar pentru asigurarea unei bune funcționari în toate circumstanțele.

• Testele cu coeficient 2 sunt importante: Nefuncționarea este neplăcută, dar nu produce situații blocante.

• Testele cu coeficient 3: Nefuncționarea acestora nu deranjează utilizatorul

• Testele cu coeficient 4 nu sunt deloc importante.

CAPITOLUL 7

Concluzii

Relațiile de lungă durată cu clienții reprezintă de cele mai multe ori, pentru majoritatea firmelor și organizațiilor un atuu foarte important, poziționând firmă în top datorită avantajelor competitive și profitabilității obținute. Cele mai noi strategii CRM sunt implementate cu ajutorul aplicațiilor IT care pot oferi posibilitatea unei firme de a-și adapta strategia din mers.

În prezent, furnizorii au devenit din ce în ce mai eficienți în oferirea de produse și servicii iar piața a devenit din ce în ce mai consolidată. În aceste condiții diferențierea propriei oferte față de oferta rivală devine din ce în ce mai greu de realizat. Odată cu creșterea calității bunurilor și serviciilor și așteptările și exigențele cliențiilor cresc exponențial.

Dacă un client are posibilitatea să își modifice oricând furnizorul atunci este din ce în ce mai greu pentru o companie să-i păstreze loialitatea. Deci este foarte important pentru o organizație să dețină un sistem informatic modern prin care să scurteze timpul de reacție la solicitările cliențiilor săi.

Odată cu trecerea timpului majoritatea firmelor își vor da seama că tehnologia informației este în continuă dezvoltare și că fără implementarea unui sistem informatic performant, nu vor putea supraviețui pe piața economică.

Obiectivul principal al acestei lucrării este acela de a crea un sistem de management al relației cu clienții capabil să răspundă prompt la solicitările clienților, oferind astfel suport și calitate serviciilor furnizate. Sistemul de față face parte din categoria sistemelor CRM de tip operațional ce interacționează cu aplicațiile din back-office pentru a pune produsele și serviciile oferite în mișcare. Scopul sistemului este de a automatiza sarciniile zilnice ale compartimentelor de operațiuni sau ale echipelor de vânzări. Promovează interacțiuni prompte și eficiente cu clienții.

Sistemul este gândit și proiectat pentru a furniza acces securizat pentru două categorii de utilizatori: administratorul sistemului și clienții firmei. Partea de administrare destinată doar utilizatorilor autorizați (administratori) permite un management eficient și rapid al angajaților. Cea de-a doua parte este partea destinată clienților firmei, aceștia pot vizualiza și proiectele în lucru și pot comunica prin mesaje cu managerului de proiect.

În concluzie prin toate aceste caracteristici enumerate mai sus sistemul prezentat oferă unei firmei avantaje competiționale foarte important cum ar fi: reducerea costurilor, reducerea timpilor de producție, reducerea riscului în afaceri, ajuta la o mai bună gestionare a relației dinte membrii firmei creând un spațiu de lucru plăcut, și poate cel mai important aspect creșterea numărului de clienți satisfăcuți și creșterea nivelului de încredere al firmei.

CAPITOLUL 8

Bibliografie

CAPITOLUL 9

Anexe

9.1. Manual de utilizare

9.1. Introducere

Aplicația realizată și prezentată în continuare reprezintă un sistem informatic și are ca principal obiectiv proiectarea și dezvoltarea unui sistem de comunicare în cadrul unor grupuri de lucru. Acest sistem a fost implementat în scopul facilitării managementului relației cu clienții. În ceea ce privește utilizatorii sistemului, aceștia sunt de două tipuri: administratorul și clienții firmei. Accesarea aplicației de către utilizatori se realizează prin intermediul unui panou comun de logare. Diferența dintre tipurile de utilizatori constă în faptul că administratorul beneficiază de drepturi suplimentare de acces asupra sistemului dar și de o interfață complet diferită de cea a clienților.

Principalele facilități implementate și oferite de sistem sunt:

accesarea sistemului se poate face atât local cât și de la distanța de pe o adresă de Internet cunoscută de către utilizatorii sistemului;

o interfață prietenoasă pentru utilizatori;

eficientizarea muncii depuse de către angajații firmei, în principal a managerului de proiect;

se constituie un sprijin pentru firmă în procesul de luare a deciziilor.

9.2. Organizarea aplicației

Aplicația este structurata în 2 secțiuni. O secțiune pentru administrator și pentru membrii firmei și o secțiune pentru clienții firmei.

9.3. Funcționalități

9.3.1. Conectare

Accesarea aplicației se realizează prin panoul de acces care este disponibil ambelor tipuri de utilizatori ai sistemului. Panoul conține două câmpuri și anume: numele utilizatorului care se va conecta și respectiv parola. Pentru a se putea conecta utilizatorul trebuie ca ambele câmpuri să fie completate corect.

Figura10. Panoul de acces al aplicației

Sistemul este accesibil doar administratorului, angajațiilor și clienților firmei iar orice alt tip de utilizator nu are acces la aplicație. Acceastă securitate este realizată prin crearea, de către administrator, de conturi pentru angajați și clienți, iar numele de utilizator și parola sunt predefinite.

9.3.2. Secțiune administrator

Figura 11. Logarea în cadrul secțiunii de administrare

La completarea și validarea datelor, utilizatorul va întâlni pagina principală a aplicației.

Acesta pagină are aproximativ aceiași structură pentru majoritatea funcțiilor, după cum se poate observa din imaginea de mai jos:

Figura 12. Prezentarea generală a aplicației

Membrii departamentului

La accesarea opțiunii “Membrii departamentului” se ajunge la panoul pentru gestionarea angajaților unde administratorul poate adăuga angajați noi, îi modifica sau șterge.

Figura 13. Lista membrii firma

Adăugarea unui nou membru, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Adaugă membru”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul de angajați se va putea vizualiza noua adăugare.

Figura 14. Formular adăugare membrii firma

În cazul în cazul în care câmpurile username, parola, adresa email, nume și prenume nu au fost completate corespunzător se va afișsa un mesaj de eroare pentru atenționarea administratorului.

Figura 15. Mesaje eroare

Detaliile corespunzătoare fiecărui membru pot și editate sau șterse prin acțiunea butoanelor Editează (), respectiv Șterge ().

Clienții

La accesarea opțiunii “Clienți” se ajunge la panoul pentru gestionarea clienților unde administratorul poate adăuga clienți noi, îi poate modifica sau șterge. În plus dacă aveam un număr mare de clienți, pentru o bună gestionare am implementat un filtru de ordonare crescătoare sau descrescătoare în funcție de Firma/Companie, Nume, Prenume sau Email

.

Figura 16. Lista clienți

Adăugarea unui nou client, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Adaugă client”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul de clienți se va putea vizualiza noua adăugare.

Figura 17. Formular adăugare clienți

În cazul în cazul în care câmpurile username, parola, adresa email, nume și prenume nu au fost completate corespunzător se va afișsa un mesaj de eroare pentru atenționarea administratorului.

Figura 18. Mesaje eroare

Detaliile corespunzătoare fiecărui client pot și editate sau șterse prin acțiunea butoanelor Editează (), respectiv Șterge ().

Manager Proiecte

La accesarea opțiunii “Manager proiecte” și apoi a submeniului "Administrează proiecte" se ajunge la panoul pentru administrarea proiectelor unde administratorul poate adăuga proiecte noi, le poate vizualiza, modifica sau șterge. În plus dacă aveam un număr mare de clienți, pentru o bună gestionare am implementat un filtru de al proiectelor în funcție de numele clientului.

Figura 19. Lista proiecte

Adăugarea unui nou proiect, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Adaugă proiect”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul de proiecte se va putea vizualiza noua adăugare.

Figura 20. Formular adăugare proiecte

În cazul în cazul în care câmpurile nume proiect, nume client, tip proiect, cost proiect nu au fost completate corespunzător se va afișa un mesaj de eroare pentru atenționarea administratorului.

Figura 21. Mesaje eroare

Detaliile corespunzătoare fiecărui proiect pot fi vizualizate prin intermediul butonului Detalii proiect () editate sau șterse prin acțiunea butoanelor Editează (), respectiv Șterge ().

La accesarea opțiunii “Manager proiecte” și apoi a submeniului "Tipuri de proiecte" se ajunge la panoul pentru administrarea tipurilor de proiecte unde administratorul poate adăuga noi tipuri de proiecte, le poate modifica sau șterge.

Figura 22. Lista tipuri de proiecte

Adăugarea unui nou tip de proiect, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Adaugă tip”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul de tipuri de proiecte se va putea vizualiza noua adăugare.

Figura 23. Formular adăugare tip de proiecte

În cazul în cazul în care câmpul tip nu a fost completat corespunzător se va afișsa un mesaj de eroare pentru atenționarea administratorului.

Figura 24. Mesaje eroare

Detaliile corespunzătoare fiecărui tip de proiect pot fi editate sau șterse prin acțiunea butoanelor Editează (), respectiv Șterge ().

La accesarea opțiunii “Manager proiecte” și apoi a submeniului "Taskuri de proiecte" se ajunge la panoul pentru administrarea taskurilor corespunzătoare fiecărui proiect unde administratorul poate adăuga noi taskuri de proiecte, le poate modifica sau șterge. De asemenea pentru o mai bună gestionare am implementat un filtru de vizualizare a taskurilor în funcție de starea acestora dacă sunt în curs de finalizare sau finalizate.

Figura 25. Lista taskuri de proiecte

Adăugarea unui nou task de proiect, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Adaugă task”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul de tipuri de proiecte se va putea vizualiza noua adăugare.

Figura 26. Formular adaugare task de proiecte

În cazul în cazul în care câmpurile nume task si selectare proiect nu a fost completate corespunzător se va afișsa un mesaj de eroare pentru atenționarea administratorului.

Figura 27. Mesaje eroare

Detaliile corespunzatoare fiecarui task de proiect pot fi editate sau sterse prin actiunea butoanelor Editeaza (), respectiv Sterge ().

Calendar de evenimente

La accesarea opțiunii “Calendar” se ajunge la panoul unde se poate vizualiza calendarul evenimentelor, a taskurilor respectiv proiectelor.

Figura 28. Calendar evenimente

Suport tehnic

La accesarea opțiunii “Suport tehnic” se ajunge la panoul unde se pot vizualiza tichetele trimise angajaților. În cazul unui număr mare de tichete am implementat un filtru de sortare crescătoare sau descrescătoare al acestora în funcție de nume manager, numele clientului, prioritatea tichetului, starea tichetului și data creării tichetului.

Figura 29. Lista tichete

Prin actionare butonului Vizualizare ( ) putem vizualiza detaliile tichetului.

Figura 30. Detalii tichete

În plus putem răspunde mesajului trimis prin completarea formularului de mia jos și acționare butonului Răspunde.

Figura 31. Răspuns tichet

Mesaje

Meniul mesajelor se accesează prin acționarea butonului de mesaje () aflat în partea dreapta sus lângă nume.

Figura 32. Lista mesaje

Adăugarea unui nou mesaj, respectiv panoul pentru adăugarea acestuia este disponibilă la accesarea butonului “Compune mesaj nou”. În cazul în care câmpurile au fost completate corect se va afișa un mesaj de confirmare iar prin revenire la panoul mesaje se va putea vizualiza noua adăugare.

Figura 33. Formular adăugare mesaje

În cazul în cazul în care câmpurile către clientul și subiect mesaj nu a fost completate corespunzător se va afișa un mesaj de eroare pentru atenționarea administratorului.

Detaliile corespunzătoare fiecărui mesaj pot fi vizualizate sau șterse prin acțiunea butoanelor Vizualizare (), respectiv Șterge ().

9.3.2. Sectiune client

Figura 34. Prezentare generală interfața client

În această secțiune avem interfața specifică clienților. Aceștia au posibilitatea de a vizualiza starea proiectelor prin acționarea meniului Proiecte, își pot vizualiza și modifica datele profilului prin acționarea meniului Profil și în plus pot comunica cu managerul de proiect prin accesarea meniului Mesaje.

Figura 35. Prezentare meniu proiecte

Figura 36. Prezentare meniu profil

Figura 37. Prezentare meniu mesaje

În plus în meniul Mesaje putem trimite mesaje prin comletarea unui formular.

Figura 38. Formular contact

9.3.3. Ieșirea din aplicație

Deconectarea de la aplicație se realizează prin apăsarea butonului de ieșire situat în partea dreaptă a ferestrei.

Figura 39. Buton ieșire

/**

* Database::connect()

* Connect and select database using vars above

* @return

*/

function connect()

{

$this->link_id = $this->connect_db($this->server, $this->user, $this->pass);

if (!$this->link_id)

$this->error("<div style='text-align:center'>"

. "<span style='padding: 5px; border: 1px solid #999; background-color:#EFEFEF;"

. "font-family: Verdana; font-size: 11px; margin-left:auto; margin-right:auto'>"

. "<b>Database Error:</b>Connection to Database " . $this->database . " Failed</span></div>");

if (!$this->select_db($this->database, $this->link_id))

$this->error("<div style='text-align:center'>"

. "<span style='padding: 5px; border: 1px solid #999; background-color: #EFEFEF;"

. "font-family: Verdana; font-size: 11px; margin-left:auto; margin-right:auto'>"

. "<b>Database Error:</b>mySQL database (" . $this->database . ")cannot be used</span></div>");

$this->query("SET NAMES 'utf8'", $this->link_id);

$this->query("SET CHARACTER SET 'utf8'", $this->link_id);

$this->query("SET CHARACTER_SET_CONNECTION=utf8", $this->link_id);

$this->query("SET SQL_MODE = ''", $this->link_id);

unset($this->password);

}

/**

* Database::connect_db()

*

* @param mixed $server

* @param mixed $user

* @param mixed $pass

* @return

*/

private function connect_db($server, $user, $pass)

{

return mysql_connect($server, $user, $pass);

}

/**

* Database::insert()

* Insert query with an array

* @param mixed $table

* @param mixed $data

* @return id of inserted record, false if error

*/

public function insert($table = null, $data)

{

if ($table === null or empty($data) or !is_array($data)) {

$this->error("Invalid array for table: <b>".$table."</b>.");

return false;

}

$q = "INSERT INTO `" . $table . "` ";

$v = '';

$k = '';

foreach ($data as $key => $val) :

$k .= "`$key`, ";

if (strtolower($val) == 'null')

$v .= "NULL, ";

elseif (strtolower($val) == 'now()')

$v .= "NOW(), ";

else

$v .= "'" . $this->escape($val) . "', ";

endforeach;

$q .= "(" . rtrim($k, ', ') . ") VALUES (" . rtrim($v, ', ') . ");";

if ($this->query($q)) {

return $this->insertid();

} else

return false;

}

/**

* Database::update()

* Update query with an array

* @param mixed $table

* @param mixed $data

* @param string $where

* @return query_id

*/

public function update($table = null, $data, $where = '1')

{

if ($table === null or empty($data) or !is_array($data)) {

$this->error("Invalid array for table: <b>" . $table . "</b>.");

return false;

}

$q = "UPDATE `" . $table . "` SET ";

foreach ($data as $key => $val) :

if (strtolower($val) == 'null')

$q .= "`$key` = NULL, ";

elseif (strtolower($val) == 'now()')

$q .= "`$key` = NOW(), ";

elseif (strtolower($val) == 'default()')

$q .= "`$key` = DEFAULT($val), ";

elseif(preg_match("/^inc\((\-?\d+)\)$/i",$val,$m))

$q.= "`$key` = `$key` + $m[1], ";

else

$q .= "`$key`='" . $this->escape($val) . "', ";

endforeach;

$q = rtrim($q, ', ') . ' WHERE ' . $where . ';';

return $this->query($q);

}

/**

* Database::delete()

* Delete records

* @param mixed $table

* @param string $where

* @return

*/

public function delete($table, $where = '')

{

$q = !$where ? 'DELETE FROM ' . $table : 'DELETE FROM ' . $table . ' WHERE ' . $where;

return $this->query($q);

}

/**

* Database::insert_id()

* Returns last inserted ID

* @param integer $query_id

* @return

*/

public function insertid()

{

return mysql_insert_id($this->link_id);

}

/**

* sanitize()

*

* @param mixed $string

* @param bool $trim

* @return

*/

function sanitize($string, $trim = false, $int = false, $str = false)

{

$string = filter_var($string, FILTER_SANITIZE_STRING);

$string = trim($string);

$string = stripslashes($string);

$string = strip_tags($string);

$string = str_replace(array('‘', '’', '“', '”'), array("'", "'", '"', '"'), $string);

if ($trim)

$string = substr($string, 0, $trim);

if ($int)

$string = preg_replace("/[^0-9\s]/", "", $string);

if ($str)

$string = preg_replace("/[^a-zA-Z\s]/", "", $string);

return $string;

}

/**

* cleanSanitize()

*

* @param mixed $string

* @param bool $trim

* @return

*/

function cleanSanitize($string, $trim = false, $end_char = '&#8230;')

{

$string = cleanOut($string);

$string = filter_var($string, FILTER_SANITIZE_STRING);

$string = trim($string);

$string = stripslashes($string);

$string = strip_tags($string);

$string = str_replace(array('‘', '’', '“', '”'), array("'", "'", '"', '"'), $string);

if ($trim) {

if (strlen($string) < $trim)

{

return $string;

}

$string = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $string));

if (strlen($string) <= $trim)

{

return $string;

}

$out = "";

foreach (explode(' ', trim($string)) as $val)

{

$out .= $val.' ';

if (strlen($out) >= $trim)

{

$out = trim($out);

return (strlen($out) == strlen($string)) ? $out : $out.$end_char;

}

}

}

return $string;

}

/**

* getValue()

*

* @param mixed $stwhatring

* @param mixed $table

* @param mixed $where

* @return

*/

function getValue($what, $table, $where)

{

$sql = "SELECT $what FROM $table WHERE $where";

$row = Registry::get("Database")->first($sql);

return ($row) ? $row->$what : '';

}

Bibliografie

Similar Posts