Installer για CakePHP εφαρμογές

08 Οκτ 2011 | Development

Δεν επιτρέπονται τα σχόλια.


Οι περισσότεροι από εμάς έχουμε κατά καιρούς εγκαταστήσει διάφορες εφαρμογές στο διαδίκτυο, είτε αυτές είναι ιστολόγια όπως το 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);
            }
        }
    }
}

Ο παραπάνω κώδικας μπορεί να επεκταθεί σε μεγάλο βαθμό και να μετατραπεί σε ένα πολύ ισχυρό εργαλείο εγκατάστασης, με πολλά επίπεδα ελέγχων και άλλα χαρακτηριστικά.

Περισσότερα για τον CorfuGmr

CorfuGmr

Ονομάζομαι Νίκος και ασχολούμαι με το internet και την κατασκευή ιστοσελίδων από το 1998. Σήμερα, μετά από 12 χρόνια γεμάτα με ενημέρωση, εκπαίδευση και εξάσκηση έχω ανεβάσει σε ένα άλλο επίπεδο τις γνώσεις μου και τις τεχνικές μου. Στα άρθρα μου προσπαθώ να σας δείξω τα μικρά, αλλά σημαντικά πράγματα που με έχουν ανεβάσει σε αυτό το επίπεδο.








Σχόλια

Δεν υπάρχουν σχόλια ακόμα.

Συγνώμη, τα σχόλια για αυτό το άρθρο είναι κλειστά.



^
Top
css.php