| Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Services/ |
| Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Services/ErrorLogManager.php |
<?php
namespace App\CoreBundle\Services;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Logger;
use App\CoreBundle\Entity\ErrorLog;
/**
* Error Log manager
*
* @author Otto Saayman <otto@igotafrica.com>
* @package CoreBundle
* @subpackage Error Log
* @version 0.0.1
*/
final class ErrorLogManager {
/**
* Service Container
* @var object
*/
private $container = null;
/**
* Entity manager
* @var object
*/
private $em;
/**
* IGA Error logger
* @var object
*/
private $logger = null;
/**
* Class construct
*
* @param ContainerInterface $container
* @param Logger $logger
* @return void
*/
public function __construct(
ContainerInterface $container, Logger $logger) {
$this->setContainer($container);
$this->setLogger($logger);
$this->setEm($container->get('doctrine')->getManager('default'));
return;
}
/**
* Get Container
*
* @return ContainerInterface $container
*/
public function getContainer() {
return $this->container;
}
/**
* Set Container
*
* @param ContainerInterface $container
* @return void
*/
public function setContainer($container) {
$this->container = $container;
}
/**
* Get Entity Manager
*
* @return string
*/
public function getEm() {
return $this->em;
}
/**
* Set Container
*
* @param string $em
* @return void
*/
public function setEm($em) {
$this->em = $em;
}
public function getLogger() {
return $this->logger;
}
public function setLogger($logger) {
$this->logger = $logger;
}
/**
* Log an information log or error log
*
* @param string $message
*/
public function error($message, $isInfo = false, $getSession = true, $sendMail = true) {
try {
if ($getSession) {
$sessionManager = $this->container->get('sessions.manager');
$session = $sessionManager->getSession();
} else {
$session = null;
}
$userListManager = $this->container->get('user_list.manager');
$userList = $userListManager->getLoggedInUser();
$errorLog = new ErrorLog();
$errorLog->setUrlId('');
$errorLog->setErrMessage($message);
if (is_object($session))
$errorLog->setSessionid($session->getId());
else
$errorLog->setSessionid('');
if (is_object($userList))
$errorLog->setCreatedBy($userList->getId());
else
$errorLog->setCreatedBy('');
$errorLog->setIsInfo($isInfo);
if ($this->getEm()->isOpen()) {
$this->getEm()->persist($errorLog);
$this->getEm()->flush();
}
// echo $message . '<br >';
if (!$isInfo) {
$errorReportEMail = $this->getContainer()->get('system_setting.manager')->getSetting('error_report_e_mail', true);
$errorUser = null;
if (strlen($errorReportEMail) > 0) {
$errorUser = $this->getContainer()->get('user_list.manager')->findOneByEMailAddress($errorReportEMail);
}
if (!is_object($errorUser)) {
$errorUser = $this->getContainer()->get('contact_message.manager')->getSystemUser();
}
if ($sendMail) {
$this->getContainer()->get('contact_message.manager')->sendNotificationMail(
$errorUser,
$this->getContainer()->get('contact_message.manager')->getSystemName() . ': Error on site',
$message
);
}
}
return $errorLog;
} catch (\Exception $ex) {
$this->getLogger()->error($ex->getMessage());
}
}
/**
* Log an information log
*
* @param string $message
*/
public function info($message) {
return $this->error($message, true);
}
/**
* Get message HTML
*
* @param string $message
* @return string
*/
public function getMessage($message, $messageClass = 'success') {
$twig = $this->getContainer()->get('twig');
$iconClass = 'thumbs-up';
if ($messageClass == 'info') {
$iconClass = 'eye-open';
} elseif ($messageClass == 'danger') {
$iconClass = 'exclamation-sign';
} elseif ($messageClass == 'warning') {
$iconClass = 'warning-sign';
}
return $twig->render(
'@IGACoreBundle/DHTML/flash.message.html.twig', array(
'message' => $message,
'messageClass' => $messageClass,
'iconClass' => $iconClass,
)
);
}
}