Installazione Moduli Automatica

Salve a tutti.

La mia idea è realizzare un gestionale dove si possano aggiungere dei moduli oltre quelli base, diciamo sulla tipologia di Wp o Joomla.

Il problema è che Yii richiede la modifica del config per inserire il nome del modulo per l’installazione e questo sarebbe d’ostacolo a quegli utenti senza conoscenze informatiche.

Mi è venuta questa idea, che al momento funziona:

Ho aggiunto al config.php questa funzione:




function getModules() {

    return array(

         'anagrafica'

        ,'archivio'

        ,'aziende'

        ,'acquisti'

        ,'administration'

        ,'contabilita'

        ,'magazzino'

        ,'vendite'

    );

}

includendola poi nell’array di config con


'modules' => getModules(),

L’idea è questa: scrivere i moduli installati su un file di testo.

Questa funzione leggerebbe i moduli installati (farglieli leggere dal db direi che ancora non si può fare) e farebbe poi il return dell’array.

Che ne pensate?

Io salverei nel db, per caricare i moduli puoi usare la init della CApplication (con un behavior). La init arriva prima del’analisi dell’url, quindi fai in tempo.

Avevo scritto del codice, tempo fa, che risolveva questo problema. La mia logica era questa:

Se io ho un file come questo:


<?php return array();

vorrei avere la possibilità di aggiungere e togliere elementi a piacimento.

Supponiamo quindi di avere una sorta di interfaccia grafica in cui indicare il nome del modulo (userò un nome di fantasia) da installare: ‘pulcinella’. Il file qui sopra dovrà diventare


<?php return array(

    'pulcinella'

);

Supponiamo, quindi, di avere un file di configurazione del tipo:


<?php return array(

    'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',

    'name' => '[[appname]]',

    'preload' => array('log'),

    'import' => require 'import.php',

    'modules' => require 'modules.php',

    ...

E di avere un’interfaccia grafica che ci permette di aggiungere e togliere moduli a piacimento …

E’ questo che ti potrebbe servire? Anzichè usare il DB come suggerisce zaccaria, io ho pensato direttamente al file php. Cambia di poco.

Dimenticavo di dire che per eliminare tutte le require, si potrebbe anche rigenerare ad ogni modifica il file "renderizzato" protected/config/main.php

In effetti l’idea che avevo era questa, penso che generare un file modules.php o .conf sia più rapido che effettuare una chiamata al db per sapere quali i moduli da installare.

Ciò che non mi è chiaro è questo:

Yii inizializza l’app leggendo la configurazione, ma in che ordine?

Se per esempio so che sono già disponibili i models degli utenti potrei richiedere solo i moduli a cui l’utente ha accesso.

D’altra parte se il collegamento al db avviene dopo che io chiamo i models bloccherei il tutto.

Poi - sono confuso lo so - da quanto ho capito Yii carica all’occorrenza i file necessari, oltre quelli che vengono fissati nel config (aplication.modules.anagrafica.models.*), pertanto che la mia lista di moduli sia limitata solo a quelli diponibili per l’utente ha in realtà poca utilità.

o no?

Se tu nel file di configurazione ci metti 1000 moduli ma sei in un controller che ne carica uno, yii ne carica uno.