
Οι περισσότεροι από εμάς έχουμε κατά καιρούς εγκαταστήσει διάφορες εφαρμογές στο διαδίκτυο, είτε αυτές είναι ιστολόγια όπως το WordPress, είτε είναι εφαρμογές διαχείρισης περιεχομένου όπως το Joomla ή κάποιο φόρουμ όπως το phpBB με τη βοήθεια των installer που έχουν οι εφαρμογές αυτές. Το ερώτημα είναι πως μπορούμε να δημιουργήσουμε τον δικό μας installer για μια εφαρμογή CakePHP;Ο installer που θα δημιουργήσουμε θα είναι βασισμένος πάνω σε ένα Controller, ο οποίος θα φορτώνει αυτόματα την πρώτη φορά που ο χρήστης θα επισκέπτεται την εφαρμογή. Για να καταφέρουμε την αυτόματη κλήση του Controller που θα κάνει την εγκατάσταση πρέπει να γράψουμε λίγο κώδικα στο αρχείο routes.php που είναι στο φάκελο app/config/. Γράψτε τον κώδικα που ακολουθεί στο αρχείο routes.php της εφαρμογής σας:
if(file_exists(TMP.'app_installed'))
{
// Εδώ θα βάλετε τα routes που θα χρησιμοποιηθούν από την εφαρμογή σας μετά την εγκατάσταση
}
else
{
Router::connect('/:action', array('controller' => 'installer'));
}
Έτσι για όσο δεν υπάρχει το αρχείο app_installed, ο χρήστης θα βλέπει την πρώτη σελίδα του installer όταν θα πληκτρολογεί το URL της εφαρμογής στον περιηγητή διαδικτύου. Ως συνέπεια αυτής της λογικής είναι αφού ολοκληρώσουμε την εγκατάσταση της εφαρμογής θα πρέπει να δημιουργήσουμε και το αρχείο app_installed.
Ο controller για τον Installer είναι πολύ απλός από μόνος του. Κάθε action είναι μια σελίδα στην διαδικασία εγκατάστασης και ο βασικός κώδικας είναι ο ακόλουθος. Σαφώς και μπορείτε να τον αλλάξετε ή να προσθέσετε επιπλέον λογική ανάλογα με τις ανάγκες της εφαρμογής σας.
// app/controllers/
uses('model' . DS . 'connection_manager');
class InstallerController extends AppController
{
var $uses = array();
function beforeFilter()
{
if(file_exists(TMP . 'app_installed'))
{
echo 'Η εφαρμογή είναι εγκατεστημένη. Για να εγκαταστήσετε ξανά την εφαρμογή διαγράψτε το αρχείο Remove app/config/app_installed';
exit();
}
}
function index(){}
function database()
{
$db = ConnectionManager::getDataSource('default');
if(!$db->isConnected())
{
echo 'Η σύνδεση με τη βάση δεδομένων δεν μπορεί να πραγματοποιηθεί. Παρακαλώ ελέγξτε τις ρυθμίσεις στο αρχείο app/config/database.php και δοκιμάστε ξανά';
exit();
}
$this->__executeSQLScript($db, CONFIGS . 'sql' . DS . 'app.sql');
$this->redirect('/installer/installed');
}
function thanks()
{
file_put_contents(TMP . 'app_installed', date('Y-m-d, H:i:s'));
}
function __executeSQLScript($db, $fileName)
{
$statements = file_get_contents($fileName);
$statements = explode(';', $statements);
foreach($statements as $statement)
{
if(trim($statement) != '')
{
$db->query($statement);
}
}
}
}
Ο παραπάνω κώδικας μπορεί να επεκταθεί σε μεγάλο βαθμό και να μετατραπεί σε ένα πολύ ισχυρό εργαλείο εγκατάστασης, με πολλά επίπεδα ελέγχων και άλλα χαρακτηριστικά.
Δεν υπάρχουν σχόλια ακόμα.