Ανάπτυξη e-commerce εφαρμογής

Σχετικά έγγραφα
Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

QEMS TUTORIAL CRM. Οδηγίες για το νέο πρωτοποριακό πρόγραμμα της QEMS.

Σύστημα διαχείρισης περιεχομένου (Content Management System)

Μια καλή επιλογή θα ήταν (χωρίζοντας τις λέξεις με παύλα -) ή

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Αρχίζοντας. Το Joomla τρέχει: Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) PHP MySql

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Βασικές Έννοιες Web Εφαρμογών

φιλοξενία & διαχείριση ιστοσελίδων

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Εισαγωγή στη Σχεδίαση Λογισμικού

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ.

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

ΜΕΤΑΠΤΥΧΙΑΚΟ ΤΜΗΜΑ ΣΠΟΥ ΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Περιεχόμενο του μαθήματος

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Περίληψη Λαμπρόπουλος

Στοιχεία παρουσίασης. Εισαγωγή Θεωρητικό υπόβαθρο Υλοποίηση λογισμικού μέρους συστήματος Συμπεράσματα Μελλοντικές Επεκτάσεις

6 Εισαγωγή στο Wordpress 3.x

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Don t hire us if you want average. We only do exceptional.

Διαχείριση Πολιτισμικών Δεδομένων

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

Ημερομηνία Παράδοσης: 4/4/2013

Νέες τεχνολογίες εισάγονται ή χρησιµοποιούνται

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530

(Δημιουργία ηλεκτρονικού καταστήματος με την χρήση του Joomla CMS)

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΡΟΔΙΑΓΡΑΦΕΣ ΕΝΟΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΚΑΤΑΣΤΗΜΑΤΟΣ

ÈÛ ÁˆÁ ÛÙÈ μ ÛÂÈ Â ÔÌ ÓˆÓ

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe

ΑΡΧΕς ΛΕΙΤΟΥΡΓΙΑς CMS (Content Management System) ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥς ςε ΜΙΚΡΟΜΕςΑΙΕς ΕΠΙΧΕΙΡΗςΕΙς

2.5.1 Χρήση δεξιοτήτων αρχειοθέτησης για τη διατήρηση ενός καθιερωμένου συστήματος

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

οδηγός χρήσης της πλατφόρμας «SOLID SOFT WEB BOOKING SYSTEM»

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Περιεχόμενα. Visio / White paper 1

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Αβραμίδης Ελευθέριος Επιβλέπων καθηγητής Κωνσταντίνος Διαμαντάρας. ΤΕΙ Θεσσαλονίκης 17/2/2009

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Η επιλογή γλώσσας (π.χ. ελληνικά) διεπαφής του συστήματος, βρίσκεται στο υποσέλιδο του ιστότοπου

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Παραδοτέο Π5.3: Έντυπο και ψηφιακό υλικό (Web site) προβολής των δράσεων έργου

Εισαγωγή στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Οι διαδικασίες ενος CMS είναι σχεδιασμένες για να:

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Ανάλυση Περιπτώσεων Χρήσης

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΑΡΘΡΟ «ΕΞΙ ΣΤΟΥΣ ΔΕΚΑ ΕΛΛΗΝΕΣ ΧΡΗΣΙΜΟΠΟΙΟΥΝ ΠΛΕΟΝ ΚΑΘΗΜΕΡΙΝΑ ΤΟ ΔΙΑΔΙΚΤΥΟ»

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Σχεδιαστικά Προγράμματα Επίπλου

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

Η Oracle ανακοίνωσε την πιο ολοκληρωμένη λύση στον τομέα της Ανάλυσης δεδομένων στο Cloud

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΕΓΧΕΙΡΙΔΙΟ ΟΡΘΩΝ ΠΡΑΚΤΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΜΕΣΟΛΟΓΓΙΟΥ

SGA Διαχείριση Ηλεκτρονικού Πρωτόκολλου

Εγχειρίδιο λειτουργιών χρήστη (αποφοίτου) στο Mathiteia4u

ΕΡΓΟ: «Ανάπτυξη Εφαρμογής Μητρώου και Εκπαίδευση» ΠΑΡΑΔΟΤΕΟ Έλεγχος Συστήματος & Λογισμικού Μητρώου ΑμεΑ

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

GoDigital.Store E-Commerce Platform

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client

Ενότητα 3: Διαχείριση πληροφοριακών πόρων με τη χρήση βάσεων δεδομένων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Σύστημα Διαχείρισης, Ελέγχου και Παρακολούθησης Ασθενοφόρων και Περιστατικών

Ασφαλίστε τις εμπιστευτικές πληροφορίες σας.

Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Information Technology for Business

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Εγχειρίδιο χρήσης εφαρμογής τηλεπικοινωνιακών παρόχων για δημιουργία προσφορών

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 7η ΕΝΟΤΗΤΑ: ΟΡΓΑΝΩΣΗ ΧΡΟΝΟΥ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

SITEBUILDER ΠΛΑΤΦΟΡΜΑ ΑΥΤΟΝΟΜΗΣ ΚΑΤΑΣΚΕΥΗΣ & ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΑΚΩΝ ΤΟΠΩΝ (WEBSITE) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Version 2.0

Εγχειρίδιο χρήσης εφαρμογής τηλεπικοινωνιακών παρόχων για δημιουργία προσφορών

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Transcript:

ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανάπτυξη e-commerce εφαρμογής με Drupal ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΚΑΛΟΥΔΗ ΧΡΙΣΤΙΝΑ (ΑΜ: Τ02622) Επιβλέπων: Σάββας Ηλίας ΛΑΡΙΣΑ 2014

«Εγώ ο/η Χριστίνα Καλούδη, δηλώνω υπεύθυνα ότι η παρούσα Πτυχιακή Εργασία με τίτλο Α- νάπτυξη e-commerce Εφαρμογής με Drupal είναι δική μου και βεβαιώνω ότι: Σε όσες περιπτώσεις έχω συμβουλευτεί δημοσιευμένη εργασία τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Σε όσες περιπτώσεις μεταφέρω λόγια τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Με εξαίρεση τέτοιες περιπτώσεις, το υπόλοιπο κείμενο της πτυχιακής αποτελεί δική μου δουλειά. Αναφέρω ρητά όλες τις πηγές βοήθειας που χρησιμοποίησα. Σε περιπτώσεις που τμήματα της παρούσας πτυχιακής έγιναν από κοινού με τρίτους, α- ναφέρω ρητά ποια είναι η δική μου συνεισφορά και ποια των τρίτων. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαι ενήμερος(-η) για την επέλευση των νομίμων συνεπειών» < υπογραφή > < ονοματεπώνυμο >

Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος: Ημερομηνία: ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ 1. 2. 3.

Περίληψη Τα τελευταία χρόνια, η αύξηση του επιχειρηματικού ανταγωνισμού, ωθεί ολοένα και περισσότερες επιχειρήσεις στην εγκατάλειψη των παραδοσιακών μεθόδων εμπορίου και την υιοθέτηση σύγχρονων εφαρμογών. Μια από τις πλέον διαδεδομένες μεθόδους αποτελεί το e-commerce ή αλλιώς ηλεκτρονικό εμπόριο. Καθώς οι επιχειρήσεις τείνουν στην επιλογή μιας διαδικτυακής πλατφόρμας για την παροχή προϊόντων και υπηρεσιών, οι τεχνικές απαιτήσεις για τον κόσμο του διαδικτύου αυξάνονται. Το γεγονός αυτό έγινε αφορμή για την δημιουργία έξυπνων συστημάτων διαχείρισης διαδικτυακών εφαρμογών, τα πλέον δημοφιλή συστήματα διαχείρισης περιεχομένου. Ένα από τα πιο δημοφιλή συστήματα διαχείρισης περιεχομένου αποτελεί το Drupal. Η παρούσα πτυχιακή εργασία πραγματοποιεί μια ανάλυση στην έννοια του e- Commerce και αναλύει σε τεχνικό επίπεδο τον τρόπο λειτουργίας του Drupal. Στόχος της παρούσας πτυχιακής εργασίας είναι να παρουσιάσει μια σύγχρονη διαδικτυακή ε- φαρμογή συνδέοντας τις έννοιες του e-commerce και του Drupal, χρησιμοποιώντας σύγχρονα επαγγελματικά εργαλεία και τεχνικές. -i-

Ευχαριστίες Αρχικά θέλω να ευχαριστήσω τον επιβλέποντα καθηγητή μου Σάββα Ηλία που μου έ- δωσε τόσο την ευκαιρία να μελετήσω αυτό το πολύ σύγχρονο και ενδιαφέρον θέμα όσο και τις χρήσιμες συμβουλές του σε όλη τη διάρκεια συγγραφής της πτυχιακής. Και ένα μεγάλο ευχαριστώ στον Θάνο, τον Παναγιώτη, την Κατερίνα, την Ναταλία και τον Φώτη για την στήριξη τους και την πολύτιμη βοήθεια τους. Χριστίνα Καλούδη, 12-12-2014 -iii-

Περιεχόμενα ΠΕΡΙΛΗΨΗ... I ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... 5 1 ΕΙΣΑΓΩΓΗ... 7 2 E-COMMERCE... 8 2.1 ΓΕΝΙΚΑ ΤΕΧΝΟΛΟΓΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ... 8 2.2 E-COMMERCE ΚΑΙ E-BUSINESS... 9 2.3 ΠΛΕΟΝΕΚΤΗΜΑΤΑ... 12 2.4 ΜΕΙΟΝΕΚΤΗΜΑΤΑ... 14 2.5 ΑΣΦΑΛΕΙΑ... 15 2.5.1 Πελάτης... 15 2.5.2 Σύστημα... 16 2.6 ΒΙΒΛΙΟΓΡΑΦΙΑ... 17 3 DRUPAL 7... 18 3.1 ΤΙ ΕΙΝΑΙ ΤΟ DRUPAL... 18 3.2 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΕΙΔΙΚΟΤΗΤΕΣ... 20 3.3 Ο DRUPAL 7 ΠΥΡΗΝΑΣ... 23 3.3.1 Events και Hooks... 26 3.4 MENU SYSTEM... 29 3.5 MODULE SYSTEM... 32 3.5.1 Είδη ενός Module... 32 3.5.2 Ανατομία ενός Module... 33 3.6 FORM SYSTEM... 34 3.7 THEME SYSTEM... 36 3.7.1 Τρόπος Λειτουργίας ενός Theme... 36 3.7.2 Δομή και Διαδικασία σύνθεσης ενός Theme... 37 3.8 ΑΝΑΛΥΣΗ ΤΩΝ CONTRIB MODULES... 40-5-

Entity Reference... 40 Commerce... 40 Views 40 Field Collection... 41 Features... 41 Rules 41 Devel 41 Mail System... 41 3.9 ΑΣΦΑΛΕΙΑ... 42 3.10 ΒΙΒΛΙΟΓΡΑΦΙΑ... 44 4 ΑΠΑΡΑΙΤΗΤΑ ΕΡΓΑΛΕΙΑ... 45 4.1 ΧAMP LAMP... 45 4.2 DRUSH... 49 4.3 ECLIPSE... 50 4.3.1 Τι είναι το Eclipse... 50 4.3.2 Plugins... 51 4.4 SASS ΚΑΙ COMPASS... 52 4.5 ΒΙΒΛΙΟΓΡΑΦΙΑ... 53 5 ΕΦΑΡΜΟΓΗ... 54 5.1 ΣΤΑΔΙΟ ΑΝΑΛΥΣΗΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ... 54 5.1.1 Σενάριο... 54 5.1.2 Διαγράμματα Ροής και Υλοποίηση... 55 5.1.3 Content Types... 70 5.1.4 Views... 75 5.2 ΣΤΑΔΙΟ ΕΜΦΑΝΙΣΗΣ... 84 5.2.1 Δημιουργία subtheme και ρυθμίσεων... 84 6 ΜΕΛΛΟΝΤΙΚΕΣ ΕΞΕΛΙΞΕΙΣ... 90 6.1 ΒΙΒΛΙΟΓΡΑΦΙΑ... 92 ΠΑΡΑΡΤΗΜΑ Α... 93

1 Εισαγωγή Ένα μεγάλο κομμάτι του επιχειρηματικού κόσμου στην σημερινή εποχή αποτελεί το e- Commerce ή αλλιώς ηλεκτρονικό εμπόριο. Μεγάλο ενδιαφέρον έχει εκδηλωθεί γύρω από το θέμα του e-commerce τόσο σε επιχειρηματικό επίπεδο όσο και σε τεχνικό επίπεδο. Η παρούσα πτυχιακή εργασία στο δεύτερο κεφάλαιο αναλύει την έννοια του e- Commerce και της προκλήσεις που καλείται να αντιμετωπίσει σε θέματα λειτουργικότητας και ασφάλειας, ως προς τις απαιτήσεις του καταναλωτή και κατ επέκταση του συστήματος. Επιπλέον γίνεται μια ανάλυση όσο αφορά το επιχειρηματικό πλάνο που ακολουθεί. Το ενδιαφέρον που έχει εκδηλωθεί γύρω από το e-commerce συνδέεται άμεσα με την τεχνική ανάπτυξη του διαδικτύου καθώς οι απαιτήσεις των διαδικτυακών εφαρμογών αυξάνονται ολοένα και περισσότερο. Η συνέπεια αυτού το φαινομένου έχει ως α- ποτέλεσμα την εξέλιξη του τρόπου υλοποίησης διαδικτυακών εφαρμογών. Πιο συγκεκριμένα την εύρεση νέων τρόπων δημιουργίας και διαχείρισης διαδικτυακών εφαρμογών. Η ανάγκη αυτή ήταν και ο κύριος λόγος δημιουργίας ειδικών συστημάτων διαχείρισης διαδικτυακού περιεχομένου. Στο δεύτερο κεφάλαιο η πτυχιακή επικεντρώνεται σε ένα τέτοιο είδος σύστημα διαχείρισης περιεχομένου το Drupal. Σε αυτό το κεφάλαιο αναλύονται σε συστημικό επίπεδο τα συστατικά από τα οποία αποτελείται το Drupal καθώς και ο τρόπος λειτουργίας του. Στη συνέχεια στο τέταρτο και πέμπτο κεφάλαιο συνδυάζοντας τις έννοιες του e- Commerce και του Drupal, πραγματοποιείται η σχεδίαση, ανάλυση και υλοποίηση μιας διαδικτυακής εφαρμογής με Drupal. Επιπλέον γίνεται μια ανάλυση σε όλα τα απαραίτητα εργαλεία που συμβάλουν στη διαδικασία δημιουργίας μιας διαδικτυακής εφαρμογής με Drupal. Καθώς η απαιτήσεις στο τεχνικό κόσμο του διαδικτύου αυξάνονται, η ανάγκη για εξέλιξη είναι αναμφισβήτητη. Κλείνοντας με το έκτο κεφάλαιο γίνεται μια αναφορά στο σημαντικό θέμα τις εξέλιξης και πιο συγκεκριμένα για την αναβάθμιση του Drupal από την έκδοση 7 στην έκδοση 8. -7-

2 E-Commerce Το E-Commerce ή ηλεκτρονικό εμπόριο, ως έννοια αναφέρεται στην χρήση ηλεκτρονικών μέσων για την διεξαγωγή κάποιας μορφής εμπορίου. Για παράδειγμα πωλήσεις, αγορές, μεταφορές ή ανταλλαγές προϊόντων, υπηρεσιών και πληροφοριών. Στη συνέχεια αναλύεται η έννοια του e-commerce, τα μοντέλα που χρησιμοποιεί και το θέμα της ασφάλειας που καλείται να αντιμετωπίσει. 2.1 Γενικά τεχνολογικά Χαρακτηριστικά Το E-Commerce αποτελεί μια σύγχρονη μέθοδο προώθησης προϊόντων και υπηρεσιών με ταχύτατη εξέλιξη στο χώρο του διαδικτύου. Πολλές οικογένειες αλλά και επιχειρήσεις έχουν στραφεί στην χρήση του e-commerce καθώς ανταποκρίνεται στην ανάγκη μείωσης του κόστους και παράλληλα τη βελτίωση ποιότητας των αγαθών και υπηρεσιών, αυξάνοντας παράλληλα την ταχύτητα παράδοσης. Εικόνα 1 e-commerce. Πρόκειται για ένα σύστημα εμπορικών συναλλαγών μέσω διαδικτύου και αναφέρεται σε συναλλαγές που δεν συμπεριλαμβάνουν την χρήση χαρτιού. Οι συναλλαγές αυτές χρησιμοποιούν τεχνολογίες όπως η Ηλεκτρονική Ανταλλαγή δεδομένων ( Electronic Data Exchange), η ηλεκτρονική αλληλογραφία (e-mail), η διαχείριση εταιρικού περιεχομένου,

