Autore Topic: [Risolto] Installer script  (Letto 2443 volte)

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Installer script
« Risposta #20 il: 18 Set 2016, 10:11:56 »
la classe è minuscola com_

verifica che la funzione venga usata facendogli stampare un messaggio, se la funzione viene usata l'errore potrebbe essere nella query

mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27603
  • Sesso: Maschio
  • Chi si specializza muore. Chi divaga troppo affoga
    • Mostra profilo
    • Xataface Italia
Re:Installer script
« Risposta #21 il: 18 Set 2016, 12:05:24 »
No  anche correggendo la classe col minuscolo ed inserendo un echo non viene eseguito. Il punto è come faccio ad aggiornare un componente aggiungendo delle feature . Ho provato a ripetere la struttura iniziale della estensione aggiungendo solo le cartelle, le tabelle e i record in più ma ottengo che mi inserisce sì le tabelle ed i record nel db (col metodo upgrade nella cartella sql/updates/mysql/) e le cartelle aggiunte ma mi cancella le cartelle esistenti. Dove trovo documentazione su come preparare un pacchetto di upgrade di una estensione?
« Ultima modifica: 18 Set 2016, 12:07:03 da tomtomeight »
NEWS DataGrill Xataface Installer (Ver. 1.0.0) per Joomla 3.6 ed un Esempio Applicazione Bblioteca

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Installer script
« Risposta #22 il: 18 Set 2016, 12:15:36 »
No  anche correggendo la classe col minuscolo ed inserendo un echo non viene eseguito.

prova con un print_r(); seguito da un bel die('sono qui');

quella classe viene (dovrebbe) eseguita dal plugin installer che cerca i trigger/metodi predisposti pre e post flight install ed update e se ci sono li esegue.

Se non funziona questo "meccanismo" c'è un problema

es. se trova prefligt(etc){ die('sono in preflight'); } non può non funzionare, quando nel manifest trova il tag scriptfile esegue il file inserito tra i tag

EDIT:  mi sembra strano tu non veda errori... hai i debug attivato? il Display Errors su on e E_ALL nel php.ini ?

hai provato anche ad usare install invece che preflight?
« Ultima modifica: 18 Set 2016, 13:50:56 da MariaElenaBoschi »
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27603
  • Sesso: Maschio
  • Chi si specializza muore. Chi divaga troppo affoga
    • Mostra profilo
    • Xataface Italia
Re:Installer script
« Risposta #23 il: 18 Set 2016, 18:25:02 »
Finalmente ho ottenuto due risultati, riesco a caricare i file e cartelle senza perdere quelli presenti e riesco a far eseguire lo script, questo solo in parte. Mi popola il db ma non mi crea la cartella

Codice: [Seleziona]
defined('_JEXEC') or die;

/**
 * Installs some files that the installer does not move.
 *
 * @since  1.0
 */
class pkg_RubricaInstallerScript
{
/**
* Copying files
*
* @param   string                     $type   Installation type
* @param   JInstallerAdapterComponent $parent Installation adapter
*
* @return bool False if something happens
*/
public function postflight($type, $parent)
{
// Create the rubrica content type object.
$db    = JFactory::getDbo();

$rubrica = new stdClass();
$rubrica->greeting = 'Rubrica';
$rubrica->tables = '{"contatti": "Contatti"}';
$rubrica->modules = '{"modules_depselect": "modules/depselect/depselect.php"}';
$rubrica->languages = '{"it": "Italiano"}';

// Set the object into the content types table.
$rubrica_Inserted = $db->insertObject('#__datagrill', $rubrica);

$lastid=LAST_INSERT_ID();
$newappPath=JPATH_COMPONENT_SITE.'/apps/'.urlencode($lastid).'_'.urlencode($greeting);
    if (!file_exists($newappPath))  {
        mkdir($newappPath, 0755, true);
    }

$parent->getParent()->setRedirectURL(JRoute::_('index.php?option=com_datagrill&view=installation', false));

return true;
}
}
Ho dovuto agire da package suddividendo le azioni di caricare file e aggiornare db da file  script

però adesso si blocca su questa variabile che dice non è definita
$lastid=LAST_INSERT_ID();

Serve per ottenere il nome della cartella contenente l'applicazione, nello script cerco di creare direttamente la cartella, però poi dovrò modificare perché in pratica la cartella è stata già caricata e quindi dovrò solo rinominarla.

