We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15896
    • 80 Posts
    Ho problemi con questo placeholder che non viene sostituito.
    Ho visto questa richiesta di Edipo a proposito http://modxcms.com/forums/index.php/topic,4048.0.html.
    Edipo o qualcun’altro è riuscito a trovare la soluzione?

    Credo che si potrebbe brutalmente mettere il segnaposto [(site_url)] per ottenere lo stesso effetto. Che dite?

    Ciao
      • 15896
      • 80 Posts
      Ho scoperto dove sta il problema. C’è un chiaro "bug" nella funzione webLoginSendNewPassword del file weblogin.common.inc.php nel core dello snippet weblogin.
      La funzione ha questo codice
      function webLoginSendNewPassword($email,$uid,$pwd,$ufn){
      		global $modx;
      		$mailto = $modx->config['mailto'];
      		$websignupemail_message = $modx->config['websignupemail_message'];	
      		$emailsubject = $modx->config['emailsubject'];
      		$emailsender = $modx->config['emailsender']; 
      		$site_name = $modx->config['site_name'];
      		$site_start = $modx->config['site_start'];
      		$message = sprintf($websignupemail_message, $uid, $pwd); // use old method
      		// replace placeholders
      		$message = str_replace("[+uid+]",$uid,$message);
      		$message = str_replace("[+pwd+]",$pwd,$message);
      		$message = str_replace("[+ufn+]",$ufn,$message);
      		$message = str_replace("[+sname+]",$site_name,$message);
      		$message = str_replace("[+semail+]",$emailsender,$message);
      		$message = str_replace("[+surl+]",dirname(PHP_SELF),$message);
      		if(!mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion())) {
      			return webLoginAlert(WL_ERRONSEND.$mailto,1);
      		}		
      		return true;
      	}
      

      La linea incrimanata grin è la seguente:
      $message = str_replace("[+surl+]",dirname(PHP_SELF),$message);

      che chiaramente non porta a nulla. Al massimo potrebbe essere
      $message = str_replace("[+surl+]",dirname($_SERVER['PHP_SELF']),$message);

      anche in questo caso non utile allo scopo.
      Per poter ovviare al problema bisogna modificare la funzione come segue
      function webLoginSendNewPassword($email,$uid,$pwd,$ufn){
      		global $modx;
                      //aggiungere questa linea
                      global $site_url;
      		$mailto = $modx->config['mailto'];
      		$websignupemail_message = $modx->config['websignupemail_message'];	
      		$emailsubject = $modx->config['emailsubject'];
      		$emailsender = $modx->config['emailsender']; 
      		$site_name = $modx->config['site_name'];
      		$site_start = $modx->config['site_start'];
      		$message = sprintf($websignupemail_message, $uid, $pwd); // use old method
      		// replace placeholders
      		$message = str_replace("[+uid+]",$uid,$message);
      		$message = str_replace("[+pwd+]",$pwd,$message);
      		$message = str_replace("[+ufn+]",$ufn,$message);
      		$message = str_replace("[+sname+]",$site_name,$message);
      		$message = str_replace("[+semail+]",$emailsender,$message);
                      //modificare questa linea come segue
      		$message = str_replace("[+surl+]",$site_url,$message);
      		if(!mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion())) {
      			return webLoginAlert(WL_ERRONSEND.$mailto,1);
      		}		
      		return true;
      	}
      


      Ciao wink
        • 8471
        • 333 Posts
        Grande Kimu!  laugh
        Grazie per avere condiviso con noi la soluzione
        Credo sarebbe carino postarla anche sul forum internazionale  wink

        EDIT: ho visto ora che l’hai già messa nel tuo topic del weblogin, la aggiungo anche al mio, per facilitare chi avesse lo stesso problema e usasse la funzione cerca
          Sorry for my bad English grin