ηλεκτρονικούς πίνακες ανακοινώσεων (Electronic Bulletin Boards), ηλεκτρονική ενημέρωση, ψηφιακές αγορές και παρακολούθηση παράδοσης προϊόντων, ηλεκτρονική μεταφορά κεφαλαίου (Electronic Fund Transfer), τραπεζικές συναλλαγές, και διαφόρων άλλου τύπου ηλεκτρονικών υπηρεσιών. Ένα μεγάλο ποσοστό των συναλλαγών αφορούν την αγορά φυσικών προϊόντων, τα οποία μέσο ενός συστήματος μεταφορών, αποστέλλονται στη συνέχεια στους αγοραστές. Οι ηλεκτρονικοί προμηθευτές συχνά αποκαλούνται e-tailers, ενώ η διαδικασία αγοράς των προϊόντων μέσω internet ονομάζεται e-tail. 2.2 E-Commerce και E-Business Το E-commerce, καθώς αποτελεί αντικείμενο επιχειρήσεων στηρίζει το είδος των συναλλαγών του σε επιχειρηματικά μοντέλα, συνδυάζοντας την έννοια του ηλεκτρονικού εμπορίου (E-Commerce) με την έννοια του ηλεκτρονικού επιχειρείν (E-Business). Εικόνα 2 e-business και e- Commerce. Ένας τρόπος διαχωρισμού των επιχειρηματικών μοντέλων σε κατηγορίες γίνεται βάση το είδος της συνεργασίας που υπάρχει σε μια συναλλαγή. Στη συνέχεια παρουσιάζονται τα επιχειρηματικά μοντέλα του e-commerce. -9-

Business-to-Business (B-to-B) Αφορά ανταλλαγές προϊόντων, υπηρεσιών ή πληροφοριών μεταξύ επιχειρήσεων. Παράδειγμα αποτελεί η γνωστή εταιρεία Cisco όπου οι επιχειρήσεις που αποτελούν πελάτες της, έχουν τη δυνατότητα τόσο να αγοράσουν τα προϊόντα της όσο και να επωφελούνται από τις παροχές υπηρεσιών που προσφέρει (Τεχνική Υποστήριξη). Business-to-consumer (B-to-C) Αφορά ανταλλαγές προϊόντων, υπηρεσιών ή πληροφοριών μεταξύ επιχειρήσεων και καταναλωτών συνδέοντας τους με μια σχέση λιανικού εμπορίου. Ένα παράδειγμα αποτελεί το amazon.com. Business-to-Government (B-to-G) Αφορά ανταλλαγές προϊόντων, υπηρεσιών ή πληροφοριών μεταξύ των επιχειρήσεων και της κυβέρνησης. Business-to-Peer Networks (B-to-P) Αφορά ανταλλαγές προϊόντων, υπηρεσιών ή πληροφοριών μεταξύ των επιχειρήσεων και ομότιμων δικτύων. Ένα γνωστό παράδειγμα αποτελεί το Napster το οποίο παρέχει λογισμικό και εγκαταστάσεις για την ενεργοποίηση ομότιμων δικτύων Consumer-to-Business (C-to-B) Αφορά συναλλαγές μεταξύ ανεξάρτητων ατόμων και επιχειρήσεων. Αφορά άτομα που πουλάνε υπηρεσίες σε επιχειρήσεις. Consumer-to-Consumer (C-to-C) Σε αυτό το επιχειρηματικό μοντέλο συναντάται η άμεση αλληλεπίδραση μεταξύ ανεξάρτητων ατόμων, όπου ανταλλάσουν κάποιο είδος πληροφορίας. Peer to-peer Network (P-to-P) Αφορά ένα επικοινωνιακό μοντέλο όπου κάθε μέλος έχει ισοδύναμες δυνατότητες σε υπηρεσίες επικοινωνίας. Το συγκεκριμένο μοντέλο περιγράφει εφαρμογές που μπορούν να χρησιμοποιηθούν από χρήστες και μπορούν να χρησιμοποιήσουν το διαδίκτυο για να ανταλλάξουν μεταξύ τους αρχεία μέσω ενός server. Consumer-to-Peer Networks (C-to-P) Αφορά κομμάτι του επιχειρηματικού μοντέλου peer-to-peer, με την διαφορά ότι εδώ ο καταναλωτής προσφέρει υπολογιστικές εγκαταστάσεις μόνο όταν είναι συνδεδεμένοι σε αυτό το δίκτυο.

Government-to-Business (G-to-B) Αφορά την ανταλλαγή πληροφοριών και υπηρεσιών μεταξύ της κυβέρνησης και των επιχειρήσεων. Με αυτό τον τρόπο αυξάνεται η ταχύτητα, μειώνεται το κόστος δίνοντας στις επιχειρήσεις οικονομικά κίνητρα να χρησιμοποιήσουν ηλεκτρονικές μορφές πληρωμής και εγκαταστάσεων. Government-to-Consumer (G-to-B) Σε αυτό το μοντέλο η κυβέρνηση δίνει την δυνατότητα χρησιμοποίησης ηλεκτρονικών μέσων τόσο για την πληρωμή λογαριασμών όσο και την εκτύπωση επίσημων εγγράφων (φορολογική δήλωση, Ε9 κτλ). Government-to-Government (G-to-G) Αφορά την ανταλλαγή πληροφοριών μεταξύ κυβερνητικών οργανώσεων. Αυτό επιτυγχάνει την ηλεκτρονική επικοινωνία και ανταλλαγή πληροφοριών μεταξύ διαφορετικών χωρών. Peer Network-to-Business (P-to-B) Αφορά την παροχή πόρων ενός δικτύου σε επιχειρήσεις. -11-

2.3 Πλεονεκτήματα Τα πλεονεκτήματα που δημιουργούνται χρησιμοποιώντας το e-commerce είναι πολυάριθμα και σε γενικές γραμμές κατατάσσονται σε τρείς μεγάλες κατηγορίες. Πλεονεκτήματα ως προς τις επιχειρήσεις, ως προς τους καταναλωτές και ως προς την κοινωνία. Στην συνέχεια παρουσιάζονται και αναλύονται αυτά τα πλεονεκτήματα. Η υιοθέτηση του e-commerce από τις επιχειρήσεις έχει ως αποτέλεσμα την επέκταση τους τόσο σε εθνικό όσο και σε διεθνή επίπεδο καταβάλλοντας την ελάχιστη ε- πένδυση κεφαλαίου. Επιπλέον έχουν την δυνατότητα να εντοπίσουν περισσότερους πελάτες αλλά και να βρουν τους κατάλληλους συνεργάτες σε όλο τον κόσμο που έχει ως αποτέλεσμα την δημιουργία μιας παγκόσμιας αγοράς. Οι επιχειρήσεις που χρησιμοποιούν ηλεκτρονική μορφή σε διαδικασίες που αφορούν συναλλαγές όπως την διανομή, ανάκτηση και διαχείριση εγγράφων με χρήσιμες πληροφορίες, τις βοηθά να μειώσουν τον χρόνο, το κόστος και την κατανάλωση χαρτιού. Επιπλέον βελτιώνει την εικόνα της επιχείρησης και βοηθά στην παροχή καλύτερης υποστήριξης πελατών. Αντίστοιχα από την πλευρά των καταναλωτών τα πλεονεκτήματα είναι ακόμα περισσότερα. Ο καταναλωτής έχει στην διάθεση του οπουδήποτε κατάστημα εικοσιτέσσερις ώρες το εικοσιτετράωρο και εφτά μέρες την εβδομάδα για να πραγματοποιήσει τις αγορές του από οποιοδήποτε μέρος. Επιπλέον με τις διάφορες λειτουργικότητες που προσφέρονται από το e-commerce, ο καταναλωτής μπορεί πολύ εύκολα να συγκρίνει προϊόντα, να βλέπει αναλυτικές περιγραφές προϊόντων ακόμα να βλέπει και σχόλια άλλων καταναλωτών για την ποιότητα ενός προϊόντος. Το e-commerce σε γενικότερες γραμμές βοηθά και σε άλλα πράγματα γενικότερης εμβέλειας τα οποία παραθέτονται στην παρακάτω λίστα: Αυξάνει την ανταγωνιστικότητα μεταξύ των επιχειρήσεων με αποτέλεσμα να αναγκάζει τις επιχειρήσεις παράγουν ποιοτικά καλύτερα προϊόντα αλλά και μειώνουν παράλληλα τις τιμές αγοράς κάνοντας καλύτερες τιμές σε μαζικές α- γορές αλλά και δημιουργώντας συχνότερα προσφορές. Οι καταναλωτές δεν χρειάζεται να χρησιμοποιήσουν κάποιο μέσω μεταφοράς όπως αυτοκίνητο ή αεροπλάνο με αποτέλεσμα το e-commerce να συμβάλει στην μείωση των ρύπων.

Συμβάλει στην δημιουργία μιας παγκόσμιας αγοράς δίνοντας την δυνατότητα στους καταναλωτές να επιλέξουν προϊόντα άλλων χωρών που μέχρι τώρα δεν μπορούσαν να αποκτήσουν. -13-

2.4 Μειονεκτήματα Εκτός από τα πλεονεκτήματα το e-commerce παρουσιάζει και μειονεκτήματα που α- φορούν θέματα τόσο σε τεχνικό επίπεδο αλλά και σε μη τεχνικό επίπεδο. Σε μη τεχνικό επίπεδο υπάρχουν τα παρακάτω μειονεκτήματα Ο καταναλωτής δεν μπορεί να χρησιμοποιήσει καμία άλλη αίσθηση πέρα από την όραση, πράγμα που δημιουργεί αμφισβητήσεις για την ποιότητα των προϊόντων. Ο καταναλωτής δεν εμπιστεύεται να χρησιμοποιήσει την πιστωτική του κάρτα για την πραγματοποίηση αγορών αμφισβητώντας τόσο την ασφάλεια των συναλλαγών του, αλλά και την ύπαρξη ενός άυλου ηλεκτρονικού καταστήματος. Δεν διασφαλίζεται απόλυτα η ακεραιότητα και η ασφάλεια των ευαίσθητων προσωπικών δεδομένων στις ηλεκτρονικές συναλλαγές. Πολλά καταστήματα δεν είναι εφικτό να πάρουν μέρος στο ηλεκτρονικό εμπόριο, καθώς το είδος των προϊόντων που προσφέρουν δεν είναι εύκολα μεταφέρσιμο ή η ποιότητα του αλλοιώνεται κατά τη διάρκεια της μεταφοράς. Για παράδειγμα τρόφιμα ή μεγάλου βάρους και όγκου προϊόντα όπως καναπέδες ή βιβλιοθήκες. Επιπλέον, το e-commerce συμβάλει στην αύξηση της ανεργίας, καθώς καταργεί το επάγγελμα του πωλητή και του ταμεία. Πολλά θέματα που σχετίζονται τόσο με εθνικούς αλλά και διεθνείς νόμους και κανονισμούς παραμένουν ανεπίλυτα.

2.5 Ασφάλεια Η ασφάλεια αποτελεί απαραίτητο κομμάτι οποιασδήποτε ηλεκτρονικής συναλλαγής καθώς ένας πελάτης δεν θα εμπιστευτεί μια αναξιόπιστη ηλεκτρονική συναλλαγή που θέτει σε κίνδυνο ευαίσθητες προσωπικές πληροφορίες. Τόσο από την πλευρά του πελάτη όσο και από την πλευρά του συστήματος υπάρχουν απαιτήσεις ασφάλειας. Ακολουθεί μια ανάλυση στο θέμα της ασφάλειας για αυτές οι απαιτήσεις και από τις δύο οπτικές γωνίες. 2.5.1 Πελάτης Από την πλευρά του πελάτη είναι απαραίτητο να ικανοποιούνται οι παρακάτω προδιαγραφές ώστε να καθιστούν μια ηλεκτρονική συναλλαγή ασφαλή. Εμπιστευτικότητα Οι πληροφορίες του πελάτη δεν θα πρέπει να είναι προσιτές σε μη εξουσιοδοτημένα άτομα καθώς και δεν θα μπορούν να υποκλαπούν κατά την μετάδοση. Ακεραιότητα Οι πληροφορίες δεν θα πρέπει να μεταβληθούν/τροποποιηθούν κατά την διάρκεια της μετάδοσης τους στο διαδίκτυο. Διαθεσιμότητα Οι πληροφορίες θα πρέπει να είναι διαθέσιμες οπουδήποτε και οποτεδήποτε ζητηθούν από τον πελάτη μέσα στα χρονικά πλαίσια μιας συναλλαγής όπως αυτή έχει καθοριστεί. Αυθεντικότητα Θα πρέπει να υπάρχει ένας μηχανισμός που θα πιστοποιεί την ταυτότητα του χρήστη πριν του δοθεί πρόσβαση σε οποιαδήποτε αποκρυμμένη πληροφορία. Μη Ευυποληψία Είναι μια προστασία κατά της άρνησης της τάξης ή της άρνησης πληρωμής. Με την έννοια ότι όταν ο αποστολέας στείλει ένα μήνυμα, ο ίδιος δεν θα μπορεί να αρνηθεί την αποστολή του μηνύματος. Αντίστοιχα και για τον δέκτη να μην του επιτρέπεται να αρνηθεί ότι έλαβε το μήνυμα. Κρυπτογράφηση Οι πληροφορίες θα πρέπει να μπορούν να κρυπτογραφηθούν και αποκρυπτογραφηθούν μόνο από τον εξουσιοδοτημένο χρήστη. -15-

Δυνατότητα Ελέγχου Τα δεδομένα θα πρέπει να καταγράφονται κατά τέτοιο τρόπο ώστε να μπορούν να ε- λεγχθούν για απαιτήσεις ακεραιότητας, με την έννοια ότι δεν θα μπορούν να τροποποιηθούν ή διαστρεβλωθούν εφόσον έχουν καταγραφεί. 2.5.2 Σύστημα Από την πλευρά του συστήματος για να επιτευχθούν οι απαιτήσεις των πελατών τα κυριότερα μέτρα ασφαλείας που έχουν παρθεί είναι τα παρακάτω. Κρυπτογράφηση Αποτελεί έναν αποτελεσματικό τρόπο ασφαλούς μετάδοσης δεδομένων στο διαδίκτυο. Η κρυπτογράφηση από την πλευρά του αποστολέα κρυπτογραφεί τα δεδομένα χρησιμοποιώντας ένα μυστικό κωδικό. Ο αποστολέας για να αποκρυπτογραφήσει και να δει το μήνυμα πρέπει να έχει αυτόν ή κάποιο άλλο ειδικό κωδικό. Σήμερα υπάρχουν πολλές σύγχρονες τεχνικές κρυπτογράφησης που επιτυχώς αποκρύπτουν τα μεταδιδόμενα δεδομένα. Ηλεκτρονική Υπογραφή Η ηλεκτρονική υπογραφή είναι ένας τρόπος πιστοποίησης της αυθεντικότητας των δεδομένων μιας συναλλαγής. Πιστοποιητικά ασφαλείας Τα πιστοποιητικά ασφαλείας είναι στην ουσία ένα μοναδικό ηλεκτρονικό id το οποίο χρησιμοποιείται για να πιστοποιήσει την ταυτότητα ενός ατόμου ή ενός ισότοπου. Στις ηλεκτρονικές συναλλαγές χρησιμοποιούνται πολλά πρωτόκολλα ασφαλείας όπως το SSL, SSH, SHTTP και πολλά ακόμη που συνθέτουν πολύπλοκα συστήματα ηλεκτρονικών συναλλαγών που σκοπό έχουν να καλύψουν τις απαιτήσεις ασφαλείας των καταναλωτών.

2.6 Βιβλιογραφία [1] Philippe Humeau, Matthieu Jung - The White Book of Ecommerce Solutions, διαθέσιμο στο http://www.nbs-system.co.uk/?s=ecommerce. [2] E-Commerce, διαθέσιμο στο http://www.sxccal.edu/msccs/ecommerce1.pdf [15-11- 2014] [3] Τι είναι το e-commerce, Οκτώβριος 17 Γράφτηκε από τον Pavlos Chatzipapas, διαθέσιμο στο http://www.cnctech.gr/blog/ti-einai-to-e-commerce [15-11-2014] [4] Μειονεκτήματα ηλεκτρονικού εμπορίου, διαθέσιμο στο https://sites.google.com/site/ecommerceicsd1/meionektemata-elektronikou-emporiou [23-11-2014] [5] Μειονεκτήματα του ηλεκτρονικού εμπορίου διαθέσιμο στο http://goo.gl/czjooh [23-11-2014] -17-

3 Drupal 7 Καθώς οι εξελίξεις στο χώρο του διαδικτύου προχωράνε με ταχύτατους ρυθμούς, η εμφάνιση νέων απαιτήσεων στον τεχνικό τομέα είναι πλέον καθημερινότητα. Μια από τις καινούριες σχετικά προσεγγίσεις, που κάνει ευκολότερο τον τρόπο αντιμετώπισης αυτών των τεχνικών απαιτήσεων, είναι το Drupal. Στη συνέχεια αναλύονται τα τεχνικά χαρακτηριστικά του Drupal 7 καθώς και ο τρόπος λειτουργίας του, η λογική του,η χρησιμότητα του και θέματα ασφαλείας που έχουν παρθεί για την αντιμετώπιση κακόβουλων επιθέσεων. 3.1 Τι είναι το Drupal Το Drupal είναι ένα σύστημα διαχείρισης περιεχομένου, CMS(Content Management System) που χρησιμοποιείται για την δημιουργία δυναμικών ιστοσελίδων. Είναι ελεύθερου λογισμικού και διανέμεται δωρεάν. Προσφέρει ένα ευρύ φάσμα δυνατοτήτων και λειτουργιών, που είναι ικανό να ανταπεξέλθει σε απαιτήσεις ενός μικρού προσωπικό blog μέχρι και σε μεγάλου μεγέθους συστήματα με πολλές απαιτήσεις. Για το λόγο αυτό μπορεί εύκολα να χρησιμοποιηθεί από ιδιώτες και μικρές επιχειρήσεις αλλά και από διεθνείς οργανισμούς. Εικόνα 3 Λογότυπο του Drupal. Έκανε την εμφάνιση του το 1999 ως ένας πίνακας ανταλλαγής μηνυμάτων. Μέσα σε ένα χρόνο περίπου, ολοένα και περισσότεροι άνθρωποι έδειχναν το ενδιαφέρον τους για το Drupal, και αυτός ήταν κι ο λόγος που το έκανε project ανοιχτού κώδικα (Open source). Το 2001 ήταν πλέον διαθέσιμο στο διαδίκτυο και το 2005 εξελίχθηκε, η γνω-