Come ottengo l'ultimo id inserito nella tabella?

Grazie per la pazienza di chi mi sta seguendo
NEWS DataGrill Xataface Installer (Ver. 1.0.0) per Joomla 3.6 ed un Esempio Applicazione Bblioteca

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Installer script
« Risposta #24 il: 18 Set 2016, 18:52:16 »
$db->insertid();

urlencode($greeting); <- questo non capisco cosa sia.

se cerchi un file devi dargli il percorso e il nome del file estensione compresa
« Ultima modifica: 18 Set 2016, 18:58:59 da MariaElenaBoschi »
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27603
  • Sesso: Maschio
  • Chi si specializza muore. Chi divaga troppo affoga
    • Mostra profilo
    • Xataface Italia
Re:Installer script
« Risposta #25 il: 18 Set 2016, 19:21:22 »
Ok con $db->insertid()

urlencode($greeting);  questo è usato nel model dell'applicazione, comunque il nome già è noto avendo caricato la cartella, una volta ottenuto l'id basta rinominare aggiungendo l'id con le istruzioni:

Codice: [Seleziona]
$lastid=$db->insertid();
echo "$lastid";
$oldappPath=JPATH_COMPONENT_SITE.'/apps/'.'99_Rubrica';
$newappPath=JPATH_COMPONENT_SITE.'/apps/'.urlencode($lastid).'_'.'Rubrica';
    if (!file_exists($newappPath))  {
        rename($oldappPath, $newappPath);
    }

però con JPATH_COMPONENT_SITE mi restituisce il path di
/..../.../components/com_installer/apps/99_Rubrica
e quindi non trova la cartella da rinominare, come ottengo il  percorso giusto dell'applicazione?
NEWS DataGrill Xataface Installer (Ver. 1.0.0) per Joomla 3.6 ed un Esempio Applicazione Bblioteca

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Installer script
« Risposta #26 il: 18 Set 2016, 19:33:21 »
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27603
  • Sesso: Maschio
  • Chi si specializza muore. Chi divaga troppo affoga
    • Mostra profilo
    • Xataface Italia
[Risolto] Installer script
« Risposta #27 il: 18 Set 2016, 20:03:37 »
Ok con queste modifiche:
Codice: [Seleziona]
$lastid=$db->insertid();
echo "$lastid";
$oldappPath=JPATH_CONFIGURATION.'/components/com_datagrill/apps/'.'99_Rubrica';
$newappPath=JPATH_CONFIGURATION.'/components/com_datagrill/apps/'.urlencode($lastid).'_'.'Rubrica';
    if (!file_exists($newappPath))  {
        rename($oldappPath, $newappPath);
    }

viene rinominata la cartella.
Adesso restano da risolvere altri problemi, aprirò altra discussione,  questo post lo ritengo risolto e ringrazio vivamente per gli aiuti ricevuti.
Presto pubblicherò il lavoro.
NEWS DataGrill Xataface Installer (Ver. 1.0.0) per Joomla 3.6 ed un Esempio Applicazione Bblioteca

Offline $Red

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 4743
  • "Bastard Inside"
    • Mostra profilo
    • redwebsite
Re:[Risolto] Installer script
« Risposta #28 il: 18 Set 2016, 20:12:37 »
Presto pubblicherò il lavoro.
Ciao tomtom, vi ho seguito un pò, a fatica  ;D , ora sono proprio curioso di provare l'estensione  :)
alterjoomla Guide joomla altervista - RedWebSite  joomla! e non solo joomla!
L'Anguilla! no non é un serpente né uno strano pesce

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27603
  • Sesso: Maschio
  • Chi si specializza muore. Chi divaga troppo affoga
    • Mostra profilo
    • Xataface Italia
Re:Installer script
« Risposta #29 il: 18 Set 2016, 20:22:07 »
Ciao red

Aggiungo per chi vuol vedere il tutto funzionante ( componente e applicazione  aggiunta manualmente )

http://www.xataface.it/esempio.html

per modificare invece bisogna loggarsi
http://www.xataface.it/login.html
tester
tester

e questa è solo una delle molteplici applicazioni che si possono costruire.
NEWS DataGrill Xataface Installer (Ver. 1.0.0) per Joomla 3.6 ed un Esempio Applicazione Bblioteca

 

Torna su