credo di aver trovato (e risolto) il bug di NMS che inviava link errati per la modifica dei dati utente:
in realtà si tratta di 2 bug:
il primo è nella costruzione dei link (non ho ancora capito se dipende dal modulo o dal core o solo dal mio client di posta)
gli '&' non venivano sostituiti con '&' e l'errore era
One or more required parameters are missing from the request. This action cannot proceed
modicando il file action.usersettings_email da così
Code: Select all
$this->smarty->assign( 'usersettings_url',
$this->CreateFrontendLink( $id, $returnid, 'usersettings',
'', array('uniqueid' => $userinfo['uniqueid']),
'', true, '', true));
$this->smarty->assign( 'unsubscribe_url',
$this->CreateFrontendLink( $id, $returnid, 'unsubscribe',
'', array('uniqueid' => $userinfo['uniqueid']),
'', true, '', true));
Code: Select all
$usersettings_url = $this->CreateFrontendLink( $id, $returnid, 'usersettings',
'', array('uniqueid' => $userinfo['uniqueid']),
'', true, '', true);
$unsubscribe_url = $this->CreateFrontendLink( $id, $returnid, 'unsubscribe',
'', array('uniqueid' => $userinfo['uniqueid']),
'', true, '', true);
$usersettings_url = str_replace("&","&",$usersettings_url);
$unsubscribe_url = str_replace("&","&",$unsubscribe_url);
$this->smarty->assign( 'usersettings_url',$usersettings_url);
$this->smarty->assign( 'unsubscribe_url',$unsubscribe_url);
una volta corretti link l'unsubscribe funzionava alla perfesione ma lo usersettings mi dava un Database error
il problema è in una query nel file action.usersettings.php che viene costruita male (non viene inserito il table prefix)
basta modificare la query da
Code: Select all
$q = "SELECT A.listid, A.name, A.description, B.userid, B.active
FROM cms_module_NMS_list AS A LEFT OUTER JOIN cms_module_NMS_listuser AS B
ON A.listid = B.listid AND B.userid = ?
WHERE A.public = ?";
Code: Select all
$q = "SELECT A.listid, A.name, A.description, B.userid, B.active
FROM ".cms_db_prefix().$this->table_prefix."list AS A LEFT OUTER JOIN ".cms_db_prefix().$this->table_prefix."listuser AS B
ON A.listid = B.listid AND B.userid = ?
WHERE A.public = ?";