στή κοινότητα του Drupal κάνοντας πολλές συνεδρίες και ανταλλάσοντας κώδικα με σκοπό την εξέλιξη του. Μέχρι και σήμερα συνεχίζεται αυτή η παράδοση με την διεξαγωγή οργανωμένων συνεδρίων παρουσίασης του Drupal, το γνωστό Drupal Con σε όλο τον κόσμο. Όπως τα περισσότερα συστήματα διαχείρισης περιεχομένου, έτσι και το Drupal λειτουργεί με έναν συγκεκριμένο τρόπο ώστε να εμφανίζει τις html σελίδες ενός web site. Η διαδικασία αρχίζει όταν ένας χρήστης στείλει ένα έτοιμα στον web server, τότε ο web server παίρνει αυτό το αίτημα και καλεί ένα πρόγραμμα γραμμένο σε PHP γλώσσα, αυτό είναι και το πρώτο σημείο επαφής με το Drupal. Αυτό το πρόγραμμα συγκεντρώνει τα αρχεία γραφικών αλλά και άλλους πόρους, και αντλεί τα δεδομένα των πόρων που βρίσκονται συγκεντρωμένα σε μία σχεσιακή βάση δεδομένων. Στη συνέχεια το πρόγραμμα αυτό καλεί μια σειρά από άλλα προγράμματα, που με τη σειρά τους καλούν άλλα προγράμματα πολύ γρήγορα και αποτελεσματικά με σκοπό την σύνθεση μιας html σελίδας. Τέλος αυτή η html σελίδα επιστρέφεται στον χρήστη μέσα από τον web server. Η παραπάνω διαδικασία αναπαριστάται στην παρακάτω εικόνα. Εικόνα 4 Διαδικασία διαχείρισης των http request από το Drupal. -19-

3.2 Αρχιτεκτονική και Ειδικότητες Η αρχιτεκτονική του Drupal είναι με τέτοιο τρόπο σχεδιασμένη και κατανεμημένη σε επίπεδα, ώστε να διαχωρίζονται η διάφορες λειτουργίες σε επιμέρους κατηγορίες. Εικόνα 5 Αρχιτεκτονικά συστατικά του Drupal. Όπως φαίνεται και στην παραπάνω εικόνα. η αρχιτεκτονική του Drupal αποτελείται από τον πυρήνα του Drupal core, τα modules την μηχανή για την τροποποίηση της εμφάνισης και το theme. Ο πυρήνας του Drupal αποτελείται από όλες τις ρυθμίσεις modules και theme τα οποία εγκαθίστανται κατά την προεπιλεγμένη εγκατάσταση ενός Drupal site. Τα modules αποτελούν την επιπλέον λειτουργικότητα που μπορεί να αποκτήσει ένα drupal site. Η μηχανή για την τροποποίηση της εμφάνισης αποτελεί μια μηχανή η οποία αναγνωρίζει όλα τα συστατικά που συνθέτουν την εμφάνιση ενός theme. Είναι υπεύθυνη για το συνδυασμό των διάφορων πληροφοριών τα κατά τέτοιο τρόπο ώστε να είναι ικανή να αναγνωρίσει ένα theme. Ένα theme είναι όλα εκείνα τα συστατικά που συμβάλουν στην εμφάνιση ενός Drupal site όπως css, JavaScript, JQuery αλλά και PHP αρχεία. Ο τρόπος σχεδιασμού της αρχιτεκτονικής του Drupal έγινε κατά τέτοιο τρόπο ώστε να είναι ευκολότερος ο τρόπος ανάθεσης συγκεκριμένων αρμοδιοτήτων στις διάφορες ειδικότητες που συμβάλουν στη δημιουργία ενός site.

Τρείς ειδικότητες επαγγελματιών είναι αυτές που συμβάλλουν στην δημιουργία ε- νός Drupal Site. Εικόνα 6 Αναπαράσταση επαγγελματικών ειδικοτήτων στη δημιουργία ενός Drupal site. Πρώτα έρχεται ο σχεδιαστής-designer, ο οποίος σχεδιάζει το γραφικό περιβάλλον που έχει ένα site. Συνήθως σχεδιάζει την αρχική σελίδα που φαίνεται στους χρήστες αλλά και το γραφικό περιβάλλον των υπόλοιπων σελίδων που περιέχει το site. Από αυτή τη γραφική αναπαράσταση, μπορούν να αντληθούν χρήσιμες πληροφορίες για την λειτουργικότητα που χρειάζεται το site, και τις περισσότερες φορές γίνεται χρήσιμο εργαλείο επικοινωνίας με τον πελάτη. Ένας Designer, έχει την σχεδιαστική αντίληψη και γνωρίζει πώς να χρησιμοποιήσει συστήματα γραφικής σχεδίασης, ώστε να σχεδιάσει λειτουργικά περιβάλλοντα για τους χρήστες. Στη συνέχεια έρχεται ο προγραμματιστής Developer, ο οποίος είναι υπεύθυνος για την λογική και την λειτουργικότητα του site. Χρησιμοποιεί, αποθηκεύει και διαθέτει δεδομένα στο επίπεδο της εμφάνισης-theme Layer. Όπως για παράδειγμα να φτιάξει έναν χρήσιμο κώδικα με σκοπό να προσθέσει μια χρήσιμη λειτουργία στον χρήστη (όπως μια φόρμα αναζήτησης). Επιπλέον, χρησιμοποιεί μεθόδους για να αντλήσει πληροφορίες από την βάση δεδομένων με σκοπό να παρουσιάσει μια σειρά από δεδομένα με τέτοιο τρόπο ώστε να μπορεί να τα χρησιμοποιήσει ο Themer. Τέλος έρχεται ο Themer, ο οποίος βρίσκεται ανάμεσα στον προγραμματιστή και τον σχεδιαστή. Χρησιμοποιεί την γραφική αναπαράσταση του σχεδιαστή, και την λογική παρουσίαση του προγραμματιστή μετατρέποντάς την σε κώδικα HTML ώστε να καθορίσει την δομή των συστατικών στοιχείων, και σε κώδικα CSS για την οπτική αναπαράσταση. Όπως για παράδειγμα η επιλογή των χρωμάτων, το μέγεθος και την θέση των στοιχείων, ώστε να συνθέσουν την τελική εμφάνιση που θα δει ο τελικός χρήστης. -21-

Παρόλο που ο διαχωρισμός αυτός είναι ξεκάθαρος, τις περισσότερες φορές σε πρακτικές συνθήκες, τα πράγματα είναι διαφορετικά. Για παράδειγμα ο σχεδιαστής πρέπει να γνωρίζει τις δυνατότητες του Drupal ώστε να μπορέσει να σχεδιάσει κάτι, που να μπορεί να γίνει σε κώδικα και να μπορεί να παρουσιαστεί ως εμφάνιση. Επιπλέον ο Themer καλείται να προσθέσει λογική στην εμφάνιση και κατά συνέπεια να γνωρίζει βασικές αρχές προγραμματισμού. Για παράδειγμα να στοιχίσει τα δομικά στοιχεία μιας σελίδας χρησιμοποιώντας τις μεταβλητές που έχει δημιουργήσει ο προγραμματιστής.

3.3 Ο Drupal 7 Πυρήνας Το Drupal έχει ένα ξεχωριστό τρόπο λειτουργίας και μια δική του ιδιαίτερη λογική στο πως αντιλαμβάνεται τις διάφορες λειτουργικότητες που υπάρχουν σε έναν ισότοπο. Ένα ευσταθές παράδειγμα αποτελεί ένα Lego πάζλ, όπου κάθε κομμάτι μπορεί να ενωθεί με άλλα κομμάτια και αυτά με τη σειρά τους με διαφορετικά κομμάτια και να συνθέσουν μια οντότητα, έτσι και το Drupal συνδυάζει τα δικά του κομμάτια κατά τέτοιο τρόπο ώστε να συνθέσει ένα ολοκληρωμένο σύστημα. Εικόνα 7 Συστατικά στοιχεία του Drupal. -23-

Για κάθε διαφορετική λειτουργία που παρέχεται τόσο για την λειτουργικότητα όσο και την επεκτασιμότητα του Drupal, είναι υπεύθυνο κάθε φορά και ένα διαφορετικό υπό-σύστημα. Με την έννοια ότι αποτελείται από μια συγκεκριμένη ροή δεδομένων που παρέχει επαναχρησιμοποιούμενες συναρτήσεις, όπου εύκολα μπορούν να δημιουργήσουν ή ακόμα και να επεκτείνουν μια λειτουργία. Τα υποσυστήματα αυτά το Drupal τα ονομάζει APIs. Αν κάποιος ήθελε να παρομοιάσει την λειτουργικότητα αυτή, θα μπορούσε να πει ότι αποτελεί ένα είδος Web Service, το οποίο μπορεί να χρησιμοποιηθεί μόνο στα πλαίσια της εφαρμογής. Παρακάτω ακολουθεί μια λίστα που συμπεριλαμβάνει τα βασικά υποσυστήματα που συνθέτουν τις λειτουργίες στον πυρήνα του Drupal και είναι υπεύθυνα για την λειτουργία του Drupal ως σύστημα. Το σύστημα των Modules (Module System) Ασχολείται με τον τρόπο λειτουργίας, επέκτασης αλλά και λειτουργικότητας του Drupal και αναλύεται στο κεφάλαιο 3.5 Το σύστημα δημιουργίας φόρμας (Form Generation, Form API) Το οποίο ασχολείται με τν λειτουργικότητα των φορμών και αναλύεται στο κεφάλαιο 3.6 Το σύστημα εμφάνισης (Theme System) Το οποίο περιλαμβάνει την λειτουργικότητα για την σύνθεση της εμφάνισης και αναλύεται στο κεφάλαιο 3.7 Τo μενού σύστημα (Menu System) Το οποίο ασχολείται κυρίως με τον τρόπο λειτουργίας των url και αναλύεται στο κεφάλαιο 3.4 Το σύστημα πεδίων (Field API) Το οποίο είναι υπεύθυνο για την λειτουργία των πεδίων. Παρέχει ένα σύστημα για την δημιουργία νέων πεδίων και την επέκταση των ήδη υπαρχόντων τόσο σε επίπεδο αποθήκευσης δεδομένων όσο και σε επίπεδο χρησιμοποίησης από τον χρήστη με γραφικό περιβάλλον. Το σύστημα πρόσβασης περιεχομένου (Node Access System) Το σύστημα αυτό ασχολείται με την ανάθεση αδειών στους χρήστες για την προβολή, τροποποίηση ή ακόμα και την διαγραφή του περιεχομένου.

User API Στο Drupal υπάρχουν δύο τύποι χρηστών, οι διαπιστευμένοι χρήστες και οι α- νώνυμοι χρήστες. Το User API παρέχει διάφορα εργαλεία που επιτρέπει σε έναν προγραμματιστή να χρησιμοποιήσει με σκοπό να εργαστεί με αυτούς τους χρήστες. Για παράδειγμα να τροποποιήσει δεδομένα που σώζονται σε κάθε λογαριασμό χρήστη και να παρεμβαίνει σε διάφορα συμβάντα που δημιουργούνται από έναν χρήστη. Το σύστημα αναζήτησης (Search System) Το οποίο ασχολείται με τεχνικές εύρεσης περιεχομένου στον ισότοπο το γνωστό SEO, χρησιμοποιώντας κυρίως κανονικές εκφράσεις (regular expressions). Το σύστημα αρχείων (File Upload System) Το οποίο είναι υπεύθυνο για την αποθήκευση, ανάκτηση και την επεξεργασία των αρχείων. Το Στρώμα αφαίρεσης Βάση Δεδομένων (Database abstraction layer) Το οποίο είναι υπεύθυνο για τον τρόπο με τον οποίο ρέουν τα δεδομένα που υ- πάρχουν στην βάση δεδομένων και τον τρόπο επικοινωνίας μεταξύ προγραμματιστή και βάσης δεδομένων παρέχοντας ένα ειδικά σχεδιασμένο τρόπο λειτουργίας αποτρέποντας τις κακόβουλες επιθέσεις. Οι σταθερές (Constants) Το κομμάτι αυτό περιλαμβάνει σταθερές οι οποίες αλληλεπιδρούν με το σύστημα του Drupal παρέχοντας κάποιο είδος λειτουργικότητας. Οι καθολικές μεταβλητές ( Global Variables) Το κομμάτι αυτό περιλαμβάνει μεταβλητές ορατές σε όλο το σύστημα του Drupal που μπορούν να χρησιμοποιηθούν για την σύνθεση νέων λειτουργιών. Για παράδειγμα η μεταβλητή global $user αποτελείται από μια σειρά πληροφοριών για τον συνδεδεμένο χρήστη. -25-

3.3.1 Events και Hooks Σε ένα Drupal site δημιουργούνται Events. Ένα Event μπορεί να δημιουργηθεί όταν τεθεί κάποιο αίτημα. Για παράδειγμα όταν ένας χρήστης δημιουργήσει έναν νέο λογαριασμό ή όταν κάποιο περιεχόμενο καλέστηκε να εμφανιστεί, ή όταν ένα σχόλιο αποθηκεύτηκε δημιουργείται ένα Event. Για κάθε πάτημα ενός κουμπιού ένα Event τρέχει στο παρασκήνιο. Ένας προγραμματιστής έχει τη δυνατότητα να τροποποιήσει το αποτέλεσμα αυτών των διαδικασιών με την δημιουργία ενός Module. Η δημιουργία των Modules βασίζεται στο σενάριο hooks. Ένα hook είναι μια php συνάρτηση της μορφής foo_bar(), όπου το πρόθεμα foo αναφέρεται κάθε φορά στο όνομα του module στο οποίο εμφανίζεται (για παράδειγμα my_module) και το bar αναφέρεται στο όνομα του hook (για παράδειγμα form). Κάθε hook, μπορεί έχει ένα σετ παραμέτρων που περνάει κάθε φορά και ένα συγκεκριμένο τύπο αποτελέσματος ή έναν τύπο επιστροφής. Δηλαδή έχει την μορφή των γνωστών συναρτήσεων που παίρνουν μια ή περισσότερες μεταβλητές by reference. Μια πολύ χρήσιμη τέτοιου είδους συνάρτηση είναι η hook_form($form,$form_state), η οποία όπως φαίνεται έχει δύο παραμέτρους ($form,$form_state). Τα hooks χρησιμοποιούνται κατά μια έννοια για να αλλάξουν την προεπιλεγμένη λειτουργία του Drupal, και συγκεκριμένα για να δημιουργηθούν καινούργια blocks ή ακόμα και να τροποποιηθούν τα είδη υπάρχοντα, όπως επίσης να προστεθούν άδειες permissions), μενού, φόρμες καθώς και πολλές άλλες τροποποιήσεις. Είναι στην ουσία έτοιμες και αναγνωρίσιμες συναρτήσεις από το Drupal, που μπορούν να καλεστούν από οποιοδήποτε σημείο για να προσθέσουν ή να τροποποιήσουν μια λειτουργία. Οι προγραμματιστές τις χρησιμοποιούν όχι μόνο για να τροποποιήσουν μόνο μια ήδη υπάρχουσα λειτουργία, αλλά και να προσθέσουν με php κώδικά στις δικές τους hook συναρτήσεις. Στην Εικόνα 8 Ανάκτηση σχολίου με μια σειρά hook συναρτήσεων. φαίνεται η διαδικασία ανάκτησης ενός σχόλιου από την πλευρά των hooks.

Εικόνα 8 Ανάκτηση σχολίου με μια σειρά hook συναρτήσεων. Πιο συγκεκριμένα, μέσα από ένα module καλείται ένα hook με την μορφή συνάρτησης modulename_hookname(). Σε αυτή την περίπτωση ο διαθέσιμος μηχανισμός του Drupal χρησιμοποιώντας τη συνάρτηση module_invoke_all(hook_name), ψάχνει σε όλο το Drupal site που γίνεται κλήση χρησιμοποίησης αυτού του hook. Αυτή η διαδικασία ονομάζεται hook implementation και έχει ως αποτέλεσμα να συμπεριλαμβάνει των κώδικα των συναρτήσεων που το καλούν και να κάνει override τις λειτουργίες που συνθέτονται κάθε φορά. Στην Εικόνα 9 Λειτουργία των hook συναρτήσεων. Αναπαρίσταται μέσω ενός διαγράμματος ο τρόπος λειτουργίας των hook συναρτήσεων. Εικόνα 9 Λειτουργία των hook συναρτήσεων. -27-

