Rad sa bazom podataka u Drupal 7 - lekcija 5 - Extenders (Proširenja)
Upiti za izbor podržavaju proširenja (extenders). Proširenje omogućava dodavanje funkcionalnosti na upit za izbor tokom izvršenja. Ova funkcionalnost može biti dodatna metoda ili obrada ponašanja postojeće metode.
Za ovo se koriste OOP obrasci (design patterns), proširenja su implementirana po Decorator obrascu. Ona dodaju dodatne odgovornosti dinamičkom objektu kroz fleksibilnu alternativu podklase za proširenje metode.
Rad sa bazom podataka u Drupal 7 - lekcija 6 - Izmena upita u letu (hook_query_alter)
Važna osobina dinamičkih SELECT upita je mogućnost da drugi moduli menjaju upite „u letu“. Ovo omogućava drugim modulima da ubacuju svoje instrukcije u upit, čime utiču na njegovo ponašanje ili primenjuju promene tokom izvršavanja upita, na primer za definisanje prava pristupa nodovima. Postoje tri komponente za izmene upita u letu: tagging (označavanje), meta podaci i hook_query_alter().
Rad sa bazom podataka u Drupal 7 - lekcija 7 - Obrada rezultata upita (fetch)
Upit za selekciju uvek vraća rezultat obrade upita kao 0 ili više zapisa. Postoji nekoliko načina da se obrade podaci iz rezultata upita, koje možete koristiti prema sopstvenoj proceni.
Najčešće se rezultati koriste u vidu petlje foreach().
Rad sa bazom podataka u Drupal 7 - lekcija 8 - INSERT INTO upiti (ubacivanje)
INSERT upiti uvek treba da koriste konstruktor upita. Neke baze podataka zahtevaju specijalne tretmane za LOB (Large OBject, poput TEXT u MySQL) i BLOB (Binary Large OBject) polja, pa je potreban nivo apstrakcije za pojedinačne drajvere baza da implementiraju ove tretmane.
INSERT upiti počinju korišćenjem funkcije db_insert():
Rad sa bazom podataka u Drupal 7 - lekcija 9 - UPDATE upiti (ažuriranje)
UPDATE upiti uvek treba da koriste konstruktor upita. Različite baze podataka imaju specifične tretmane za LOB (Large OBject, kao što je TEXT u MySQL) i BLOB polja (Binary Large OBject), pa je potreban nivo apstrakcije za pojedinačne drajvere da implementiraju specifične tretmane.
UPDATE upiti počinju funkcijom db_update():
Rad sa bazom podataka u Drupal 7 - lekcija 10 - DELETE upiti (brisanje)
DELETE upiti treba da koriste konstruktor upita. Počinju funkcijom db_delete():
<?php
$query = db_delete('node', $options);
?>
Ovaj upit za brisanje će ukloniti zapise iz tabele node. Napomena: nije potrebno stavljati ime tabele u viticaste zagrade, konstruktor upita to radi automatski. DELETE upiti koriste Fluent API, što znači da svi metodi (osim execute()) vraćaju objekat upita na sebi (isto kao i kod update i insert upita).
Rad sa bazom podataka u Drupal 7 - lekcija 11 - Merge upiti (spajanje)
Merge upiti su specijalni hibridni tip upita. Iako je sintaksa za ove upite definisana u SQL 2003, zapravo ne postoji baza podataka koja podržava ovu sintaksu direktno. Međutim, većina baza nudi alternativne implementacije sa specifičnim sintaksama. Konstruktor merge upita u Drupalu apstrahuje koncept merge upita u obliku objekta, tako da se objekat može različito kompajlirati za svaku bazu, uzimajući u obzir njene specifičnosti.
Rad sa bazom podataka u Drupal 7 - lekcija 12 - Uslovi upita (WHERE, HAVING, LIKE)
Uslov upita omogućava da izaberemo samo one zapise koji zadovoljavaju određene kriterijume, na primer nodove kreirane ne starije od dve nedelje, termine koji sadrže reč „drupal“ i slično. U SQL-u koristimo WHERE i HAVING da postavimo ograničenja na SELECT, UPDATE, DELETE upite. U dinamičkim upitima je takođe implementiran mehanizam za rad sa uslovima upita. Ovaj mehanizam radi isto za sva tri tipa upita: selekciju, ažuriranje i brisanje.
Koncept uslovnih izraza
Uslov je sadržan u posebnom izrazu koji postavlja ograničenje.
Pravimo modul za Drupal, brz početak
Počnimo sa api.drupal.org, otvorite stranicu hook-a hook_node_presave(), koji se poziva pre dodavanja node-a.
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Hook-ovi nam omogućavaju da ubacimo naš kod u standardni tok rada Drupala, dodajemo provere, podatkovna polja, elemente formi i slično.
Dodajemo naš modul u folder sites/all/modules:
Iz čega se sastoji modul za Drupal 7?
Pre nego što počnemo da pravimo naš modul, reći ću još nešto o mogućnostima Drupal API-ja. API pruža široke mogućnosti za rad sa taksonomijom, nodovima, korisnicima, unosom i prikazom podataka iz baze. Za međusobnu komunikaciju modula i jezgra Drupala, kao i modula međusobno, postoji sistem hook-ova. Hook je povratni poziv funkcije, odnosno kada se izvršavanje koda dođe do hook-a, izvršava se kod naše funkcije koju definišemo u modulu. Tako možemo obrađivati podatke korisnika, menije, taksonomije, nodove različitih tipova sadržaja.
Na stranici