* @author Romain Quetiez * @author Denis Flaven * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ /** * Wizard to configure and initialize the iTop application */ require_once('../approot.inc.php'); require_once(APPROOT.'/application/utils.inc.php'); require_once(APPROOT.'/core/email.class.inc.php'); require_once('./setuppage.class.inc.php'); $sOperation = Utils::ReadParam('operation', 'step1'); $oP = new SetupWebPage('iTop email test utility'); /** * Helper to check server setting required to send an email */ function CheckEmailSetting($oP) { $bRet = true; if (function_exists('php_ini_loaded_file')) // PHP >= 5.2.4 { $sPhpIniFile = php_ini_loaded_file(); } else { $sPhpIniFile = 'php.ini'; } $bIsWindows = (array_key_exists('WINDIR', $_SERVER)); if ($bIsWindows) { $sSmtpServer = ini_get('SMTP'); if (empty($sSmtpServer)) { $oP->error("The SMTP server is not defined. Please add the 'SMTP' directive into $sPhpIniFile"); $bRet = false; } else if (strcasecmp($sSmtpServer, 'localhost') == 0) { $oP->warning("Your SMTP server is configured to 'localhost'. You might want to set or change the 'SMTP' directive into $sPhpIniFile"); } else { $oP->info("Your SMTP server: $sSmtpServer. To change this value, modify the 'SMTP' directive into $sPhpIniFile"); } $iSmtpPort = (int) ini_get('smtp_port'); if (empty($iSmtpPort)) { $oP->info("The SMTP port is not defined. Please add the 'smtp_port' directive into $sPhpIniFile"); $bRet = false; } else if ($iSmtpPort = 25) { $oP->info("Your SMTP port is configured to the default value: 25. You might want to set or change the 'smtp_port' directive into $sPhpIniFile"); } else { $oP->info("Your SMTP port is configured to $iSmtpPort. You might want to set or change the 'smtp_port' directive into $sPhpIniFile"); } } else { // Not a windows system $sSendMail = ini_get('sendmail_path'); if (empty($sSendMail)) { $oP->error("The command to send mail is not defined. Please add the 'sendmail_path' directive into $sPhpIniFile. A recommended setting is sendmail_path=sendmail -t -i"); $bRet = false; } else { $oP->info("The command to send mail: $sSendMail. To change this value, modify the 'sendmail_path' directive into $sPhpIniFile"); } } if ($bRet) { $oP->ok("PHP settings are ok to proceed with a test of the email"); } return $bRet; } /** * Display the form for the first step of the test wizard * which consists in a basic check of the configuration and display of a form for testing */ function DisplayStep1(SetupWebPage $oP) { $sNextOperation = 'step2'; $oP->add("

iTop email test

\n"); $oP->add("

Checking prerequisites

\n"); if (CheckEmailSetting($oP)) { $sRedStar = '*'; $oP->add("

Try to send an email

\n"); $oP->add("
\n"); // Form goes here $oP->add("
Test configuration\n"); $aForm = array(); $aForm[] = array( 'label' => "To$sRedStar:", 'input' => "", 'help' => ' pure email address (john.foo@worldcompany.com)', ); $aForm[] = array( 'label' => "From:", 'input' => "", 'help' => ' defaults to \'To\'', ); $oP->form($aForm); $oP->add("
\n"); $oP->add("\n"); $oP->add("\n"); $oP->add("
\n"); } } /** * Display the form for the second step of the configuration wizard * which consists in sending an email, which maybe a problem under Windows */ function DisplayStep2(SetupWebPage $oP, $sFrom, $sTo) { //$sNextOperation = 'step3'; $oP->add("

iTop configuration wizard

\n"); $oP->add("

Step 2: send an email

\n"); $oP->add("

Sending an email to '$sTo'... (From: '$sFrom')

\n"); $oP->add("
\n"); $oEmail = new Email(); $oEmail->SetRecipientTO($sTo); $oEmail->SetRecipientFrom($sFrom); $oEmail->SetSubject("Test iTop"); $oEmail->SetBody("

Hello,

The email function is now working fine.

You may now be able to use the notification function.

iTop

"); $iRes = $oEmail->Send($aIssues, true /* force synchronous exec */); switch ($iRes) { case EMAIL_SEND_OK: $oP->ok("The email has been sent, you may now check that the email will arrive..."); break; case EMAIL_SEND_PENDING: $oP->ok("Email queued"); $oP->add("\n"); break; case EMAIL_SEND_ERROR: foreach ($aIssues as $sError) { $oP->error($sError); } $oP->add("\n"); break; } } /** * Main program */ // #@# Init default timezone -> do not get a notice... to be improved !!! // duplicated from 'attributedef.class.inc.php', needed here because mail() does // generate a notice date_default_timezone_set('Europe/Paris'); try { switch($sOperation) { case 'step1': DisplayStep1($oP); break; case 'step2': $oP->no_cache(); $sTo = Utils::ReadParam('to', '', false, 'raw_data'); $sFrom = Utils::ReadParam('from', '', false, 'raw_data'); if (strlen($sFrom) == 0) { $sFrom = $sTo; } DisplayStep2($oP, $sFrom, $sTo); break; default: $oP->error("Error: unsupported operation '$sOperation'"); } } catch(Exception $e) { $oP->error("Error: '".$e->getMessage()."'"); } catch(CoreException $e) { $oP->error("Error: '".$e->getHtmlDesc()."'"); } $oP->output(); ?>