Καθώς κάθε διαφορετικό module προσθέτει τις δικές του hook συναρτήσεις, υπάρχει αρκετά μεγάλος αριθμός hook συναρτήσεων όπου είναι αδιανόητο κάποιος να μπορεί να τις αποστηθίσει. Για το λόγο αυτό έχει δημιουργηθεί ένας κατάλογος που συμπεριλαμβάνει όλες τις hook συναρτήσεις, επεξηγώντας κάθε φορά την χρησιμότητα τους. Ένας προγραμματιστής κάθε φορά που αναζητά ένα hook έχει τη δυνατότητα να αναζητήσει αυτό που ψάχνει στην σελίδα που παρέχει το Drupal για την εύρεση των hooks, το λεγόμενο Drupal API, https://api.drupal.org/api/drupal.

3.4 Menu System Σε ένα κοινό και σε HTML βασισμένο ισότοπο, για κάθε σελίδα υπάρχει και ένα διαφορετικό αρχείο που την συνθέτει. Για παράδειγμα αν ένας χρήστης περιηγηθεί στην σελίδα επικοινωνίας θα υπάρχει ένα διαφορετικό αρχείο που την συνθέτει. Για το Drupal τα πράγματα είναι λίγο διαφορετικά καθώς κάθε σελίδα τρέχει μέσα από ένα μόνο αρχείο και αυτό το αρχείο είναι το index.php. Υπάρχουν διάφορα πλεονεκτήματα στην υιοθέτηση αυτού του προτύπου διότι όλα δρομολογούνται μέσα από μια μόνο σελίδα. Για παράδειγμα αν είναι απαραίτητο να αναβαθμιστεί ο πυρήνας του Drupal τότε το μόνο που χρειάζεται είναι να αλλάξει μια μόνο συγκεκριμένη καταχώριση στο index.php αρχείο. Το πρότυπο αυτό συναντάται σε αρκετές διαδικτυακές εφαρμογές και καλείται front controller design pattern. Αυτό που πραγματοποιεί είναι να δρομολογεί με έναν ελεγκτή όλες τις αιτήσεις για εμφάνιση σελίδων της εφαρμογής μέσα από μια μοναδική πηγή. Για το Drupal ο τρόπος με τον οποίο ανταποκρίνεται σε ένα έτοιμα για εμφάνιση μιας σελίδας είναι να κοιτάει το url μονοπάτι (path). Και για το Drupal ένα μονοπάτι είναι οτιδήποτε βρίσκεται στην δεξιά πλευρά του domain name κάνοντας ένα url να φαίνεται καθαρό. Για παράδειγμα www.edge.christina/admin/modules όπου το μονοπάτι είναι το admin/modules. Στην πραγματικότητα το url έχει την μορφή www.edge.christina/index.php?q=admin/modules, όπου η παράμετρος q υποδηλώνει ένα ερώτημα (query). Ενεργοποιώντας όμως την επιλογή Clean Urls το σύστημα του Drupal αφαιρεί αυτή την παράμετρο κάνοντας το url να φαίνεται καθαρό. Οπότε αυτό που κάνει το Drupal είναι για κάθε μονοπάτι να ελέγχει πρώτα αν το συγκεκριμένο μονοπάτι υπάρχει και στη συνέχεια να καλεί μια συνάρτηση (callback function) περιμένοντας από αυτή να καθορίσει τι θα γίνει μετά. Τις περισσότερες φορές αυτό που αναμένεται να γίνει είναι να εμφανιστεί ως σελίδα κάποιο είδος περιεχομένου. Αλλά μπορεί επίσης να οδηγήσει τον χρήστη σε μια άλλη σελίδα (redirect) ή και να εμφανίσει απλά κάποιο μήνυμα. Κάθε module καθορίζει σε ποια μονοπάτια θα καλεστούν ποιές συναρτήσεις. Και όλα αυτά τα δεδομένα βρίσκονται σε ένα πίνακα της βάσης δεδομένων με όνομα menu_router. Η δομή που έχει αυτός ο πίνακας φαίνεται στην Εικόνα 10 Δομή πίνακα βάσης δεδομένων αποθήκευσης μονοπατιών. μέσω της εφαρμογής phpmyadmin. -29-

Εικόνα 10 Δομή πίνακα βάσης δεδομένων αποθήκευσης μονοπατιών. Κάποιες εγγραφές του πίνακα menu_router φαίνονται στην Εικόνα 11 Εγγραφές πίνακα menu_router. όπου γίνονται αντιληπτές οι αντιστοιχίες μεταξύ των μονοπατιών και των συναρτήσεων που είναι υπεύθυνες για την εμφάνιση κάποιου περιεχομένου ή μηνύματος.

Εικόνα 11 Εγγραφές πίνακα menu_router. -31-

3.5 Module System Εικόνα 12 Σχεδιάγραμμα επίδρασης λειτουργικότητας. Ένα Module χρησιμοποιείται με σκοπό να προσθέσει λειτουργικότητα σε ένα site, με την έννοια ότι έχει την δυνατότητα να τροποποιήσει δεδομένα και να αλλάξει την ήδη υπάρχουσα ροή δεδομένων σε επίπεδο δεδομένων, λογικής ή ακόμα και εμφάνισης. Αυτό έχει ως αποτέλεσμα να επεκτείνει την λειτουργικότητα του Drupal. Όταν ένα module έχει γραφτεί με τις σωστές προδιαγραφές χαρακτηρίζεται από αξιοπιστία, επεκτασιμότητα, φορητότητα και δυνατότητα αναβάθμισης. Στην συνέχεια αναλύεται η δομή ενός module. 3.5.1 Είδη ενός Module Τα Modules χωρίζονται σε τρείς γενικές κατηγορίες. Ακολουθεί μια αναλυτική λίστα με αυτές τις κατηγορίες. 1. Core Modules: Στην πρώτη κατηγορία βρίσκονται τα Module που βρίσκονται στον πυρήνα του Drupal και παρέχονται μαζί με μια εγκατάσταση Drupal. Κυρίως για λόγους α- ναβάθμισης, η τροποποίηση τους δεν συνιστάται. 2. Contrib Modules: Στην δεύτερη κατηγορία ανήκουν τα Module που είναι φτιαγμένα από την κοινότητα του Drupal και διαμοιράζονται ελεύθερα, όπως και το ίδιο το Drupal. 3. Custum Modules:

Στην Τρίτη και τελευταία κατηγορία ανήκουν τα Module εκείνα που είναι φτιαγμένα από προγραμματιστές και αφορούν μια συγκεκριμένη λειτουργικότητα, που συνήθως αφορά τη λειτουργικότητα κάποιου συγκεκριμένου site. 3.5.2 Ανατομία ενός Module Ένα Module είναι στην ουσία ένας φάκελος ο οποίος αποτελείται από κάποια συγκεκριμένα αρχεία. Στη συνέχεια αναλύονται τα βασικά αρχεία από τα οποία αποτελείται ένα module, στην παρακάτω λίστα. Σημειώνεται ότι όλα τα αρχεία είναι απαραίτητο να έχουν το ίδιο όνομα ως πρόθεμα, αλλά διαφορετική κατάληξη. 1.Ένα αρχείο modulename.info, το οποίο είναι ένα αρχείο κειμένου που ακολουθεί εκείνη την σύνταξη όπως αυτή ενός.ini αρχείου. Περιέχει πληροφορίες ώστε το συγκεκριμένο module να εμφανίζεται στην διαθέσιμη λίστα των modules, καθώς επίσης να εμφανίσει προαπαιτούμενα modules αν υπάρχουν. Σε αυτό το αρχείο δηλώνονται επίσης αρχεία που συμπεριλαμβάνονται στην λειτουργικότητα που προσθέτει, τα λεγόμενα.inc αρχεία που αναφέρονται στη συνέχεια. 2. Ένα αρχείο modulename.module, το οποίο είναι ένα αρχείο php και περιέχει συναρτήσεις για την επέκταση της λειτουργικότητας. Αξιοσημείωτο είναι το γεγονός ότι οι συναρτήσεις αυτές μπορεί να είναι φτιαγμένες από έναν προγραμματιστή και να ονομάζονται custum functions, και εκείνες που αλληλεπιδρούν με το σύστημα του Drupal και να ονομάζονται hook functions όπως και αναλύθηκαν στο κεφάλαιο Events και Hooks. 3. Τέλος μπορεί να περιέχουν modulename.inc αρχεία, που είναι και αυτά αρχεία php τα οποία αποτελούνται από διάφορες συναρτήσεις. Συνήθως οι συναρτήσεις αυτές καλούνται στο modulename.module αρχείο και επιστρέφουν μια τιμή. Με τα αρχεία αυτά επιτυγχάνεται η βελτίωση των επιδόσεων και η εύκολη ανάγνωση. -33-

3.6 Form System Το Form System είναι ένα σύστημα που είναι υπεύθυνο τόσο για την δημιουργία όσο και για την τροποποίηση των φορμών. Εικόνα 13 Διάγραμμα ροής δεδομένων του υποσυστήματος Form System. Η διαδικασία τροποποίησης μιας φόρμας μπορεί να γίνει πολύ εύκολα χρησιμοποιώντας την έτοιμη hook συνάρτηση hook_form_alter. Η συνάρτηση αυτή φέρνει μια σειρά πληροφοριών και ρυθμίσεων τις οποίες ο προγραμματιστής μπορεί να δει και να τροποποιήσει όποιο συστατικό επιθυμεί. Η διαδικασία δημιουργία μιας φόρμας μπορεί να γίνει με την χρήση μιας διαφορετικής hook συνάρτησης την hook_form(). Σε αυτό το σημείο είναι απαραίτητο να σημειωθεί ότι για να είναι ορατή σε μια σελίδα η φόρμα που θα δημιουργηθεί, προϋποθέτει την ύπαρξη μια εγγραφής στον πίνακα menu_router των διαθέσιμων μονοπατιών όπως αναφέρθηκε στο κεφάλαιο Menu System. Η διαδικασία αυτή αποτελείται από τέσσερα βασικά βήματα τα οποία και αναλύονται στην λίστα που ακολουθεί.

Κατασκευή της Φόρμας (Form Construction) Αυτό το βήμα περιλαμβάνει την εισαγωγή πεδίων και των ρυθμίσεων που αλληλεπιδρούν με το σύστημα εμφάνισης του Drupal. Η εισαγωγή αυτών τον πληροφοριών γίνεται με την μορφή php συστοιχίας (rendered array). Ορθότητα δεδομένων εισαγωγής χρήστη (Client side Validation) Αυτό το βήμα περιλαμβάνει ελέγχους για την σωστή εισαγωγή των δεδομένων στην φόρμα από τον χρήστη. Επιτυγχάνεται με χρήση JavaScript. Ορθότητα δεδομένων εισαγωγής δεδομένων στο σύστημα (Server side Validation) Καθώς η ασφάλεια δεν μπορεί να επιτευχθεί μέσω JavaScript, χρειάζονται επιπλέον έλεγχοι ορθότητας από την πλευρά του Server τόσο για τον έλεγχο των δεδομένων που εισήγαγε ο χρήστης όσο και για την μορφή που έχουν αυτά τα δεδομένα ώστε να μην είναι κακόβουλα προς την εφαρμογή. Επεξεργασία δεδομένων (Processing) Εφόσον ο χρήστης έχει περάσει επιτυχώς από τους απαραίτητους ελέγχους γίνεται η επεξεργασία των δεδομένων και εκτελείται κάποια λειτουργικότητα. -35-

3.7 Theme System Η διαδικασία που ακολουθεί ένας Web Designer είναι να κατά κύριο λόγο να καταφέρει να μετατρέψει την γραφική παρουσίαση ενός γραφίστα σε κώδικα φτιάχνοντας έ- ναν ισότοπο που εμφανισιακά θα είναι πανομοιότυπος με το σχέδιο του γραφίστα και αποτελείται από τα παρακάτω στάδια. Πρώτα σχεδιάζει μια γραφική αναπαράσταση με την χρήση κατάλληλου λογισμικού, όπως για παράδειγμα Photoshop, Illustrator, Inkscape. Στη συνέχεια τεμαχίζει σε δομικά συστατικά την γραφική αναπαράσταση και δημιουργεί τον κατάλληλο κώδικα CSS ελέγχοντας τη διάταξη ατών των συστατικών τοποθετώντας τα κατάλληλα για την σύνθεση μιας ιστοσελίδας. Ένας Drupal Themer ωστόσο πρέπει να ακολουθήσει μια τελευταία διαδικασία ώ- στε να συνθέσει το επιθυμητό αποτέλεσμα. Πρέπει να τροποποιήσει τον HTML κώδικα που συνθέτει την εμφάνιση των δομικών στοιχείων ενός ισότοπου κατά τέτοιο τρόπο ώστε να μπορεί να αναγνωριστεί από το Drupal. Αυτή είναι και η κύρια διαφορά ανάμεσα σε έναν Web Designer και έναν Drupal Themer. 3.7.1 Τρόπος Λειτουργίας ενός Theme Το σύστημα εμφάνισης του Drupal ασχολείται με την μετατροπή των δεδομένων σε μια μορφή παρουσίασης που μπορεί να γίνει ορατή μέσα οπό έναν φυλλομετρητή και τυπικά θα έχει μια HTML δομή. Αυτό επιτυγχάνεται σε συνδυασμό με την λειτουργικότητα που προσφέρει το Drupal. Όπως φαίνεται και στην παρακάτω εικόνα Εικόνα 14 Τρόπος με τον οποίο συμβάλουν τα module στο theme. μέσα από την λειτουργικότητα (αρχεία.module) όπου εξέρχονται δεδομένα διαθέσιμα για την διαδικασία του theme. Για παράδειγμα η δομή μιας φόρμας ή ενός block.

Εικόνα 14 Τρόπος με τον οποίο συμβάλουν τα module στο theme. Σκοπός ενός theme είναι τόσο να θέσει μια δομή στα διάφορα περιεχόμενα που θα εμφανιστούν στον τελικό χρήστη όσο και να παρέχει ένα γραφικό περιβάλλον στον διαχειριστή της ιστοσελίδας να μπορεί να τροποποιεί την εμφάνιση μέσω κάποιων ρυθμίσεων. Κοιτώντας από μια πλευρά την διαδικασία τροποποίησης της εμφάνισης ενός Drupal site(theming), παρατηρείται να είναι μια διαφορετική προσέγγιση με αυτή της δημιουργίας ενός module. Παρόλο που χρησιμοποιείται μια διαφορετική διαδικασία στο theming, τις περισσότερες φορές κατά την διαδικασία δημιουργίας λειτουργικότητας ένας προγραμματιστής αντιμετωπίζει καταστάσεις στις οποίες καλείται να προβλέψει και να συμπεριλάβει στον κώδικά του, στοιχεία που βοηθάνε στην διαδικασία της εμφάνισης. 3.7.2 Δομή και Διαδικασία σύνθεσης ενός Theme Ένα theme βρίσκεται στο φάκελο sites/all/themes/my_theme και αποτελείται από αρχεία CSS, JavaScript και JQuery, εικόνες και τα ειδικά αρχεία για την τροποποίηση εμφάνισης όπως φαίνεται και στην εικόνα Εικόνα 15 Φάκελος ενός Theme. -37-

Εικόνα 15 Φάκελος ενός Theme. Η διαδικασία σύνθεσης ενός Theme συμπεριλαμβάνει τέσσερα βήματα τα οποία αναλύονται στην παρακάτω λίστα..info αρχείο Εικόνα 16 Απόσπασμα κώδικα στο php.ini αρχείο

Ένα Theme μπορεί να γίνει ορατό από το Drupal εφόσον έχει ένα ειδικό αρχείο.info το οποίο περιλαμβάνει όλες τις απαραίτητες πληροφορίες για το τι μπορεί να κάνει το συγκεκριμένο theme. Το πρώτο βήμα αφορά την δημιουργία του.info αρχείου όπου περιλαμβάνει πληροφορίες όπως το όνομα του theme, την περιγραφή, αρχεία που συμπεριλαμβάνονται στο theme όπως τα css αρχεία, όπως επίσης και ποιά δομικά στοιχεία συμπεριλαμβάνονται σε αυτό (regions). Template Αρχεία (.tpl.php) Το δεύτερο βήμα περιλαμβάνει τα αρχεία template τα οποία αποτελούνται κυρίως από HTML κώδικα αλλά και php κώδικα και μπορούν να ελέγχουν μεγάλα κομμάτια δομικών στοιχείων. Όπως για παράδειγμα η παρουσίαση των δομικών στοιχείων για την εικόνα των σελίδων, την εμφάνιση ενός σχόλιου και πολλά άλλα. Αντικατάσταση.tpl.php μεταβλητών Στο τρίτο βήμα γίνεται μια σύνδεση της λειτουργικότητας και της εμφάνισης. Περιλαμβάνει την αντικατάσταση μεταβλητών στα αρχεία.tpl.php. με την έννοια ότι μεταβλητές λειτουργικότητας μπορούν να πάρουν μέρος στην διαδικασία της εμφάνισης. Εδώ ο Themer έχει την δυνατότητα να εισάγει και δικές του καινούριες μεταβλητές. Συναρτήσεις τροποποίησης εμφάνισης Το τέταρτο και τελευταίο βήμα περιλαμβάνει ειδικού τύπου συναρτήσεις που μπορούν να τροποποιήσουν σε όλη την εμβέλεια του ισότοπο μικρότερα στοιχεία εμφάνισης. Όπως για παράδειγμα το όνομα χρήστη ή την γραμματοσειρά και πολλά ακόμα. -39-

