admin logs

This commit is contained in:
Etienne Roudeix
2013-10-29 12:22:34 +01:00
parent 1950e1f3c5
commit 082f9aff8d
27 changed files with 1838 additions and 1491 deletions

View File

@@ -52,8 +52,10 @@ class BaseAction
/** /**
* Changes object position, selecting absolute ou relative change. * Changes object position, selecting absolute ou relative change.
* *
* @param $query the query to retrieve the object to move * @param ModelCriteria $query
* @param UpdatePositionEvent $event * @param UpdatePositionEvent $event
*
* @return mixed
*/ */
protected function genericUpdatePosition(ModelCriteria $query, UpdatePositionEvent $event) protected function genericUpdatePosition(ModelCriteria $query, UpdatePositionEvent $event)
{ {
@@ -71,18 +73,4 @@ class BaseAction
return $object->movePositionDown(); return $object->movePositionDown();
} }
} }
/**
* Helper to append a message to the admin log.
*
* @param string $message
*/
public function adminLogAppend($message)
{
AdminLog::append(
$message,
$this->container->get('request'),
$this->container->get('thelia.securityContext')->getAdminUser()
);
}
} }

View File

@@ -143,18 +143,6 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
*/ */
public function saveDocument(DocumentCreateOrUpdateEvent $event) public function saveDocument(DocumentCreateOrUpdateEvent $event)
{ {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Saving documents for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getDocumentType()
),
'document'
)
);
$fileManager = new FileManager($this->container); $fileManager = new FileManager($this->container);
$model = $event->getModelDocument(); $model = $event->getModelDocument();
@@ -187,18 +175,6 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
*/ */
public function updateDocument(DocumentCreateOrUpdateEvent $event) public function updateDocument(DocumentCreateOrUpdateEvent $event)
{ {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Updating documents for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getDocumentType()
),
'image'
)
);
if (null !== $event->getUploadedFile()) { if (null !== $event->getUploadedFile()) {
$event->getModelDocument()->setTitle($event->getUploadedFile()->getClientOriginalName()); $event->getModelDocument()->setTitle($event->getUploadedFile()->getClientOriginalName());
} }
@@ -231,33 +207,7 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
{ {
$fileManager = new FileManager($this->container); $fileManager = new FileManager($this->container);
try { $fileManager->deleteFile($event->getDocumentToDelete(), $event->getDocumentType(), FileManager::FILE_TYPE_DOCUMENTS);
$fileManager->deleteFile($event->getDocumentToDelete(), $event->getDocumentType(), FileManager::FILE_TYPE_DOCUMENTS);
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Deleting document for %id% with parent id %parentId%',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
),
'document'
)
);
} catch (\Exception $e) {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Fail to delete document for %id% with parent id %parentId% (Exception : %e%)',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
'%e%' => $e->getMessage()
),
'document'
)
);
throw $e;
}
} }
public static function getSubscribedEvents() public static function getSubscribedEvents()

View File

@@ -254,18 +254,6 @@ class Image extends BaseCachedFile implements EventSubscriberInterface
*/ */
public function saveImage(ImageCreateOrUpdateEvent $event) public function saveImage(ImageCreateOrUpdateEvent $event)
{ {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Saving images for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getImageType()
),
'image'
)
);
$fileManager = new FileManager($this->container); $fileManager = new FileManager($this->container);
$model = $event->getModelImage(); $model = $event->getModelImage();
@@ -297,18 +285,6 @@ class Image extends BaseCachedFile implements EventSubscriberInterface
*/ */
public function updateImage(ImageCreateOrUpdateEvent $event) public function updateImage(ImageCreateOrUpdateEvent $event)
{ {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Updating images for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getImageType()
),
'image'
)
);
$fileManager = new FileManager($this->container); $fileManager = new FileManager($this->container);
// Copy and save file // Copy and save file
if ($event->getUploadedFile()) { if ($event->getUploadedFile()) {
@@ -337,33 +313,7 @@ class Image extends BaseCachedFile implements EventSubscriberInterface
{ {
$fileManager = new FileManager($this->container); $fileManager = new FileManager($this->container);
try { $fileManager->deleteFile($event->getImageToDelete(), $event->getImageType(), FileManager::FILE_TYPE_IMAGES);
$fileManager->deleteFile($event->getImageToDelete(), $event->getImageType(), FileManager::FILE_TYPE_IMAGES);
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Deleting image for %id% with parent id %parentId%',
array(
'%id%' => $event->getImageToDelete()->getId(),
'%parentId%' => $event->getImageToDelete()->getParentId(),
),
'image'
)
);
} catch (\Exception $e) {
$this->adminLogAppend(
$this->container->get('thelia.translator')->trans(
'Fail to delete image for %id% with parent id %parentId% (Exception : %e%)',
array(
'%id%' => $event->getImageToDelete()->getId(),
'%parentId%' => $event->getImageToDelete()->getParentId(),
'%e%' => $e->getMessage()
),
'image'
)
);
throw $e;
}
} }
/** /**

View File

@@ -824,6 +824,14 @@
<!-- end mailing-system management --> <!-- end mailing-system management -->
<!-- admin logs display -->
<route id="admin.configuration.admin-logs.view" path="/admin/configuration/adminLogs">
<default key="_controller">Thelia\Controller\Admin\AdminLogsController::defaultAction</default>
</route>
<!-- end admin logs display -->
<!-- feature and features value management --> <!-- feature and features value management -->
<route id="admin.configuration.features.default" path="/admin/configuration/features"> <route id="admin.configuration.features.default" path="/admin/configuration/features">

View File

@@ -303,7 +303,7 @@ abstract class AbstractCrudController extends BaseAdminController
if (null !== $createdObject = $this->getObjectFromEvent($createEvent)) { if (null !== $createdObject = $this->getObjectFromEvent($createEvent)) {
// Log object creation // Log object creation
$this->adminLogAppend(sprintf("%s %s (ID %s) created", ucfirst($this->objectName), $this->getObjectLabel($createdObject), $this->getObjectId($createdObject))); $this->adminLogAppend($this->resourceCode, AccessManager::CREATE, sprintf("%s %s (ID %s) created", ucfirst($this->objectName), $this->getObjectLabel($createdObject), $this->getObjectId($createdObject)));
} }
$response = $this->performAdditionalCreateAction($createEvent); $response = $this->performAdditionalCreateAction($createEvent);
@@ -391,7 +391,7 @@ abstract class AbstractCrudController extends BaseAdminController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) { if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
$response = $this->performAdditionalUpdateAction($changeEvent); $response = $this->performAdditionalUpdateAction($changeEvent);
@@ -530,7 +530,8 @@ abstract class AbstractCrudController extends BaseAdminController
if (null !== $deletedObject = $this->getObjectFromEvent($deleteEvent)) { if (null !== $deletedObject = $this->getObjectFromEvent($deleteEvent)) {
$this->adminLogAppend( $this->adminLogAppend(
sprintf("%s %s (ID %s) deleted", ucfirst($this->objectName), $this->getObjectLabel($deletedObject), $this->getObjectId($deletedObject))); $this->resourceCode, AccessManager::DELETE,
sprintf("%s %s (ID %s) deleted", ucfirst($this->objectName), $this->getObjectLabel($deletedObject), $this->getObjectId($deletedObject)));
} }
$response = $this->performAdditionalDeleteAction($deleteEvent); $response = $this->performAdditionalDeleteAction($deleteEvent);

View File

@@ -74,9 +74,9 @@ class AddressController extends AbstractCrudController
$this->dispatch(TheliaEvents::ADDRESS_DEFAULT, $addressEvent); $this->dispatch(TheliaEvents::ADDRESS_DEFAULT, $addressEvent);
$this->adminLogAppend(sprintf("address %d for customer %d removal", $address_id, $address->getCustomerId())); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("address %d for customer %d set as default address", $address_id, $address->getCustomerId()));
} catch (\Exception $e) { } catch (\Exception $e) {
\Thelia\Log\Tlog::getInstance()->error(sprintf("error during address removal with message %s", $e->getMessage())); \Thelia\Log\Tlog::getInstance()->error(sprintf("error during address setting as default with message %s", $e->getMessage()));
} }
$this->redirectToRoute('admin.customer.update.view', array(), array('customer_id' => $address->getCustomerId())); $this->redirectToRoute('admin.customer.update.view', array(), array('customer_id' => $address->getCustomerId()));

View File

@@ -0,0 +1,39 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Controller\Admin;
use Thelia\Core\Security\AccessManager;
class AdminLogsController extends BaseAdminController
{
const RESOURCE_CODE = "admin.admin-logs";
public function defaultAction()
{
if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response;
// Render the edition template.
return $this->render('admin-logs');
}
}

View File

@@ -249,7 +249,7 @@ class AreaController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($event)) { if (null !== $changedObject = $this->getObjectFromEvent($event)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified, new country added", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified, new country added", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
// Redirect to the success URL // Redirect to the success URL
@@ -303,7 +303,7 @@ class AreaController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($event)) { if (null !== $changedObject = $this->getObjectFromEvent($event)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified, country remove", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified, country remove", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
// Redirect to the success URL // Redirect to the success URL

View File

@@ -51,18 +51,20 @@ class BaseAdminController extends BaseController
/** /**
* Helper to append a message to the admin log. * Helper to append a message to the admin log.
* *
* @param string $resource
* @param string $action
* @param string $message * @param string $message
*/ */
public function adminLogAppend($message) public function adminLogAppend($resource, $action, $message)
{ {
AdminLog::append($message, $this->getRequest(), $this->getSecurityContext()->getAdminUser()); AdminLog::append($resource, $action, $message, $this->getRequest(), $this->getSecurityContext()->getAdminUser());
} }
/** /**
* This method process the rendering of view called from an admin page * This method process the rendering of view called from an admin page
* *
* @param unknown $template * @param unknown $template
* @return Response the reponse which contains the rendered view * @return Response the response which contains the rendered view
*/ */
public function processTemplateAction($template) public function processTemplateAction($template)
{ {
@@ -131,7 +133,7 @@ class BaseAdminController extends BaseController
} }
// Log the problem // Log the problem
$this->adminLogAppend("User is not granted for resources %s with accesses %s", implode(", ", $resources), implode(", ", $accesses)); $this->adminLogAppend(implode(",", $resources), implode(",", $accesses), "User is not granted for resources %s with accesses %s", implode(", ", $resources), implode(", ", $accesses));
// Generate the proper response // Generate the proper response
$response = new Response(); $response = new Response();

