Back to top

Autore Topic: Creazione di un nuovo Plugin "Monitora gli articoli"  (Letto 2020 volte)

Offline umbobabo

  • Nuovo arrivato
  • *
  • Post: 33
    • Mostra profilo
Ciao,
sto realizzando un nuovo articolo che permetta agli utenti di aggiungere gli articoli ai propri preferiti e ricevere la notifica via mail qualora un loro articolo preferito venga modificato.

Sono partito utilizzando 1 plugin esistente (New Article Notification) per la notifica e l'ho modificato collegandolo al modulo (Core Design My Favorite Pages module).

In pratica il modulo permette agli utenti di aggiungere al DB i loro preferiti. Una volta che viene modificato un articolo il plugin si occupa di inviare le mail agli utente che nella tabella del modulo hanno quell'articolo.

TUTTO funziona bene, ma non su 2 versioni diverse di Joomla.

Il problema è sicuramente nel onAfterContentSave della seconda versione di Joomla che per qualche motivo non viene richiamato.

Questo è il plugin:
Codice: [Seleziona]
<?php

// New Article Notification - Free
// Plugin for Joomla 1.5
// Version 2.0.0
// Copyright (c) 2009 JoomlaExtensions.biz - http://www.joomlaextensions.biz
// Last update: November 29, 2009

// no direct access
defined'_JEXEC' ) or die( 'Restricted access' );

// import library dependencies
jimport('joomla.event.plugin');

// language defines for English
// <--------------- English language Defines ------------------------------------->
define('_JSC_JVERSION','<b>Error</b>: JoomlaExtensions.biz "New Article Notification (j!1.5)" Plugin functions only under Joomla! 1.5');
// <--------------- END --------------------------------------------------------->


class plgContentJEBNAN extends JPlugin
{
        
// constructor
        
function plgContentJEBNAN( &$subject )
        {
                
parent::__construct$subject );
                
// load plugin parameters
                
$this->_plugin JPluginHelper::getPlugin'content''jebnan' );
                
$this->_params = new JParameter$this->_plugin->params );
}

function onAfterContentSave(&$newArticle, &$isNew) {
                
// just startup
                
global $mainframe;
                
$user =& JFactory::getUser();
                
$db =& JFactory::getDBO();

                
// get parameters
                
$plugin =& JPluginHelper::getPlugin('content''jebnan');
                
//send email
                
$new_url JURI::root() . "index.php?option=com_content&view=article&id=" $newArticle->id;
                
$email_body "E' stato modificato l'articolo ".$newArticle->title." dei tuoi prefertiti sul sito ".$mainframe->getCfg('sitename').": " $new_url;
                 
                 
// query the user table for e-mail addresses and email preferences
                  
$query "SELECT email"
                   
." FROM #__users,#__cd_fapa"
                   
." WHERE #__users.id = #__cd_fapa.uid AND #__cd_fapa.idarticle = " .$newArticle->id." ";
                  
$db->setQuery$query );
                  
$user_info $db->loadResultArray();
                 
                 foreach (
$user_info as $send) {
                  
//$mailSender ->addRecipient( $send );
                  //$mailSender ->Send();
                   
JUtility::sendMail($user->email$user->name$send"Aggiornato uno dei tuoi articoli preferiti su "$mainframe->getCfg('sitename').""$email_body);
                 }


// end of class
}

}

?>


Questo è il server dove funziona tutto benissimo:

Codice: [Seleziona]
PHP creato il: Linux clin15.cassiopea.it 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686
Versione database: 5.0.58
Collation Database: utf8_general_ci
Versione PHP: 5.2.11
Server Web: Apache/2.2.3 (CentOS)
Server web per interfaccia PHP: apache2handler
Versione di Joomla!: Joomla! 1.5.6 Production/Stable [ Vusani ] 12-August-2008 22:00 GMT
User Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5

Questo il server dove NON viene richiamato l'evento:

Codice: [Seleziona]
PHP creato il: Windows NT GIOTTO 5.2 build 3790 (Windows Server 2003 R2 Standard Edition Service Pack 2) i586
Versione database: 5.1.36-community-log
Collation Database: utf8_general_ci
Versione PHP: 5.3.0
Server Web: Apache/2.2.11 (Win32) PHP/5.3.0
Server web per interfaccia PHP: apache2handler
Versione di Joomla!: Joomla! 1.5.15 Stable [ Wojmamni Ama Mamni ] 05-November-2009 04:00 GMT
User Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5

Per assurdo con il Joomla più recente non funziona.
Vi confermo che non è un problema di SMTP o altro perchè nel plugin ho provato a inserire l'invio della mail nel costruttore e la inoltra.

Credo sia quindi o un problema di versione di Joomla o qualche componente.

Help...sto diventando pazzo!!  :-[

Appena lo sistemo poi lo pubblico

mau_develop

  • Visitatore
Re:Creazione di un nuovo Plugin "Monitora gli articoli"
« Risposta #1 il: 17 Apr 2010, 14:54:11 »
Server Web:    Apache/2.2.11 (Win32) PHP/5.3.0

è questo che probabilmente crea problemi, non la diversa versione di joomla ma la differenza di server...e di php

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creazione di un nuovo Plugin "Monitora gli articoli"
« Risposta #2 il: 17 Apr 2010, 15:59:22 »
ciao,
 neanche io sono un appassionato di joomla su win, ma mi suona più come un problema di php ...

anche se le istruzioni di joomla dicono il contrario, prova ad abilitare anche il report dei warning.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline umbobabo

  • Nuovo arrivato
  • *
  • Post: 33
    • Mostra profilo
Re:Creazione di un nuovo Plugin "Monitora gli articoli"
« Risposta #3 il: 18 Apr 2010, 20:27:43 »
Ciao,
grazie ottimo suggerimento.
Ho controllato il log degli errori del php e riportava un errore di cui non riesco a fare copia e incolla perchè ero in remoto ma era una cosa del tipo che la seconda variabile della funzione onaftercontentsave doveva essere una reference.

In pratica da così:

onAfterContentSave(&$newArticle, &$isNew)

o messo così:

onAfterContentSave(&$newArticle)

e sembra tutto ok a parte che non invia la mail mo ho visto che quello è un problema di configurazione del SMTP.

Per ora mille grazie, appena mi è possibile conto di uplodare il modulo+plugin.

Ciao

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creazione di un nuovo Plugin "Monitora gli articoli"
« Risposta #4 il: 19 Apr 2010, 08:22:57 »
Citazione
... la seconda variabile della funzione onaftercontentsave doveva essere una reference.

php 5.3, verifica sul manuale le convenzioni di chiamata e di passaggio dei parametri...

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif