lucrare licenta - galerie de arta online

66
ACADEMIA DE STUDII ECONOMICE BUCUREŞTI FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ LUCRARE DE LICENŢĂ Coordonator ştiinţific, Prof. univ. dr. FLOAREA NĂSTASE Absolventă, ADINA – MIHAELA CHIRIŢĂ

Upload: adina-chirita

Post on 06-Nov-2015

225 views

Category:

Documents


2 download

DESCRIPTION

Lucrare Licenta - Galerie de Arta Online

TRANSCRIPT

Introducere

ACADEMIA DE STUDII ECONOMICE BUCURETIFACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

LUCRARE DE LICEN

Coordonator tiinific,Prof. univ. dr. FLOAREA NSTASEAbsolvent,

ADINA MIHAELA CHIRI

Bucureti

2009ACADEMIA DE STUDII ECONOMICE BUCURETI

FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

SPECIALIZAREA INFORMATIC ECONOMICLUCRARE DE LICEN

GALERIE DE ART ONLINE

Coordonator tiinific,

Prof. univ. dr. FLOAREA NSTASEAbsolvent,

ADINA MIHAELA CHIRI

Bucureti

2009Cuprins3Introducere

5Capitolul 1. Elemente teoretice

51.1Contextul economic actual

61.2Licitaia electronic e-Auction

8Capitolul 2. Dezvoltarea aplicaiei CiberArt

82.1 Caracteristicile aplicaiei CiberArt

122.2 Tehnologii folosite n dezvoltarea CiberArt

162.3 Instrumente software folosite n dezvoltarea aplicaiei web

192.4 Baza de date implementat

222.5 Arhitectura aplicaiei

35Capitolul 3. Manual de utilizare

353.1 Instalarea aplicaiei web

363.2 Utilizarea i administrarea aplicaiei web

39Capitolul 4. Concluzii

40Bibliografie

41Anexe

IntroducereObiectul prezentei lucrri este s urmreasc paii parcuri n dezvoltarea produsului software CiberArt. Scopul acestei aplicaii web este s creeze o interfa ntre comunitile de artiti romni i iubitorii de art att cei care doresc s achiziioneze obiecte de art, ct i cei care doresc s se familiarizeze cu piaa lucrrilor artitilor romni. Pe de o parte, necesitatea aplicaiei CiberArt a fost dat de contextul creterii gradului de penetrare al Internetului att la nivel de ar, ct i la nivel de continent (conform Internet World Stats se estimeaz c 48,5% din totalul populaiei europene avea acces la Internet n 2008, n condiiile n care s-a estimat c rata de penetrare la nivel mondial era de doar 23,5%). Studiile arat c rile europene cu cei mai muli utilizatori de Internet sunt Germania (55,2 milioane utilizatori), Regatul Unit al Marii Britanii (43,2 milioane utilizatori) i Frana (40,1 milioane utilizatori). Romnia s-a situat pe locul 10 n acest clasament, avnd n 2008 un numr de 7,4 milioane de utilizatori de Internet.Conform studiului efectuat de Link2eCommerce n noiembrie 2008, structura comerului electronic n Romnia urmeaz trendul evoluiei mondiale, n care cele mai multe produse pe care magazinele online le ofer spre vnzare sunt cele care fac parte din categoria tehnologie i comunicaii. Urmeaz apoi aa-numitele produse puternice (jocuri, jucrii, flori, bilete, ceasuri, etc.), produse care reprezint 30% din oferta total a magazinelor electronice. Cultura (reprezentat de carte i informaii) ocup doar 10% din spaiul rafturilor electronice.Prognoza specialitilor arat c n perioada urmtoare trendul se va pstra, produsele IT&C rmnnd att n topul ofertelor comercianilor electronici, ct i n lista cumprturilor electronice preferate de clienii romni. n aceste condiii, galeria de art CiberArt vine spre a rezolva problema cu care se confrunt cultura romneasc i i propune s promoveze valorile culturale prin crearea unei piee n care s se ntlneasc oferta artistic romneasc i cererea pentru art a utilizatorilor romni de Internet.Astfel, primul capitol al lucrrii descrie contextul economico-social n care a fost dezvoltat aplicaia CiberArt i care este impactul dorit asupra mediului de comercializare online romnesc. De asemenea, sunt descrise conceptele folosite pentru fundamentarea teoretic a dezvoltrii aplicaiei web: e-commerce, e-auctions, ntreprinderea virtual. Cel de-al doilea capitol descrie paii fcui n dezvoltarea aplicaiei, ncepnd cu documentarea despre aplicaiile web. Urmeaz apoi descrierea alegerii tehnologiilor web i a instrumentelor auxiliare pentru programare, structura aplicaiei: schema bazei de date i descrierea claselor i funciilor principale.Capitolul trei descrie cerinele software i paii care trebuie parcuri pentru instalarea aplicaiei web pe un sistem de calcul. De asemenea, este expuns succint utilizarea aplicaiei i funcionalitile sale pentru fiecare categorie de utilizator.Capitolul patru reprezint de fapt concluziile personale la care am ajuns n urma dezvoltrii i implementrii aplicaiei.Capitolul 1. Elemente teoretice1.1 Contextul economic actualStatisticile din anii trecui, privind numrul de calculatoare existente, de utilizatori de Internet din Romnia sau al celor care utilizeaz comerul electronic sunt destul de puine. Diverse estimri arat numrul calculatoarelor conectate la Internet ntre 700 000 1 000 000 de calculatoare, iar cel al utilizatorilor Internet ntre 9% (conform Pricewaterhouse vezi graficul de mai jos) i 13% (conform unui studiu realizat n perioada ianuarie-iulie 2002 de GfK Romnia). Alte surse indic un numr mai sczut de utilizatori de Internet. Totui, rata de cretere anual a utilizatorilor de Internet este destul de mare, ea atingnd chiar 39% n ultima perioad.

n prezent, n Romnia dotarea cu computere a firmelor se apropie de nivelul atins n Uniunea European, dar procentul celor care au conexiune la internet este sensibil mai mic dect cel nregistrat la nivel european. Aceasta este una dintre concluziile studiului realizat de Consiliul Naional al ntreprinderilor Private Mici i Mijlocii din Romnia (CNIPMMR) n lunile aprilie-mai 2005 pe un eantion de 1.399 de IMM-uri (micro, mici i mijlocii) ce activeaz n ntreaga economie, din toate cele opt regiuni de dezvoltare ale rii.

Studiul dat publicitii arat c 81,90% dintre firmele autohtone au n dotare computere, 64,16% acceseaz internetul iar 56,51% utilizeaz e-mail-ul. Circa 27,97% dintre IMM-uri dein site-uri proprii i 7,51% din intreprinderi recurg la vnzrile/cumparaturile online. Totui, un procent destul de ridicat de IMM-uri (15,52%) nu deine computere/site-uri proprii i nu utilizeaz internetul, e-mail-ul i vnzrile/cumprturile online, n vreme ce 0,79% dintre firme folosesc alte componente IT, cum ar fi telefonia IP, programe de proiectare asistat, sau Intranetul.

Un sondaj asemntor, realizat la nivel european pe 7.662 de IMM-uri, a evideniat c 85,3% dintre microfirme, 91% din firmele mici i 95% dintre firmele mijlocii au n dotare computere. De asemenea, 73% dintre microintreprinderile investigate au conexiune la internet, comparativ cu numai 54,59% dintre microfirmele romneti. E-mail-ul este folosit de aproximativ 68% dintre microfirmele europene i de 53,11% din cele romneti.

Piaa local a comerului electronic este unul dintre domeniile care la ora actual promite mult pentru viitor. Potenialul mare de dezvoltare al acestuia este subliniat de doi factori majori. Primul este dat de numrul utilizatorilor de Internet, care crete de la an la an cu aproximativ un milion.

Al doilea factor major care indic potenialul n cretere al comerului online este numrul de carduri existent pe pia. Astfel, dac n iunie 2003 existau n Romnia 4,3 milioane de carduri active, iar n iunie 2005 aproximativ 6,3 milioane, n ultimul an s-a ajuns la un numr de 8,3 milioane de carduri active. Iar viitorul sun bine pentru comerul electronic din Romnia, dup cum apreciaz specialitii, avnd n vedere c mbuntirea serviciilor de curierat i securizarea plilor se numr printre factorii decisivi n favoarea acestui tip de comer.

n opinia specialitilor din pia, cea mai bun metod de a reui ntr-o afacere de comer electronic este aceea de a crea magazine de ni, care se adreseaz unei categorii restrnse de cumprtori, magazinele generaliste fiind greu de creat, de ntreinut i de pstrat o bun gestiune a stocurilor, clienii devenind anevoie fideli. 1.2 Licitaia electronic e-AuctionLicitaiile electronice cu ajutorul Internetului reprezint implementarea electronic a mecanismului tradiional de licitare. O licitaie este definit ca o vnzare public de bunuri i proprieti n care posibili cumprtori oferteaz pn cnd preul cel mai mare este atins. Exist mai multe tipuri de licitaii tradiionale: ntr-o licitaie de tip englezesc preul pornete de la un nivel sczut i pe msur ce se liciteaz, acesta crete succesiv. ntr-o licitaie de tip olandez, preul iniial este ridicat i scade succesiv, pn cnd va exista un cumprtor la preul cerut de ctre adjudector. Acest tip de licitaii este folosit pentru bunurile care se vor a fi vndute rapid, ntruct de obicei acestea se vnd nc de la prima ofert. Unul dintre cele mai cunoscute site-uri de licitaii online care folosesc metoda tradiional olandez este www.pricefalls.com.

n prezent, majoritatea licitaiilor online sunt folosesc metoda englezeasc de licitare. eBay folosete termenul de licitaie olandez pentru metoda n care sunt scoase la licitaie mai multe obiecte n aceeai licitaie, iar cei care vor ctiga licitaia vor plti acelai pre cel mai mare pre la care toate obiectele vor fi vndute. Acest tip de licitaie este de obicei folosit pentru bunuri precum bonurile de trezorerie. Astfel licitaiile online sunt gzduite de site-ul licitator n timp real i se desfoar pe perioade variate de timp (ore, zile sau sptmni). Cnd se ajunge la sfritul perioadei de licitare oferta cea mai avantajoas primete obiectul licitat.

Licitaiile online pot fi acompaniate de prezentri multimedia a bunurilor licitate. n mod normal aceste site-uri nu se rezum numai la simpla funcie de licitaie, ele integrnd procesul de licitaie cu servicii de plat a bunului respectiv precum i servicii de livrare a acestuia. Venitul acestor site-uri const n comisionul perceput din preul de vnzare al obiectului licitat i n publicitatea gzduit pe site-ul de licitaie.

Beneficiile pentru ofertani i cumprtori sunt eficiena mrit i economia de timp, precum i prezena global, ceea ce elimin necesitatea transportului fizic n locul unde are loc licitaia.

Costul redus al cheltuielilor de licitaie face posibil i licitarea de stocuri mici sau a obiectelor cu valoare mic. De asemenea, datorit posibilitii de achiziionare a unor produse la preuri sczute, a unei game largi de produse i servicii disponibile i a accesului uurat ctre acestea, site-urile de licitaii online atrag un numr mare de cumprtori. De asemenea, ofertanii vd n numrul mare de cumprtori posibilitatea de a vinde la un pre ct mai mare cu costuri reduse i deci i vor ndrepta atenia ctre astfel de site-uri ce atrag numeroi cumprtori. Astfel, se creaz un cerc virtuos, n care numrul mare de cumprtori atrage un numr mare de vnztori, care la rndul lor atrag un numr mare de cumprtori, amd. Cu ct acest cerc devine mai mare, cu att sistemul se dezvolt mai mult i afacerea devine mai profitabil.Printre cele mai importante caracteristici pe care trebuie s le ntruneasc un site de licitaie sunt: suportul pentru marea diversitate de metode de licitare care exist, uurina integrrii cu diferite afaceri existente, mecanisme de securitate care s mpiedice triarea sau sabotarea licitailor i un mecanism eficient de a informa licitatorii despre modul n care decurge licitaia.

n viitor, licitaiile electronice vor avea un efect profund asupra multor aspecte ale afacerilor pe Internet, de la stabilirea preurilor pentru diferite produse pn la lichidarea activelor. Exist numeroase tipuri de practici ce folosesc licitaiile. PNC Bank folosete licitaiile online pentru a determina nivelul dobnzii pe care clienii l vor primi. Alt exemplu l reprezint firma BMW care a licitat online prima main din seria BMW X5 Sport, ca parte n cadrul unei aciuni de caritate.

Pentru licitaiile online de tipul afacere ctre afacere i afacere ctre consumator este prevzut o cretere important n viitor. Forrester Research preconizeaz o cretere de pn la 52,6 milioane de dolari n vnzri prin licitaii online de tipul afacere ctre afacere.Pe piaa romneasc nu mai exist nicio alt galerie de art care desfoar licitaii online. Exist site-uri de licitaii online pentru lucrri de art, dar n general liciteaz colecii private. Un exemplu de astfel de site este www.ha.com Heritage Auction Gallery.Capitolul 2. Dezvoltarea aplicaiei CiberArt 2.1 Caracteristicile aplicaiei CiberArtO aplicaie web reprezint un subarbore al unui web site. Pentru a funciona, folosete diferite tehnologii care furnizeaz clientului reprezentat de browser - un rspuns la o cerere HTTP anterioar. Putem spune astfel c fiecare aplicaie web este o parte a serverului web. Ceea ce o difereniaz este denumirea sa, sau calea prin care este identificat n cadrul serverului. Fiecrei aplicaii web i corespunde un URL (Uniform Resource Locator). Astfel, URL-ul are forma: http://server/nume-aplweb, unde http este protocolul folosit pentru a comunica cu serverul, server reprezint numele serverului web pe care se afl aplicaia denumit nume-aplweb. Fiecare server are o aplicaie web folosit implicit, atunci cnd nu este furnizat de ctre utilizator denumirea unei aplicaii specifice.Exist dou tipuri de site-uri web: cele care se comport ca o revist, joac rolul de punct de informare, de prezentare - de exemplu website-urile jurnalelor NY Times, Hotnews, Metropotam sau enciclopedii online Britannica, Wikipedia, pagini web de prezentare a muzeelor, a oraelor, a unui anumit produs, etc. Website-urile de prezentare sunt create de editori, scriitori, designeri i graficieni.

site-uri web care se comport ca un software cum ar fi uneltele pentru pota electronic furnizate de Yahoo!, Hotmail, Gmail, aplicaii de tipul calendarului Google, magazinul electronic eMAG sau centrul de licitaii online e-BAY.com. Aceste aplicaii funcioneaz pe un server prin intermediul unei interfee accesibile cu ajutorul unui browser web Microsoft Internet Explorer, Mozilla Firefox, Opera, Safari etc.. Cei care creaz aplicaii web sunt programatori, designeri, creatori de interfee i proiectani de sistem. Dei ar prea c un web-designer ce creaz faada unui website de prezentare se poate ocupa i de aspectul unei aplicaii web, apar dificulti la gestiunea i afiarea datelor, pe lng afiarea textelor i imaginilor. Aplicaiile sunt de obicei mprite n mai multe buci logice, cunoscute sub denumirea de straturi, iar fiecare strat are atribuit un anumit rol. n mod tradiional, aplicaiile de tip desktop au un singur strat, care se afl pe maina client. Aplicaiile web sunt alctuite prin definiie din mai multe straturi. Cea mai des ntlnit structur este cea a aplicaiilor din trei straturi: prezentare, aplicaie i stocare. Un navigator web reprezint primul strat, acela de prezentare; un motor capabil s interpreteze coninut web dinamic (tehnologii precum ASP, ASP.NET, CGI, ColdFusion, JSP/Java, PHP, Perl, Python, Ruby on Rails) reprezint cel de-al doilea strat, aplicaia logic, iar stratul de stocare poate fi o baz de date. Browser-ul va trimite cereri ctre stratul al doilea, care la rndul su va genera interogri sau update-uri ctre baza de date i va genera interfaa cu utilizatorul.

Ceea ce difereniaz aplicaiile web de restul aplicaiilor este portabilitatea lor. Astfel, pot fi accesate la distan aplicaii, documente, date prin intermediul diferitelor aplicaii, medii disponibile pe web. De asemenea, aplicaiile web nu necesit spaiu de stocare pe staia clientului, i poate efectua update-urile automat i este uor de integrat n alte aplicaii web complexe. Poate unul dintre cele mai mari avantaje ale unei aplicaii web este compatibilitatea acesteia cu diferite platforme Windows, Linux, MacOS accesul efectundu-se strict n fereastra navigatorului web.Companiile care produc software au adoptat n ultima vreme strategia de a furniza accesul online la aplicaiile distribuite local anterior. n funcie de tipul aplicaiei, poate fi necesar dezvoltarea unei ntregi interfee bazate pe navigatorul web, sau doar adaptarea aplicaiei deja existente pentru a folosi o tehnologie diferit de prezentare. Aceste programe i permit utilizatorului s foloseasc aplicaia fr a o instala pe calculatorul su n schimbul unei taxe de utilizare. Compania care urmeaz aceast strategie de afaceri se mai numete si ASP Application Service Provider, iar acest mod de operare este foarte popular n prezent.Pentru a nelege mai bine noiunile legate de o aplicaie web, vom exemplifica:

Vom considera c CiberArt are 2 aplicaii, una implicit i o aplicaie web numit galerie. Vom folosi urmtorii identificatori: Server: http://localhost/licenta URL-ul serverului: http://localhost/licenta Aplicaia web: aplicaia web implicit cu URL-ul aplicaiei web: http://localhost/licenta Aplicaia web: aplicaia galerie cu URL-ul aplicaiei web: http://localhost/licenta/galerie Lund n considerare faptul c tot mai multe aplicaii tind s migreze spre Internet, limitrile impuse de platforma suport sau cerinele pentru instalare ncep s dispar, iar modelul SaaS (Software as a Service) este din ce n ce mai potrivit nevoilor actuale. Realizarea interfeei unei aplicaii web presupune, n fond, web design, dar cu o mai mare concentrare asupra funcionalitii. Pentru a putea concura cu aplicaiile desktop, aplicaiile web trebuie s ofere interfee simple, intuitive i interactive, care s permit utilizatorilor s i desfoare activitatea cu un consum de timp i efort minim.n continuare, voi enumera cteva dintre caracteristicile unei interfee user-friendly, care definete o aplicaie web de succes: Elemente de interfa vizibile la cerere Pentru o interfa cu utilizatorul este foarte important simplitatea, astfel c pentru a uura munca utilizatorului n folosirea aplicaiei, nu este bine ca toate controalele disponibile s fie afiate n acelai timp. Cnd alegerile pe care utilizatorul trebuie s le fac sunt mai puine, funciile devin mai vizibile i mai uor de gsit. O modalitate de a simplifica lucrurile este de a ascunde sau de a estompa funciile avansate prin meniuri i controale de tipul pop-up sau meniuri drop-down. Controale specializate dup cum diferite situaii pot fi gestionate n feluri diferite, este important selecia controalelor de interfa specializate pe anumite task-uri. De exemplu, pentru a selecta data la care se va sfri licitaia pentru o lucrare de art, este potrivit folosirea unui control de tipul unui calendar picker. Acesta ajut la luarea rapid a unei decizii mai bine informate prin afiarea lunii, a sptmnilor i a zilelor. Seciunea Help Ajutorul de pe un site poate mbrca forma unui FAQ (Frequently Asked Questions), a unei vederi de ansamblu pentru noii vizitatori, a unei hri a site-ului sau a unor instruciuni pentru utilizarea i personalizarea site-ului web. De asemenea, aplicaia web poate conine mesaje i linkuri pentru mai multe informaii n cadrul funciilor folosite.Pentru a putea instala i rula aplicaia CiberArt trebuie ndeplinite o serie de cerine software i hardware:

CerinMinimRecomandat

Vitez procesor300 MHz>1,5 GHz

Memorie (RAM)128 MB1 GB

Hard disk100 MB spaiu liber pe hard-disk1 GB spaiu liber pe hard-disk

Sistem de operare-Windows Vista, XP, 2000, 98, Me, NT

Server WebApache HTTP Server 1.3.41Apache HTTP Server 2.2.11

Baza de dateMySQLMySQL + phpMyAdmin

Navigator WebInternet Explorer 6, Mozilla Firefox , Opera Mozilla Firefox 3

2.2 Tehnologii folosite n dezvoltarea CiberArt

HTML

HTML (Hyper Text Markup Language) este un limbaj de marcare folosit pentru descrierea paginilor web. HTML folosete marcarea cu etichete sau tag-uri, pentru a prezenta pe o singur pagin web informaii de tip text, care pot fi redate cu ajutorul unui browser. HTML mbogete documentul cu ajutorul etichetelor, prin care adaug metadate ce conin informaii generale precum autorul, titlul sau data expirrii documentului, informaii legate de dispunerea n pagin a documentului i cel mai important, informaii care leag documentul de alte documente din pagini diferite hiperlink-uri. O caracteristic important a HTML-ului este faptul c nu descrie precis aezarea n pagin a documentului, permind browserului s dispun documentul n pagin n propriul mod. Acestea, alturi de portabilitatea paginilor web HTML i de funcionalitatea hiperlink-urilor fac din HTML alegerea optim pentru formatarea paginilor unui website.

CSS

CSS (Cascading Style Sheets) este un limbaj de descriere a modului de prezentare a documentelor scrise ntr-un limbaj de marcare. n general este folosit pentru a defini un stil pentru o pagin scris n HTML, XHTML i XML. Unul dintre principalele avantaje ale folosirii CSS este separarea coninutului unui document de prezentarea acestuia, oferind astfel mai mult flexibilitate, un control mai riguros i un acces facil la modificarea informaiilor de prezentare. ncrcarea paginilor va fi mai rapid, pentru c datele prezentate se afl ntr-un fiier separat, care este descrcat o singur dat, memorat n memoria cache i utilizat de cte ori este nevoie. Un alt beneficiu al folosirii tehnologiei CSS este faptul c se poate aplica diferit, n funcie de tipul de media folosit monitor, imprimant, voce, dispozitive tactile bazate pe limbajul Braille. #pagina #content

{

background: white;

float:left;

width:747px;

min-height:500px;

color:black;

font-family: arial;

font-size:12px;

}

JavaScript

JavaScript este cel mai popular limbaj de scripting de pe internet, i funcioneaz n browserele principale, cum ar fi Internet Explorer, Firefox, Chrome, Opera, i Safari. A fost inventat de ctre Brendan Eich de la Netscape Communications Corporation (o dat cu Navigator 2.0) sub numele de Mocha, apoi LiveScript, i denumit n final JavaScript. Acest limbaj de programare este foarte popular n rndul dezvoltatorilor web i datorit faptului c scripturile create folosind JavaScript sunt scripturi care ruleaz pe staia client, i nu pe server, economisind astfel resursele fizice i logice ale serverului.

JavaScript a fost conceput pentru a aduga interactivitate paginilor web, oferind un instrument cu o sintax simpl pentru a putea fi folosit i de cei care nu sunt programatori avansai. De asemeanea, cu ajutorul su se poate aduga text dinamic ntr-o pagin HTML, se pot citi i scrie elemente HTML; poate fi folosit pentru a valida date, pentru a reaciona la o anume aciune ori eveniment, pentru a detecta browser-ul vizitatorului i a ncrca astfel pagina proiectat special pentru acesta. De asemenea, poate fi folosit pentru a crea cookies (fiiere n care sunt stocate i din care sunt preluate informaii pe computerul vizitatorului paginii).

DHTML

DHTML (Dynamic HyperText Markup Language) nu este un limbaj, ci un termen care descrie modalitile crerii paginiilor web dinamice i interactive. DHTML, practic presupune mbinarea mai multor tehnologii web: HTML, Javascript, DOM i CSS. Conceptele fundamentale cu care opereaz DHTML sunt viziunea orientat-obiect a unei pagini web i a elementelor sale, structurarea coninutului pe straturi i aplicarea CSS-ului asupra sa; se pune accent pe programarea tuturor sau a majoritii elementelor unei pagini i se utilizeaz fonturi dinamice fonturi care se descarc o dat cu pagina n memoria cache. De asemenea, DTHML permite modificri ulterioare asupra paginilor HTML dup publicarea acestora pe Internet. Aceste modificri se realizeaz asupra unor variabile din limbajul de definire a paginii web, care la rndul lor vor afecta coninutul de altfel static al paginii HTML. Astfel, principala caracteristic dinamic a DHTML const n faptul c funcioneaz n timp ce o pagin este vizualizat, i nu n abilitatea de a construi o pagin unic de fiecare dat cnd fiecare pagin este ncrcat.

PHP

PHP (PHP: HyperText Preprocessor) este un limbaj de programare pentru aplicaiile server, folosit pentru crearea paginilor web, mpreun cu limbajul de marcare HTML. PHP poate fi utilizat pe majoritatea serverelor web i cu toate sistemele de operare, fr costuri materiale PHP este open source.

Spre deosebire de o pagin obinuit HTML, un script PHP nu este trimis de ctre server clientului, ci este parsat de ctre un modul PHP instalat pe serverul web. Astfel, doar elementele de PHP sunt interpretate i executate, nu i cele de HTML. Prin intermediul codului PHP pot fi interogate baze de date, pot fi create imagini, pot fi citite sau scrise fiiere sau pot fi apelate de la distan diferite servere. Paginile web care rezult din combinarea codului PHP cu HTML sunt trimise apoi clientului prin intermediul browserului web care afieaz simple pagini HTML, codul PHP nefiind transmis de ctre server.public function estenume ($nume=false)

{

if($nume)

return true;

else return false;

}

Avantajele utilizrii tehnologiei PHP

PHP este un limbaj de programare care se bucur de o popularitate destul de mare n rndul programatorilor, acest fapt datorndu-se i suportului pentru Apache i MySQL. Apache, fiind unul dintre cele mai folosite servere web din lume, permite compilarea codului PHP prin intermediul unui modul Apache. Pentru MySQL, care este o baz de date solid, PHP ofer un set bogat de funcii. Cu toate acestea, PHP poate funciona i cu alte medii de lucru, cu alte instrumente. Astfel c PHP poate rula pe sisteme de operare precum Unix, Windows, Mac OS i poate folosi diferite servere web.

PHP conine librrii gratuite i open source pre-compilate. PHP este destinat utilizrii n aplicaiile pentru Internet, fiind compus din module realizate pentru a accesa servere FTP, servere de baze de date, librrii SQL integrate n module, precum Oracle, PostgreSQL, MySQL sau SQLite, servere LDAP (Lightweight Directory Access Protocol).

Multe din funciile ntlnite n librriile standard folosite n limbajul C, precum stdio, sunt disponibile i n structura standard a PHP. PHP permite programatorilor s creeze extensii n C pentru a crea noi funcionaliti limbajului PHP. Acestea pot fi compilate n PHP sau ncrcate dinamic la rulare. Extensiile respective trebuie scrise astfel nct s suporte API-urile pentru Windows, managementul proceselor sub sistemele de operare pe platform Unix, diferite formate de compresie. De asemenea pot fi implementate i caracteristici mai puin obinuite, precum integrarea de Internet Relay Chat (IRC), imagini dinamice, coninut Flash (Adobe), sau chiar sintetizarea vorbirii. Astfel, a fost creat proiectul PECL (PHP Extension Community Library) ce are ca scop depozitarea tuturor extensiilor aduse limbajului PHP.

Alte caracteristici foarte utilizate ale PHP sunt funcionalitile de nlocuire a apostroafelor i ghilimelelor din irurile de caractere, pentru a preveni atacurile prin injecii de SQL magic_quotes_gpc i magic_quotes_runtime.

Printre argumentele care au dus la alegerea limbajului PHP ca limbaj de programare pentru funciile aplicaiei se numr de asemenea i viteza dezvoltrii aplicaiilor PHP permite separarea codului HTML de elementele de programare, ceea ce conduce la o scdere semnificant a timpului alocat dezvoltrii proiectului i la nlturarea obstacolelor care stau n calea unui design eficient i flexibil.

Smarty

Smarty este un motor de abloane pentru PHP, dar poate fi privit ca i un cadru pentru abloane i prezentri (Template/Presentation Framework). Mai precis, faciliteaz separarea coninutului i a funcionalitii unei aplicaii de prezentarea sa. Aceast funcie este cel mai bine evideniat n situaia n care programatorul i proiectantul ablonului sunt dou persoane diferite, punndu-le acestora la dispoziie o serie de instrumente pentru a automatiza sarcinile des ntlnite n prezentarea unei aplicaii. Astfel, Smarty poate fi folosit ca un simplu motor de abloane pentru nlocuirea tag-urilor, dar principala preocupare este dezvoltarea i implementarea aplicaiei cu eforturi minime, pstrnd un nivel nalt de performan, scalabilitate, securitate i dezvoltare ulterioar. {foreach from = $biders item = v}

{$v.id_user}

{$v.suma}

{$v.data}

{/foreach}

Avantajele utilizrii Smarty

Smarty este n primul rnd foarte rapid i eficient din moment ce parserul PHP este cel care realizeaz sarcinile de rutin. Totodat, Smarty este foarte extensibil i permite crearea de funcii i variabile ale utilizatorului. Structurile de tipul {if} .. {elseif} .. {else} .. {/if} (etichetele {} sunt folosite pentru a delimita sintaxa ablonului) sunt pasate parserului PHP, i deci sintaxa unei expresii poate fi orict de complex, dispunnd de seciuni nelimitate de if-uri imbricate. De asemenea, Smarty permite introducerea codului PHP direct n fiierele template, dei acest lucru nu este necesar sau recomandat, din moment ce motorul este foarte deschis modificrii de ctre utilizator.

Alt aspect unic pe care Smarty le prezint este compilarea abloanelor, care presupune ca Smarty s citeasc fiierele ablon i s creeze scripturi PHP din ele. O dat create, acestea sunt doar executate n continuare, fr a se parsa fiierul template pentru fiecare utilizare. De asemenea, Smarty va recompila numai abloanele asupra crora au fost efectuate modificri.2.3 Instrumente software folosite n dezvoltarea aplicaiei web

PHP Designer

PHP Designer este o unealt de tipul IDE (Integrated Development Environment) folosit pentru editarea codului PHP de ctre programatori. Scopul PHP Designer este acela de a accelera i mbunti procesul de editare a codului prin nlturarea erorilor, analiza i publicarea aplicaiilor web construite att cu PHP, ct i cu ajutorul altor limbaje de programare web. PHP Designer poate fi folosit i ca editor pentru limbajele HTML, XHTML, MySQL, XML, CSS, JavaScript, Smarty, VBScript, C#, Java, Perl, Python i Ruby.

Printre cele mai importante caracteristici ale mediului PHP Designer se numr: Sublinierea inteligent a sintaxei exist un schimb automat ntre sublinierile pentru PHP i cele pentru HTML, CSS sau JavaScript, n funcie de poziionarea n cadrul fiierului editat. Astfel, este evideniat codul redactat, iar restul textului este estompat pentru a mbunti focalizarea. Programarea orientat-obiect n PHP PHP Designer susine programarea orientat-obiect prin funcionalitatea de completare a codului structurat i sfaturi cod avansate. PHP Designer poate contribui semnificativ la mbuntirea cunotinelor programatorului n ceea ce privete limbajul PHP, datorit manualului integrat de PHP. Interfaa mediului de lucru este una intuitiv, uor de folosit, personalizabil i permite lucrul cu ajutorul controalelor de tip tab.

PhpMyAdmin

PhpMyAdmin este o unealt creat n limbajul PHP cu scopul de a gestiona baze de date MySQL prin intermediul web-ului. Prin intermediul acestui instrument se pot executa comenzi SQL att pentru descrierea datelor, ct i pentru manipularea datelor. De asemenea, pot fi utilizate i alte funcionaliti din lucrul cu baze de date, precum stabilirea relaiilor dintre tabele, gestiunea utilizatorilor bazei de date i a privilegiilor acestora, indexarea tabelelor, importul i exportul bazelor de date, a tabelelor, sub diferite formate i n diferite limbi de circulaie internaional. Totodat, este permis executarea direct a oricrei comenzi SQL prin intermediul interfeei phpMyAdmin.

Pentru phpMyAdmin a fost scris un numr mare de lucrri de documentaie, iar utilizatorii sunt binevenii s updateze paginile wiki destinate aplicaiei sau s fac sugestii la adresa dezvoltrii ulterioare a PhpMyAdmin. Dei exist o serie de unelte ajuttoare realizate de programatori, pentru programatori, dezvoltatorii phpMyAdmin au realizat i o documentaie bogat sub forma unei cri disponibile n limbile: englez, ceh, german i spaniol Mastering phpMyAdmin for Effective MySQL Management.

Principalele particulariti ale phpMyAdmin sunt: Interfaa cu utilizatorul este intuitiv. phpMyAdmin suport majoritatea funcionalitilor din bazele de date MySQL:

Consultarea bazelor de date, a tabelelor, view-urilor, cmpurilor i indecilor. Crearea, copierea, tergerea, redenumirea i modificarea bazelor de date, a tabelelor, a cmpurilor i a indecilor. Mentenana serverului, a bazelor de date i a tabelelor. Executarea, editarea i salvarea comenzilor SQL.

Gestiunea utilizatorilor de MySQL i a privilegiilor lor.

Gestiunea procedurilor stocate i a triggerilor folosii.

phpMyAdmin permite importul datelor din format CSV sau SQL i exportul n diferite formate: CSV, SQL, XML, PDF, OpenDocumentText, OpenSpreadsheet, Word Excel, i multe altele. phpMyAdmin permite administrarea multiplelor servere.

phpMyAdmin permite suport graficelor pentru schema bazei de date n format PDF. Cu ajutorul phpMyAdmin se pot crea interogri complexe folosind QBE(Query-by-example). Se pot efectua cutari n ntreaga baz de date.2.4 Baza de date implementat

MySQL

MySQL este un SGBDR (Sistem de Gestiune a Bazelor de Date Relaional) care se bucur de un numr de utilizatori record peste 11 milioane de instalri n lume n prezent. MySQL funcioneaz pe principiul unui server care furnizeaz acces de tip multi-user la un numr de baze de date existente n cadrul serverului.

MySQL este un proiect dezvoltat sub termenii Licenei Publice Generale GNU de ctre compania suedez MySQL AB, deinut acum de ctre Sun Microsystems. MySQL este folosit de ctre proiecte de tipul free software precum WordPress sau phpBB, care necesit un sistem de gestiune a bazei de date complet. MySQL este utilizat i pentru aplicaii web folosite la scar larg precum Youtube, Flickr sau comunitatea social Facebook.

Beneficiile pe care MySQL le aduce utilizatorilor sunt numeroase: Flexibilitate i scalabilitate de la aplicaii care folosesc 1mega-octet pentru a stoca informaiile, MySQL suport pn la civa terra-octei sub forma depozitelor de date. Performane nalte permite partiionarea att a tabelelor ct i a indecilor, utilitare diverse cu ncrcare rapid, folosirea optimizat a memoriei cache, indeci compleci, etc. Suport tranzacional robust MySQL prezint un suport atomic, consistent, izolat i durabil pentru tranzacii, capacitatea de a efectua tranzacii n mod distribuit. Puncte forte n ceea ce privete depozitele de date web MySQL deine un motor de interogare foarte performant, cu o capacitate de inserare a datelor foarte rapid i cu suport solid pentru implementarea funciilor specializate pentru web, precum cutarile n texte complete.

Protecie solid pentru date exist mecanisme puternice pentru a asigura accesul autorizat al userilor, conexiuni sigure la serverul de baze de date prin SSH i SSL i funcii de criptare/decriptare a datelor. Dezvoltarea inteligent a aplicaiilor n MySQL pot fi stocate proceduri, triggeri, funcii, view-uri, cursori i exist librrii de tipul plug-in care permit ncapsularea suportului de baze de date MySQL n aproape orice tip de aplicaie. mbuntirea procesului de management se poate folosi Event Scheduler pentru a programa sarcini recurente SQL pentru a fi executate ulterior pe baza de date din server. De asemenea, durata medie de instalare dup downloadarea MySQL este de mai puin de 15 minute. Libertatea de folosire a unui software open-source i suport pentru instalare i utilizare 24 ore din 24, 7 zile din 7.

Schema conceptual a bazei de date a galeriei, numit ciberart, arat c au fost create n total 14 tabele relaionale, 6 tabele pentru a stoca informaii despre lucrrile de art, 2 tabele pentru meniurile de administrare si de navigare n cadrul aplicaiei, 3 tabele pentru stocarea datelor utilizatorilor i 3 tabele pentru administrarea licitaiilor: cib_galerie este tabela n care se stocheaz informaiile principale despre o lucrare de art, informaii comune oricrui tip de lucrare: denumirea lucrrii, id-ul artistului care a realizat-o, tipul lucrrii pictur, desen, fotografie, sculptur - , stilul n care se ncadreaz lucrarea tradiional, modern, realist, expresionist, pop-art, etc - , tematica compoziiei, identificatorul pentru detalii, starea sa pe site daca este aprobat, n ateptare sau respins i statusul licitaiei. cib_detalii_desen, cib_detalii_fotografie, cib_detalii_sculptura, cib_detalii_ pictura i cib_detalii_unicate sunt tabelele n care sunt reinute informaii detaliate despre fiecare lucrare, n funcie de tipul su. De exemplu, pentru o sculptur, informaiile generale vor fi reinute n tabela cib_galerie, iar informaiile specifice precum nimea, greutatea, materialele folosite, vor fi stocate n tabela cib_detalii_sculptura. cib_artisti i cib_clienti sunt tabele n care se vor memora datele utilizatorilor aplicaiei. Dup cum se poate observa, aplicaia permite nregistrarea a 2 tipuri de utilizatori: artii i clieni. n timp ce clienii pot licita pentru lucrri de art i i pot modifica datele din profil, artitii au la dispoziie mai multe unelte ce le permit s efectueze aceleai operaiuni ca i clienii, dar n plus pot publica lucrri sau pot modifica informaiile despre lucrri i pot crea o licitaie nou. Tabelele conin pe lng datele frecvent ntlnite ntr-o aplicaie precum nume, prenume, adres, email, parol i descriere, un cmp numit privilegii. n funcie de valoarea acestui cmp, se poate determina daca utilizatorul este client, un simplu artist sau chiar administratorul aplicaiei: nivelul de privilegii 0 este aplicat unui client, nivelul de privilegii 1 este destinat artitilor, nivelul de privilegii 10 este folosit pentru administrator. Privilegiile administratorului i ofer, pe lng privilegiile de care se bucur un artist, posibilitatea de a aproba/respinge lucrrile ncrcate de ctre artiti i de a gestiona licitaiile active i cele ncheiate. cib_licitaii_active este tabela folosit pentru licitaiile aflate n curs de desfurare. Cmpurile sale sunt: id, id_produs id-ul produsului scos la licitaie, ce corespunde cmpului id din tabela cib_galerie; val_start valoarea de la care se liciteaz, val_curent ultima valoare licitat, pas valoarea cu care crete valoarea licitat, data_start cmp de tipul timestamp, care nregistreaz data i ora la care a nceput licitaia i data_sfrit data la care se va ncheia licitaia curent. cib_licitaii_history este tabela n care vor fi inserate nregistrrile terse din cib_licitaii_active. Cmpurile din aceast tabel sunt comune cu cele din tabela cib_licitatii_active i n plus va salva status-ul licitaiei dac licitaia s-a ncheiat la data prestabilit sau dac aceasta a fost tears, valoarea comisionului pe care l va reine casa de licitaii n cmpul val_comision i data_arhivare - data la care licitaia a fost arhivat pentru detectarea eventualelor neconcordane. cib_participani_licitaie conine istoria licitrilor efectuate n cadrul aplicaiei. Aceast tabel reine n cmpul id_licitaie id-ul licitaiei pentru care s-a licitat, id_user i tip_user sunt folosite pentru identificarea utilizatorului care a licitat, suma reprezint valoarea licitat, iar data este data la care s-a efectuat licitaia. cib_menu i admin_menu sunt tabelele corespunztoare meniului din galerie, vizibil tuturor categoriilor de utilizator i meniului din panoul de administrare. cib_menu are urmtoarea structur: id, parent, categorie, continut, nume, ordine. Fiecare nregistrare n tabel va reprezenta o opiune din meniu. Astfel, parent va reprezenta id-ul categoriei printe, categoria este cea din care face parte opiunea, iar cmpul nume reprezint denumirea afiat n meniu. Cmpul ordine determin poziia opiunii n submeniu. Tabela pentru meniul de administrare este asemntoare, dar conine n plus cmpul privilegii, care determin nivelul de acces necesar pentru ca un utilizator s poat vizualiza opiunea meniului. cib_judete este o tabel auxiliar ce conine judeele disponibile la nregistrarea unui utilizator pe site.

Pentru a putea gestiona corect tabelele din baza de date am creat o serie de triggeri. De exemplu, triggerul pentru update-ul statusului licitaiei de la NOU la LICITAT n momentul deschiderii licitaiei:CREATE TRIGGER update_status AFTER INSERT ON cib_licitatii_active