View File

@@ -356,6 +356,7 @@ class CouponController extends BaseAdminController
); );
$this->adminLogAppend( $this->adminLogAppend(
AdminResources::COUPON, AccessManager::UPDATE,
sprintf( sprintf(
'Coupon %s (ID %s) conditions updated', 'Coupon %s (ID %s) conditions updated',
$couponEvent->getCouponModel()->getTitle(), $couponEvent->getCouponModel()->getTitle(),
@@ -468,6 +469,7 @@ class CouponController extends BaseAdminController
); );
$this->adminLogAppend( $this->adminLogAppend(
AdminResources::COUPON, AccessManager::UPDATE,
sprintf( sprintf(
'Coupon %s (ID ) ' . $log, 'Coupon %s (ID ) ' . $log,
$couponEvent->getTitle(), $couponEvent->getTitle(),

View File

@@ -85,7 +85,7 @@ class CustomerController extends BaseAdminController
$customerUpdated = $event->getCustomer(); $customerUpdated = $event->getCustomer();
$this->adminLogAppend(sprintf("Customer with Ref %s (ID %d) modified", $customerUpdated->getRef() , $customerUpdated->getId())); $this->adminLogAppend(AdminResources::CUSTOMER, AccessManager::UPDATE, sprintf("Customer with Ref %s (ID %d) modified", $customerUpdated->getRef() , $customerUpdated->getId()));
if ($this->getRequest()->get("save_mode") == "close") { if ($this->getRequest()->get("save_mode") == "close") {
$this->redirectToRoute("admin.customers"); $this->redirectToRoute("admin.customers");

View File

@@ -130,6 +130,20 @@ class FileController extends BaseAdminController
$imageCreateOrUpdateEvent $imageCreateOrUpdateEvent
); );
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Saving images for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getImageType()
),
'image'
)
);
return new ResponseRest(array('status' => true, 'message' => '')); return new ResponseRest(array('status' => true, 'message' => ''));
} }
} }
@@ -194,6 +208,20 @@ class FileController extends BaseAdminController
$documentCreateOrUpdateEvent $documentCreateOrUpdateEvent
); );
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Saving documents for %parentName% parent id %parentId% (%parentType%)',
array(
'%parentName%' => $event->getParentName(),
'%parentId%' => $event->getParentId(),
'%parentType%' => $event->getDocumentType()
),
'document'
)
);
return new ResponseRest(array('status' => true, 'message' => '')); return new ResponseRest(array('status' => true, 'message' => ''));
} }
} }
@@ -368,7 +396,7 @@ class FileController extends BaseAdminController
$imageUpdated = $event->getModelImage(); $imageUpdated = $event->getModelImage();
$this->adminLogAppend(sprintf('Image with Ref %s (ID %d) modified', $imageUpdated->getTitle(), $imageUpdated->getId())); $this->adminLogAppend(AdminResources::retrieve($parentType), AccessManager::UPDATE, sprintf('Image with Ref %s (ID %d) modified', $imageUpdated->getTitle(), $imageUpdated->getId()));
if ($this->getRequest()->get('save_mode') == 'close') { if ($this->getRequest()->get('save_mode') == 'close') {
$this->redirectToRoute('admin.images'); $this->redirectToRoute('admin.images');
@@ -445,7 +473,7 @@ class FileController extends BaseAdminController
$documentUpdated = $event->getModelDocument(); $documentUpdated = $event->getModelDocument();
$this->adminLogAppend(sprintf('Document with Ref %s (ID %d) modified', $documentUpdated->getTitle(), $documentUpdated->getId())); $this->adminLogAppend(AdminResources::retrieve($parentType), AccessManager::UPDATE, sprintf('Document with Ref %s (ID %d) modified', $documentUpdated->getTitle(), $documentUpdated->getId()));
if ($this->getRequest()->get('save_mode') == 'close') { if ($this->getRequest()->get('save_mode') == 'close') {
$this->redirectToRoute('admin.documents'); $this->redirectToRoute('admin.documents');
@@ -509,10 +537,39 @@ class FileController extends BaseAdminController
); );
// Dispatch Event to the Action // Dispatch Event to the Action
$this->dispatch( try {
TheliaEvents::IMAGE_DELETE, $this->dispatch(
$imageDeleteEvent TheliaEvents::IMAGE_DELETE,
); $imageDeleteEvent
);
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Deleting image for %id% with parent id %parentId%',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
),
'image'
)
);
} catch (\Exception $e) {
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Fail to delete image for %id% with parent id %parentId% (Exception : %e%)',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
'%e%' => $e->getMessage()
),
'image'
)
);
}
$message = $this->getTranslator() $message = $this->getTranslator()
->trans( ->trans(
@@ -552,10 +609,39 @@ class FileController extends BaseAdminController
); );
// Dispatch Event to the Action // Dispatch Event to the Action
$this->dispatch( try {
TheliaEvents::DOCUMENT_DELETE, $this->dispatch(
$documentDeleteEvent TheliaEvents::DOCUMENT_DELETE,
); $documentDeleteEvent
);
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Deleting document for %id% with parent id %parentId%',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
),
'document'
)
);
} catch (\Exception $e) {
$this->adminLogAppend(
AdminResources::retrieve($parentType),
AccessManager::UPDATE,
$this->container->get('thelia.translator')->trans(
'Fail to delete document for %id% with parent id %parentId% (Exception : %e%)',
array(
'%id%' => $event->getDocumentToDelete()->getId(),
'%parentId%' => $event->getDocumentToDelete()->getParentId(),
'%e%' => $e->getMessage()
),
'document'
)
);
}
$message = $this->getTranslator() $message = $this->getTranslator()
->trans( ->trans(

View File

@@ -116,7 +116,7 @@ class LangController extends BaseAdminController
} }
$changedObject = $event->getLang(); $changedObject = $event->getLang();
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", 'Lang', $changedObject->getTitle(), $changedObject->getId())); $this->adminLogAppend(AdminResources::LANGUAGE, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", 'Lang', $changedObject->getTitle(), $changedObject->getId()));
$this->redirectToRoute('/admin/configuration/languages'); $this->redirectToRoute('/admin/configuration/languages');
} catch (\Exception $e) { } catch (\Exception $e) {
$error_msg = $e->getMessage(); $error_msg = $e->getMessage();
@@ -153,7 +153,7 @@ class LangController extends BaseAdminController
} }
$changedObject = $event->getLang(); $changedObject = $event->getLang();
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", 'Lang', $changedObject->getTitle(), $changedObject->getId())); $this->adminLogAppend(AdminResources::LANGUAGE, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", 'Lang', $changedObject->getTitle(), $changedObject->getId()));
} catch (\Exception $e) { } catch (\Exception $e) {
\Thelia\Log\Tlog::getInstance()->error(sprintf("Error on changing default languages with message : %s", $e->getMessage())); \Thelia\Log\Tlog::getInstance()->error(sprintf("Error on changing default languages with message : %s", $e->getMessage()));
@@ -189,7 +189,7 @@ class LangController extends BaseAdminController
} }
$createdObject = $createEvent->getLang(); $createdObject = $createEvent->getLang();
$this->adminLogAppend(sprintf("%s %s (ID %s) created", 'Lang', $createdObject->getTitle(), $createdObject->getId())); $this->adminLogAppend(AdminResources::LANGUAGE, AccessManager::CREATE, sprintf("%s %s (ID %s) created", 'Lang', $createdObject->getTitle(), $createdObject->getId()));
$this->redirectToRoute('admin.configuration.languages'); $this->redirectToRoute('admin.configuration.languages');

