/** * Sendet eine Mail über den in der Konfiguration hinterlegten SMTP Account. * @param string $empfaenger Empfängeradresse / Wird automatisch von UTF-8 nach ANSI gewandelt * @param string $betreff Empfängeradresse / Wird automatisch von UTF-8 nach ANSI gewandelt * @param string $nachricht Nachricht als Plaintext * @param string $html Nachricht als HTML * @param string $attachment Pfad und Dateiname eines Anhangs * @return boolean */ public function sendMail($empfaenger, $betreff, $nachricht, $html = null, $attachment = null) { if (Configuration::get('mail.from') === '') { Logging::warning('Kein Absender in der Konfiguration eingetragen. E-Mail wird nicht versendet'); return false; } if ($empfaenger === '') { Logging::warning('Keine E-Mail Adresse übergeben'); return false; } $empfaenger = trim($empfaenger); Profiler::startSection('Mailer::sendMail'); try { $message = Swift_Message::newInstance(); $message->setSubject($betreff); $message->setFrom(array(Configuration::get('mail.from'))); $message->setTo(array(utf8_decode($empfaenger))); $message->setBody(strip_tags($nachricht)); if ($html !== null) { $templatePath = Environment::get()->srcDir . '/site/mails/template.html'; if (file_exists($templatePath)) { $html = str_replace('{mail}', $html, file_get_contents($templatePath)); } $message->addPart($html, 'text/html'); } if ($attachment !== null) { $message->attach(Swift_Attachment::fromPath($attachment)); } if ($this->transport === null) { $this->transport = Swift_SmtpTransport::newInstance(Configuration::get('mail.smtp_host'), Configuration::get('mail.smtp_port'))->setUsername(Configuration::get('mail.smtp_user'))->setPassword(Configuration::get('mail.smtp_pass')); $this->mailer = Swift_Mailer::newInstance($this->transport); } Logging::debug('Versende Mail per SMTP an ' . $empfaenger . ' über ' . Configuration::get('mail.smtp_host') . ':' . Configuration::get('mail.smtp_port') . ' / ' . Configuration::get('mail.smtp_user') . ' / ' . Configuration::get('mail.smtp_pass')); $result = $this->mailer->send($message); Logging::debug('Result des Mails ' . print_r($result, true)); Profiler::endSection('Mailer::sendMail'); return $result; } catch (Exception $ex) { Logging::error('Exception beim Senden einer Mail ' . $ex->getMessage()); Profiler::endSection('Mailer::sendMail'); return false; } }
/** * Sucht nach der ersten Konfiguration mit dem Test-Kennzeichen und lädt diese * @throws \RuntimeException */ protected function readConfigByServerUri() { $pattern = $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME']; $file = simplexml_load_file(Environment::get()->srcDir . '/Configuration.xml'); foreach ($file->configurations->configuration as $entry) { if (strpos(strtolower($pattern), strtolower((string) $entry->urlPattern)) !== false) { $this->configuration = $entry; break; } } unset($this->file); if ($this->configuration === null) { throw new \RuntimeException("\n Keine Konfiguration für URL-Pattern {$pattern} gefunden"); } }
/** * Startet die Verarbeitung des aktuellen Aufrufs. * * @param boolean $admin true, falls Aufruf der Administration */ public static function start($admin = false) { // Bootstrapping der konkreten App aufrufen (vor dem Laden der Session!) // Beim Laden der Session werden u.a. schon DB-Abfragen ausgeführt. Einstellungen, // die die DB betreffen müssen also vorher (!) gemacht werden. include Environment::get()->srcDir . '/Bootstrap.php'; $application = self::getInstance(); $application->startSession(); Debug::init(); // Konkrete Applikation initialisieren (nach dem Laden der Session!) include Environment::get()->srcDir . '/InitApplication.php'; // Request parsen und ausführen $request = $application->parseRequest(); $request = self::sanitizeRequest($request, $admin); $application->handleRequest($request); // DB Verbindung garantiert trennen Database::getInstance()->close(); }
<?php use NewFrontiers\Framework\Core\Application; include 'bootstrap.php'; include \Nostromo\Contracts\Configuration\Environment::get()->srcDir . '/Bootstrap.php'; Application::getInstance()->startSession(); include \Nostromo\Contracts\Configuration\Environment::get()->srcDir . '/InitApplication.php'; // Wenn nichts übertragen wird ist es ein Grid if (!isset($_POST['control'])) { $var = unserialize(base64_decode($_POST['vars'])); $sort = unserialize(base64_decode($_POST['sort'])); $grid = new NewFrontiers\Controls\DataControls\GridControl(null, 'grid'); $grid->loadFromConfigArray($var, $sort); if (isset($_POST['page'])) { $grid->setCurPage($_POST['page']); } if (isset($_POST['sorting'])) { $grid->setCurSorting($_POST['sorting']); } $grid->ajax = true; echo $grid->toHtml(); }
/** * Gibt ein Array aller Module zurück * @return Module[] */ public function getAllModules() { $result = []; $result = array_merge($result, $this->getModulesInDir(Environment::get()->srcDir . '/' . Configuration::get('defaultNamespace'))); $result = array_merge($result, $this->getModulesInDir(Environment::get()->srcDir . '/NewFrontiers/Modules')); $result = array_merge($result, $this->getModulesInDir(Environment::get()->composerDir . '/nostromo')); ksort($result); return $result; }
/** * @covers \NewFrontiers\Framework\Output\Mailer::sendMail * @covers \NewFrontiers\Framework\Output\Mailer::sendNotification */ public function testSendMailWithHtmlAndAttachment() { Configuration::getInstance()->readConfig(); $html = "<b>Hallo!</b>"; $attachment = Environment::get()->wwwDir . '/templates/another/default.php'; $mailer = $this->createMailerMock($lastMail); $successfulMail = $mailer->sendMail(self::$workingMailAdress, "test", "testnachricht", $html, $attachment); $this->assertTrue($successfulMail != false && $successfulMail != 0); $this->assertContains("Subject: test", $lastMail); $this->assertContains("From: " . Configuration::get('mail.from'), $lastMail); $this->assertContains("To: " . self::$workingMailAdress, $lastMail); $this->assertContains("\ntestnachricht", $lastMail); $this->assertContains("\n<i><b>Hallo!</b></i>", $lastMail); $this->assertContains("attachment; filename=default.php", $lastMail); }
} // Kondiguration anpassen $config = file_get_contents(__DIR__ . '/site/Configuration.xml.dist'); $config = str_replace('BASEURL', $_POST['baseurl'], $config); $config = str_replace('NAMESPACE', $_POST['namespace'], $config); $config = str_replace('DATABASE_HOST', $_POST['database_host'], $config); $config = str_replace('DATABASE_SCHEMA', $_POST['database_schema'], $config); $config = str_replace('DATABASE_USER', $_POST['database_user'], $config); $config = str_replace('DATABASE_PASSWORD', $_POST['database_pass'], $config); file_put_contents(__DIR__ . '/site/Configuration.xml', $config); // Uuund los geht's include __DIR__ . '/bootstrap.php'; ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); \NewFrontiers\Framework\Core\Application::getInstance(); include \Nostromo\Contracts\Configuration\Environment::get()->srcDir . '/Bootstrap.php'; $siteInstaller = new \NewFrontiers\Modules\Site\SiteInstaller(); $cmsInstaller = new \NewFrontiers\Modules\Cms\CmsInstaller(); $userInstaller = new \NewFrontiers\Modules\User\UserInstaller(); $siteInstaller->migrateDatabase(); $cmsInstaller->migrateDatabase(); $userInstaller->migrateDatabase(); $siteInstaller->install(); $cmsInstaller->install(); $userInstaller->install(); $installer = new \NewFrontiers\Modules\ModView\ModViewInstaller(); $installer->install(); $installer = new \NewFrontiers\Modules\Medien\MedienInstaller(); $installer->install(); $installer = new \NewFrontiers\Modules\DefaultMod\DefaultModInstaller(); $installer->install();
/** * Gibt eine Liste mit den installierten Templates aus */ public static function listTemplates() { $result = []; foreach (new \DirectoryIterator(Environment::get()->wwwDir . '/templates') as $fileInfo) { if ($fileInfo->isDot()) { continue; } if ($fileInfo->isDir()) { $result[] = $fileInfo->getFilename(); } } return $result; }