FOR EACH ROW

UPDATE cib_galerie SET status = 'LICITAT' WHERE id=new.id_produs;

2.5 Arhitectura aplicaiei

Putem considera aplicaia CiberArt ca fiind un ansamblu format din dou pri funcionale: galeria i panoul de administrare.

Galeria

Galeria constituie partea care gestioneaz prezentarea lucrrilor de art din cadrul aplicaiei. Clasele aferente acestei funcionaliti sunt: Load aceast clas este inclus n fiierul index.php iar funciile sale begin() i middle() sunt apelate n acelai fiier. Metoda begin() este responsabil pentru mai multe aspecte: asigur protecia aplicaiei, protejnd-o de injecii SQL prin apelarea funciei php mysql_escape_string(). Aceast funcie este apelat att pentru metoda GET, ct i pentru metoda POST:foreach($_GET as &$row)

{$row = trim(mysql_escape_string($row)); }

unset($row);

foreach($_POST as &$row)

{$row = trim(mysql_escape_string($row)); }

unset($row);

atribuie variabilele de sesiune vectorului user pentru utilizri ulterioare. valideaz datele introduse pentru logarea pe site.

Metoda middle() este responsabil cu afiarea opiunilor din meniu i este apelat n index.php dup alegerea unei opiuni din meniu. MySQL este clasa folosit pentru comunicarea aplicaiei cu baza de date MySQL a aplicaiei. Conectarea la baza de date se realizeaz n constructorul clasei MySQL: Public function __construct($host='', $user='', $pass='', $db='')

{

if(!$this->connection = mysql_connect($host, $user, $pass, $db))

{

die('Nu ma pot conecta la BD : ' . mysql_error());

}

else

$this->sel = mysql_select_db('ciberart',$this->connection);

}

Iar deconectarea de la baza de date ciberart se realizeaz prin destructorul clasei:public function __destruct()

{

if($this->connection)

mysql_close($this->connection);

else { die('Nu ma pot deconecta la BD : ' . mysql_error());

return false;

}

}

Am creat n clasa MySQL de asemenea, diferite metode cu scopul de a simplifica scrierea operaiilor de interogare a bazelor de date. Comenzile SQL vor fi astfel furnizate sub forma unor iruri de caractere i executate prin intermediul metodelor. Un exemplu de astfel de metod este urmtorul:public function getAll($sql = false)

