Egészítsük ki a Drupal-t. Drupal modul fejlesztés



Hasonló dokumentumok
PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Internet technológiák

Forráskód formázási szabályok

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Biztonságos PHP a gyakorlatban

API tervezése mobil környezetbe. gyakorlat

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Programozás és adatbázis kezelés PHP ben

DRUPAL 7. újdonságai. Hojtsy Gábor Drupal Hétvége, Budapest november 14. Angela Byron fóliái alapján

ÁLTALÁNOSAN LEÍRVA: KONKRÉTAN AZ INSOMNIA ESETÉBEN:

A jquery.clickheat egy jquery plugin, ami lekezeli a kattintásokat a kijelölt tartományban. jquery.clickheat

Az SQL*Plus használata

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

2017/01/27 08:59 1/6 Gettext Rendszer

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Adatbázis Rendszerek II. 2. Gyakorló környezet

Adatbázis használata PHP-ből

Adatbázis-kezelés ODBC driverrel

Két tűz között. statikus site generátorok és javascript alkalmazások és a Drupal

Smarty AJAX. Miért jó ez? Ha utálsz gépelni, akkor tudod. Milyen műveletet tudunk elvégezni velük:

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Tartalomjegyzék 2. RENDSZER FELÉPÍTÉSE... 3

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Internet programozása. 3. előadás

Drupal biztonság. Tuesday, April 3, 12

BASH script programozás II. Vezérlési szerkezetek

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Készítette: Szabóné Nacsa Rozália

Az SQL adatbázisnyelv: DML

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Java és web programozás

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Tisztelt Felhasználó!

Újdonságok és érdekességek CONSEDU BT.

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

Webes alkalmazások helyes szerkezete PHP-ban

Algoritmizálás és adatmodellezés tanítása 1. előadás

Drupal a CMS! Készítette: Dévai Tamás. Szent István Egyetem Informatikai Hivatal. Webfejlesztő mérnök

Adattípusok. Max. 2GByte

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatmodellezés. 1. Fogalmi modell

PHP-MySQL. Adatbázisok gyakorlat

Adatbázisban tárolt kollekciók

Adattípusok. Max. 2GByte

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

AWK programozás, minták, vezérlési szerkezetek

Tranzakciókezelés PL/SQL-ben

Hardver leíró nyelvek (HDL)

Adatbázis Rendszerek II. 8. Gyakorló környezet

A DBM függvények használata

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Imperatív programozás

10.óra CodeIgniter Framework #3. Gyimesi Ákos

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Dr. Pétery Kristóf: CorelDRAW 9 testre szabás

BIRDIE. Business Information Reporter and Datalyser. Előadó: Schneidler József

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Valimed API. REST API a magyarországi orvos pecsétszámok validálására

Bemutatkozás. Heilig Szabolcs Hojtsy Gábor Illés Szabolcs Palócz István

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Adatbázis tartalmának módosítása

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

MailMasterPlus API. fejlesztői dokumentáció

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Alkalmazások biztonsága

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Geocache API teszt verzió v1.0 by gusty

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

RapidMiner telepítés i. RapidMiner telepítés

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

C programozási nyelv

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

DIGITÁLIS KÖZTERÜLETI M SZAKI TÉRKÉP

Fejlesztési specifikációk

S z á m í t ó g é p e s a l a p i s m e r e t e k

Adatelemzés SAS Enterprise Guide használatával. Soltész Gábor solteszgabee[at]gmail.com

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

AWK programozás, minták, vezérlési szerkezetek

CTools és Panels pluginok

Példa webáruház kialakítás rendszerdokumentáció

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Komputeralgebra Rendszerek

Web-fejlesztés NGM_IN002_1

3D-s technológiák a játékfejlesztésben UDK bevezetés

Átírás:

Egészítsük ki a Drupal-t Drupal modul fejlesztés

Drupal 6.0 2008. február 13.

Miért írjunk Drupal modult? Nincs az igényeinknek megfelelő modul Valamilyen közösségi igény kielégítése Valami nem úgy működik a Core modulokban, ahogy az nekünk kellene Egy másik rendszert szeretnénk integrálni a Drupal-ba Később is lesz kapacitásunk a modult karban tartani

Kódolási szabályok Bővebben: http://drupal.org/coding-standards Tab = 2 space Feltétel nélküli include = require_once() Feltételes include = include_once() Csak a <?php?> tag az elfogadott Kötelezően a // $Id$ kell a fejlécbe, ezt később majd a CVS fogja kitölteni A konstansok csupa nagybetűsek Isset() vagy empty()?

Az.info file-ok A modulok meta adatait tartalmazza.ini fájl formátomúak Kötelező attribútumok: ; $Id$ //CVS használja meta adatokra name = A modul neve description = A modul leírása core = 6.x //melyik Drupal alaprendszerhez lett írva Opcionális attributomok: version = "$Name$" //CVS irja a verziót dependencies = ezektől a moduloktól függ