3.8 Ανάλυση των Contrib Modules Η συγκεκριμένη κατηγορία modules, όπως προαναφέρθηκε αφορά modules που διανέμονται ελεύθερα από την κοινότητα του Drupal. Καθώς σε αυτή την κατηγορία τα διαθέσιμα modules φτάνουν σε αριθμό τα 14.807 μέχρι σήμερα και συνεχώς αυξάνονται, στη συνέχεια επιλεκτικά θα αναλυθούν μερικά από τα πιο δημοφιλή και πολύ χρήσιμα Modules, τα οποία χρησιμοποιούνται και στην εφαρμογή του πέμπτου κεφαλαίου - 5. Entity Reference Αποτελεί ένα πολύ χρήσιμο module το οποίο συσχετίζει τύπους περιεχομένων. Για παράδειγμα όταν χρειαστεί ένας προγραμματιστής να συμπεριλάβει μια οντότητα τύπου node σε μια άλλη οντότητα τύπου node ή ακόμα και τύπου taxonomy και user. Commerce Το συγκεκριμένο module, αφορά το πιο βασικό συστατικό σε έναν e-commerce ισότοπο, καθώς απαρτίζεται από λειτουργίες και ρυθμίσεις που ειδικεύονται πάνω σε θέματα που αφορούν διαδικτυακές αγορές. Το καλάθι αγορών, η δομή των προϊόντων και η διαχείριση τους είναι μέρος των λειτουργιών που παρέχει το Commerce module. Αποτελεί ένα από τα μεγαλύτερα project που έχουν δημιουργηθεί για την κοινότητα του Drupal με συνεχής αναβαθμίσεις και βελτιώσεις. Commerce License Αποτελεί επέκταση του Commerce module, και σκοπός του είναι να συνθέτει άδειες περιορισμένου χρόνου στους πελάτες. Είναι πολύ χρήσιμο για παράδειγμα όταν ένας προγραμματιστής θέλει να επιτρέπει την πρόσβαση των χρηστών σε συγκεκριμένες λειτουργίες του site μόνο για κάποιο συγκεκριμένο χρονικό διάστημα. Views Ένα από τα πιο χρήσιμα module σχεδόν σε κάθε Drupal Site. Προγραμματιστικά εκτελεί SQL ερωτήματα στην βάση δεδομένων του Drupal, με σκοπό την παρουσίαση των επιλεγμένων δεδομένων σε ομαδοποιημένες προβολές. Για παράδειγμα όταν θέλει ο προγραμματιστής να εμφανίσει σε μια λίστα, μια κατηγορία περιεχομένου, όπως το σύνολο των δημοσιευμένων άρθρων χρησιμοποιεί Views. Περιέχει δυνατότητες ταξινόμησης, εμφάνισης και πολλές ακόμα ευκολίες ομαδοποίησης δεδομένων.

Field Collection Γνωρίζουμε ότι ένα Content Type αποτελείται από fields. Με την λειτουργικότητα που προσφέρει το Field Collection module γίνεται εφικτό να έχουμε μια συλλογή από fields που όμως συμπεριφέρεται σαν ένα μοναδικό field. Είναι πολύ χρήσιμο όταν ζητείται η πολλαπλή αποθήκευση παραπάνω από ένα field για περισσότερες από μια φορές σε ένα Content Type. Features Αποτελεί χρήσιμο Module για την επέκταση της λειτουργικότητας ενός Drupal site. Παρέχει ένα γραφικό περιβάλλον στον χρήστη που του επιτρέπει να επιλέγει μεταβλητές που είναι αποθηκευμένες στην βάση δεδομένων. Με αυτό τον τρόπο τα features δημιουργούν αυτόματα τον κατάλληλο κώδικα έτσι ώστε να δημιουργηθεί κάθε φορά μια λειτουργικότητα. Εφόσον αυτή η λειτουργικότητα περιέχεται σε ένα module γίνεται πολύ πιο εύκολα τόσο η μεταφορά όσο και η επέκταση της λειτουργικότητας αυτής. Rules Αποτελεί ένα module που συνθέτει κανόνες και είναι υπεύθυνο για την δημιουργία ε- νεργειών κάτω από συγκεκριμένους όρους. Ποιο συγκεκριμένα, όταν κάποιο event συμβεί και ικανοποιεί κάποια συγκεκριμένα κριτήρια, τότε εκτελείται μια ή περισσότερες ενέργειες. Το συγκεκριμένο module παρέχει ένα γραφικό περιβάλλον προς τον δημιουργό του Drupal site, όπου εύκολα μπορεί να φτιάξει καινούργιους κανόνες για την επέκταση της λειτουργικότητα του site. Devel Το Devel αποτελεί ένα πολύ χρήσιμο module τόσο για έναν Drupal Developer όσο και για έναν Themer. Παρέχει μια βιβλιοθήκη χρήσιμων συναρτήσεων που μπορούν να χρησιμοποιηθούν κατά την δημιουργία custom module και theme. Παρέχει ένα τρόπο debugging, χρησιμοποιώντας ένα ευχάριστο γραφικό περιβάλλον αναπαράστασης. Mail System Συνθέτει μέσα από μια σειρά ρυθμίσεων ένα σύστημα αποστολής και λήψης μηνυμάτων για έναν ισότοπο. -41-

3.9 Ασφάλεια Το θέμα της ασφάλειας ενός site και ειδικότερα ενός e-commerce site, είναι αυτό που απασχολεί κυρίως έναν πελάτη όταν μπαίνει στη διαδικασία δημιουργίας του δικού του site. Με αποτέλεσμα να είναι από της πρώτες προτεραιότητες ενός προγραμματιστή τόσο στην επιλογή κατάλληλης πλατφόρμας όσο και στην συγγραφή κώδικα. Εικόνα 17 Λογότυπο Drupal ασφάλειας Το Drupal για τον λόγο αυτό έχει δημιουργήσει μια ειδική ομάδα η οποία ασχολείται αποκλειστικά με την ασφάλεια που έχει ένα Drupal site και την αντοχή του στις διάφορες κακόβουλες επιθέσεις που υπάρχουν. Στατιστικά στοιχεία σε έρευνες που έχουν γίνει δείχνει ότι οι επιθέσεις σε ένα Drupal site είναι πολύ λιγότερες σε σχέση με άλλα CMS. Ο πυρήνας του Drupal παρέχει ειδικά σχεδιασμένες λειτουργικότητες που επί το πλείστον μπορούν να προστατέψουν έναν ισότοπο από κακόβουλες επιθέσεις. Αρχίζοντας από την κρυπτογράφηση κωδικών, παρέχεται για κάθε χρήστη μια ασφαλή λειτουργικότητα χρησιμοποιώντας το ειδικού framework phpass που χρησιμοποιείται ειδικά για php εφαρμογές. Επιπλέον παρέχεται ένα δομημένο σύστημα για την εισαγωγή στο σύστημα και χορήγηση αδειών, το λεγόμενο Drupal Permission System. Και για το σύστημα που είναι υπεύθυνο για την δημιουργία των φορμών Form API προστατεύεται από CRSF και semantic forgery. Με την έννοια ότι βασίζεται στην αναγνώριση του χρήστη με επιπλέον τεχνικές αναγνώρισης του χρήστη για την παροχή ασφάλειας.

Είναι διαθέσιμο και ένα σύστημα Flood Control που αποτρέπει τις συνεχόμενες επιθέσεις brute force αποτρέποντας για παράδειγμα ένα μη διαπιστευμένο χρήστη να εισάγει παραπάνω από ένα καθορισμένο όριο σχόλια. Όπως επίσης και τη συνεχόμενη αποτυχημένη προσπάθεια εισαγωγής στο σύστημα. Όσο αφορά την βάση δεδομένων χρησιμοποιεί ένα σύστημα που καλείται database abstraction layer όπου εύκολα ένας προγραμματιστής μπορεί να εκτελέσει ερωτήματα εύκολα αλλά και με ασφάλεια. Βασίζεται στην χρήση PDO και αποτρέπει επιθέσεις τύπου SQL injection. Επιπλέον είναι διαθέσιμο ένα σύστημα ειδικών φίλτρων κειμένου ανά τύπο χρήστη. Στόχος του είναι να περιορίσει την χρήση HTML κώδικα από έναν απλό χρήστη και ταυτόχρονα να παρέχει ευκολίες σε έναν προγραμματιστή. Για το λόγο αυτό υπάρχουν τα ειδικά φίλτρα εισαγωγής κειμένου τόσο σε επίπεδο κώδικα όσο και σε επίπεδο χρήστη τα λεγόμενα text formats. Τέλος είναι απαραίτητο να αναφερθεί ότι παρόλο που ο πυρήνας του Drupal παραμένει ασφαλής σε κακόβουλες επιθέσεις απαιτείται και η συγγραφή ασφαλούς κώδικα από κάθε προγραμματιστή που επιχειρεί να προσθέσει τον δικό του custom κώδικα για την επέκταση της λειτουργικότητας. -43-

3.10 Βιβλιογραφία [1] Documentation - https://drupal.org/documentation - Επίσημη ιστοσελίδα τεκμηρίωσης του Drupal (Drupal Documentation). [8-3-2014] [2] About Drupal - https://drupal.org/about Επίσημη ιστοσελίδα πληροφοριών του Drupal. [24-5- 2014] [3] Drupal training videos - http://buildamodule.com/ Ιστοσελίδα εκμάθησης του Drupal μέσω βίντεο. [11-10-2014] [4] Shiflett, Chris (December 13, 2004) - "Security Corner: Cross-Site Request Forgeries" διαθέσιμο στο http://shiflett.org/articles/cross-site-request-forgeries. [8-11-2014] [5] Drupal Security Reports - http://drupalsecurityreport.org/. [8-11-2014] [6] API reference - https://api.drupal.org/api/drupal Επίσημη ιστοσελίδα του Drupal [9-11-2014] [7] Front controller Pattern Αναπαράσταση ενώς front controller διαθέσιμο στο http://www.tutorialspoint.com/design_pattern/front_controller_pattern.htm. [9-11-2014] [8] Drupal menu System Πληροφορίες για το μενού σύστημα του Drupal διαθέσιμο στο https://api.drupal.org/api/drupal/includes%21menu.inc/group/menu/7. [9-11-2014] [9] Drupal Form System Πληροφορίες για το σύστημα δημιουργίας φορμών του Drupal διαθέσιμο στο https://api.drupal.org/api/drupal/includes%21form.inc/group/form_api/7. [9-11-2014]

4 Απαραίτητα Εργαλεία 4.1 ΧAMP LAMP Εικόνα 18 Διάγραμμα αναπαράστασης του LAMP stack Το Χamp είναι μια πλατφόρμα που χρησιμοποιείται για ανάπτυξη διαδικτυακών εφαρμογών. Είναι ελεύθερου λογισμικού και είναι συμβατό με τα περισσότερα λειτουργικά συστήματα. Το όνομα LAMP προέρχεται από την συνένωση των αρχικών των λέξεων: Linux, Apache, Mysql και PHP. Συχνά αναφέρεται ως Lamp stack για το γεγονός ότι αποτελείται από τέσσερα επίπεδα συστατικά. Ακολουθεί μια λίστα με αναλυτικές πληροφορίες για αυτά τα συστατικά, καθώς και ο τρόπος εγκατάστασης τους σε λειτουργικό σύστημα Linux. X = Linux -45-

Το πρώτο συστατικό αναφέρεται στο λειτουργικό σύστημα στο οποίο θα εγκατασταθεί η πλατφόρμα, στη συγκεκριμένη περίπτωση αφόρα λειτουργικό σύστημα Linux. Αντίστοιχα για άλλα λειτουργικά συστήματα όπως Windows και Solaris η πλατφόρμα μετονομάζεται σε WAMP και SAMP αντίστοιχα. Apache Για να μπορέσει ένας χρήστης να επισκεφτεί έναν ισότοπο, το πρόγραμμα πλοήγησης (browser) χρησιμοποιεί το προτόκολο HTTP,στέλνοντας ετήματα σε έναν διακομιστή-server με αποτέλεσμα να παράγει ιστοσελίδες για να μπορέσει να τις διαβάσει το πρόγραμμα πλοήγησης (browser). Ο apache είναι ένας από τους διμοφιλέστερους εξυπηρετητές ιστού, είναι ανοιχτού λογισμικού και λειτουργεί στα περισσότερα διαθέσιμα λειτουργικά συστήματα. Χρησιμοποιείται σε τοπικά δίκτυα σαν διακομιστής σε συνεργασία με συστήματα βάσεων δεδομένων. Η εγκατάσταση μπορεί να γίνει με την παρακάτω εντολή. sudo apt-get install apache2 Vhosts Ο apache μπορεί να εγκατασταθεί σε τοπικό περιβάλλον, δηλαδή χρησιμοποιώντας μια μόνο IP-Address την 127.0.0.1 (localhost). Με την λειτουργία των Vhost παρόλο που έχει μια μόνο διαθέσιμη IP-Address, μπορεί να χρησιμοποιεί πολλαπλά ψευδώνυμα alias, τα οποία μπορούν να αντιστοιχούν σε διαφορετικά site. Αυτό είναι εφικτό αν για κάθε ένα διαφορετικό site, δημιουργηθεί ένα.conf αρχείο στον φάκελο sites-available του apache.στη συνέχεια παρουσιάζεται η δομη ενός αρχείου.conf μέσα από την εικόνα Εικόνα 19 Κώδικας ενός vhost.

Εικόνα 19 Κώδικας ενός vhost Εφόσον ενεργοποιηθεί με την παρακάτω εντολή sudo a2ensite edge.conf Μπορεί να προστεθεί το ψευδώνυμο στο αρχείο /etc/hosts και να χρησιμοποιείται πλέον το ψευδώνυμο που επιλέχθηκε αντί το κλασικό :http://localhost/edge όπως φαίνεται και στην εικόνα Εικόνα 20 Κώδικας αρχείου etc/hosts Εικόνα 20 Κώδικας αρχείου etc/hosts -47-

MySQL Παρέχει ένα σύστημα διαχείρισης βάσεων δεδομένων, με την έννοια ότι παρέχει έναν τρόπο πρόσβασης και διαχείρισης του περιεχομένου μιας βάσης δεδομένων. Είναι ανοιχτού λογισμικού και παρέχει ένα σύστημα πελάτη/διακομιστή client/server που υποστηρίζει διαφορετικού τύπου υποδομές για την SQL. Οι MySQL βάσεις δεδομένων είναι σχεσιακές, αποθηκεύουν δηλαδή τα δεδομένα σε πολλούς πίνακες συνδεδεμένους μεταξύ τους κατάλληλες σχέσεις. Αυτό έχει ως αποτέλεσμα την παροχή ταχύτητας και ενός ευέλικτου προγραμματιστικού περιβάλλοντος. Τέλος για την διαχείριση της βάσης δεδομένων καθώς και την εκτέλεση των ερωτημάτων χρησιμοποιεί την δομημένη γλώσσα ερωτημάτων SQL Structured Query Language. Η εγκατάσταση μπορεί να γίνει με την παρακάτω εντολή. sudo apt-get install mysql-server Επιπλέον ρυθμίσεις που χρειάζονται βρίσκονται στο Παράρτημα Α. PhpMyadmin Είναι ένα σύστημα διαχείρισης των βάσεων δεδομένων της MySQL στον παγκόσμιο ιστό www. Χρησιμοποιείται συνήθως σε εφαρμογές διαδικτύου όπου η διαχείριση γίνεται μέσω ενός φυλλομετρητή-browser. Η εγκατάσταση μπορεί να γίνει με την παρακάτω εντολή. sudo apt-get install phpmyadmin PHP5 Η PHP προέρχεται από την συνένωση των λέξεων Hypertext PreProcessor και χρησιμοποιείται για την ανάπτυξη δυναμικών ιστοσελίδων από την πλευρά του server. Μπορεί να εγκατασταθεί με την παρακάτω εντολή. sudo apt-get install php5

4.2 Drush Εικόνα 21 Drupal Λογότυπο Το Drush είναι ένα προγραμματιστικό εργαλείο, που επιδρά στον πυρήνα του Drupal, παρέχοντας πολλές ευκολίες σε έναν προγραμματιστή. Χρησιμοποιείται μέσω της γραμμής εντολών και μπορεί να κάνει λειτουργίες όπως η εύκολη και γρήγορη εγκατάσταση module, αναβαθμίσεις και αλληλεπίδραση με τα features του features module. sudo apt-get install drush Μια Drupal εγκατάσταση με χρήση του drush γίνεται με τις παρακάτω δύο εντολές. Πρώτα κατέβασμα του Drupal πακέτου μέσω του Drush με παράμετρο αλλαγής του ονόματος που θα έχει το site. drush dl drupal drupal-project-rename=sitename Στη συνέχεια ακολουθεί η εγκατάσταση με πρώτη και δεύτερη παράμετρο το όνομα και ο κωδικός για τον administrator χρήστη και ως τρίτη παράμετρο τα στοιχεία που θα χρησιμοποιηθούν για την βάση δεδομένων. drush site-install --account-name=admin account-password=admin dburl=mysql://db_user_name:db_password@localhost/db_name Αφού ολοκληρωθεί η εγκατάσταση του Drupal, μέσα σε οποιονδήποτε φάκελο μέσα στην εγκατάσταση μπορεί να χρησιμοποιηθεί το Drush. Ακολουθεί ο τρόπος με τον ο- ποίο εγκαθίστανται και ενεργοποιούνται τα modules. Για την μεταφόρτωση: drush dl module_name -49-