{if($sql)

{ $result = mysql_query($sql) or die("MYSQL error:". mysql_error()."
$sql");

$res = array();

while($r = mysql_fetch_assoc($result))

$res[] = $r;

return $res;

}

return false;

}

public function doSQL($sql = false){if($sql) { $action = strtolower(substr(trim($sql),0,6));

switch($action) {case "select":

if(strpos($sql,'cib_galerie')>0)

{

$pos=strpos($sql,'where')>0 ? strpos($sql,'where') : strpos($sql,"WHERE") > 0 ? strpos($sql,'WHERE') : die("Nu am gasit WHERE");

$str1=substr($sql,0,$pos+6);

$str2=substr($sql,$pos+5);

$sql=$str1." cib_galerie.aprobare = 'APROBAT' AND ".$str2;

}

return $this->getAll($sql);break;

case "insert":

$this->genericSQL($sql);

if(mysql_insert_id())

return mysql_insert_id();

else

echo "Comanda INSERT nu are id. Este posibil sa existe o eroare.";break;

default:

$this->genericSQL($sql);break;

}

}

return false;

}

Funcia getALL() este funcia care execut interogarea SQL furnizat de ctre programator ca i parametru de intrare. n cazul n care interogarea nu se efectueaz cu succes, va fi returnat un mesaj de eroare. Metoda doSQL() efectueaz, n funcie de coninutul irului de caractere furnizat, comanda SQL pentru SELECT sau pentru INSERT. Dac irul de caractere conine subirul de caractere select, se va efectua ramura corespunztoare n cadrul instruciunii switch. Dup ce se va insera prin concatenare n irul de caractere al instruciunii SQL condiia pentru ca lucrarea din site asupra creia se efectueaz interogarea, este apelat funcia getAll() pentru executarea interogrii. n cazul n care comanda este pentru insert, se vor efectua instruciunile de pe ramura a doua a switch-ului.Printre cele mai importante funcii ale aplicaiei web CiberArt este funcia save() din clasa MySQL:

public function save($tabela = false, $id = false, $date = false)

{if($tabela)

{$array = Array();

if($id) {//update

if($date)

$array = $date;

else

$array = $_POST;

$aux = '';

foreach($array as $k=>$r)

$aux .= ", $k = '$r'";

$aux = substr($aux,1);

$sql = "UPDATE {$tabela} SET {$aux} WHERE id = '{$id}'";

} else {//insert

if($date)

$array = $date;

else

$array = $_POST;

$fields = '';

$values = '';

foreach($array as $k=>$r) {$fields .= ', '.$k;

$values .= ", '$r'";

}

$values = substr($values,1);

$fields = substr($fields,1);

$sql = "INSERT INTO {$tabela} ({$fields}) VALUES ({$values})";

}

$this->doSQL($sql);

}

}

Aceast funcie se comport ca o comand php pentru execuia fie a unei interogri de tipul select, fie a unei instruciuni SQL de tipul insert. Salvarea se va realiza deci n baza de date n funcie de existena id-ului n tabel. Att tabela i cmpurile n care se vor stoca noile informaii, ct i id-ul cu care va fi identificat nregistrarea vor fi trimise funciei ca i parametrii de intrare tabela va fi transmis ca un ir de caractere i cmpurile ca un vector asociativ. Funcii - este clasa care conine funciile cele mai utilizate n aplicaie i extinde clasa MySQL. Metodele din clasa Funcii sunt folosite i n alte clase php din cadrul galeriei i sunt: funcii de validare a datelor introduse n aplicaie de ctre utilizator (validarea parolei, a e-mailului), funcii pentru afiarea produselor n pagin paginare(), sau pentru atribuirea variabilelor assign().public function assign($varName = false, $varValue = false)

{if($varName && $varValue)

{global $sm;

$sm->assign($varName,$varValue);

}

}

Apelarea funciei n cadrul fiierelor php:

$this->assign ("date",$date);

O alt funcie important pentru aplicaie este cea pentru paginare metoda paginare() anexat n anexa A2 cu numrul A2.1. n funcie de un anumit numr de produse per pagin, lucrrile vor fi afiate ntr-un numr de pagini egal cu rotunjirea raportului dintre numrul lucrrilor la numrul lucrrilor ce pot fi vizualizate ntr-o pagin: $paginare['total_pagini']=

ceil($paginare['nr_prod']/$paginare['nr_poze_per_pag']);

Cont reprezint clasa folosit pentru gestionarea sesiunilor i a utilizatorilor nregistrai. Metodele acestei clase sunt login(), logout() i register(). Pentru funcia de logare pe site se vor folosi ca parametri de intrare adresa de e-mail i o parol de minim 5 caractere alfanumerice care va fi ulterior codificat cu ajutorul funciei criptografice de tip hash MD5 pentru a fi comparat cu valoarea din baza de date. Logarea pe site se va realiza fie cu privilegii de client, fie cu privilegii de artist.function login()

{ global $db;

if($_POST['login']) { $login['email'] = strip_tags($_POST['email']);

$login['parola']= $_POST['parola'];

}

if(!$this->esteEmail($login['email'])) $_SESSION['error']['login'] = "Email sau parola incorecte";

if(!$this->estePassword($login['parola']))

$_SESSION['error']['login'] = "Email sau parola incorecte";

if(!isset($login['eroare'])) {

if($_POST["tip"]=="client")

$user = $db->doSql("SELECT * from cib_clienti where email = '".$login['email']."' AND parola = '".md5($login['parola'])."' ");

else

$user = $db->doSql("SELECT * from cib_artisti where email = '".$login['email']."' AND parola = '".md5($login['parola'])."' ");

if($user[0]['id']) {$_SESSION['user']['id'] = $user[0]['id'];

$_SESSION['user']['nume'] = $user[0]['nume'];

$_SESSION['user']['prenume'] = $user[0]['prenume'];

$_SESSION['user']['email'] = $user[0]['email'];

$_SESSION['user']['tip'] = $_POST['tip'];

$_SESSION['user']['privilegii']=$user[0]['privilegii'];

$useru['privilegii'] = $_SESSION['user']['privilegii'];

$this->assign("useru",useru);

header('Location: '.ROOT);

die();

}else { $_SESSION['error']['login'] = "Email sau parola incorecte!";

header('Location: '.ROOT);

}

}

global $categorie,$content;

$categorie = "home";

$content = "index";

}

Funcia de nregistrare a unui nou utilizator pe site va stoca informaiile despre noul utilizator, n funcie de un radio button cu opiunile client i artist, n una dintre tabelele cib_clienti sau cib_artisti. Dup ce are loc o serie de validri a datelor, se va efectua inserarea lor n tabela corespunztoare. Galerie, Stil_tip i Tematica sunt clase asemntoare, destinate afirii lucrrilor de art din cadrul galeriei. Motivul pentru care am folosit trei clase este pentru a clasifica lucrrile n funcie de trei criterii: tipul lucrrilor (pictur, sculptur, fotografie), stilul n care se ncadreaz lucrrile (realist, expresionist, impresionist, fantastic) i tematica lucrrii (arhitectur, tematic floral, natur static, peisaj, portret). Voi exemplifica pentru clasa Galerie selectarea lucrrilor din categoria pictur:

public function picturi()

{$paginare=$this->paginare('PICTURA');

$date = $this->bd->doSQL("SELECT poza, denumire, pret, tip, status, cib_galerie.id FROM cib_galerie

INNER JOIN

cib_detalii_pictura on cib_detalii_pictura.id = cib_galerie.detalii WHERE tip='PICTURA' LIMIT ".$paginare['limit']."");

foreach($date as &$r)

{ $r['img']=ROOT."img/".strtolower($r['tip'])."/thumbs/" .$r['poza'];

$r['link']=ROOT."galerie/produs/".$r['id'].".html";

}

$this->assign ("date",$date);

$this->assign ("paginare", $paginare);

}

Pentru celelalte categorii, selectarea i afiarea lucrrilor este asemntoare. Pentru afiarea tuturor picturilor voi folosi ablonul picturi.tpl, care const n cod HTML i etichete Smarty:Picturi

{if $paginare.nr_prod neq 0}

{foreach from = $date item = v key = k}

{if $k%4 eq 0} {/if}

{include file="galerie/display.tpl"}

{/foreach}

{else}

Nu exista inca produse in aceasta categorie.

{/if}

{if $paginare.total_pagini gt 1 }

{foreach from = $paginare.pagini item = v key = k}

{if $k neq 1}, {/if}{$k}

{/foreach}

{/if}

Fiierul ablon display.tpl este un fiier folosit pentru afiarea denumirii unei lucrri i a imaginii cu rol de iconi (thumbnail):


{$v.denumire}

Rezultatul afirii abloanelor va arat astfel:

Pentru celelalte categorii, selectarea i afiarea lucrrilor este asemntoare, iar ablonul pentru afiarea unei lucrri n modul iconi folosete acelai ablon display.tpl, refolosind astfel codul scris nainte.n clasa Galerie exist implementat de asemenea, o funcie pentru cutarea ntre lucrrile de pe site metoda cautare() anexat A2.2 n anexa A2 a funciilor principale. Practic, aceast funcie va cuta un ir de caractere n anumite cmpuri considerate relevante pentru cutare. Toate lucrrile care vor conine irul sau subirul cutat vor fi apoi afiate dup efectuarea paginrii acestora prin intermediul funciei paginare_caut() din clasa Funcii. Licitaie este clasa care permite unui utilizator s liciteze pentru o anumit lucrare. Funcia principal a acestei clase este funcia liciteaza() anexat n A2 ca i A2.3. Aceast metod are mai multe funcionaliti: interognd baza de date va determina dac userul logat n sesiunea curent de lucru este ultimul licitant al lucrrii selectate. Dei ablonul pentru licitare conine condiia pentru ca utilizatorul s nu fie ultimul licitant, acest lucru nu este de ajuns, ntruct nu protejeaz baza de date de licitri accidentale, nedorite. De aceea vom testa si n cadrul funciei php acest lucru, iar n cazul n care condiia este ndeplinit, utilizatorul va fi nregistrat ca i ultimul licitant n cadrul licitaiei active folosind funcia save() motenit din clasa Funcii. Tot n aceast funcie sunt selectate i date despre lucrare, care apoi vor fi afiate prin intermediul ablonului liciteaza.tpl. Stat reprezint clasa folosit pentru paginile statice ale aplicaiei pagina de contact, pagina de ajutor, pagina cu informaii despre galerie. Aceast clas va fi folosit mpreun cu abloanele statice corespunztoare: contact.tpl, ajutor.tpl, desprenoi.tpl.Panoul de administrare

Clasele implementate n panoul de administrare sunt: MySQL este clasa care, la fel ca i n cazul galeriei, gestioneaz comunicarea cu baza de date ciberart. Funciile folosite n aceast clas sunt similare clasei folosite pentru Galerie. Funcii n plus fa de clasa cu nume identic folosit pentru galerie, aceast clas permite i selectarea tabelei din care vor fi utilizate detaliile despre lucrarea n cauz. Selectarea tabelei se efectueaz cu ajutorul unei instruciuni de tipul switch, care are ca parametru de intrare variabila $tip:public function get_table($tip = false)

{if($tip)

{ switch ($tip)

{case "PICTURA": return "cib_detalii_pictura";break;

case "FOTOGRAFIE": return "cib_detalii_fotografie";break;

case "DESEN": return "cib_detalii_desen"; break;

case "UNICATE": return "cib_detalii_unicate";break;

case "SCULPTURA": return "cib_detalii_sculptura";break;

}

}

}

Profil clasa profil este destinat tuturor categoriilor de utilizatori. Funcia profil() este cea care permite editarea informaiilor personale att a clienilor ct i a artitilor, prin interogarea bazei de date n funcie de variabilele de sesiune. Tot n aceeai funcie are loc i validarea datelor, pentru a asigura o acuratee ct mai mare a informaiilor personale. Funcia profil() este ataat n anexa A2 sub numrul A2.4. Produse aceast clas conine trei funcii importante pentru gestiunea lucrrilor din cadrul aplicaiei: load_produs(), edit_produs() i delete(). Metoda load_produs() are scopul de a selecta din baza de date toate lucrrile artistului logat n sesiunea curent. public function load_produs()

{$_SESSION['back']=$_SERVER['REQUEST_URI'];

$sql="SELECT poza,denumire,tip,id,status,aprobare FROM cib_galerie where id_artist= '".$_SESSION['user']['id']."' ";

$date=$this->doSQL($sql);

foreach($date as &$r )

{ $r['poza']=SITE_ROOT."img/".strtolower($r['tip'])."/thumbs /".$r['poza'];

$r['edit']=ROOT."produse/edit_produs/".$r['id']."html";

}

$this->assign("date",$date);

}

Folosind ablonul load_produs.tpl pentru afiarea lucrrilor artistului logat, utilizatorul i va putea vizualiza produsele ncrcate n aplicaie, starea lor dac au fost aprobate sau nu de ctre administratorul galeriei, starea licitaiei, n cazul n care a fost deschis o licitaie pentru produsul respectiv. De asemenea, artistul poate s editeze sau s tearg lucrarea i s creeze o nou licitaie. Iat cum va arta lista lucrrilor unui artist:

Funcia edit_produs() va permite doar utilizatorului care a ncrcat lucrarea n aplicaie s modifice informaiile specifice fiecrei lucrri denumirea, categoriile din care face parte, dimensiunile lucrrii i materialele din care este creat. De asemenea, este posibil schimbarea imaginii reprezentative i a iconiei. Image aceast clas gestioneaz lucrul cu imagini n cadrul aplicaiei. Metodele acestei clase, createThumb(), getImageSize(), UploadFile() i watermark_png() sunt folosite pentru toate imaginile introduse n aplicaie. Prin apelarea funciei createThumb() anexat n A2 sub codul A2.5-, cu parametrii corespunztori, va fi creat iconia produsului. Dimensiunile iconie vor fi fost atribuite anterior n funcia edit_produs() din clasa Produse. Apoi, pentru a asigura un minim de siguran pentru lucrrile din aplicaie, am folosit funcia watermark_png() pentru a suprapune n centrul imaginii o alt imagine de format .png, a crei cale a fost setat tot n funcia edit_produs() a clasei Produse. Astfel, imaginea nu va putea fi folosit de ctre tere pri, respectndu-se drepturile de autor.La efectuarea ncrcrii imaginii n aplicaie, se va apela metoda uploadFile(). Aceast metod va realiza de asemenea i redimensionarea imaginii pentru a evita suprancrcarea aplicaiei cu imagini de dimensiuni foarte mari. Redimensionarea va avea loc n funcie de limea imaginii. Apoi, va fi calculat procentual i nlimea pentru a se menine proporiile iniiale:$size = getimagesize($dest);

if($size[0] > 650)

{$width = 650;

$procent = $width/$size[0];

$height = $size[1] * $procent;

}

Pentru afiarea unei imaginii din pagina de editare a produsului i pentru a putea realiza crop-ul iconiei am folosit setul de librrii JavaScript script.aculo.us. Acest set de librrii este de obicei folosit pentru a mbuntii interfaa cu utilizatorul a aplicaiilor web deoarece ofer posibilitatea crerii unei serii de efecte vizuale, o librrie pentru operaia de drag and drop i chiar controale pentru auto-complete, elemente de tipul slider. Aprobare clasa Aprobare este cea care permite administratorului galeriei s proceseze lucrrile ncrcate de ctre utilizatori i s evalueze dac pot fi aprobate pentru a aprea n galerie sau nu. Pentru a uura munca administratorului i pentru o mai bun vizibilitate, am mprit lucrrile ncrcate de artiti n 3 categorii: lucrri aprobate, lucrri respinse i lucrri aflate n ateptare. Funcia care este responsabil pentru selectarea lucrrilor aprobate din baza de date este urmtoarea:

public function lista_ok()

{$_SESSION['back']=$_SERVER['REQUEST_URI'];

$date=$this->doSQL('SELECT * FROM cib_galerie where aprobare= "APROBAT" ');

foreach($date as &$var)

$var['poza']=SITE_ROOT.'img/'.strtolower($var['tip']). '/thumbs/'.$var['poza'];

$this->assign("date",$date);

}

Iar afiarea lucrrilor se va realiza n ablonul edit_produs.tpl din directorul aprobare. Aprobarea sau respingerea unei lucrri se poate realiza cu un simplu click pe unul dintre butoanele prezente pe pagina respectiv de editare. Licitaii este clasa n care se creaz i se editeaz licitaiile din cadrul aplicaiei. Metodele acestei clase sunt foarte importante pentru funcionalitatea de licitare online: liciteaza_produs(), edit_licitatie(), licitatii_active() i licitatii_history(). Funcia licitatii_active() este cea care selecteaz toate licitaiile active spre a putea fi administrate. Cu ajutorul unui ablon, aceste licitaii sunt afiate sub forma unei liste de lucrri ale cror licitaii sunt editabile. Funcia pentru licitaiile ncheiate este asemntoare, cu diferena c o licitaie ncheiat nu mai poate fi editat. Funcia liciteaza_produs() este practic cea care deschide licitaia pentru o anumit lucrare. Ea poate fi apelat doar de ctre utilizatorul care este autorul lucrrii. Pentru a putea fi creat o licitaie, trebuie ndeplinite o serie de condiii: lucrarea nu trebuie s mai fi fcut obiectul unei licitaii anterioare acest lucru este asigurat prin cmpul status din tabela cib_galerie; lucrarea trebuie s fi fost aprobat anterior de ctre administratorul bazei de date verificabil cu ajutorul cmpului aprobare din tabela cib_galerie. Dup validarea datelor introduse de utilizator cu privire la termenii licitaiei preul de pornire, pasul cu care se va licita, data la care se sfrete licitaia, are loc inserarea datelor n tabela cib_licitatii_active. Pentru a ncheia o licitaie, am folosit un instrument furnizat chiar de sistemul de operare Windows XP schtasks (scheduled tasks). Comenzile i programele planificate sunt acelea programate s ruleze fie periodic, fie la un anumit moment. Acest utilitar permite adugarea i tergerea sarcinilor din plan, pornirea i oprirea la cerere i afiarea i modificarea sarcinilor planificate. Sintaxa comenzii este: schtasks/create/tnTaskName/trTaskRun/scschedule[/momodifier][/dday][/m month[,month...][/iIdleTime][/stStartTime][/sdStartDate][/edEndDate] [/s computer [/u [domain\]user/ppassword]][/ru {[Domain\]User | "System"} [/rpPassword]]/?

n funcia de licitare a unui produs am utilizat funcia php exec() pentru rularea unui program extern: exec('schtasks /create /TN licitatie'.$insert_id.' /SC ONCE /ST '.$time[1].' /SD '.$data[1].'/'.$data[2].'/'.$data[0].' /TR "'.UPLOAD_ROOT.'admin\classes\adauga_lic.php" /RU "Adi" /RP "adi"',$output);

unde $time este variabila ce conine data de sfrit a licitaiei, $data este data de sistem la care se efectueaz operaia, iar $output este variabila de control pentru funcia exec() aceast variabil arat daca operaia s-a efectuat cu succes sau nu. Practic, cu ajutorul utilitarului Scheduled Tasks am programat aplicaia s ruleze fiierul adauga_lic.php coninutul su este anexat n A2 sub codul A2.7. Acest fiier conine instruciuni pentru selectarea din tabela cib_licitatii_active a nregistrrilor care reprezint licitaii care se ncheie la data i ora rulrii sale i inserarea acestora n tabela cib_licitatii_history. Dup salvarea datelor despre licitaia tocmai ncheiat, datele despre aceasta din tabela licitaiilor active vor fi terse, iar statusul lucrrii din cadrul tabelei cib_galerie se va schimba din LICITAT n VANDUT.Capitolul 3. Manual de utilizare

3.1 Instalarea aplicaiei webPentru instalare, aplicaia web CiberArt are nevoie ca urmtoarele componente software s fie instalate i funcionale pe sistemul de calcul:

Apache HTTP Server Serverul web este disponibil gratuit, pe site-ul proiectului The Apache Software Foundation. Pentru a putea folosi configurrile fcute pentru aplicaie n fiierul .htaccess din sistemul de fiiere, trebuie decomentat linia LoadModule rewrite_module modules/mod_rewrite.so din fiierul httpd.conf. Acest modul, fiind activ, v-a permite rescrierea link-urilor din aplicaie n modul proprietar.

PHP Server Poate fi instalat i ca plugin pentru Serverul HTTP de la Apache. Este nevoie ca n fiierul php.ini s fie decomentat linia extension=php_gd2.dll s fie decomentat pentru ca serverul PHP s poat suporta funcii pentru lucrul cu fiierele grafice.

Baz de date MySQL Pentru a administra baza de date se poate folosi fie modul comand, fie poate fi folosit o interfa grafic disponibil gratuit pe Internet, precum MySQL Administrator sau aplicaia scris n PHP, phpMyAdmin. Pentru a putea accesa i interoga baza de date, va fi nevoie ca n constructorul clasei MySQL a aplicaiei s fie completate corect datele de conectare: denumirea bazei de date, userul, parola i host-ul.

Pentru a facilita instalarea acestor componente pe sistemul de calcul, poate fi instalat aplicaia XAMPP (X simbolizeaz compatibilitatea cu orice platform, A-Apache, M-MySQL, P-PHP, P-Perl) sau aplicaia WAMP (W-Windows, A-Apache, M-MySQL, P-PHP). Aceste aplicaii sunt de fapt pachete compuse din produsele software Apache HTTP Server, baza de date MySQL i interpretoare pentru script-uri PHP. Instalarea unui astfel de pachet se realizeaz ca i instalarea unei aplicaii, iar componenta Monitor permite monitorizarea serviciilor funcionabile.

Pentru a continua instalarea este nevoie s fie copiat sistemul de directoare i fiiere surs n directorul public al serverului web, pstrndu-se structura neschimbat. Pentru ca partea de licitare s fie funcional este necesar ca fiierele .php s se deschid automat cu php.exe, CLI-ul(Command Line Interface) php. n final, pentru ca baza de date s fie folosibil, se va importa n MySQL baza de date ciberart din fiierul ciberart.sql.3.2 Utilizarea i administrarea aplicaiei web

Utilizarea aplicaiei CiberArt poate fi privit din trei perspective: cea a clientului, cea a artistului i cea a administratorului.

Clientul va avea acces la licitaiile deschise doar dupa ce se loga cu emailul i parola, iar artistul nu va putea s i vizualizeze lucrrile i s le modifice fr a se autentifica. Pentru a efectua aceast operaie cu uurin, seciunea de login este plasat chiar sub meniul principal, n partea stng a ferestrei, aceasta fiind vizibil din orice pagin a galeriei, precum i linkul pentru logout. De asemenea, n footer se gsesc linkuri ctre paginile statice importante, pentru o accesibilitate facil. Pentru utilizatorii noi, sub formularul de login exist link-ul ctre pagina de nregistrare pe site. Se observ c pe site nu se pot nregistra dect utilizatori cu privilegii de clieni i artiti. Rolul de administrator nu poate fi jucat dect de un anumit utilizator, setat din baza de date. Cu toate acestea, administratorul galeriei se va autentifica pe site ca i un artist.

Pe prima pagin este inclus un badge de Twitter, care joac rolul unui micro centru de tiri. Aici vor fi afiate maxim 5 update-uri preluate de pe site-ul twitter.com, de la utilizatorul prestabilit.

Pentru navigarea n cadrul galerie se va folosi meniul, care este intuitiv i clar, opiunea de cutare pe site i linkurile disponibile.

n pagina de licitare a unui produs, utilizatorul va putea vizualiza informaiile importante referitoare la licitaia curent:data la care a nceput licitaia, data la care se va finaliza licitaia, preul de pornire, pasul minim al licitaiei, ultimul pre licitat i chiar i ultimul utilizator care a licitat pentru lucrarea respectiv.

Pentru a accesa panoul de administrare, se va folosi linkul care va aprea sub butonul pentru delogare. Pentru clieni, panoul de administrare const n posibilitatea modificrii datelor din profilul nregistrat.

Panoul de administrare destinat artitilor i administratorului, de asemenea conine un meniu care ofer accesul ctre toate funciile. Meniul este mprit n trei categorii: Administrare cont, Aprobare lucrri i Licitaii.

Opiunea Administrare cont este singura opiune disponibil artitilor, celelalte dou fiind destinate numai administratorului. Opiunea Lucrrile mele va afia o list a lucrrilor artistului autentificat, sub forma unui tabel ce va conine: iconia lucrrii, denumirea, buton pentru tergerea acesteia, starea licitaiei i starea lucrrii. Dnd click pe iconi este posibil editarea datelor referitoare la lucrare, chiar i a imaginii i a iconiei. Pentru ncrcarea unei noi lucrri se va utiliza butonul Adaug produs nou care se afl deasupra listei lucrrilor.

Listele cu lucrrile aprobate, lucrrile aflate n ateptare i cele respinse vor fi asemntoare, dar mprite astfel sunt mai uor de vizualizat i procesat. Printr-un simplu click pe iconia lucrrii poate fi aprobat sau respins lucrarea aflat n ateptare. De asemenea, starea unei lucrri deja evaluate poate fi modificat de ctre administrator.

O licitaie o dat creat nu mai poate fi modificat dect de ctre administratorul galeriei, pentru a proteja astfel cumprtorii de situaii neplcute n ceea ce privete corectitudinea desfurrii licitaiei.

Unei licitaii active i se pot modifica datele, chiar i cele de baz: data finalizrii licitaiei, preul de plecare, preul curent sau pasul de licitare. De asemenea, pot fi vizualizai utilizatorii care au licitat pentru lucrarea respectiv, suma licitat i data licitrii.

Capitolul 4. ConcluziiAplicaia web CiberArt a fost realizat folosind unele dintre cele mai noi instrumente i tehnologii web disponibile n totalitate open-source sau gratuit. Funcionalitile acesteia au fost implementate n vederea acoperirii nevoilor unei galerii de art cu suport pentru licitaii online, dar n acelai timp pstrnd o linie de dezvoltare simpl, uor de neles i folosit de ctre utilizator i uor de mbuntit de ctre un programator care nu a participat la crearea aplicaiei. Gruparea funcionalitilor comune, folosirea unor controale specializate, interfaa simpl i intuitiv, mesajele ajutatoare din cadrul aplicaiei i administrarea facil a galeriei definesc o aplicaie light, potrivit cerinelor utilizatorilor.Folosirea motorului Smarty i a sistemului de ablonare reduce considerabil timpul i efortul de programare, refolosind o mare parte din cod. Template-urile pot fi folosite de asemenea pentru afiarea unor elemente n pagini total diferite, pstrnd astfel un anumit stil de formatare pe toat ntinderea aplicaiei i un grad de omogenitate n stratul de prezentare al aplicaiei web.Dei scopul ei a fost facilitarea unui sistem de licitaii online, aplicaia web poate fi folosit de asemenea, cu mici modificri i ca o simpl galerie de prezentare a unor produse. Diferite funcionaliti pot fi adugate cu uurin, pentru dezvoltri ulterioare ale aplicaiei. Opiunile din meniu pot fi modificate din utilitarul phpMyAdmin, modificnd tabela cib_meniu. n acest mod, pot fi adgate sau schimbate categoriile i subcategoriile n care se ncadreaz lucrrile. De asemenea, pot fi adugate link-uri ctre alte pagini statice sau ctre alte site-uri web. Alte funcionaliti adugate aplicaiei o pot dezvolta pentru a deveni o comunitate de artiti prin implementarea unor unelte specifice unei reele sociale online precum: chat online, mesagerie n cadrul aplicaiei, focalizarea asupra profilului unui utilizator, un sistem de votare al lucrrilor din galerie, sau diferite widget-uri. O alt posibil dezvoltare a aplicaiei poate viza transformarea acesteia ntr-o galerie n cadrul creia s fie expuse i licitate mai multe colecii de obiecte de art. Indiferent de hotrrea luat n ceea ce privete dezvoltarea aplicaiei web CiberArt, aceasta va rmne o aplicaie cu un aspect curat, o interfa simpl i uor de folosit, chiar i de ctre utilizatorul nespecialist.Bibliografie[IWS01]Internet World Stats: http://www.internetworldstats.com

[UCK01]Underclick: http://www.underclick.ro/E-commerce/index.html

[ASEC01]Anatoly Sachenko, Electronic Commerce Systems, Ucraina, 2007

[SBAPP01]S. Buraga, Aplicaii web la cheie. Studii de caz implementate n PHP, Editura Polirom, Iai, 2003

[WIKI01]Wikipedia: http://en.wikipedia.org/wiki/Web_application

[WIKI02]Wikipedia: http://en.wikipedia.org/wiki/Smarty

[WIKI03]Wikipedia: http://en.wikipedia.org/wiki/Auction

[WIKI04]Wikipedia: http://en.wikipedia.org/wiki/Online_auction_business_model

[HAG01]Heritage Auction Galleries: http://www.ha.com

[WMP01]WAMP Server: http://www.wampserver.com/en/

[DVM01]MySQL Developer Zonw: http://dev.mysql.com/

[W3S01]W3Schools: http://www.w3schools.com/html/default.asp

[W3S02]W3Schools: http://www.w3schools.com/css/

[W3S03]W3Schools: http://www.w3schools.com/jsref/

[W3S04]W3Schools: http://www.w3schools.com/php/default.asp

[PHP01]PHP.net: http://www.php.net/manual/en/

[SMT01]Smarty: http://www.smarty.net/manual/en/what.is.smarty.php

[SSOA01]Search SOA: http://searchsoa.techtarget.com/sDefinition/

[PJS01]Prototype JavaScript Framework: http://www.prototypejs.org/learn/

[DW01]Digital Web: http://www.digital-web.com/articles/

[SCR01]Scriptaculous: http://script.aculo.us/

[SCRW01]Wiki Scriptaculous: http://wiki.github.com/madrobby/scriptaculous

[MSSCH01]Microsoft: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx?mfr=true

Anexe

A1 SCHEMA CONCEPTUAL A BAZEI DE DATE

1- Schema conceptual a bazei de dateA2 - ANEXA FUNCIILOR PRINCIPALE

A2.1 Funcia de paginare a produselor

public function paginare($tip=false)

{if($tip)

{$paginare['pag_curenta']=1;

if($_GET['page'])

$paginare['pag_curenta']=$_GET['page'];

$paginare['nr_poze_per_pag']=8;

$sql="SELECT COUNT(*) as nr FROM cib_galerie WHERE tip='$tip'";

$paginare['nr_prod']=$this->doSQL($sql);

$paginare['nr_prod']=$paginare['nr_prod'][0]['nr'];

$paginare['total_pagini']=ceil($paginare['nr_prod'] /$paginare['nr_poze_per_pag']);

if($paginare['pag_curenta']>$paginare['total_pagini'])

$paginare['pag_curenta']=$paginare['total_pagini'];

if($paginare['pag_curenta']1)

$paginare['pagini'][$paginare['pag_curenta']-1]=$pagina['pag_curenta']-1;

if($paginare['pag_curenta']paginare_caut($sql);

$produse=$this->doSQL($sql." limit ".$paginare['limit']);

foreach ($produse as &$produs )

{

$produs['img']=ROOT."img/".strtolower($produs['tip'])."/thumbs/".$produs['poza'];

$produs['link']=ROOT."galerie/produs/".$produs['id'].".html";

}

$this->assign("produse",$produse);

$this->assign("paginare",$paginare);

}

A2.3 Funcia de licitare unui produs

public function liciteaza($id_produs=false)

{

$sql="SELECT * FROM cib_licitatii_active WHERE id_produs='{$id_produs}'";

$licitatie=$this->doSQL($sql);

$licitatie=$licitatie[0];

$this->assign("licitatie",$licitatie);

if($_POST['save'])

{

$last=$this->doSQL('SELECT max( data ), cib_participanti_licitatie.id_user, lower(cib_participanti_licitatie.tip_user) as tip_user FROM cib_participanti_licitatie WHERE id_licitatie = "'.$licitatie["id"].'" GROUP BY DATA order by data DESC');

$last=$last[0];

if($last['id_user']!=$_SESSION['user']['id'] OR $last['tip_user']!=$_SESSION['user']['tip'])

{

$save=array(

"suma"=>$_POST['suma'],

"id_user"=>$_SESSION['user']['id'],

"tip_user"=>$_SESSION['user']['tip'],

"id_licitatie"=>$licitatie["id"]

);

$this->save("cib_participanti_licitatie",false,$save);

}

}

$sql="SELECT cib_galerie.denumire, cib_galerie.tip, cib_galerie.poza, concat(cib_artisti.prenume,' ', cib_artisti.nume) AS autor FROM cib_galerie INNER JOIN cib_artisti ON cib_galerie.id_artist = cib_artisti.id WHERE cib_galerie.id='{$id_produs}'";

$produs=$this->doSQL($sql);

$produs=$produs[0];

$produs['back']=$_SERVER['HTTP_REFERER'];

$produs['poza']=ROOT."img/".strtolower($produs['tip'])."/thumbs/".$produs['poza'];

$this->assign("produs",$produs);

$sql="SELECT * FROM (SELECT cib_participanti_licitatie.suma,cib_participanti_licitatie.data, cib_participanti_licitatie.id_user, lower(cib_participanti_licitatie.tip_user) as tip_user, concat(cib_clienti.prenume,' ',cib_clienti.nume) as name FROM cib_participanti_licitatie INNER JOIN cib_clienti ON cib_clienti.id=cib_participanti_licitatie.id_user INNER JOIN cib_licitatii_active ON cib_participanti_licitatie.id_licitatie=cib_licitatii_active.id WHERE cib_participanti_licitatie.tip_user='CLIENT' AND cib_licitatii_active.id_produs='{$id_produs}' UNION

SELECT cib_participanti_licitatie.suma,cib_participanti_licitatie.data,cib_participanti_licitatie.id_user, lower(cib_participanti_licitatie.tip_user) as tip_user,concat(cib_artisti.prenume,' ',cib_artisti.nume) FROM cib_participanti_licitatie INNER JOIN cib_artisti ON cib_artisti.id=cib_participanti_licitatie.id_user INNER JOIN cib_licitatii_active ON cib_participanti_licitatie.id_licitatie=cib_licitatii_active.id WHERE cib_participanti_licitatie.tip_user='ARTIST' AND cib_licitatii_active.id_produs='{$id_produs}') AS t ORDER BY data DESC";

$biders=$this->doSQL($sql);

$this->assign("biders",$biders);

}

A2.4 Funcia de editare a profilului utilizatorului

public function profil($id=false)

{

if($_SESSION['user']['tip']=='artist')

{

$tabela='cib_artisti';

}

else $tabela='cib_clienti';

if($_POST['save'])

{

unset($_POST['save']);

$error=array();

foreach($_POST as $k=>$c)

{

if(strlen($c)assign("mesaj",$mesaj);

}

$this->assign("error",$error);

}

$sql="SELECT * FROM $tabela where id= '".$_SESSION['user']['id']."' ";

$date=$this->doSQL($sql);

$date=$date[0];

$judete=$this->doSQL("SELECT * FROM cib_judete");

$select = array();

$select['judet']=array('values'=>array(''),'output'=>array('--'),'selected'=>$date['judet']);

foreach($judete as $x)

{

$select['judet']['values'][]=$x['id'];

$select['judet']['output'][]=$x['judet'];

}

$this->assign("select",$select);

$this->assign("date",$date);

}

A2.5 Funcia de creare a iconiei

public function createThumb($source = false,$dest = false,$t_width = false,$t_height = false, $src_left = false, $src_top = false)

{

if($source && $dest) {

// preiau extensia fisierului

$type = strtolower(substr($source,strpos($source,".")+1,strlen($source)));

// creez un fisier de tip imagine de acelas tip

witch ($type) {

case $type == "jpeg" OR $type=="jpg":

$src = ImageCreateFromJPEG($source);

break;

case "gif":

$src = ImageCreateFromGIF($source);

break;

case "png":

$src = ImageCreateFromPNG($source);

break;

case "bmp":

$src = ImageCreateFromWBMP($source);

break;

default:

return false;

break;

}

//creez o instanta a imaginii.

$dst = imageCreateTrueColor($t_width,$t_height);

//setez background-ul imaginii

$bg = imagecolorallocate ( $dst, 255, 255, 255 );

imagefill ( $dst, 0, 0, $bg );

ImageCopyResampled($dst,$src,0,0,$src_left,$src_top,$t_width,$t_height,$t_width,$t_height);

// scriu poza pe hdd

switch ($type) {

case $type == "jpeg" OR $type=="jpg":

ImageJPEG($dst,$dest);

break;

case "gif":

ImageGIF($dst,$dest);

break;

case "png":

ImagePNG($dst,$dest);

break;

case "bmp":

ImageWBMP($dst,$dest);

break;

default:

return false;

}

return true;

}

return false;

}

A2.6 Funcia de creare a unei licitaii

public function liciteaza_produs($id = false){

if(!$id)

return false;

$error = array();

$date = $this->doSQL("SELECT * FROM cib_galerie where id = '{$id}'");

$date = $date[0];

if($date['status']!= 'NOU')

{

$error['status']= 'Produsul nu mai poate fi licitat inca o data!';

}

if($date['aprobare']!='APROBAT')

{

$error['aprobare']='Produsul trebuie sa fie aprobat de catre webmasterul galeriei pentru a putea fi scos la licitatie!';

}

if($_POST['pas']$_POST['val_start'],

'val_curenta'=>0,

'id_produs'=>$id,

'pas'=>$_POST['pas']

);

$this->save('cib_licitatii_active', false, $save);

$insert_id=mysql_insert_id();

if($insert_id)

{

$time=explode(' ',trim($_POST['data_sfarsit']));

$data=explode('-',$time[0]);

$output=array();

exec('schtasks /create /TN licitatie'.$insert_id.' /SC ONCE /ST '.$time[1].' /SD '.$data[1].'/'.$data[2].'/'.$data[0].' /TR "'.UPLOAD_ROOT.'admin\classes\adauga_lic.php" /RU "Adi" /RP "adi"',$output);

if(strpos($output[0],'SUCCESS') < 0)

{

$error['task']="Licitatia nu a putut fi creata. Contactati administratorul websiteul-ui";

}

else

{

header("Location:".ROOT."produse/load_produs.html");

}

}

}//afisez erorile

else

{

$str="";

foreach($error as $r)

{

$str.="\\n - {$r}";

}

$this->assign('error',$str);

}

}

$tabela = $this->get_table($date['tip']);

$detalii = $this->doSQL("SELECT * FROM {$tabela} where id = '{$date['detalii']}'");

$detalii = $detalii[0];

$date['poza'] = SITE_ROOT.'img/'.strtolower($date['tip']). '/thumbs/'.$date['poza'];

$this->assign("date",$date);

$this->assign("detalii",$detalii);

$this->assign('post',$_POST);

}

A2.7 Fiierul care finalizeaz o licitaie