View File

@@ -931,7 +931,7 @@ class ProductController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $event->getProductSaleElement()) { if (null !== $changedObject = $event->getProductSaleElement()) {
$this->adminLogAppend(sprintf("Product Sale Element (ID %s) for product reference %s modified", $changedObject->getId(), $event->getProduct()->getRef())); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("Product Sale Element (ID %s) for product reference %s modified", $changedObject->getId(), $event->getProduct()->getRef()));
} }
} }

View File

@@ -330,7 +330,7 @@ class ProfileController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) { if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
if ($response == null) { if ($response == null) {
@@ -379,7 +379,7 @@ class ProfileController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) { if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
if ($response == null) { if ($response == null) {

View File

@@ -50,7 +50,7 @@ class SessionController extends BaseAdminController
$this->getSecurityContext()->setAdminUser($user); $this->getSecurityContext()->setAdminUser($user);
$this->adminLogAppend("Successful token authentication"); $this->adminLogAppend("admin", "LOGIN", "Successful token authentication");
// Update the cookie // Update the cookie
$cookie = $this->createAdminRememberMeCookie($user); $cookie = $this->createAdminRememberMeCookie($user);
@@ -58,7 +58,7 @@ class SessionController extends BaseAdminController
// Render the home page // Render the home page
return $this->render("home"); return $this->render("home");
} catch (TokenAuthenticationException $ex) { } catch (TokenAuthenticationException $ex) {
$this->adminLogAppend("Token based authentication failed."); $this->adminLogAppend("admin", "LOGIN", "Token based authentication failed.");
// Clear the cookie // Clear the cookie
$this->clearRememberMeCookie(); $this->clearRememberMeCookie();
@@ -99,7 +99,7 @@ class SessionController extends BaseAdminController
$this->getSecurityContext()->setAdminUser($user); $this->getSecurityContext()->setAdminUser($user);
// Log authentication success // Log authentication success
AdminLog::append("Authentication successful", $request, $user); AdminLog::append("admin", "LOGIN", "Authentication successful", $request, $user);
/** /**
* FIXME: we have tou find a way to send cookie * FIXME: we have tou find a way to send cookie
@@ -122,13 +122,13 @@ class SessionController extends BaseAdminController
} catch (AuthenticationException $ex) { } catch (AuthenticationException $ex) {
// Log authentication failure // Log authentication failure
AdminLog::append(sprintf("Authentication failure for username '%s'", $authenticator->getUsername()), $request); AdminLog::append("admin", "LOGIN", sprintf("Authentication failure for username '%s'", $authenticator->getUsername()), $request);
$message = $this->getTranslator()->trans("Login failed. Please check your username and password."); $message = $this->getTranslator()->trans("Login failed. Please check your username and password.");
} catch (\Exception $ex) { } catch (\Exception $ex) {
// Log authentication failure // Log authentication failure
AdminLog::append(sprintf("Undefined error: %s", $ex->getMessage()), $request); AdminLog::append("admin", "LOGIN", sprintf("Undefined error: %s", $ex->getMessage()), $request);
$message = $this->getTranslator()->trans( $message = $this->getTranslator()->trans(
"Unable to process your request. Please try again (%err).", "Unable to process your request. Please try again (%err).",

View File

@@ -279,7 +279,7 @@ class TaxRuleController extends AbstractCrudController
// Log object modification // Log object modification
if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) { if (null !== $changedObject = $this->getObjectFromEvent($changeEvent)) {
$this->adminLogAppend(sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject))); $this->adminLogAppend($this->resourceCode, AccessManager::UPDATE, sprintf("%s %s (ID %s) modified", ucfirst($this->objectName), $this->getObjectLabel($changedObject), $this->getObjectId($changedObject)));
} }
if ($response == null) { if ($response == null) {

View File

@@ -7,16 +7,18 @@ use Thelia\Core\HttpFoundation\Request;
use Thelia\Log\Tlog; use Thelia\Log\Tlog;
use Thelia\Model\Base\Admin as BaseAdminUser; use Thelia\Model\Base\Admin as BaseAdminUser;
class AdminLog extends BaseAdminLog { class AdminLog extends BaseAdminLog
{
/** /**
* A sdimple helper to insert an entry in the admin log * A simple helper to insert an entry in the admin log
* *
* @param unknown $actionLabel * @param $resource
* @param Request $request * @param $action
* @param Admin $adminUser * @param $message
*/ * @param Request $request
public static function append($actionLabel, Request $request, BaseAdminUser $adminUser = null) { * @param Base\Admin $adminUser
*/
public static function append($resource, $action, $message, Request $request, BaseAdminUser $adminUser = null) {
$log = new AdminLog(); $log = new AdminLog();
@@ -24,7 +26,9 @@ class AdminLog extends BaseAdminLog {
->setAdminLogin($adminUser !== null ? $adminUser->getLogin() : '<no login>') ->setAdminLogin($adminUser !== null ? $adminUser->getLogin() : '<no login>')
->setAdminFirstname($adminUser !== null ? $adminUser->getFirstname() : '<no first name>') ->setAdminFirstname($adminUser !== null ? $adminUser->getFirstname() : '<no first name>')
->setAdminLastname($adminUser !== null ? $adminUser->getLastname() : '<no last name>') ->setAdminLastname($adminUser !== null ? $adminUser->getLastname() : '<no last name>')
->setAction($actionLabel) ->setResource($resource)
->setAction($action)
->setMessage($message)
->setRequest($request->__toString()) ->setRequest($request->__toString())
; ;

View File

@@ -78,12 +78,24 @@ abstract class AdminLog implements ActiveRecordInterface
*/ */
protected $admin_lastname; protected $admin_lastname;
/**
* The value for the resource field.
* @var string
*/
protected $resource;
/** /**
* The value for the action field. * The value for the action field.
* @var string * @var string
*/ */
protected $action; protected $action;
/**
* The value for the message field.
* @var string
*/
protected $message;
/** /**
* The value for the request field. * The value for the request field.
* @var string * @var string
@@ -412,6 +424,17 @@ abstract class AdminLog implements ActiveRecordInterface
return $this->admin_lastname; return $this->admin_lastname;
} }
/**
* Get the [resource] column value.
*
* @return string
*/
public function getResource()
{
return $this->resource;
}
/** /**
* Get the [action] column value. * Get the [action] column value.
* *
@@ -423,6 +446,17 @@ abstract class AdminLog implements ActiveRecordInterface
return $this->action; return $this->action;
} }
/**
* Get the [message] column value.
*
* @return string
*/
public function getMessage()
{
return $this->message;
}
/** /**
* Get the [request] column value. * Get the [request] column value.
* *
@@ -558,6 +592,27 @@ abstract class AdminLog implements ActiveRecordInterface
return $this; return $this;
} // setAdminLastname() } // setAdminLastname()
/**
* Set the value of [resource] column.
*
* @param string $v new value
* @return \Thelia\Model\AdminLog The current object (for fluent API support)
*/
public function setResource($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->resource !== $v) {
$this->resource = $v;
$this->modifiedColumns[] = AdminLogTableMap::RESOURCE;
}
return $this;
} // setResource()
/** /**
* Set the value of [action] column. * Set the value of [action] column.
* *
@@ -579,6 +634,27 @@ abstract class AdminLog implements ActiveRecordInterface
return $this; return $this;
} // setAction() } // setAction()
/**
* Set the value of [message] column.
*
* @param string $v new value
* @return \Thelia\Model\AdminLog The current object (for fluent API support)
*/
public function setMessage($v)
{
if ($v !== null) {
$v = (string) $v;
}
if ($this->message !== $v) {
$this->message = $v;
$this->modifiedColumns[] = AdminLogTableMap::MESSAGE;
}
return $this;
} // setMessage()
/** /**
* Set the value of [request] column. * Set the value of [request] column.
* *
@@ -691,19 +767,25 @@ abstract class AdminLog implements ActiveRecordInterface
$col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : AdminLogTableMap::translateFieldName('AdminLastname', TableMap::TYPE_PHPNAME, $indexType)]; $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : AdminLogTableMap::translateFieldName('AdminLastname', TableMap::TYPE_PHPNAME, $indexType)];
$this->admin_lastname = (null !== $col) ? (string) $col : null; $this->admin_lastname = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : AdminLogTableMap::translateFieldName('Action', TableMap::TYPE_PHPNAME, $indexType)]; $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : AdminLogTableMap::translateFieldName('Resource', TableMap::TYPE_PHPNAME, $indexType)];
$this->resource = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : AdminLogTableMap::translateFieldName('Action', TableMap::TYPE_PHPNAME, $indexType)];
$this->action = (null !== $col) ? (string) $col : null; $this->action = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : AdminLogTableMap::translateFieldName('Request', TableMap::TYPE_PHPNAME, $indexType)]; $col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : AdminLogTableMap::translateFieldName('Message', TableMap::TYPE_PHPNAME, $indexType)];
$this->message = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 7 + $startcol : AdminLogTableMap::translateFieldName('Request', TableMap::TYPE_PHPNAME, $indexType)];
$this->request = (null !== $col) ? (string) $col : null; $this->request = (null !== $col) ? (string) $col : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : AdminLogTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)]; $col = $row[TableMap::TYPE_NUM == $indexType ? 8 + $startcol : AdminLogTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') { if ($col === '0000-00-00 00:00:00') {
$col = null; $col = null;
} }
$this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null; $this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
$col = $row[TableMap::TYPE_NUM == $indexType ? 7 + $startcol : AdminLogTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)]; $col = $row[TableMap::TYPE_NUM == $indexType ? 9 + $startcol : AdminLogTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') { if ($col === '0000-00-00 00:00:00') {
$col = null; $col = null;
} }
@@ -716,7 +798,7 @@ abstract class AdminLog implements ActiveRecordInterface
$this->ensureConsistency(); $this->ensureConsistency();
} }
return $startcol + 8; // 8 = AdminLogTableMap::NUM_HYDRATE_COLUMNS. return $startcol + 10; // 10 = AdminLogTableMap::NUM_HYDRATE_COLUMNS.
} catch (Exception $e) { } catch (Exception $e) {
throw new PropelException("Error populating \Thelia\Model\AdminLog object", 0, $e); throw new PropelException("Error populating \Thelia\Model\AdminLog object", 0, $e);
@@ -948,9 +1030,15 @@ abstract class AdminLog implements ActiveRecordInterface
if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) { if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) {
$modifiedColumns[':p' . $index++] = 'ADMIN_LASTNAME'; $modifiedColumns[':p' . $index++] = 'ADMIN_LASTNAME';
} }
if ($this->isColumnModified(AdminLogTableMap::RESOURCE)) {
$modifiedColumns[':p' . $index++] = 'RESOURCE';
}
if ($this->isColumnModified(AdminLogTableMap::ACTION)) { if ($this->isColumnModified(AdminLogTableMap::ACTION)) {
$modifiedColumns[':p' . $index++] = 'ACTION'; $modifiedColumns[':p' . $index++] = 'ACTION';
} }
if ($this->isColumnModified(AdminLogTableMap::MESSAGE)) {
$modifiedColumns[':p' . $index++] = 'MESSAGE';
}
if ($this->isColumnModified(AdminLogTableMap::REQUEST)) { if ($this->isColumnModified(AdminLogTableMap::REQUEST)) {
$modifiedColumns[':p' . $index++] = 'REQUEST'; $modifiedColumns[':p' . $index++] = 'REQUEST';
} }
@@ -983,9 +1071,15 @@ abstract class AdminLog implements ActiveRecordInterface
case 'ADMIN_LASTNAME': case 'ADMIN_LASTNAME':
$stmt->bindValue($identifier, $this->admin_lastname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->admin_lastname, PDO::PARAM_STR);
break; break;
case 'RESOURCE':
$stmt->bindValue($identifier, $this->resource, PDO::PARAM_STR);
break;
case 'ACTION': case 'ACTION':
$stmt->bindValue($identifier, $this->action, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->action, PDO::PARAM_STR);
break; break;
case 'MESSAGE':
$stmt->bindValue($identifier, $this->message, PDO::PARAM_STR);
break;
case 'REQUEST': case 'REQUEST':
$stmt->bindValue($identifier, $this->request, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->request, PDO::PARAM_STR);
break; break;
@@ -1070,15 +1164,21 @@ abstract class AdminLog implements ActiveRecordInterface
return $this->getAdminLastname(); return $this->getAdminLastname();
break; break;
case 4: case 4:
return $this->getAction(); return $this->getResource();
break; break;
case 5: case 5:
return $this->getRequest(); return $this->getAction();
break; break;
case 6: case 6:
return $this->getCreatedAt(); return $this->getMessage();
break; break;
case 7: case 7:
return $this->getRequest();
break;
case 8:
return $this->getCreatedAt();
break;
case 9:
return $this->getUpdatedAt(); return $this->getUpdatedAt();
break; break;
default: default:
@@ -1113,10 +1213,12 @@ abstract class AdminLog implements ActiveRecordInterface
$keys[1] => $this->getAdminLogin(), $keys[1] => $this->getAdminLogin(),
$keys[2] => $this->getAdminFirstname(), $keys[2] => $this->getAdminFirstname(),
$keys[3] => $this->getAdminLastname(), $keys[3] => $this->getAdminLastname(),
$keys[4] => $this->getAction(), $keys[4] => $this->getResource(),
$keys[5] => $this->getRequest(), $keys[5] => $this->getAction(),
$keys[6] => $this->getCreatedAt(), $keys[6] => $this->getMessage(),
$keys[7] => $this->getUpdatedAt(), $keys[7] => $this->getRequest(),
$keys[8] => $this->getCreatedAt(),
$keys[9] => $this->getUpdatedAt(),
); );
$virtualColumns = $this->virtualColumns; $virtualColumns = $this->virtualColumns;
foreach ($virtualColumns as $key => $virtualColumn) { foreach ($virtualColumns as $key => $virtualColumn) {
@@ -1169,15 +1271,21 @@ abstract class AdminLog implements ActiveRecordInterface
$this->setAdminLastname($value); $this->setAdminLastname($value);
break; break;
case 4: case 4:
$this->setAction($value); $this->setResource($value);
break; break;
case 5: case 5:
$this->setRequest($value); $this->setAction($value);
break; break;
case 6: case 6:
$this->setCreatedAt($value); $this->setMessage($value);
break; break;
case 7: case 7:
$this->setRequest($value);
break;
case 8:
$this->setCreatedAt($value);
break;
case 9:
$this->setUpdatedAt($value); $this->setUpdatedAt($value);
break; break;
} // switch() } // switch()
@@ -1208,10 +1316,12 @@ abstract class AdminLog implements ActiveRecordInterface
if (array_key_exists($keys[1], $arr)) $this->setAdminLogin($arr[$keys[1]]); if (array_key_exists($keys[1], $arr)) $this->setAdminLogin($arr[$keys[1]]);
if (array_key_exists($keys[2], $arr)) $this->setAdminFirstname($arr[$keys[2]]); if (array_key_exists($keys[2], $arr)) $this->setAdminFirstname($arr[$keys[2]]);
if (array_key_exists($keys[3], $arr)) $this->setAdminLastname($arr[$keys[3]]); if (array_key_exists($keys[3], $arr)) $this->setAdminLastname($arr[$keys[3]]);
if (array_key_exists($keys[4], $arr)) $this->setAction($arr[$keys[4]]); if (array_key_exists($keys[4], $arr)) $this->setResource($arr[$keys[4]]);
if (array_key_exists($keys[5], $arr)) $this->setRequest($arr[$keys[5]]); if (array_key_exists($keys[5], $arr)) $this->setAction($arr[$keys[5]]);
if (array_key_exists($keys[6], $arr)) $this->setCreatedAt($arr[$keys[6]]); if (array_key_exists($keys[6], $arr)) $this->setMessage($arr[$keys[6]]);
if (array_key_exists($keys[7], $arr)) $this->setUpdatedAt($arr[$keys[7]]); if (array_key_exists($keys[7], $arr)) $this->setRequest($arr[$keys[7]]);
if (array_key_exists($keys[8], $arr)) $this->setCreatedAt($arr[$keys[8]]);
if (array_key_exists($keys[9], $arr)) $this->setUpdatedAt($arr[$keys[9]]);
} }
/** /**
@@ -1227,7 +1337,9 @@ abstract class AdminLog implements ActiveRecordInterface
if ($this->isColumnModified(AdminLogTableMap::ADMIN_LOGIN)) $criteria->add(AdminLogTableMap::ADMIN_LOGIN, $this->admin_login); if ($this->isColumnModified(AdminLogTableMap::ADMIN_LOGIN)) $criteria->add(AdminLogTableMap::ADMIN_LOGIN, $this->admin_login);
if ($this->isColumnModified(AdminLogTableMap::ADMIN_FIRSTNAME)) $criteria->add(AdminLogTableMap::ADMIN_FIRSTNAME, $this->admin_firstname); if ($this->isColumnModified(AdminLogTableMap::ADMIN_FIRSTNAME)) $criteria->add(AdminLogTableMap::ADMIN_FIRSTNAME, $this->admin_firstname);
if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) $criteria->add(AdminLogTableMap::ADMIN_LASTNAME, $this->admin_lastname); if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) $criteria->add(AdminLogTableMap::ADMIN_LASTNAME, $this->admin_lastname);
if ($this->isColumnModified(AdminLogTableMap::RESOURCE)) $criteria->add(AdminLogTableMap::RESOURCE, $this->resource);
if ($this->isColumnModified(AdminLogTableMap::ACTION)) $criteria->add(AdminLogTableMap::ACTION, $this->action); if ($this->isColumnModified(AdminLogTableMap::ACTION)) $criteria->add(AdminLogTableMap::ACTION, $this->action);
if ($this->isColumnModified(AdminLogTableMap::MESSAGE)) $criteria->add(AdminLogTableMap::MESSAGE, $this->message);
if ($this->isColumnModified(AdminLogTableMap::REQUEST)) $criteria->add(AdminLogTableMap::REQUEST, $this->request); if ($this->isColumnModified(AdminLogTableMap::REQUEST)) $criteria->add(AdminLogTableMap::REQUEST, $this->request);
if ($this->isColumnModified(AdminLogTableMap::CREATED_AT)) $criteria->add(AdminLogTableMap::CREATED_AT, $this->created_at); if ($this->isColumnModified(AdminLogTableMap::CREATED_AT)) $criteria->add(AdminLogTableMap::CREATED_AT, $this->created_at);
if ($this->isColumnModified(AdminLogTableMap::UPDATED_AT)) $criteria->add(AdminLogTableMap::UPDATED_AT, $this->updated_at); if ($this->isColumnModified(AdminLogTableMap::UPDATED_AT)) $criteria->add(AdminLogTableMap::UPDATED_AT, $this->updated_at);
@@ -1297,7 +1409,9 @@ abstract class AdminLog implements ActiveRecordInterface
$copyObj->setAdminLogin($this->getAdminLogin()); $copyObj->setAdminLogin($this->getAdminLogin());
$copyObj->setAdminFirstname($this->getAdminFirstname()); $copyObj->setAdminFirstname($this->getAdminFirstname());
$copyObj->setAdminLastname($this->getAdminLastname()); $copyObj->setAdminLastname($this->getAdminLastname());
$copyObj->setResource($this->getResource());
$copyObj->setAction($this->getAction()); $copyObj->setAction($this->getAction());
$copyObj->setMessage($this->getMessage());
$copyObj->setRequest($this->getRequest()); $copyObj->setRequest($this->getRequest());
$copyObj->setCreatedAt($this->getCreatedAt()); $copyObj->setCreatedAt($this->getCreatedAt());
$copyObj->setUpdatedAt($this->getUpdatedAt()); $copyObj->setUpdatedAt($this->getUpdatedAt());
@@ -1338,7 +1452,9 @@ abstract class AdminLog implements ActiveRecordInterface
$this->admin_login = null; $this->admin_login = null;
$this->admin_firstname = null; $this->admin_firstname = null;
$this->admin_lastname = null; $this->admin_lastname = null;
$this->resource = null;
$this->action = null; $this->action = null;
$this->message = null;
$this->request = null; $this->request = null;
$this->created_at = null; $this->created_at = null;
$this->updated_at = null; $this->updated_at = null;

View File

@@ -22,7 +22,9 @@ use Thelia\Model\Map\AdminLogTableMap;
* @method ChildAdminLogQuery orderByAdminLogin($order = Criteria::ASC) Order by the admin_login column * @method ChildAdminLogQuery orderByAdminLogin($order = Criteria::ASC) Order by the admin_login column
* @method ChildAdminLogQuery orderByAdminFirstname($order = Criteria::ASC) Order by the admin_firstname column * @method ChildAdminLogQuery orderByAdminFirstname($order = Criteria::ASC) Order by the admin_firstname column
* @method ChildAdminLogQuery orderByAdminLastname($order = Criteria::ASC) Order by the admin_lastname column * @method ChildAdminLogQuery orderByAdminLastname($order = Criteria::ASC) Order by the admin_lastname column
* @method ChildAdminLogQuery orderByResource($order = Criteria::ASC) Order by the resource column
* @method ChildAdminLogQuery orderByAction($order = Criteria::ASC) Order by the action column * @method ChildAdminLogQuery orderByAction($order = Criteria::ASC) Order by the action column
* @method ChildAdminLogQuery orderByMessage($order = Criteria::ASC) Order by the message column
* @method ChildAdminLogQuery orderByRequest($order = Criteria::ASC) Order by the request column * @method ChildAdminLogQuery orderByRequest($order = Criteria::ASC) Order by the request column
* @method ChildAdminLogQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column * @method ChildAdminLogQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
* @method ChildAdminLogQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column * @method ChildAdminLogQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
@@ -31,7 +33,9 @@ use Thelia\Model\Map\AdminLogTableMap;
* @method ChildAdminLogQuery groupByAdminLogin() Group by the admin_login column * @method ChildAdminLogQuery groupByAdminLogin() Group by the admin_login column
* @method ChildAdminLogQuery groupByAdminFirstname() Group by the admin_firstname column * @method ChildAdminLogQuery groupByAdminFirstname() Group by the admin_firstname column
* @method ChildAdminLogQuery groupByAdminLastname() Group by the admin_lastname column * @method ChildAdminLogQuery groupByAdminLastname() Group by the admin_lastname column
* @method ChildAdminLogQuery groupByResource() Group by the resource column
* @method ChildAdminLogQuery groupByAction() Group by the action column * @method ChildAdminLogQuery groupByAction() Group by the action column
* @method ChildAdminLogQuery groupByMessage() Group by the message column
* @method ChildAdminLogQuery groupByRequest() Group by the request column * @method ChildAdminLogQuery groupByRequest() Group by the request column
* @method ChildAdminLogQuery groupByCreatedAt() Group by the created_at column * @method ChildAdminLogQuery groupByCreatedAt() Group by the created_at column
* @method ChildAdminLogQuery groupByUpdatedAt() Group by the updated_at column * @method ChildAdminLogQuery groupByUpdatedAt() Group by the updated_at column
@@ -47,7 +51,9 @@ use Thelia\Model\Map\AdminLogTableMap;
* @method ChildAdminLog findOneByAdminLogin(string $admin_login) Return the first ChildAdminLog filtered by the admin_login column * @method ChildAdminLog findOneByAdminLogin(string $admin_login) Return the first ChildAdminLog filtered by the admin_login column
* @method ChildAdminLog findOneByAdminFirstname(string $admin_firstname) Return the first ChildAdminLog filtered by the admin_firstname column * @method ChildAdminLog findOneByAdminFirstname(string $admin_firstname) Return the first ChildAdminLog filtered by the admin_firstname column
* @method ChildAdminLog findOneByAdminLastname(string $admin_lastname) Return the first ChildAdminLog filtered by the admin_lastname column * @method ChildAdminLog findOneByAdminLastname(string $admin_lastname) Return the first ChildAdminLog filtered by the admin_lastname column
* @method ChildAdminLog findOneByResource(string $resource) Return the first ChildAdminLog filtered by the resource column
* @method ChildAdminLog findOneByAction(string $action) Return the first ChildAdminLog filtered by the action column * @method ChildAdminLog findOneByAction(string $action) Return the first ChildAdminLog filtered by the action column
* @method ChildAdminLog findOneByMessage(string $message) Return the first ChildAdminLog filtered by the message column
* @method ChildAdminLog findOneByRequest(string $request) Return the first ChildAdminLog filtered by the request column * @method ChildAdminLog findOneByRequest(string $request) Return the first ChildAdminLog filtered by the request column
* @method ChildAdminLog findOneByCreatedAt(string $created_at) Return the first ChildAdminLog filtered by the created_at column * @method ChildAdminLog findOneByCreatedAt(string $created_at) Return the first ChildAdminLog filtered by the created_at column
* @method ChildAdminLog findOneByUpdatedAt(string $updated_at) Return the first ChildAdminLog filtered by the updated_at column * @method ChildAdminLog findOneByUpdatedAt(string $updated_at) Return the first ChildAdminLog filtered by the updated_at column
@@ -56,7 +62,9 @@ use Thelia\Model\Map\AdminLogTableMap;
* @method array findByAdminLogin(string $admin_login) Return ChildAdminLog objects filtered by the admin_login column * @method array findByAdminLogin(string $admin_login) Return ChildAdminLog objects filtered by the admin_login column
* @method array findByAdminFirstname(string $admin_firstname) Return ChildAdminLog objects filtered by the admin_firstname column * @method array findByAdminFirstname(string $admin_firstname) Return ChildAdminLog objects filtered by the admin_firstname column
* @method array findByAdminLastname(string $admin_lastname) Return ChildAdminLog objects filtered by the admin_lastname column * @method array findByAdminLastname(string $admin_lastname) Return ChildAdminLog objects filtered by the admin_lastname column
* @method array findByResource(string $resource) Return ChildAdminLog objects filtered by the resource column
* @method array findByAction(string $action) Return ChildAdminLog objects filtered by the action column * @method array findByAction(string $action) Return ChildAdminLog objects filtered by the action column
* @method array findByMessage(string $message) Return ChildAdminLog objects filtered by the message column
* @method array findByRequest(string $request) Return ChildAdminLog objects filtered by the request column * @method array findByRequest(string $request) Return ChildAdminLog objects filtered by the request column
* @method array findByCreatedAt(string $created_at) Return ChildAdminLog objects filtered by the created_at column * @method array findByCreatedAt(string $created_at) Return ChildAdminLog objects filtered by the created_at column
* @method array findByUpdatedAt(string $updated_at) Return ChildAdminLog objects filtered by the updated_at column * @method array findByUpdatedAt(string $updated_at) Return ChildAdminLog objects filtered by the updated_at column
@@ -148,7 +156,7 @@ abstract class AdminLogQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, ADMIN_LOGIN, ADMIN_FIRSTNAME, ADMIN_LASTNAME, ACTION, REQUEST, CREATED_AT, UPDATED_AT FROM admin_log WHERE ID = :p0'; $sql = 'SELECT ID, ADMIN_LOGIN, ADMIN_FIRSTNAME, ADMIN_LASTNAME, RESOURCE, ACTION, MESSAGE, REQUEST, CREATED_AT, UPDATED_AT FROM admin_log WHERE ID = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);
@@ -365,6 +373,35 @@ abstract class AdminLogQuery extends ModelCriteria
return $this->addUsingAlias(AdminLogTableMap::ADMIN_LASTNAME, $adminLastname, $comparison); return $this->addUsingAlias(AdminLogTableMap::ADMIN_LASTNAME, $adminLastname, $comparison);
} }
/**
* Filter the query on the resource column
*
* Example usage:
* <code>
* $query->filterByResource('fooValue'); // WHERE resource = 'fooValue'
* $query->filterByResource('%fooValue%'); // WHERE resource LIKE '%fooValue%'
* </code>
*
* @param string $resource The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildAdminLogQuery The current query, for fluid interface
*/
public function filterByResource($resource = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($resource)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $resource)) {
$resource = str_replace('*', '%', $resource);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(AdminLogTableMap::RESOURCE, $resource, $comparison);
}
/** /**
* Filter the query on the action column * Filter the query on the action column
* *
@@ -394,6 +431,35 @@ abstract class AdminLogQuery extends ModelCriteria
return $this->addUsingAlias(AdminLogTableMap::ACTION, $action, $comparison); return $this->addUsingAlias(AdminLogTableMap::ACTION, $action, $comparison);
} }
/**
* Filter the query on the message column
*
* Example usage:
* <code>
* $query->filterByMessage('fooValue'); // WHERE message = 'fooValue'
* $query->filterByMessage('%fooValue%'); // WHERE message LIKE '%fooValue%'
* </code>
*
* @param string $message The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildAdminLogQuery The current query, for fluid interface
*/
public function filterByMessage($message = null, $comparison = null)
{
if (null === $comparison) {
if (is_array($message)) {
$comparison = Criteria::IN;
} elseif (preg_match('/[\%\*]/', $message)) {
$message = str_replace('*', '%', $message);
$comparison = Criteria::LIKE;
}
}
return $this->addUsingAlias(AdminLogTableMap::MESSAGE, $message, $comparison);
}
/** /**
* Filter the query on the request column * Filter the query on the request column
* *

View File

@@ -57,7 +57,7 @@ class AdminLogTableMap extends TableMap
/** /**
* The total number of columns * The total number of columns
*/ */
const NUM_COLUMNS = 8; const NUM_COLUMNS = 10;
/** /**
* The number of lazy-loaded columns * The number of lazy-loaded columns
@@ -67,7 +67,7 @@ class AdminLogTableMap extends TableMap
/** /**
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS) * The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
*/ */
const NUM_HYDRATE_COLUMNS = 8; const NUM_HYDRATE_COLUMNS = 10;
/** /**
* the column name for the ID field * the column name for the ID field
@@ -89,11 +89,21 @@ class AdminLogTableMap extends TableMap
*/ */
const ADMIN_LASTNAME = 'admin_log.ADMIN_LASTNAME'; const ADMIN_LASTNAME = 'admin_log.ADMIN_LASTNAME';
/**
* the column name for the RESOURCE field
*/
const RESOURCE = 'admin_log.RESOURCE';
/** /**
* the column name for the ACTION field * the column name for the ACTION field
*/ */
const ACTION = 'admin_log.ACTION'; const ACTION = 'admin_log.ACTION';
/**
* the column name for the MESSAGE field
*/
const MESSAGE = 'admin_log.MESSAGE';
/** /**
* the column name for the REQUEST field * the column name for the REQUEST field
*/ */
@@ -121,12 +131,12 @@ class AdminLogTableMap extends TableMap
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/ */
protected static $fieldNames = array ( protected static $fieldNames = array (
self::TYPE_PHPNAME => array('Id', 'AdminLogin', 'AdminFirstname', 'AdminLastname', 'Action', 'Request', 'CreatedAt', 'UpdatedAt', ), self::TYPE_PHPNAME => array('Id', 'AdminLogin', 'AdminFirstname', 'AdminLastname', 'Resource', 'Action', 'Message', 'Request', 'CreatedAt', 'UpdatedAt', ),
self::TYPE_STUDLYPHPNAME => array('id', 'adminLogin', 'adminFirstname', 'adminLastname', 'action', 'request', 'createdAt', 'updatedAt', ), self::TYPE_STUDLYPHPNAME => array('id', 'adminLogin', 'adminFirstname', 'adminLastname', 'resource', 'action', 'message', 'request', 'createdAt', 'updatedAt', ),
self::TYPE_COLNAME => array(AdminLogTableMap::ID, AdminLogTableMap::ADMIN_LOGIN, AdminLogTableMap::ADMIN_FIRSTNAME, AdminLogTableMap::ADMIN_LASTNAME, AdminLogTableMap::ACTION, AdminLogTableMap::REQUEST, AdminLogTableMap::CREATED_AT, AdminLogTableMap::UPDATED_AT, ), self::TYPE_COLNAME => array(AdminLogTableMap::ID, AdminLogTableMap::ADMIN_LOGIN, AdminLogTableMap::ADMIN_FIRSTNAME, AdminLogTableMap::ADMIN_LASTNAME, AdminLogTableMap::RESOURCE, AdminLogTableMap::ACTION, AdminLogTableMap::MESSAGE, AdminLogTableMap::REQUEST, AdminLogTableMap::CREATED_AT, AdminLogTableMap::UPDATED_AT, ),
self::TYPE_RAW_COLNAME => array('ID', 'ADMIN_LOGIN', 'ADMIN_FIRSTNAME', 'ADMIN_LASTNAME', 'ACTION', 'REQUEST', 'CREATED_AT', 'UPDATED_AT', ), self::TYPE_RAW_COLNAME => array('ID', 'ADMIN_LOGIN', 'ADMIN_FIRSTNAME', 'ADMIN_LASTNAME', 'RESOURCE', 'ACTION', 'MESSAGE', 'REQUEST', 'CREATED_AT', 'UPDATED_AT', ),
self::TYPE_FIELDNAME => array('id', 'admin_login', 'admin_firstname', 'admin_lastname', 'action', 'request', 'created_at', 'updated_at', ), self::TYPE_FIELDNAME => array('id', 'admin_login', 'admin_firstname', 'admin_lastname', 'resource', 'action', 'message', 'request', 'created_at', 'updated_at', ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, ) self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
); );
/** /**
@@ -136,12 +146,12 @@ class AdminLogTableMap extends TableMap
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
*/ */
protected static $fieldKeys = array ( protected static $fieldKeys = array (
self::TYPE_PHPNAME => array('Id' => 0, 'AdminLogin' => 1, 'AdminFirstname' => 2, 'AdminLastname' => 3, 'Action' => 4, 'Request' => 5, 'CreatedAt' => 6, 'UpdatedAt' => 7, ), self::TYPE_PHPNAME => array('Id' => 0, 'AdminLogin' => 1, 'AdminFirstname' => 2, 'AdminLastname' => 3, 'Resource' => 4, 'Action' => 5, 'Message' => 6, 'Request' => 7, 'CreatedAt' => 8, 'UpdatedAt' => 9, ),
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'adminLogin' => 1, 'adminFirstname' => 2, 'adminLastname' => 3, 'action' => 4, 'request' => 5, 'createdAt' => 6, 'updatedAt' => 7, ), self::TYPE_STUDLYPHPNAME => array('id' => 0, 'adminLogin' => 1, 'adminFirstname' => 2, 'adminLastname' => 3, 'resource' => 4, 'action' => 5, 'message' => 6, 'request' => 7, 'createdAt' => 8, 'updatedAt' => 9, ),
self::TYPE_COLNAME => array(AdminLogTableMap::ID => 0, AdminLogTableMap::ADMIN_LOGIN => 1, AdminLogTableMap::ADMIN_FIRSTNAME => 2, AdminLogTableMap::ADMIN_LASTNAME => 3, AdminLogTableMap::ACTION => 4, AdminLogTableMap::REQUEST => 5, AdminLogTableMap::CREATED_AT => 6, AdminLogTableMap::UPDATED_AT => 7, ), self::TYPE_COLNAME => array(AdminLogTableMap::ID => 0, AdminLogTableMap::ADMIN_LOGIN => 1, AdminLogTableMap::ADMIN_FIRSTNAME => 2, AdminLogTableMap::ADMIN_LASTNAME => 3, AdminLogTableMap::RESOURCE => 4, AdminLogTableMap::ACTION => 5, AdminLogTableMap::MESSAGE => 6, AdminLogTableMap::REQUEST => 7, AdminLogTableMap::CREATED_AT => 8, AdminLogTableMap::UPDATED_AT => 9, ),
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ADMIN_LOGIN' => 1, 'ADMIN_FIRSTNAME' => 2, 'ADMIN_LASTNAME' => 3, 'ACTION' => 4, 'REQUEST' => 5, 'CREATED_AT' => 6, 'UPDATED_AT' => 7, ), self::TYPE_RAW_COLNAME => array('ID' => 0, 'ADMIN_LOGIN' => 1, 'ADMIN_FIRSTNAME' => 2, 'ADMIN_LASTNAME' => 3, 'RESOURCE' => 4, 'ACTION' => 5, 'MESSAGE' => 6, 'REQUEST' => 7, 'CREATED_AT' => 8, 'UPDATED_AT' => 9, ),
self::TYPE_FIELDNAME => array('id' => 0, 'admin_login' => 1, 'admin_firstname' => 2, 'admin_lastname' => 3, 'action' => 4, 'request' => 5, 'created_at' => 6, 'updated_at' => 7, ), self::TYPE_FIELDNAME => array('id' => 0, 'admin_login' => 1, 'admin_firstname' => 2, 'admin_lastname' => 3, 'resource' => 4, 'action' => 5, 'message' => 6, 'request' => 7, 'created_at' => 8, 'updated_at' => 9, ),
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, ) self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
); );
/** /**
@@ -164,8 +174,10 @@ class AdminLogTableMap extends TableMap
$this->addColumn('ADMIN_LOGIN', 'AdminLogin', 'VARCHAR', false, 255, null); $this->addColumn('ADMIN_LOGIN', 'AdminLogin', 'VARCHAR', false, 255, null);
$this->addColumn('ADMIN_FIRSTNAME', 'AdminFirstname', 'VARCHAR', false, 255, null); $this->addColumn('ADMIN_FIRSTNAME', 'AdminFirstname', 'VARCHAR', false, 255, null);
$this->addColumn('ADMIN_LASTNAME', 'AdminLastname', 'VARCHAR', false, 255, null); $this->addColumn('ADMIN_LASTNAME', 'AdminLastname', 'VARCHAR', false, 255, null);
$this->addColumn('RESOURCE', 'Resource', 'VARCHAR', false, 255, null);
$this->addColumn('ACTION', 'Action', 'VARCHAR', false, 255, null); $this->addColumn('ACTION', 'Action', 'VARCHAR', false, 255, null);
$this->addColumn('REQUEST', 'Request', 'LONGVARCHAR', false, null, null); $this->addColumn('MESSAGE', 'Message', 'LONGVARCHAR', false, null, null);
$this->addColumn('REQUEST', 'Request', 'CLOB', false, null, null);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null); $this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null); $this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
} // initialize() } // initialize()
@@ -332,7 +344,9 @@ class AdminLogTableMap extends TableMap
$criteria->addSelectColumn(AdminLogTableMap::ADMIN_LOGIN); $criteria->addSelectColumn(AdminLogTableMap::ADMIN_LOGIN);
$criteria->addSelectColumn(AdminLogTableMap::ADMIN_FIRSTNAME); $criteria->addSelectColumn(AdminLogTableMap::ADMIN_FIRSTNAME);
$criteria->addSelectColumn(AdminLogTableMap::ADMIN_LASTNAME); $criteria->addSelectColumn(AdminLogTableMap::ADMIN_LASTNAME);
$criteria->addSelectColumn(AdminLogTableMap::RESOURCE);
$criteria->addSelectColumn(AdminLogTableMap::ACTION); $criteria->addSelectColumn(AdminLogTableMap::ACTION);
$criteria->addSelectColumn(AdminLogTableMap::MESSAGE);
$criteria->addSelectColumn(AdminLogTableMap::REQUEST); $criteria->addSelectColumn(AdminLogTableMap::REQUEST);
$criteria->addSelectColumn(AdminLogTableMap::CREATED_AT); $criteria->addSelectColumn(AdminLogTableMap::CREATED_AT);
$criteria->addSelectColumn(AdminLogTableMap::UPDATED_AT); $criteria->addSelectColumn(AdminLogTableMap::UPDATED_AT);
@@ -341,7 +355,9 @@ class AdminLogTableMap extends TableMap
$criteria->addSelectColumn($alias . '.ADMIN_LOGIN'); $criteria->addSelectColumn($alias . '.ADMIN_LOGIN');
$criteria->addSelectColumn($alias . '.ADMIN_FIRSTNAME'); $criteria->addSelectColumn($alias . '.ADMIN_FIRSTNAME');
$criteria->addSelectColumn($alias . '.ADMIN_LASTNAME'); $criteria->addSelectColumn($alias . '.ADMIN_LASTNAME');
$criteria->addSelectColumn($alias . '.RESOURCE');
$criteria->addSelectColumn($alias . '.ACTION'); $criteria->addSelectColumn($alias . '.ACTION');
$criteria->addSelectColumn($alias . '.MESSAGE');
$criteria->addSelectColumn($alias . '.REQUEST'); $criteria->addSelectColumn($alias . '.REQUEST');
$criteria->addSelectColumn($alias . '.CREATED_AT'); $criteria->addSelectColumn($alias . '.CREATED_AT');
$criteria->addSelectColumn($alias . '.UPDATED_AT'); $criteria->addSelectColumn($alias . '.UPDATED_AT');

View File

@@ -118,20 +118,6 @@ class FileManager
$directory = $this->getUploadDir($parentType, $fileType); $directory = $this->getUploadDir($parentType, $fileType);
$fileName = $this->renameFile($model->getId(), $uploadedFile); $fileName = $this->renameFile($model->getId(), $uploadedFile);
$this->adminLogAppend(
$this->translator->trans(
'Uploading %type% %fileName% to %directory% for parent_id %parentId% (%parentType%)',
array(
'%type%' => $fileType,
'%fileName%' => $uploadedFile->getClientOriginalName(),
'%directory%' => $directory . '/' . $fileName,
'%parentId%' => $parentId,
'%parentType%' => $parentType
),
'image'
)
);
$newUploadedFile = $uploadedFile->move($directory, $fileName); $newUploadedFile = $uploadedFile->move($directory, $fileName);
$model->setFile($fileName); $model->setFile($fileName);
@@ -282,20 +268,6 @@ class FileManager
return strtolower(preg_replace('/[^a-zA-Z0-9-_\.]/', '', $string)); return strtolower(preg_replace('/[^a-zA-Z0-9-_\.]/', '', $string));
} }
/**
* Helper to append a message to the admin log.
*
* @param string $message
*/
public function adminLogAppend($message)
{
AdminLog::append(
$message,
$this->container->get('request'),
$this->container->get('thelia.securityContext')->getAdminUser()
);
}
/** /**
* Delete image from file storage and database * Delete image from file storage and database
* *

View File

@@ -1138,8 +1138,10 @@ CREATE TABLE `admin_log`
`admin_login` VARCHAR(255), `admin_login` VARCHAR(255),
`admin_firstname` VARCHAR(255), `admin_firstname` VARCHAR(255),
`admin_lastname` VARCHAR(255), `admin_lastname` VARCHAR(255),
`resource` VARCHAR(255),
`action` VARCHAR(255), `action` VARCHAR(255),
`request` TEXT, `message` TEXT,
`request` LONGTEXT,
`created_at` DATETIME, `created_at` DATETIME,
`updated_at` DATETIME, `updated_at` DATETIME,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,143 @@
{extends file="admin-layout.tpl"}
{block name="page-title"}{intl l='Thelia Mailing System'}{/block}
{block name="check-resource"}admin.configuration.admin-logs{/block}
{block name="check-access"}view{/block}
{block name="main-content"}
<div class="admin-logs">
<div id="wrapper" class="container">
<ul class="breadcrumb">
<li><a href="{url path='/admin/home'}">{intl l="Home"}</a></li>
<li><a href="{url path='/admin/configuration'}">{intl l="Configuration"}</a></li>
<li><a href="{url path='/admin/configuration/adminLogs'}">{intl l="Admin logs"}</a></li>
</ul>
{module_include location='admin_logs_top'}
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator">
<div class="title title-without-tabs">{intl l="Configuration variables"}</div>
{form name="thelia.admin.mailing-system.update"}
<form method="POST" action="{url path="/admin/configuration/mailingSystem/save"}" {form_enctype form=$form} >
<div class="row inner-toolbar">
<div class="col-md-12 inner-actions clearfix">
<button type="submit" name="save_mode" value="stay" class="btn btn-default btn-success pull-right" title="Save">Save <span class="glyphicon glyphicon-ok"></span></button>
</div>
</div>
{form_hidden_fields form=$form}
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
{form_field form=$form field='enabled'}
<div class="form-group">
<label for="{$label_attr.for}" class="label-control">{intl l="Enable remote SMTP use : "}</label>
<input type="hidden" id="smtp_enabled" name="{$name}" value="{if $form_error}{$value}{else}{if {config key="smtp.enabled"}}1{else}0{/if}{/if}">
<div class="make-switch switch-small" id="enable-smtp" data-on="success" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>" data-off-label="<i class='glyphicon glyphicon-remove'></i>">
<input type="checkbox" id="{$label_attr.for}" {if $form_error AND $value == 1 OR !$form_error AND {config key="smtp.enabled"} == 1}checked{/if}>
</div>
</div>
{/form_field}
{form_field form=$form field='host'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Host :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Host"}" value="{if $form_error}{$value}{else}{config key="smtp.host"}{/if}">
</div>
{/form_field}
{form_field form=$form field='port'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Port :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Port"}" value="{if $form_error}{$value}{else}{config key="smtp.port"}{/if}">
</div>
{/form_field}
{form_field form=$form field='encryption'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Encryption :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Encryption"}" value="{if $form_error}{$value}{else}{config key="smtp.encryption"}{/if}">
</div>
{/form_field}
{form_field form=$form field='username'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Username :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Username"}" value="{if $form_error}{$value}{else}{config key="smtp.username"}{/if}">
</div>
{/form_field}
{form_field form=$form field='password'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Password :"}</label>
<input type="password" class="form-control" id="{$label_attr.for}" name="{$name}" value="{if $form_error}{$value}{else}{config key="smtp.password"}{/if}">
</div>
{/form_field}
{form_field form=$form field='authmode'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Auth Mode :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Auth Mode"}" value="{if $form_error}{$value}{else}{config key="smtp.authmode"}{/if}">
</div>
{/form_field}
{form_field form=$form field='timeout'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Timeout :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Timeout"}" value="{if $form_error}{$value}{else}{config key="smtp.timeout"}{/if}">
</div>
{/form_field}
{form_field form=$form field='sourceip'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="label-control">{intl l="Source IP :"}</label>
<input type="text" class="form-control" id="{$label_attr.for}" name="{$name}" placeholder="{intl l="Source IP"}" value="{if $form_error}{$value}{else}{config key="smtp.sourceip"}{/if}">
</div>
{/form_field}
<div class="row inner-toolbar">
<div class="col-md-12 inner-actions clearfix">
<button type="submit" name="save_mode" value="stay" class="btn btn-default btn-success pull-right" title="Save">Save <span class="glyphicon glyphicon-ok"></span></button>
</div>
</div>
</form>
{/form}
</div>
</div>
</div>
{module_include location='admin_logs_bottom'}
</div>
</div>
{/block}
{block name="javascript-initialization"}
{javascripts file='assets/js/bootstrap-switch/bootstrap-switch.js'}
<script src="{$asset_url}"></script>
{/javascripts}
<script type="text/javascript">
jQuery(function($) {
$('#enable-smtp').on('switch-change', function (e, data) {
$('#smtp_enabled').val(data.value ? 1 : 0);
});
});
</script>
{/block}

View File

@@ -153,19 +153,19 @@
{loop type="auth" name="pcc6" role="ADMIN" resource="admin.configuration.mailing-system" access="VIEW"} {loop type="auth" name="pcc6" role="ADMIN" resource="admin.configuration.mailing-system" access="VIEW"}
<tr> <tr>
<td><a href="{url path='/admin/configuration/mailing_system'}">{intl l='Mailing system'}</a></td> <td><a href="{url path='/admin/configuration/mailingSystem'}">{intl l='Mailing system'}</a></td>
<td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/mailingSystem'}"><i class="glyphicon glyphicon-edit"></i></a></td> <td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/mailingSystem'}"><i class="glyphicon glyphicon-edit"></i></a></td>
</tr> </tr>
{/loop} {/loop}
{* {loop type="auth" name="pcc7" role="ADMIN" resource="admin.configuration.admin-logs" access="VIEW"} {loop type="auth" name="pcc7" role="ADMIN" resource="admin.configuration.admin-logs" access="VIEW"}
<tr> <tr>
<td><a href="{url path='/admin/configuration/admin_logs'}">{intl l='Administration logs'}</a></td> <td><a href="{url path='/admin/configuration/adminLogs'}">{intl l='Administration logs'}</a></td>
<td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/admin_logs'}"><i class="glyphicon glyphicon-edit"></i></a></td> <td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/adminLogs'}"><i class="glyphicon glyphicon-edit"></i></a></td>
</tr> </tr>
{/loop} {/loop}
{loop type="auth" name="pcc8" role="ADMIN" resource="admin.configuration.system-logs" access="VIEW"} {* {loop type="auth" name="pcc8" role="ADMIN" resource="admin.configuration.system-logs" access="VIEW"}
<tr> <tr>
<td><a href="{url path='/admin/configuration/system_logs'}">{intl l='System logs'}</a></td> <td><a href="{url path='/admin/configuration/system_logs'}">{intl l='System logs'}</a></td>
<td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/system_logs'}"><i class="glyphicon glyphicon-edit"></i></a></td> <td><a class="btn btn-default btn-xs" href="{url path='/admin/configuration/system_logs'}"><i class="glyphicon glyphicon-edit"></i></a></td>

View File

@@ -13,7 +13,7 @@
<ul class="breadcrumb"> <ul class="breadcrumb">
<li><a href="{url path='/admin/home'}">{intl l="Home"}</a></li> <li><a href="{url path='/admin/home'}">{intl l="Home"}</a></li>
<li><a href="{url path='/admin/configuration'}">{intl l="Configuration"}</a></li> <li><a href="{url path='/admin/configuration'}">{intl l="Configuration"}</a></li>
<li><a href="{url path='/admin/configuration/mailing_system'}">{intl l="Mailing system"}</a></li> <li><a href="{url path='/admin/configuration/mailingSystem'}">{intl l="Mailing system"}</a></li>
</ul> </ul>
{module_include location='mailing_system_top'} {module_include location='mailing_system_top'}
@@ -22,7 +22,7 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="general-block-decorator"> <div class="general-block-decorator">
<div class="title title-without-tabs">{intl l="Configuration variables"}</div> <div class="title title-without-tabs">{intl l="Configuration mailing system"}</div>
{form name="thelia.admin.mailing-system.update"} {form name="thelia.admin.mailing-system.update"}