Back to top

Autore Topic: [RISOLTO?] eventi di inserimento, modifica o cancellazione prodotto virtuemart  (Letto 1943 volte)

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Volevo realizzare un Plugin che intervenisse nel caso si verificassero gli eventi in oggetto (joomla 1.7.2 e virtuemart 2.0).

Ho dato un' occhiata in giro ed in particolare su http://dev.virtuemart.net/projects/virtuemart/wiki/Plugin_system con scarsissimi risultati.

Allora, all' interno di un evento di sistema di joomla, ho inserito il seguente codice di prova :
Codice: [Seleziona]
.....   
    $option = JRequest::getVar('option');
    $virtuemart_product_id = JRequest::getVar('virtuemart_product_id',null);
    $session = JFactory::getSession();
    $appqueue = $session->get('application.queue');
    $action = $appqueue[0]['type'];
.......

Sembrava funzionare , nel senso che, $virtuemart_product_id contiene l' id prodotto, $option contiene "com_virtuemart" ed $action contiene "save". Utilizzo quindi questa combinazione per dire che si sta salvando o modificando un prodotto virtuemart.

La cosa stranissima però e che, se dalla videata del prodotto si preme il bottone "salva" tutto ok, viceversa se si preme il bottone "salva e chiudi", $virtuemart_product_id è null , nonostante sia comunque presente nel link relativo al bottone salva e chiudi.

Non lo trovo neanche nelle variabili globali ne con le api JURI.

Boh, forse non sto percorrendo nemmeno la strada giusta ....
« Ultima modifica: 08 Feb 2012, 22:40:46 da alexdi »
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
...non mi ispira molto però , facendo un pò di prove, sembra funzionare.......



Codice: [Seleziona]
<?php
// no direct access
defined'_JEXEC' ) or die( 'Restricted access' );
 
jimport'joomla.plugin.plugin' );

class 
plgSystemExample extends JPlugin
{
/**
* Constructor.
*
* @access protected
* @param object $subject The object to observe
* @param array   $config  An array that holds the plugin configuration
* @since 1.0
*/
public function __construct( &$subject$config )
{
parent::__construct$subject$config );
 
// Do some extra initialisation in this constructor if required
}
 
/**
* Do something onAfterRoute
*/
function onAfterRoute()
{
 
//ricavo id prodotto che si sta modificando/cancellando
    
$session =& JFactory::getSession();
    
$id JRequest::getVar('virtuemart_product_id');
    if(
$id || $id == '0'){//se id=0 si sta creando un nuovo prodotto...
        
$session->set('my_product_id'$id);
    }

}


function 
onBeforeRender()
{

$session =& JFactory::getSession();
$data $session->get('application.queue');
$type $data[0][type];

$option JRequest::getVar('option');
$view JRequest::getVar('view');

$id $session->get('my_product_id');//ricavo id dalla variabile di sessione
$session->clear('my_product_id/');//rimuovo la variabile di sessione

if ($type == 'save' && $option == 'com_virtuemart' && $view == 'product')
{
    if(!
$id)//prodotto appena creato, ricava id dalla tabella
    
{
    
$db JFactory::getDbo();
    
$db->setQuery('SELECT MAX(virtuemart_product_id) FROM #__virtuemart_products');
    
$id $db->loadResult();
    }

    
//todo: elaboro l' id dell' ultimo prodotto virtuemart modificato/inserito
    
echo '';
    return;
}
//caso richiesta rimozione prodotto
if ($type == 'remove' && $option == 'com_virtuemart' && $view == 'product')
{
    foreach (
$id as $value) {
    
//todo: elaboro il/gli id del/dei prodotto/i virtuemart romosso/i
    
}   
}
}
}
?>

« Ultima modifica: 08 Feb 2012, 22:41:12 da alexdi »
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

 



Web Design Bolzano Kreatif