Και την ενεργοποίηση: drush en module_name 4.3 Eclipse Εικόνα 22 Λογότυπο Eclipse Στη συνέχεια θα ακολουθήσει μια ανάλυση για το εργαλείο Eclipse και τα plugins που θα χρειαστούν για την εφαρμογή του πέμπτου κεφαλαίου, καθώς και η διαδικασία που ακολουθείται για την εγκατάσταση. 4.3.1 Τι είναι το Eclipse Το Eclipse είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού παρέχοντας τον κατάλληλο χώρο εργασίας, με δυνατότητα επέκτασης των δυνατοτήτων με τα λεγόμενα plugins. Για να μπορέσει να λειτουργήσει το Eclipse είναι απαραίτητο να εγκατασταθεί μια έκδοση Java. Η εγκατάσταση μπορεί να γίνει με την παρακάτω εντολή. sudo apt-get install openjdk-7-jre-headless Στη συνέχεια η εγκατάσταση του Eclipse μπορεί να γίνει εκτελώντας την επόμενη ε- ντολή. sudo apt-get install eclipse

4.3.2 Plugins Τα plugins αποτελούν συστατικά λογισμικού που επεκτείνουν τις λειτουργίες του eclipse. Ακολουθεί μια λίστα με τα απαραίτητα plugins για την ανάπτυξη διαδικτυακών εφαρμογών σε Drupal. PHP Development tools (PDT) Προσθέτει στην πλατφόρμα του eclipse συστατικά απαραίτητα για την ανάπτυξη διαδικτυακών εφαρμογών με php. Eclipse Web Platform Tools (WPT) Επεκτείνει την πλατφόρμα του eclipse με προφίλ, εργαλεία και κειμενογράφους για ανάπτυξη διαδικτυακών και java EE εφαρμογών. Eclipse Hook Templates Αποτελεί μια συλλογή από hook συναρτήσεις του Drupal, που αναγνωρίζει το eclipse παρέχοντας αυτόματη συμπλήρωση και κείμενο επεξήγησης. Η εγκατάσταση γίνεται συμπεριλαμβάνοντας ένα xml αρχείο μέσω των ρυθμίσεων του eclipse (πηγή για το αρχείο https://drupal.org/project/eclipse ). -51-

4.4 Sass και Compass Εικόνα 23 Λογότυπα Sass και Compass Sass είναι ένας css προ-επεξεργαστής, με την έννοια ότι έχει την ικανότητα να βοηθάει στη συγγραφή εξυπνότερου και πιο γρήγορου css κώδικα. Έχει δύο συντακτικές μορφές, είτε.scss είτε.sass, με την δημοφιλέστερη να είναι η.scss. Η πρώτη θεωρείται μια επέκταση της CSS3 που σημαίνει ότι ένα αρχείο CSS3 είναι και ένα αναγνωρίσιμο Scss αρχείο. Η δεύτερη που είναι και πιο παλιά, παρέχει ένα πιο συνοπτικό τρόπο γραφής css, για παράδειγμα χρησιμοποιεί εσοχές αντί για α- γκύλες και δεν χρησιμοποιεί ερωτηματικά στο τέλος ενός selector. Πέρα από τους βασικούς κανόνες css, επιτρέπει την χρήση μεταβλητών, εμφωλευμένων κανόνων css, χρήσιμες συναρτήσεις και πολλές ακόμα ευκολίες. Το Compass είναι ένα Css Framework γραμμένο σε γλώσσα Ruby και σκοπός του ήταν να καλύψει τις ελλείψεις που έχει η css. Έχει τον δικό του μεταγλωττιστή και αυτό που κάνει είναι να παίρνει ένα sass αρχείο και να το μετατρέπει σε ένα css αρχείο. Α- κόμα μπορεί να ανιχνεύει τυχόν συντακτικά λάθη παρέχοντας έναν εύκολο τρόπο γραφής css αρχείων. Η εγκατάσταση μπορεί να γίνει με τις παρακάτω εντολές. sudo apt-get install ruby-full rubygems1.8 sudo gem install sass sudo gem install compass

4.5 Βιβλιογραφία [1] https://help.ubuntu.com/community/apachemysqlphp Apache Mysql PHP, Επίσημη ιστοσελίδα Ubuntu [16-3-2014] [2] http://httpd.apache.org/about_apache.html Apache project - επίσημη ι- στοσελίδα Apache [18-3-2014] [3]http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fg uide%2fint_eclipse.htm Eclipse επίσημη ιστοσελίδα του Eclipse [22-3-2014] [4] https://drupal.org/node/75242 Configuring Eclipse επίσημη ιστοσελίδα του Drupal. [24-5-2014] [5] http://dev.mysql.com/doc/refman/4.1/en/what-is-mysql.html Mysql επίσημη ιστοσελίδα Mysql. [5-4-2014] [6] http://www.oxxus.net/tutorials/php PHP επίσημη ιστοσελίδα με έγγραφα εκμάθησης. [6-4-2014] [7] http://docs.phpmyadmin.net/en/latest/config.html Documentation επίσημη ιστοσελίδα phpmyadmin. [3-5-2014] [8] http://projects.eclipse.org/projects/tools.pdt Php Development tools - επίσημη ι- στοσελίδα του Eclipse. [24-5-2014] [9] http://sass-lang.com/guide Sass Documentation Επίσημη ιστοσελίδα εκμάθησης sass. [13-10-2014] [10] http://chriseppstein.github.io/blog/2009/09/30/what-is-compass/ What is Compass άρθρο 30/9/2009 [13-10-2014] -53-

5 Εφαρμογή Ακολουθεί μια E-Commerce εφαρμογή με την χρήση του Drupal7 χρησιμοποιώντας όλα τα απαραίτητα εργαλεία που έχουν αναλυθεί στα παραπάνω κεφάλαια. Το κεφάλαιο που ακολουθεί συμπεριλαμβάνει δυο υποκεφάλαια τα οποία αναπαριστούν με την σειρά τα στάδια από τα οποία αποτελείται μια διαδικτυακή εφαρμογή σε Drupal. 5.1 Στάδιο Ανάλυσης και Λειτουργικότητας Στο στάδιο αυτό γίνεται μια ανάλυση των περιεχομένων που απαρτίζουν τον ισότοπο καθώς και της λειτουργικότητας της εφαρμογής χρησιμοποιώντας κυρίως flow diagrams, εστιάζοντας στην αναπαράσταση των λειτουργιών και την επικοινωνίααλληλεπίδραση που έχουν μεταξύ τους. 5.1.1 Σενάριο Εικόνα 24 Λογότυπο εφαρμογής Η όνομα της εφαρμογής είναι Edge Project, όπως φαίνεται και στην Εικόνα 24 Λογότυπο εφαρμογής, έχοντας τυχαία επιλογή ονόματος και δεν αποτελεί απομίμηση κάποιας γνωστής εταιρείας. Η συγκεκριμένη εφαρμογή αποτελεί ένα ηλεκτρονικό εργαλείο ανάθεσης Τεστ. Αφορά κυρίως καθηγητές, δάσκαλους διαφόρων ειδικοτήτων, παρέχοντας τους μια ηλεκτρονική πλατφόρμα να μπορούν να δημιουργούν τα δικά τους Τεστ και να τα αναθέσουν στους μαθητές-εξεταζόμενους τους. Χρησιμοποιώντας την έννοια του E-Commerce, η εφαρμογή παρέχει πρόσβαση μόνο σε Premium χρήστες,

με την έννοια ότι ένας τέτοιου είδους χρήστης έχει καταθέσει κάποιο χρηματικό αντίκτυπο ώστε να έχει πρόσβαση σε αυτές τις λειτουργίες. 5.1.2 Διαγράμματα Ροής και Υλοποίηση Για τα διαγράμματα ροής (flow diagrams) χρησιμοποιήθηκε το εργαλείο δημιουργίας διαγραμμάτων με όνομα Pencil Project το οποίο βρίσκεται διαθέσιμο στον σύνδεσμο http://pencil.evolus.vn/downloads.html με σκοπό να αποτυπώσουν την ροή των λειτουργιών που δημιουργήθηκαν. Commerce Εικόνα 25 Διάγραμμα ροής λειτουργικότητας Commerce Η ανάλυση που ακολουθεί εξηγεί το διάγραμμα ροής που φαίνεται στη εικόνα Εικόνα 25 Διάγραμμα ροής λειτουργικότητας Commerce. Η εισαγωγή στο σύστημα δημιουργίας τεστ είναι εφικτή εφόσον ένας διαπιστευμένος χρήστης αποκτήσει τον ρόλο του καθηγητή Professor. Η διαδικασία ανάθεσης αυτού του ρόλου συμπεριλαμβάνεται στο κομμάτι του E-Commerce. Τα διαθέσιμα προϊόντα αφορούν αγορά συγκεκριμένου χρόνου απόκτησης του ρόλου Professor. Ο χρήστης μπορεί να επιλέξει ένα διαθέσιμο πακέτο προς πώληση -55-

ανάμεσα στις χρονικές διάρκειες ενός μηνός, έξι μηνών και ενός έτους από την σελίδα των προϊόντων όπως φαίνεται στην εικόνα Εικόνα 26 Σελίδα προϊόντων εφαρμογής. Εικόνα 26 Σελίδα προϊόντων εφαρμογής Στη συνέχεια για να ολοκληρώσει την παραγγελία του μεταβιβάζεται στην διαθέσιμη προβολή καλαθιού απ όπου και μπορεί να ολοκληρώσει την παραγγελία του. Για να ολοκληρωθεί η παραγγελία ακολουθείται η διαδικασία του Checkout, όπου ο χρήστης συμπληρώνει τα στοιχεία πληρωμής. Η διαδικασία του checkout είναι ενδεικτική και παρέχεται από το Commerce module, καθώς δεν υλοποιεί πραγματική οικονομική συναλλαγή. Προγραμματιστικά αυτές οι διαδικασίες αποτελούν Rules και έχουν την μορφή όπως φαίνεται στη παρακάτω εικόνα Εικόνα 27 Γραφική αναπαράσταση ενός Rule.

Εικόνα 27 Γραφική αναπαράσταση ενός Rule Εφόσον ολοκληρωθεί επιτυχώς η διαδικασία Checkout, από έναν μη διαπιστευμένο χρήστη, υπάρχει μια αυτόματη διαδικασία δημιουργίας ενός χρήστη όπου τα στοιχεία εισόδου στέλνονται μέσω e-mail στον χρήστη. Ο διαχειριστής manager ή Administrator του ισότοπου μπορεί να δει και να ε- λέγξει αν τα στοιχεία πληρωμής είναι σωστά και να χορηγήσει ή να καταργήσει άδειες περιορισμένου χρόνου στους χρήστες που έχουν καταθέσει επιτυχώς το χρηματικό α- ντίκτυπο. Στην συνέχεια στην Εικόνα 28 Φόρμα διαχείρισης αδειών. φαίνεται η φόρμα χορήγησης και διαχείρισης αδειών. -57-

Εικόνα 28 Φόρμα διαχείρισης αδειών. Προγραμματιστικά για την συγκεκριμένη λειτουργικότητα χρησιμοποιήθηκαν rules που τρέχουν πρώτα αμέσως μετά την ολοκλήρωση του checkout για δημιουργήσουν το αίτημα της άδειας στον κατάλληλο πίνακα, και σε κάθε προγραμματισμένο κύκλο του cron ( cron run) με σκοπό να ελέγχουν και να ενημερώνουν κατάλληλα κάθε ενεργοποιημένη άδεια.

Δημιουργία Τεστ (Create Test) Εικόνα 29 Διάγραμμα λειτουργικότητας δημιουργίας τεστ Η διαδικασία δημιουργίας ενός τεστ μπορεί να γίνει μόνο από χρήστες με το ρόλο Professor και αποτελείται από δύο βήματα καθώς υλοποιείται από μια multistep form. Η συγκεκριμένη φόρμα βρίσκεται στο custom module Custom Multistep Create Test και χρησιμοποιεί την λειτουργικότητα που παρέχουν τα Contrib Module: Ctools, Entity και Field Collection. Το συγκεκριμένο module αποτελείται από τέσσερα αρχεία. Στο πρώτο αρχείο custom_multistep_create_test.info περιέχονται γενικές πληροφορίες που αφορούν το module. Στο δεύτερο αρχείο custom_multistep_create_test.module βρίσκονται γενικές ρυθμίσεις της multistep form όπως από ποιες φόρμες αποτελείται, πως συμπεριφέρονται τα κουμπιά Next, Cancel και Finish. Επιπλέον περιέχει μια συνάρτηση που ελέγχει την πρόσβαση σε αυτή την φόρμα. Στη παρακάτω εικόνα Εικόνα 30 Κώδικα έλεγχου πρόσβασης της multistep φόρμας φαίνεται ο κώδικας που χρησιμοποιήθηκε για την πρόσβαση στην φόρμα. -59-

Εικόνα 30 Κώδικα έλεγχου πρόσβασης της multistep φόρμας Στο τρίτο αρχείο custom_multistep_create_test.form βρίσκονται οι φόρμες από τις ο- ποίες αποτελείται η multistep form, συμπεριλαμβάνοντας την δομή(structure), επικύρωση (validation) και υποβολή (submission). Η δομή της δεύτερης φόρμας φαίνεται στην παρακάτω εικόνα Εικόνα 31 Κώδικας φόρμας ενός τεστ.

Εικόνα 31 Κώδικας φόρμας ενός τεστ -61-

Τέλος στο τέταρτο και τελευταίο αρχείο custom_multistep_create_test.func.inc περιέχονται βοηθητικές συναρτήσεις για την επίτευξη της λειτουργικότητας όπως η δημιουργία μιας node ως entity με τιμές από την δεύτερη φόρμα. Γραφικά στο πρώτο βήμα συμπληρώνεται ο τίτλος του τεστ και κάποια σημείωση αν επιθυμεί ο χρήστης όπως φαίνεται και στην εικόνα Εικόνα 32 Πρώτη φόρμα δημιουργίας τεστ. Εικόνα 32 Πρώτη φόρμα δημιουργίας τεστ Στο δεύτερο βήμα γίνεται η εισαγωγή των ερωτήσεων και των απαντήσεων. Ο χρήστης εισάγει την ερώτηση που επιθυμεί, και μια απάντηση. Αν αυτή η απάντηση είναι σωστή επιλέγει την επιλογή True και σώζει τόσο την ερώτηση όσο και απάντηση που έγραψε, πατώντας την επιλογή Save answer. Σε αυτό το σημείο μπορεί να εισάγει ό- σες απαντήσεις επιθυμεί πατώντας το κουμπί Save Answer. Για να εισάγει καινούρια ερώτηση πατάει την επιλογή Add New Question και ακολουθεί την ίδια διαδικασία που αναφέρθηκε παραπάνω. Για να ολοκληρωθεί η δημιουργία του τεστ αρκεί να πατηθεί το κουμπί Finish. Αν για οποιοδήποτε λόγο ο χρήστης επιθυμεί να διακόψει την διαδικασία δημιουργίας τεστ αρκεί να πατήσει το κουμπί Cancel. Στην συνέχεια ακολουθεί η εικόνα με το δεύτερο βήμα της multistep form Εικόνα 33.

Εικόνα 33 Δεύτερη φόρμα δημιουργίας τεστ Ανάθεση και προβολή αποτελεσμάτων Στη συνέχεια το συγκεκριμένο τεστ μπορεί να ανατεθεί σε οποιονδήποτε χρήστη που έχει ενεργό λογαριασμό στον ισότοπο μέσω της ειδικής φόρμας που παρέχεται για τις αναθέσεις Create Assignment όπως φαίνεται στην Εικόνα 34. -63- Εικόνα 34 Φόρμα ανάθεσης τεστ

Αρχικά συμπληρώνεται ο τίτλος του τεστ που θα εμφανιστεί στους μαθητές. Στη συνέχεια το όνομα του Τεστ, το οποίο είναι ένα αυτό-συμπληρωμένο πεδίο (autocomplete field) που ανιχνεύει αυτόματα τα διαθέσιμα ονόματα των τεστ που υπάρχουν αποθηκευμένα και επιτρέπει στον χρήστη να επιλέξει από μια λίστα. Τέλος συμπληρώνονται πάλι με χρήση autocomplete field το όνομα το μαθητή στον οποίο θα γίνει η ανάθεση Assignment, και το όνομα αυτού που αναθέτει το τεστ δηλαδή του καθηγητή. Τέλος, εφόσον ένα τεστ έχει συμπληρωθεί από τον μαθητή, ο καθηγητής Professor μπορεί να οδηγηθεί στην ειδική προβολή αποτελεσμάτων View Results και να δει τα αποτελέσματα των μαθητών του. Όταν ένας μαθητής έχει ολοκληρώσει μια φορά κάποιο τεστ τότε δεν του επιτρέπεται η πρόσβαση στην σελίδα του τεστ. Ο συγκεκριμένος έλεγχος ανιχνεύει αν υπάρχει περιεχόμενο τύπου Result με το συγκεκριμένο τεστ. Οπότε αν ένας καθηγητής επιθυμεί να αναθέσει ξανά το ίδιο τεστ πρέπει πρώτα να διαγράψει τα προηγούμενα αποτελέσματα των μαθητών που θα ξανακάνουν το τεστ. Για το λόγο αυτό στην προβολή View test Results ο καθηγητής έχει την επιλογή, εφόσον επιθυμεί να διαγράψει τα αποτελέσματα. Η γραφική αναπαράσταση των αποτελεσμάτων φαίνεται στην Εικόνα 35. Εικόνα 35 View αποτελεσμάτων τεστ

Συμπλήρωση Τεστ (Take Test form) Εικόνα 36 Λειτουργικότητα συμπλήρωσης τεστ Εφόσον ολοκληρωθεί η διαδικασία της ανάθεσης όπως αναφέρθηκε παραπάνω, ένα τεστ είναι ορατό στον μαθητή μέσω μιας ειδικής προβολής με το όνομα My Tests and Results που παρέχεται για κάθε διαπιστευμένο χρήστη Student. Σε επίπεδο χρήστη, μέσω της ειδικής προβολής My Tests and Results ο χρήστης Student μπορεί να δει ποια τεστ του έχουν ανατεθεί, αλλά και τα αποτελέσματα των τεστ που έχει ολοκληρώσει. Ο μαθητής έχει την δυνατότητα να επιλέξει το τεστ που του έχει ανατεθεί και να μεταφερθεί στην ειδική φόρμα Take Test, όπου και συμπληρώνει τις απαντήσεις του. Η επιλογή του τεστ από τον μαθητή γίνεται μέσα από τον τίτλο του τεστ. Ο τίτλο αυτός αποτελεί ένα δυναμικό url όπου συνθέτεται στην λειτουργικότητα του take_test module. Η λειτουργία αυτή επιτυγχάνεται μέσω των δυνατοτήτων του menu system του Drupal όπως αναφέρθηκε στο κεφάλαιο 3.4 σε συνδυασμό με το Views module. Στην Εικόνα 37 Πίνακας αναθέσεων και αποτελεσμάτων φαίνονται οι πίνακες που εμφανίζονται στους μαθητές. -65-

Εικόνα 37 Πίνακας αναθέσεων και αποτελεσμάτων Η προβολή αυτή αποτελεί μια Drupal View με τις κατάλληλες ρυθμίσεις, ώστε να εμφανίζει αν υπάρχουν τόσο τα ολοκληρωμένα τεστ όσο και αυτά που δεν έχουν ολοκληρωθεί ακόμα. Κατά την ολοκλήρωση του τεστ γίνεται αυτόματα ο υπολογισμός του αποτελέσματος βγάζοντας το μήνυμα Passed σε περίπτωση επιτυχίας ή Failed σε περίπτωση αποτυχίας. Για να επιτευχθεί η περίπτωση της επιτυχίας πρέπει ο μαθητής να απαντήσει επιτυχώς τουλάχιστον στις μισές ερωτήσεις. Η διαθέσιμη φόρμα συμπλήρωσης ενός τεστ έχει την μορφή πολλαπλών επιλογών όπου ο μαθητής επιλέγει ποια θεωρεί σωστή απάντηση. Στην Εικόνα 38 φαίνεται η μορφή που έχει ένα τεστ όταν συμπληρώνεται από τον μαθητή.

Εικόνα 38 Μορφή ενός τεστ Προγραμματιστικά η συγκεκριμένη φόρμα βρίσκεται στο custom module Custom Create Test. Αποτελείται από μια φόρμα που εμφανίζεται ανάλογα με τις παραμέτρους (arguments) που έχει κάθε φορά το συγκεκριμένο url, ελέγχοντας παράλληλα αν ο χρήστης που προσπαθεί να δει αυτή την σελίδα είναι ο κατάλληλος. Για παράδειγμα αν ένας μαθητής έχει ολοκληρώσει μια φορά κάποιο τεστ τότε δεν του επιτρέπεται η πρόσβαση στην σελίδα του τεστ. Στην Εικόνα 39 φαίνεται ο κώδικας που χρησιμοποιήθηκε για τους απαραίτητους ελέγχους. -67-

Εικόνα 39 Κώδικας για την πρόσβαση στην φόρμα take test Κατά στο στάδιο υποβολής (submit) της φόρμας πραγματοποιείται η διαδικασία υπολογισμού των αποτελεσμάτων. Η συγκεκριμένη λειτουργικότητα μετράει όλες τις ερωτήσεις που έχει το τεστ καθώς και τις σωστές απαντήσεις που έχει δώσει ο μαθητής υπολογίζοντας κάθε φορά το αποτέλεσμα.

Στη συνέχεια γίνεται η δημιουργία του περιεχομένου Result με τις κατάλληλες πληροφορίες και αποτελέσματα. Ολοκληρώνεται η διαδικασία με τη διαγραφή του περιεχομένου Assignment ώστε να μην εμφανίζεται το τεστ στην προβολή My Assignments και να μην γεμίζει η βάση δεδομένων με πολλές και άχρηστες λειτουργίες. Στην συνέχεια στην Εικόνα 40 φαίνεται ο κώδικας που πραγματοποιεί την υποβολή της φόρμας. Εικόνα 40 Κώδικας για την υποβολή της φόρμας take test -69-

5.1.3 Content Types Στην συνέχεια παρουσιάζονται και αναλύονται τα Content Type που χρησιμοποιήθηκαν στην εφαρμογή. Assignment Αναφέρεται στην ανάθεση ενός τεστ, με την έννοια ότι για να συμπληρωθεί ένα τεστ είναι απαραίτητο να έχει γίνει μια ανάθεση από κάποιον χρήστη προς κάποιον άλλο. Στην Εικόνα 41 φαίνονται τα πεδία που περιλαμβάνει ένα Assignment μέσα από το γραφικό περιβάλλον του Drupal. Εικόνα 41 Πεδία του Content Type Assignment Τα πεδία από τα οποία αποτελείται είναι τα παρακάτω: Title: Αναφέρεται στο όνομα που θα έχει η ανάθεση. Test name: Αναφέρεται στο όνομα του τέστ που θέλει ο χρήστης να αναθέσει. To User : Αναφέρεται στον χρήστη που του ανατίθεται ένα τέστ. From User : Αναφέρεται στον χρήστη που αναθέτει ένα τέστ. Test Αποτελεί το τεστ, και αναπαριστά την μορφή που έχουν τα τεστ κατά την αποθήκευσή τους στην βάση δεδομένων. Για την δημιουργία του συγκεκριμένου Content Type είναι απαραίτητη η λειτουργικότητα που προσφέρει το Field Collection module, που αναφέρθηκε στο κεφάλαιο 3.4. Η γραφική απεικόνιση των πεδίων φαίνεται στην Εικόνα 42.

Εικόνα 42 Πεδία του Content Type Test Τα πεδία από τα οποία αποτελείται ένα τεστ είναι τα παρακάτω: Title: Αναφέρεται στο όνομα που θα έχει το τεστ. Description: Αποτελεί κείμενο και αναφέρεται σε μια περιγραφή. Test Collection: Αναφέρεται στην συλλογή από τα παρακάτω πεδία.η γραφική απεικόνιση φαίνεται στην εικόνα Εικόνα 43 Εικόνα 43 Πεδία του Field Collection Test Question id: Το id της ερώτησης. Question: Η ερώτηση που έδωσε ο καθηγητής. Answers Collection: Αναφέρεται στην συλλογή από τα παρακάτω πεδία. Η γραφική απεικόνιση φαίνεται στην εικόνα Εικόνα 44. Εικόνα 44 Πεδία του Field Collection Answers Answer id: Το id της απάντησης. Answer: Η απάντηση που έδωσε ο καθηγητής. Correct Answer: Αποτελεί κείμενο και αναφέρεται στο αν η απάντηση αυτή είναι η σωστή. -71-

Result Το συγκεκριμένο Content Type αναφέρεται στα αποτελέσματα ενός μαθητή. Η γραφική απεικόνιση φαίνεται στην Εικόνα 45. Εικόνα 45 Πεδία του Content Type Result Τα πεδία από τα οποία αποτελείται ένα result είναι τα παρακάτω: Title: Αναφέρεται στο όνομα που θα έχει το αποτέλεσμα. All Questions: Αποτελεί τον συνολικό αριθμό των ερωτήσεων. Correct Answers: Αποτελεί τον συνολικό αριθμό των σωστά απαντημένων ερωτήσεων. Result: Αποτελεί το κείμενο που έχει το αποτέλεσμα (Passed/Failed). State: Αποτελεί λεκτικό και αποτελεί την κατάσταση που βρίσκεται το τεστ (Finished). From User: Από ποιον χρήστη έχει ανατεθεί το τεστ. News Αναφέρεται στο περιεχόμενο που θα έχει μια είδηση. Η γραφική απεικόνιση των πεδίων φαίνεται στην Εικόνα 46.

Εικόνα 46 Πεδία του Content Type News Αποτελείται από τα παρακάτω πεδία. Title: Αναφέρεται στο όνομα που θα έχει η είδηση Image: Αποτελεί την εικόνα της είδησης. Body: Αποτελεί κείμενο και αναφέρεται σε μια περιγραφή. Weight: Πεδίο μη ορατό στον χρήστη, αποτελεί έναν ακέραιο αριθμό που χρησιμοποιείται για ταξινόμιση. Our Team Αναφέρεται στο περιεχόμενο που θα έχει ένα μέλος της ομάδας. Η γραφική απεικόνιση των πεδίων φαίνεται στην Εικόνα 47 Εικόνα 47 Πεδία του Content Type Our Team Αποτελείται από τα παρακάτω πεδία. Title: Αναφέρεται στο όνομα που θα έχει το άτομο της ομάδας. Image: Αποτελεί την εικόνα για κάθε άτομο. Body: Αποτελεί κείμενο και αναφέρεται σε μια περιγραφή. -73-

Front Slider Αναφέρεται στο Περιεχόμενο που θα έχει το Slider της αρχικής σελίδας. Η γραφική απεικόνιση των πεδίων φαίνεται στην Εικόνα 48. Εικόνα 48 Πεδία του Content Type Front Slider Αποτελείται από τα παρακάτω πεδία. Title: Αναφέρεται στο όνομα που θα έχει το Slide. Image: Αποτελεί την εικόνα της είδησης. Weight: Πεδίο μη ορατό στον χρήστη, αποτελεί έναν ακέραιο αριθμό που χρησιμοποιείται για ταξινόμιση. System Page Αναφέρεται στο Περιεχόμενο που θα έχει μια σελίδα του συστήματος. Η γραφική απεικόνιση των πεδίων φαίνεται στην Εικόνα 49 Πεδία του Content Type System Page Αποτελείται από τα παρακάτω πεδία. Title: Αναφέρεται στο όνομα που θα έχει το άτομο της ομάδας. Image: Αποτελεί την εικόνα για κάθε άτομο. Body: Αποτελεί κείμενο και αναφέρεται σε μια περιγραφή.

5.1.4 Views Για τις περισσότερες προβολές περιεχομένου χρησιμοποιήθηκε το Views module με σκοπό να ομαδοποιήσει περιεχόμενα παρόμοιου τύπου αλλά και να επιτρέπει την αλληλεπίδραση του χρήστη με το σύστημα. Επιπλέον συμμετέχει ταυτόχρονα, τόσο στο στάδιο της λειτουργικότητας όσο και στο στάδιο της εμφάνισης αφού επιτρέπει στον προγραμματιστή να βάλει css κλάσεις που βοηθούν στην τροποποίηση της εμφάνισης. Στη συνέχεια παρουσιάζονται οι Views που δημιουργήθηκαν. Our Team Εικόνα 50 View: Our Team Εμφανίζει σε αύξουσα σειρά όλα τα επιλεγμένα πεδία των περιεχομένων τύπου Our Team, και είναι διαθέσιμη στην σελίδα /our-team Εικόνα 50. -75-

Επιλέχθηκαν τα πεδία Image, Title, Body και ένα επιπλέον πεδίο Custom Test για το λεκτικό Read more. Για την ευκολία σε επίπεδο εμφάνισης έχει προστεθεί σε κάθε πεδίο μια css κλάση. Η Ταξινόμηση στηρίζεται στο πεδίο Weight του συγκεκριμένου Content Type κατά αύξουσα σειρά. News Εικόνα 51 View: News Εμφανίζει όλα τα επιλεγμένα πεδία των περιεχομένων τύπου Our News. Αποτελεί μια σελίδα που σκοπό έχει να ενημερώνει των χρήστη σε διάφορα θέματα Εικόνα 51.

Recent News Εμφανίζει ακριβώς τα τρία τελευταία περιεχόμενα που δημιουργήθηκαν τύπου Our News. Αποτελεί ένα block που φαίνεται στην αρχική σελίδα και σκοπό έχει να ενημερώνει τους χρήστες για τα τελευταία νέα που ανάρτησε η επιχείρηση. -77-

Custom Products View Εικόνα 52 View: Custom Products Εμφανίζει όλα τα επιλεγμένα πεδία των περιεχομένων τύπου Προϊόντα προσθέτοντας τις κατάλληλες κλάσεις για την τροποποίηση της εμφάνισης. Στη σελίδα αυτή παρουσιάζονται όλα τα διαθέσιμα προϊόντα όπου ο χρήστης μπορεί να προσθέσει στο καλάθι του και να τα αγοράσει Εικόνα 52.

Professor Tests Εικόνα 53 View: Professor Tests Εμφανίζει μόνο για τους χρήστες με ρόλο Professor, όλα εκείνα τα τεστ που έχουν δημιουργηθεί από τον συνδεδεμένο χρήστη. Επιπλέον επιτρέπει στον χρήστη μέσω ενός ειδικού φίλτρου να διαγράψει όποια εγγραφή επιθυμεί. Συνθέτει την σελίδα των δημιουργημένων τεστ ενός καθηγητή Εικόνα 53. -79-

View Test Results Εμφανίζει μόνο για τους χρήστες με ρόλο Professor, όλα τα αποτελέσματα των μαθητών που έχουν ολοκληρώσει ένα τεστ και έχουν ανατεθεί από τον συνδεδεμένο χρήστη. Για την συγκεκριμένη λειτουργικότητα ήταν απαραίτητη η χρήση Relationships, που δημιουργεί τα κατάλληλα SQL Join ερωτήματα για την χρήση ειδικών φίλτρων. Επιπλέον επιτρέπει στον χρήστη μέσω ενός ειδικού πεδίου να διαγράψει όποια εγγραφή επιθυμεί.

Student Tests Εικόνα 54 View: Student Tests Είναι μια σελίδα που εμφανίζει όλα τα περιεχόμενα τύπου Result τα οποία έχουν δημιουργηθεί από τον συνδεδεμένο χρήστη. Συνθέτει τον πίνακα που δείχνει τα αποτελέσματα για τον μαθητή Εικόνα 54. -81-

Assignments Εικόνα 55 View: Assignment Είναι ένα block που εμφανίζει όλα τα περιεχόμενα τύπου Assignment όπου το πεδίο To User είναι ο συνδεδεμένος χρήστης. Συνθέτει τον πίνακα που δείχνει στον μαθητή ποια τεστ του έχουν ανατεθεί και πρέπει να συμπληρώσει. Βρίσκεται στην ίδια σελίδα με τα αποτελέσματα του μαθητή Εικόνα 55.

Front Slider Εικόνα 56 View: Front Slider Εμφανίζει όλα τα περιεχόμενα τύπου Front Slider που σε συνδυασμό με την λειτουργικότητα του FSlider module συνθέτουν το Slider της αρχικής σελίδας Εικόνα 56. -83-

5.2 Στάδιο Εμφάνισης Για το στάδιο της εμφάνισης χρησιμοποιήθηκε ως βάση το Adaptive Theme που παρέχεται από την κοινότητα του Drupal στο https://www.drupal.org/project/adaptivetheme. Στη συνέχεια ακολουθεί ο τρόπος δημιουργίας ενός subtheme για την συγκεκριμένη εφαρμογή. 5.2.1 Δημιουργία subtheme και ρυθμίσεων Για της ανάγκες εμφάνισης της συγκεκριμένης εφαρμογής χρησιμοποιήθηκε ως βασικό Theme το Drupal theme με όνομα AdaptiveTheme, το οποίο και διανέμεται ελεύθερα από την κοινότητα του Drupal. Το όνομα του subtheme είναι Edge και βρίσκεται στο μονοπάτι sites/all/themes/adaptivetheme/at_edge. Στην παρακάτω εικόνα Εικόνα 57 φαίνονται όλα τα αρχεία και φάκελοι αρχείων που βρίσκονται στον φάκελο του Edge theme. Εικόνα 57 Φάκελος Edge Theme Η διαδικασία σύνθεσης ενός Theme αρχίζει από την δημιουργία του αρχείου edge.info. Στο συγκεκριμένο αρχείο περιλαμβάνονται γενικές πληροφορίες για το όνομα του theme, την περιγραφή του, τον Drupal πυρήνα από τον οποίο μπορεί να αναγνωριστεί αλλά και περισσότερες πληροφορίες οι οποίες αναλύονται στη συνέχεια.

Σε αυτό το αρχείο δηλώνονται τα βασικά δομικά συστατικά του theme, τα λεγόμενα Regions τα οποία αποτελούν και τις βασικές περιοχές εμφάνισης των δεδομένων του ισότοπου. Εφόσον δηλωθούν είναι πλέον ορατά από το σύστημα του Drupal και μπορούν να χρησιμοποιηθούν ως μεταβλητές. Επιπλέον σε αυτό το αρχείο δηλώνονται όλα τα αρχεία css τα οποία χρησιμοποιούνται για την τροποποίηση της εμφάνισης. Το Adaptive Theme περιλαμβάνει ένα γραφικό περιβάλλον διαχείρισης ρυθμίσεων της συμπεριφοράς του Theme. Οι δηλώσεις αυτών των ρυθμίσεων βρίσκονται και αυτές στο edge.info αρχείο. Το γραφικό περιβάλλον για αυτές τις ρυθμίσεις βρίσκεται στο http://www.edge.christina/admin/appearance/settings/at_edge και φαίνεται στην παρακάτω εικόνα Εικόνα 58. Εικόνα 58 Φόρμα Ρυθμίσεων του Theme Οι ρυθμίσεις αυτές καθορίζουν ποια αρχεία css θα χρησιμοποιηθούν, σε ποιόν φάκελο θα σώζονται τα αρχεία του theme και επιπλέον ρυθμίσεις για τα όρια (break points) του responsive design. Δηλαδή το πλάτος των διάφορων οθονών που θα χρησιμοποιηθούν -85-

για την αναπαράσταση των δεδομένων του ισότοπου. Επιπλέον συμπεριλαμβάνονται ρυθμίσεις για το λογότυπο της εφαρμογής και το favicon. Το επόμενο και πολύ βασικό αρχείο που συμβάλει στον τρόπο διαμόρφωσης της εμφάνισης είναι το αρχείο page.tpl.php. Το αρχείο αυτό περιλαμβάνει κυρίως html κώδικα για την βασική δομή, αλλά και php κώδικα ο οποίος προσθέτει ευελιξία και λογική στην σύνθεση της εμφάνισης. Πιο συγκεκριμένα με την χρήση της html γίνεται η σύνθεση της δομής των βασικών δομικών στοιχείων και με την χρήση php συμπεριλαμβάνονται οι μεταβλητές των δομικών στοιχείων καθώς και σημεία απόφασης εμφάνισης κάποιον μεταβλητών. Ο κύριος ρόλος αυτού του αρχείου είναι να κάνει override την βασική δομή εμφάνισης του Drupal. Η δομή αυτή βρίσκεται στον πυρήνα του Drupal και μπορεί να παρακαμφθεί από το theming σύστημα του Drupal όπως προαναφέρθηκε και στο Κεφάλαιο 3.7. Με τον τρόπο αυτό είναι εφικτός ένας διαφορετικός τρόπος εμφάνισης των διάφορων συστατικών του ισότοπου. Η δομή αυτή μπορεί να γίνει αντιληπτή από έναν προγραμματιστή χρησιμοποιώντας το εργαλείο firebug, το οποίο μπορεί να αναγνωρίσει τον τρόπο με τον οποίο είναι δομημένη μια Html σελίδα. Η παρακάτω εικόνα Εικόνα 59 Δομικά στοιχεία μιας σελίδας μέσα από το Firebug δείχνει ένα στιγμιότυπο δομής μιας σελίδας της εφαρμογής με την δομή των region όπως αυτά δηλώθηκαν στο page.tpl.php αρχείο.

Εικόνα 59 Δομικά στοιχεία μιας σελίδας μέσα από το Firebug Μέσα στα regions περιλαμβάνονται μικρότερα δομικά στοιχεία όπως blocks και views με της δικές τους κλάσεις για την εύκολη τροποποίηση τους. Στον φάκελο του Edge Theme υπάρχει ένας φάκελος με το όνομα css ο οποίος περιλαμβάνει όλα τα css αρχεία, αλλά και ένας φάκελος με το όνομα sass ο οποίο περιλαμβάνει τα scss αρχεία που συμβάλουν στη τροποποίηση της εμφάνισης. Ο κώδικας που υπάρχει μέσα στα.scss αρχεία είναι και αυτός που χρησιμοποιήθηκε για την τροποποίηση της εμφάνισης και ο οποίος μεταγλωττίστηκε στα αντίστοιχα css αρχεία με την βοήθεια του Compass όπως αναφέρεται και στο κεφάλαιο 4.4 Sass και Compass. Οι ρυθμίσεις για την χρήση sass και compass άλλα και για την μεταγλώττιση βρίσκονται στο αρχείο config.rb. Για λόγους εύκολης ανάγνωσης αλλά και σωστής ταξινόμησης του κώδικα, τα scss αρχεία που έχουν δημιουργηθεί περιλαμβάνουν τροποποίηση εμφάνισης ανά κατηγορία. Για τις ανάγκες τις συγκεκριμένης εφαρμογής προστέθηκαν τα αρχεία που βρίσκονται στην παρακάτω λίστα. _variables_function.scss: Αυτό το αρχείο περιλαμβάνει μεταβλητές που χρησιμοποιούνται στα επόμενα αρχεία περισσότερο από μια φορές (όπως τιμές χρωμάτων και μεγέθη πλατών) -87-

καθώς και τα δημοφιλή mixins της scss μορφής. Με την χρήση αυτού του αρχείου επιτυγχάνεται η βελτίωση της απόδοσης, η επεκτασιμότητα και η εύκολη τροποποίηση της εμφάνισης του ισότοπου. Επιπλέον εισάγει λογική στον τρόπο διαχείρισης της εμφάνισης και αποτρέπει την επανάληψη κώδικα. Το περιεχόμενο αυτού του αρχείου χρησιμοποιείται σε όλα τα επόμενα αρχεία της λίστας που ακολουθεί. Αυτό επιτυγχάνεται με την εντολή include της sass μορφής στην αρχή κάθε αρχείου. extras.scss: Σε αυτό το αρχείο περιλαμβάνονται όλες οι τροποποιήσεις εμφάνισης των δεδομένων του ισότοπου. Για παράδειγμα η μορφή της σελίδας των προϊόντων, της ομάδας και των νέων. responsive.custom.scss Ο κώδικας που περιέχεται σε αυτό το αρχείο είναι υπεύθυνος για την responsive εμφάνιση των σελίδων της εφαρμογής. Δηλαδή καθορίζει την αναπαράσταση των δεδομένων στα διάφορα μεγέθη οθονών, όπως tablet και κινητά τηλέφωνα. Στην παρακάτω Εικόνα 60 φαίνονται τα περιεχόμενα του φακέλου sass. Συμπεριλαμβάνει τόσο τα αρχεία που έχει ήδη το adaptive theme του Drupal, αλλά και τα custom αρχεία που προστέθηκαν για τις ανάγκες τροποποίησης εμφάνισης της εφαρμογής.

Εικόνα 60 Περιεχόμενα του Sass φακέλου Εδώ είναι απαραίτητο να σημειωθεί ότι τα αρχεία που δημιουργούνται με την εγκατάσταση του Adaptive Theme δεν περιέχουν κάποιο κώδικα που τροποποιεί την εμφάνιση, απλά βοηθούν στην δημιουργία δομημένου κώδικα. Σωστή πρακτική προγραμματισμού για το Drupal δεν συμπεριλαμβάνει την διαγραφή ξένου κώδικα. -89-

6 Μελλοντικές Εξελίξεις Τα τελευταία χρόνια καθώς το Drupal γινόταν ολοένα και περισσότερο γνωστό η αναζήτηση προσωπικού από τις εταιρείες για Drupal Development γινόταν όλο και πιο έ- ντονη. Δίνοντας την ευκαιρία σε πολλούς Drupal προγραμματιστές να δουλεύουν σε πολλά και ενδιαφέροντα project. Όμως για έναν προγραμματιστή η επιλογή εκμάθησης Drupal και του μοναδικού τρόπου λειτουργίας που έχει υιοθετήσει δεν συμβαδίζει με άλλες σύγχρονες τεχνολογίες που χρησιμοποιούνται στην δημιουργία διαδικτυακών εφαρμογών. Περιορίζοντας με αυτόν τον τρόπο τους Drupal προγραμματιστές να είναι εξιδανικευμένοι μόνο για το Drupal. Για παράδειγμα όλες οι σύγχρονες τεχνικές προγραμματισμού χρησιμοποιούν την λογική του αντικειμενοστραφή προγραμματισμού OOP(Object Oriented Programming), το Drupal αποφάσισε να μείνει εκτός αυτής της λογικής. Καθώς ο χρόνος περνάει και οι τεχνολογίες στον χώρο του διαδικτύου ολοένα και περισσότερο εξελίσσονται, η κοινότητα του Drupal αποφάσισε ότι το σύστημα της δεν θα πρέπει να μείνει πίσω. Όλοι οι προγραμματιστές υπεύθυνοι για την εξέλιξη του Drupal, δούλεψαν πολύ για να καταφέρουν να υλοποιήσουν μια καινούργια έκδοση, το Drupal 8, στο οποίο υιοθετείται η αντικειμενοστραφή λογική (OOP) και κάνει έναν Drupal προγραμματιστή πιο σύγχρονο και ταυτόχρονα εξελίξιμο.

Εικόνα 61 Στο Drupal 8, πολλά συστατικά που είχε το Drupal 7 αντικαταστάθηκαν από βιβλιοθήκες. Συγκεκριμένα η καινούργια έκδοση ενσωματώνεται η λογική του γνωστού Symfony framework σε μια νέα και πολύ υποσχόμενη πλευρά προγραμματισμού. Σήμερα έχει βγει μια Beta έκδοση του Drupal 8 και αναμένεται μια stable έκδοση μέσα στο 2015, παροτρύνοντας ολοένα και περισσότερους προγραμματιστές να ασχοληθούν με Drupal. -91-

6.1 Βιβλιογραφία [1] Drupal8, Επίσημη ιστοσελίδα του Drupal διαθέσιμο στο https://www.drupal.org/drupal-8.0 [22-11-2014] [2] Improved Drupal 8, Επίσημη ιστοσελίδα του Drupal διαθέσιμο στο https://www.drupal.org/drupal-8.0/developers [22-11-2014]

Παράρτημα Α Σε εγκατάσταση στο λειτουργικό σύστημα Ubuntu Linux 13.10, χρειάζονται επιπλέον ρυθμίσεις για το phpmyadmin, για το /etc/phpmyadmin/config.inc.php αρχείο καθώς και η δημιουργία της βάσης δεδομένων phpmyadmin. Δημιουργία βάσης δεδομένων phpmyadmin και η εισαγωγή των πινάκων γίνεται μέσω SQL ερωτημάτων. Παρακάτω παρατίθεται ο απαιτούμενος κώδικας με αναλυτικές οδηγίες. Αρχικά απαιτείται η δημιουργία ενός νέου χρήστη με όνομα pma και δικαιώματα SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE για την βάση δεδομένων phpmyadmin. Συνιστάται ο συγκεκριμένος χρήστης να έχει πρόσβαση μόνο σε αυτή την βάση δεδομένων. Κώδικας SQL για τη δημιουργία βάσης δεδομένων από την πηγή https://github.com/phpmyadmin/phpmyadmin/blob/master/examples/create_tables.sql και οδηγίες από την πηγή http://docs.phpmyadmin.net/en/latest/config.html -93-

-- -------------------------------------------------------- CREATE DATABASE IF NOT EXISTS `phpmyadmin` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE phpmyadmin; CREATE TABLE IF NOT EXISTS `pma bookmark` ( `id` int(11) NOT NULL auto_increment, `dbase` varchar(255) NOT NULL default '', `user` varchar(255) NOT NULL default '', `label` varchar(255) COLLATE utf8_general_ci NOT NULL default '', `query` text NOT NULL, PRIMARY KEY (`id`) ) COMMENT='Bookmarks' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma column_info` ( `id` int(5) unsigned NOT NULL auto_increment, `db_name` varchar(64) NOT NULL default '', `table_name` varchar(64) NOT NULL default '', `column_name` varchar(64) NOT NULL default '', `comment` varchar(255) COLLATE utf8_general_ci NOT NULL default '', `mimetype` varchar(255) COLLATE utf8_general_ci NOT NULL default '', `transformation` varchar(255) NOT NULL default '', `transformation_options` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`) ) COMMENT='Column information for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma history` ( `id` bigint(20) unsigned NOT NULL auto_increment, `username` varchar(64) NOT NULL default '', `db` varchar(64) NOT NULL default '', `table` varchar(64) NOT NULL default '', `timevalue` timestamp NOT NULL, `sqlquery` text NOT NULL, PRIMARY KEY (`id`), KEY `username` (`username`,`db`,`table`,`timevalue`) ) COMMENT='SQL history for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma pdf_pages` ( `db_name` varchar(64) NOT NULL default '', `page_nr` int(10) unsigned NOT NULL auto_increment, `page_descr` varchar(50) COLLATE utf8_general_ci NOT NULL default '', PRIMARY KEY (`page_nr`), KEY `db_name` (`db_name`) ) COMMENT='PDF relation pages for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma recent` ( `username` varchar(64) NOT NULL, `tables` text NOT NULL,

PRIMARY KEY (`username`) ) COMMENT='Recently accessed tables' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma favorite` ( `username` varchar(64) NOT NULL, `tables` text NOT NULL, PRIMARY KEY (`username`) ) COMMENT='Favorite tables' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma table_uiprefs` ( `username` varchar(64) NOT NULL, `db_name` varchar(64) NOT NULL, `table_name` varchar(64) NOT NULL, `prefs` text NOT NULL, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`username`,`db_name`,`table_name`) ) COMMENT='Tables'' UI preferences' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma relation` ( `master_db` varchar(64) NOT NULL default '', `master_table` varchar(64) NOT NULL default '', `master_field` varchar(64) NOT NULL default '', `foreign_db` varchar(64) NOT NULL default '', `foreign_table` varchar(64) NOT NULL default '', `foreign_field` varchar(64) NOT NULL default '', PRIMARY KEY (`master_db`,`master_table`,`master_field`), KEY `foreign_field` (`foreign_db`,`foreign_table`) ) COMMENT='Relation table' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma table_coords` ( `db_name` varchar(64) NOT NULL default '', `table_name` varchar(64) NOT NULL default '', `pdf_page_number` int(11) NOT NULL default '0', `x` float unsigned NOT NULL default '0', `y` float unsigned NOT NULL default '0', PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`) ) COMMENT='Table coordinates for phpmyadmin PDF output' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma table_info` ( `db_name` varchar(64) NOT NULL default '', `table_name` varchar(64) NOT NULL default '', `display_field` varchar(64) NOT NULL default '', PRIMARY KEY (`db_name`,`table_name`) ) COMMENT='Table information for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma designer_coords` ( `db_name` varchar(64) NOT NULL default '', -95-

`table_name` varchar(64) NOT NULL default '', `x` INT, `y` INT, `v` TINYINT, `h` TINYINT, PRIMARY KEY (`db_name`,`table_name`) ) COMMENT='Table coordinates for Designer' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma tracking` ( `db_name` varchar(64) NOT NULL, `table_name` varchar(64) NOT NULL, `version` int(10) unsigned NOT NULL, `date_created` datetime NOT NULL, `date_updated` datetime NOT NULL, `schema_snapshot` text NOT NULL, `schema_sql` text, `data_sql` longtext, `tracking` set('update','replace','insert','delete','truncate','create DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') default NULL, `tracking_active` int(1) unsigned NOT NULL default '1', PRIMARY KEY (`db_name`,`table_name`,`version`) ) COMMENT='Database changes tracking for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma userconfig` ( `username` varchar(64) NOT NULL, `timevalue` timestamp NOT NULL, `config_data` text NOT NULL, PRIMARY KEY (`username`) ) COMMENT='User preferences storage for phpmyadmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma users` ( `username` varchar(64) NOT NULL, `usergroup` varchar(64) NOT NULL, PRIMARY KEY (`username`,`usergroup`) ) COMMENT='Users and their assignments to user groups' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma usergroups` ( `usergroup` varchar(64) NOT NULL, `tab` varchar(64) NOT NULL, `allowed` enum('y','n') NOT NULL DEFAULT 'N', PRIMARY KEY (`usergroup`,`tab`,`allowed`) ) COMMENT='User groups with configured menu items' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma navigationhiding` ( `username` varchar(64) NOT NULL, `item_name` varchar(64) NOT NULL, `item_type` varchar(64) NOT NULL, `db_name` varchar(64) NOT NULL, `table_name` varchar(64) NOT NULL,

PRIMARY KEY (`username`,`item_name`,`item_type`,`db_name`,`table_name`) ) COMMENT='Hidden items of navigation tree' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; CREATE TABLE IF NOT EXISTS `pma savedsearches` ( `id` int(5) unsigned NOT NULL auto_increment, `username` varchar(64) NOT NULL default '', `db_name` varchar(64) NOT NULL default '', `search_name` varchar(64) NOT NULL default '', `search_data` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `u_savedsearches_username_dbname` (`username`,`db_name`,`search_name`) ) COMMENT='Saved searches' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; Στη συνέχεια απαιτείται η τροποποίηση του etc/phpmyadmin/config.inc.php αρχείου όπως φαίνεται στην παρακάτω εικόνα Εικόνα 62. Εικόνα 62 Περιεχόμενα αρχείου config.inc.php Στην παρακάτω εικόνα φαίνεται το περιβάλλον phpmyadmin. Στα δεξιά φαίνονται οι χρήστες και στα αριστερά η δομή της βάσης δεδομένων. -97-

---------- μην πειράζετε κάτω από εδώ θα χαλάσει η σελιδοποίηση! ---------