A kampók, hurkok Olyan függvények, melyek segítségével befolyásolhatjuk az alap rendszer működését. Azaz kiegészíthetjük, megcsonkíthatjuk vagy teljes egészében helyetesíthetjük az egyes rendszer funkciókat, mint pl.: az azonosító rendszert, a hozzáférési rendszert, stb.

Fordítható felület Nem összetévesztendő a tartalom fordítással t() függvény format_plural() // többesszám kezelés!variable: egyszerűen behelyetesítődik a változó tartalma @variable: egyszerű szövegé alakítja a változó tartalmát megegyezik a check_plain() függvénnyel %variable: simnkelt egyszerű szöveggé alakítja a váltzó tartalmát (check_plain + theme_placeholder).po fileok http://drupal.org/project/potx

A block API A blokkok készítésért felelős Fő elemei: list : a blokk listában ez a szöveg jelenik view: a blokk tartamát jeleníti meg config: konfigurációs felületet nyújt a blokk számára save: a blokk beállításainak tárolásáért felelős

Közös SQL Miért van rá szükség? API? db_query('select * FROM {node}) // adatbázis lekérdező függvény db_query_range() // tartomány szerinti lekérdezés db_rewrite_sql() db_result() // egyetlen sorral tér vissza pager_query() // lapozható kimenettel tér vissza db_query_temporary() // ideglenes tábla készítés hook_db_rewrite_sql() // átírhatunk vele SQL lekérdezéseket Több adatbázis használata: settings.php -ban: $db_url['default'] = 'mysql://user:password@localhost/drupal'; $db_url['masik'] = 'mysql://user:password@localhost/masik'; Adatbázis váltás pl.: db_set_active('masik') Adatbázistól nem függő adatbázis séma

A kimenet és bemenet ellenőrzése form_id_validate() // a felhasználó bemenet elő szűrése check_plain() // egyszerű szöveggé alakít check_markup() // filterek segítségével megszüri a kimenetet filter_xss() // xss támadások ellen véd

A node API hook_access() // tartalom elérés szabályzás hook_nodeapi() // hook_node_info() hook_theme() hook_view()

Az.install fileok 1/3 <?php // $Id$ function sajat_install() { drupal_set_message(t('a saját modul installációja megkezdődött.')); switch ($GLOBALS['db_type']) { case 'mysql': case 'mysqli': db_query("create TABLE annotations ( id int NOT NULL default 0, note longtext NOT NULL, timestamp int NOT NULL default 0, PRIMARY KEY (uid, nid) ) /*!40100 DEFAULT CHARACTER SET utf8 */;" ); $success = TRUE; break;

Az.install fileok 2/3 case 'pgsql': db_query("create TABLE sajat ( id int NOT NULL DEFAULT 0, note text NOT NULL, timestamp int NOT NULL DEFAULT 0, PRIMARY KEY (uid, nid) );" ); $success = TRUE; break; default: drupal_set_message(t('unsupported database.')); }

Az.install fileok 3/3 if ($success) { drupal_set_message(t('the module installed tables successfully.')); } else { drupal_set_message(t('the installation of the annotate module was unsuccessful.'),'error'); } }

A form API drupal_get_form('form_id') // form generálás form_id_validate($form, &$form_state) // form validálás form_id_submit($form, &$form_state) // a form adatainak feldolgozását végzi

Telepítsünk / Távolítsuk el install.php hook_install() // az installáláskor lefutó szkriptek, általában adatbázis séma létrehozása hook_uninstall() // a modul kikapcsolásakor lefutó szkriptek hook_update_x() // ha újabb modult telepítünk ezeke a szriptek futnak le, az x az update számát jelenti

jquery drupal_add_js() // javascript filokat includol az oldalba drupal_to_js() // php változót konvetál javascript változóvá drupal_get_js() // magával a javascript forrásával tér vissza html formátumban

Ne lőjünk Ágyúval verébre! hook_form_alter() function sajat_form_alter(&$form, $form_state, $form_id) { if (isset($form['type']) && $form['type']['#value'].'_node_settings' == $form_id) { $form['workflow']['upload_'. $form['type']['#value']] = array( '#type' => 'radios', '#title' => t('attachments'), '#default_value' => variable_get('upload_'. $form['type']['#value'], 1), '#options' => array(t('disabled'), t('enabled')), ); } }

Fő a biztonság SQL-ben placeholder db_query("select n.nid FROM {node} n WHERE n.nid > %d", $nid); GET változóval nem módosítunk adatot! A felhasználói bemenetet szűrjük! A rendszer kimenetét ugyancsak szűrjük! JS-sel nem validálunk!

Hiba keresés Coder modul: a coding standardok betartására jó Devel modul: hiba keresésre, Xdebug

Gyakorlatok