Back to top

Autore Topic: [Risolto] Installer script  (Letto 8861 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: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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 »

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: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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

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: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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?

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: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
[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.

Offline $Red

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 5351
  • "Bastard Inside"
    • Mostra profilo
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  :)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
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.

 



Web Design Bolzano Kreatif