Rajout du module AdminComment + modifs pour que le commentaire (= le n° de bon de commande) figure dans la facture et dans le relevé de facture
This commit is contained in:
7
local/I18n/fr_FR.php
Normal file
7
local/I18n/fr_FR.php
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'admincomment.bo.default' => [
|
||||||
|
'Admin Comments' => 'N° du bon de commande',
|
||||||
|
],
|
||||||
|
];
|
||||||
92
local/modules/AdminComment/Action/AdminCommentAction.php
Normal file
92
local/modules/AdminComment/Action/AdminCommentAction.php
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Action;
|
||||||
|
|
||||||
|
use AdminComment\Events\AdminCommentEvent;
|
||||||
|
use AdminComment\Events\AdminCommentEvents;
|
||||||
|
use AdminComment\Model\AdminComment;
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentAction
|
||||||
|
* @package AdminComment\Action
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentAction implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns an array of event names this subscriber wants to listen to.
|
||||||
|
*
|
||||||
|
* The array keys are event names and the value can be:
|
||||||
|
*
|
||||||
|
* * The method name to call (priority defaults to 0)
|
||||||
|
* * An array composed of the method name to call and the priority
|
||||||
|
* * An array of arrays composed of the method names to call and respective
|
||||||
|
* priorities, or 0 if unset
|
||||||
|
*
|
||||||
|
* For instance:
|
||||||
|
*
|
||||||
|
* * array('eventName' => 'methodName')
|
||||||
|
* * array('eventName' => array('methodName', $priority))
|
||||||
|
* * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
|
||||||
|
*
|
||||||
|
* @return array The event names to listen to
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
AdminCommentEvents::CREATE => ["create", 128],
|
||||||
|
AdminCommentEvents::UPDATE => ["update", 128],
|
||||||
|
AdminCommentEvents::DELETE => ["delete", 128],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create(AdminCommentEvent $event)
|
||||||
|
{
|
||||||
|
$adminComment = new AdminComment();
|
||||||
|
$adminComment
|
||||||
|
->setAdminId($event->getAdminId())
|
||||||
|
->setElementKey($event->getElementKey())
|
||||||
|
->setElementId($event->getElementId())
|
||||||
|
->setComment($event->getComment())
|
||||||
|
->save();
|
||||||
|
$event->setAdminComment($adminComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(AdminCommentEvent $event)
|
||||||
|
{
|
||||||
|
$adminComment = AdminCommentQuery::create()->findPk($event->getId());
|
||||||
|
if (null !== $adminComment) {
|
||||||
|
$adminComment
|
||||||
|
->setComment($event->getComment())
|
||||||
|
->save();
|
||||||
|
|
||||||
|
$event->setAdminComment($adminComment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function delete(AdminCommentEvent $event)
|
||||||
|
{
|
||||||
|
$adminComment = AdminCommentQuery::create()->findPk($event->getId());
|
||||||
|
if (null !== $adminComment) {
|
||||||
|
$adminComment
|
||||||
|
->delete();
|
||||||
|
|
||||||
|
$event->setAdminComment($adminComment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
local/modules/AdminComment/AdminComment.php
Normal file
34
local/modules/AdminComment/AdminComment.php
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace AdminComment;
|
||||||
|
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Thelia\Install\Database;
|
||||||
|
use Thelia\Module\BaseModule;
|
||||||
|
|
||||||
|
class AdminComment extends BaseModule
|
||||||
|
{
|
||||||
|
const MESSAGE_DOMAIN = 'admincomment';
|
||||||
|
|
||||||
|
public function postActivation(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
// Schema
|
||||||
|
try {
|
||||||
|
AdminCommentQuery::create()->findOne();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$database = new Database($con->getWrappedConnection());
|
||||||
|
$database->insertSql(null, [__DIR__ . DS . 'Config' . DS . 'thelia.sql']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
63
local/modules/AdminComment/Config/config.xml
Normal file
63
local/modules/AdminComment/Config/config.xml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<config xmlns="http://thelia.net/schema/dic/config"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
||||||
|
|
||||||
|
<loops>
|
||||||
|
<loop name="admin_comment" class="AdminComment\Loop\AdminCommentLoop" />
|
||||||
|
</loops>
|
||||||
|
|
||||||
|
<forms>
|
||||||
|
<form name="admin_comment_create_form" class="AdminComment\Form\AdminCommentCreateForm" />
|
||||||
|
<form name="admin_comment_update_form" class="AdminComment\Form\AdminCommentUpdateForm" />
|
||||||
|
</forms>
|
||||||
|
|
||||||
|
<commands>
|
||||||
|
<!--
|
||||||
|
<command class="AdminComment\Command\MySuperCommand" />
|
||||||
|
-->
|
||||||
|
</commands>
|
||||||
|
|
||||||
|
<services>
|
||||||
|
<service id="action.admin_comment" class="AdminComment\Action\AdminCommentAction" scope="request">
|
||||||
|
<tag name="kernel.event_subscriber"/>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
|
||||||
|
<hooks>
|
||||||
|
<hook id="admincomment.hook" class="AdminComment\Hook\BackHook" scope="request">
|
||||||
|
<tag name="hook.event_listener" event="main.after-content" type="back" />
|
||||||
|
<tag name="hook.event_listener" event="main.footer-js" type="back" />
|
||||||
|
|
||||||
|
<tag name="hook.event_listener" event="category.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="product.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="folder.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="content.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="customer.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="order.edit-js" type="back" method="onEditJs" />
|
||||||
|
<tag name="hook.event_listener" event="coupon.update-js" type="back" method="onEditJs" />
|
||||||
|
|
||||||
|
<tag name="hook.event_listener" event="category.tab" type="back" method="onEditTab" />
|
||||||
|
<tag name="hook.event_listener" event="product.tab" type="back" method="onEditTab" />
|
||||||
|
<tag name="hook.event_listener" event="folder.tab" type="back" method="onEditTab" />
|
||||||
|
<tag name="hook.event_listener" event="content.tab" type="back" method="onEditTab" />
|
||||||
|
<tag name="hook.event_listener" event="order.tab" type="back" method="onEditTab" />
|
||||||
|
|
||||||
|
<tag name="hook.event_listener" event="orders.table-header" type="back" method="onListHeader" />
|
||||||
|
<tag name="hook.event_listener" event="orders.table-row" type="back" method="onListRow" />
|
||||||
|
</hook>
|
||||||
|
</hooks>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<exports>
|
||||||
|
|
||||||
|
</exports>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<imports>
|
||||||
|
|
||||||
|
</imports>
|
||||||
|
-->
|
||||||
|
</config>
|
||||||
24
local/modules/AdminComment/Config/module.xml
Normal file
24
local/modules/AdminComment/Config/module.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module xmlns="http://thelia.net/schema/dic/module"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_1.xsd">
|
||||||
|
<fullnamespace>AdminComment\AdminComment</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>Admin Comments</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>Commentaires Admin</title>
|
||||||
|
</descriptive>
|
||||||
|
<languages>
|
||||||
|
<language>en_US</language>
|
||||||
|
<language>fr_FR</language>
|
||||||
|
</languages>
|
||||||
|
<version>1.1.1</version>
|
||||||
|
<author>
|
||||||
|
<name>Julien Chanséaume</name>
|
||||||
|
<email>julien@thelia.net</email>
|
||||||
|
</author>
|
||||||
|
<type>classic</type>
|
||||||
|
<thelia>2.1.0</thelia>
|
||||||
|
<stability>other</stability>
|
||||||
|
</module>
|
||||||
23
local/modules/AdminComment/Config/routing.xml
Normal file
23
local/modules/AdminComment/Config/routing.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<routes xmlns="http://symfony.com/schema/routing"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
|
||||||
|
|
||||||
|
<!-- back -->
|
||||||
|
<route id="admincomment.admin.list" path="/admin/module/AdminComment/list/{key}/{id}" methods="get">
|
||||||
|
<default key="_controller">AdminComment:AdminComment:list</default>
|
||||||
|
<requirement key="key">.+</requirement>
|
||||||
|
<requirement key="id">\d+</requirement>
|
||||||
|
</route>
|
||||||
|
<route id="admincomment.admin.create" path="/admin/module/AdminComment/create" methods="post">
|
||||||
|
<default key="_controller">AdminComment:AdminComment:create</default>
|
||||||
|
</route>
|
||||||
|
<route id="admincomment.admin.save" path="/admin/module/AdminComment/save" methods="post">
|
||||||
|
<default key="_controller">AdminComment:AdminComment:save</default>
|
||||||
|
</route>
|
||||||
|
<route id="admincomment.admin.delete" path="/admin/module/AdminComment/delete" methods="post">
|
||||||
|
<default key="_controller">AdminComment:AdminComment:delete</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
</routes>
|
||||||
20
local/modules/AdminComment/Config/schema.xml
Normal file
20
local/modules/AdminComment/Config/schema.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<database defaultIdMethod="native" name="thelia"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="../../../../core/vendor/propel/propel/resources/xsd/database.xsd" >
|
||||||
|
|
||||||
|
<table name="admin_comment" namespace="AdminComment\Model">
|
||||||
|
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
<column name="admin_id" type="INTEGER" required="false" />
|
||||||
|
<column name="comment" type="LONGVARCHAR" />
|
||||||
|
<column name="element_key" required="true" size="255" type="VARCHAR" />
|
||||||
|
<column name="element_id" required="true" type="INTEGER" />
|
||||||
|
|
||||||
|
<foreign-key foreignTable="admin" name="fk_admin_comment_admin_id" onDelete="SET NULL" onUpdate="RESTRICT">
|
||||||
|
<reference foreign="id" local="admin_id" />
|
||||||
|
</foreign-key>
|
||||||
|
<behavior name="timestampable" />
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||||
|
</database>
|
||||||
2
local/modules/AdminComment/Config/sqldb.map
Normal file
2
local/modules/AdminComment/Config/sqldb.map
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Sqlfile -> Database map
|
||||||
|
thelia.sql=thelia
|
||||||
31
local/modules/AdminComment/Config/thelia.sql
Normal file
31
local/modules/AdminComment/Config/thelia.sql
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
# This is a fix for InnoDB in MySQL >= 4.1.x
|
||||||
|
# It "suspends judgement" for fkey relationships until are tables are set.
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- admin_comment
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `admin_comment`;
|
||||||
|
|
||||||
|
CREATE TABLE `admin_comment`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`admin_id` INTEGER,
|
||||||
|
`comment` TEXT,
|
||||||
|
`element_key` VARCHAR(255) NOT NULL,
|
||||||
|
`element_id` INTEGER NOT NULL,
|
||||||
|
`created_at` DATETIME,
|
||||||
|
`updated_at` DATETIME,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
INDEX `FI_admin_comment_admin_id` (`admin_id`),
|
||||||
|
CONSTRAINT `fk_admin_comment_admin_id`
|
||||||
|
FOREIGN KEY (`admin_id`)
|
||||||
|
REFERENCES `admin` (`id`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
197
local/modules/AdminComment/Controller/AdminCommentController.php
Normal file
197
local/modules/AdminComment/Controller/AdminCommentController.php
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Controller;
|
||||||
|
|
||||||
|
use AdminComment\AdminComment;
|
||||||
|
use AdminComment\Events\AdminCommentEvent;
|
||||||
|
use AdminComment\Events\AdminCommentEvents;
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
|
use Thelia\Tools\DateTimeFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentController
|
||||||
|
* @package AdminComment\Controller
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentController extends BaseAdminController
|
||||||
|
{
|
||||||
|
|
||||||
|
public function listAction($key, $id)
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::VIEW);
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$comments = AdminCommentQuery::create()
|
||||||
|
->filterByElementKey($key)
|
||||||
|
->filterByElementId($id)
|
||||||
|
->orderByCreatedAt(Criteria::DESC)
|
||||||
|
->find();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
foreach ($comments as $comment) {
|
||||||
|
$data[] = $this->mapCommentObject($comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->jsonResponse(
|
||||||
|
json_encode(
|
||||||
|
[
|
||||||
|
'success' => true,
|
||||||
|
'message' => '',
|
||||||
|
'data' => $data
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function mapCommentObject(\AdminComment\Model\AdminComment $comment)
|
||||||
|
{
|
||||||
|
$format = DateTimeFormat::getInstance($this->getRequest())
|
||||||
|
->getFormat();
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'id' => $comment->getId(),
|
||||||
|
'date' => $comment->getCreatedAt($format),
|
||||||
|
'admin' => (null !== $comment->getAdmin())
|
||||||
|
? $comment->getAdmin()->getFirstname() . ' ' . $comment->getAdmin()->getLastname()
|
||||||
|
: '',
|
||||||
|
'comment' => $comment->getComment(),
|
||||||
|
'canChange' => $this->canChange($comment)
|
||||||
|
];
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function canChange(\AdminComment\Model\AdminComment $comment)
|
||||||
|
{
|
||||||
|
$user = $this->getSecurityContext()->getAdminUser();
|
||||||
|
|
||||||
|
if ($comment->getAdminId() === $user->getId()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->getPermissions() === AdminResources::SUPERADMINISTRATOR) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createAction()
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::CREATE);
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$responseData = $this->createOrUpdate(
|
||||||
|
'admin_comment_create_form',
|
||||||
|
AdminCommentEvents::CREATE
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->jsonResponse(json_encode($responseData));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function createOrUpdate($formId, $eventName)
|
||||||
|
{
|
||||||
|
$this->checkXmlHttpRequest();
|
||||||
|
|
||||||
|
$responseData = [
|
||||||
|
"success" => false,
|
||||||
|
"message" => ''
|
||||||
|
];
|
||||||
|
|
||||||
|
$form = $this->createForm($formId);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$formData = $this->validateForm($form);
|
||||||
|
|
||||||
|
$event = new AdminCommentEvent();
|
||||||
|
$event->bindForm($formData);
|
||||||
|
|
||||||
|
$this->dispatch($eventName, $event);
|
||||||
|
|
||||||
|
$responseData['success'] = true;
|
||||||
|
$responseData['message'] = 'ok';
|
||||||
|
$responseData['data'] = $this->mapCommentObject($event->getAdminComment());
|
||||||
|
} catch (FormValidationException $e) {
|
||||||
|
$responseData['message'] = $e->getMessage();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$responseData['message'] = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $responseData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveAction()
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::UPDATE);
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$responseData = $this->createOrUpdate(
|
||||||
|
'admin_comment_update_form',
|
||||||
|
AdminCommentEvents::UPDATE
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->jsonResponse(json_encode($responseData));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteAction()
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::DELETE);
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->checkXmlHttpRequest();
|
||||||
|
|
||||||
|
$responseData = [
|
||||||
|
"success" => false,
|
||||||
|
"message" => ''
|
||||||
|
];
|
||||||
|
|
||||||
|
try {
|
||||||
|
$id = intval($this->getRequest()->request->get('id'));
|
||||||
|
|
||||||
|
if (0 === $id) {
|
||||||
|
throw new \RuntimeException(
|
||||||
|
$this->getTranslator()->trans('Unknown comment', [], AdminComment::MESSAGE_DOMAIN)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$event = new AdminCommentEvent();
|
||||||
|
$event->setId($id);
|
||||||
|
$this->dispatch(AdminCommentEvents::DELETE, $event);
|
||||||
|
|
||||||
|
if (null === $event->getAdminComment()) {
|
||||||
|
throw new \RuntimeException(
|
||||||
|
$this->getTranslator()->trans('Unknown comment', [], AdminComment::MESSAGE_DOMAIN)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$responseData['success'] = true;
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$responseData['message'] = $ex->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->jsonResponse(json_encode($responseData));
|
||||||
|
}
|
||||||
|
}
|
||||||
151
local/modules/AdminComment/Events/AdminCommentEvent.php
Normal file
151
local/modules/AdminComment/Events/AdminCommentEvent.php
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Events;
|
||||||
|
|
||||||
|
use AdminComment\Model\AdminComment;
|
||||||
|
use Thelia\Core\Event\ActionEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentEvent
|
||||||
|
* @package AdminComment\Events
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentEvent extends ActionEvent
|
||||||
|
{
|
||||||
|
/** @var integer */
|
||||||
|
protected $id;
|
||||||
|
|
||||||
|
/** @var integer */
|
||||||
|
protected $admin_id;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
protected $element_key;
|
||||||
|
|
||||||
|
/** @var integer */
|
||||||
|
protected $element_id;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
protected $comment;
|
||||||
|
|
||||||
|
/** @var AdminComment */
|
||||||
|
protected $adminComment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getAdminId()
|
||||||
|
{
|
||||||
|
return $this->admin_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $admin_id
|
||||||
|
*/
|
||||||
|
public function setAdminId($admin_id)
|
||||||
|
{
|
||||||
|
$this->admin_id = $admin_id;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return AdminComment
|
||||||
|
*/
|
||||||
|
public function getAdminComment()
|
||||||
|
{
|
||||||
|
return $this->adminComment;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param AdminComment $adminComment
|
||||||
|
*/
|
||||||
|
public function setAdminComment($adminComment)
|
||||||
|
{
|
||||||
|
$this->adminComment = $adminComment;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getComment()
|
||||||
|
{
|
||||||
|
return $this->comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $comment
|
||||||
|
*/
|
||||||
|
public function setComment($comment)
|
||||||
|
{
|
||||||
|
$this->comment = $comment;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getElementId()
|
||||||
|
{
|
||||||
|
return $this->element_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $element_id
|
||||||
|
*/
|
||||||
|
public function setElementId($element_id)
|
||||||
|
{
|
||||||
|
$this->element_id = $element_id;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getElementKey()
|
||||||
|
{
|
||||||
|
return $this->element_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $element_key
|
||||||
|
*/
|
||||||
|
public function setElementKey($element_key)
|
||||||
|
{
|
||||||
|
$this->element_key = $element_key;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getId()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $id
|
||||||
|
*/
|
||||||
|
public function setId($id)
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
local/modules/AdminComment/Events/AdminCommentEvents.php
Normal file
26
local/modules/AdminComment/Events/AdminCommentEvents.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Events;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentEvents
|
||||||
|
* @package AdminComment\Events
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentEvents
|
||||||
|
{
|
||||||
|
const CREATE = "action.admin_comment.create";
|
||||||
|
const UPDATE = "action.admin_comment.update";
|
||||||
|
const DELETE = "action.admin_comment.delete";
|
||||||
|
}
|
||||||
113
local/modules/AdminComment/Form/AdminCommentCreateForm.php
Normal file
113
local/modules/AdminComment/Form/AdminCommentCreateForm.php
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Form;
|
||||||
|
|
||||||
|
use AdminComment\AdminComment;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentCreateForm
|
||||||
|
* @package AdminComment\Form
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentCreateForm extends BaseForm
|
||||||
|
{
|
||||||
|
/** @var Translator $translator */
|
||||||
|
protected $translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string the name of you form. This name must be unique
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'admin_comment_create';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* in this function you add all the fields you need for your Form.
|
||||||
|
* Form this you have to call add method on $this->formBuilder attribute :
|
||||||
|
*
|
||||||
|
* $this->formBuilder->add("name", "text")
|
||||||
|
* ->add("email", "email", array(
|
||||||
|
* "attr" => array(
|
||||||
|
* "class" => "field"
|
||||||
|
* ),
|
||||||
|
* "label" => "email",
|
||||||
|
* "constraints" => array(
|
||||||
|
* new \Symfony\Component\Validator\Constraints\NotBlank()
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* ->add('age', 'integer');
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->formBuilder
|
||||||
|
->add(
|
||||||
|
"admin_id",
|
||||||
|
"integer",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Admin Id"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"element_key",
|
||||||
|
"text",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Element key"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"element_id",
|
||||||
|
"number",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Element id"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"comment",
|
||||||
|
"textarea",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Comment"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function trans($id, $parameters = [])
|
||||||
|
{
|
||||||
|
if (null === $this->translator) {
|
||||||
|
$this->translator = Translator::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->translator->trans($id, $parameters, AdminComment::MESSAGE_DOMAIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
93
local/modules/AdminComment/Form/AdminCommentUpdateForm.php
Normal file
93
local/modules/AdminComment/Form/AdminCommentUpdateForm.php
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Form;
|
||||||
|
|
||||||
|
use AdminComment\AdminComment;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AdminCommentCreateForm
|
||||||
|
* @package AdminComment\Form
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class AdminCommentUpdateForm extends BaseForm
|
||||||
|
{
|
||||||
|
/** @var Translator $translator */
|
||||||
|
protected $translator;
|
||||||
|
|
||||||
|
protected function trans($id, $parameters = [])
|
||||||
|
{
|
||||||
|
if (null === $this->translator) {
|
||||||
|
$this->translator = Translator::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->translator->trans($id, $parameters, AdminComment::MESSAGE_DOMAIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* in this function you add all the fields you need for your Form.
|
||||||
|
* Form this you have to call add method on $this->formBuilder attribute :
|
||||||
|
*
|
||||||
|
* $this->formBuilder->add("name", "text")
|
||||||
|
* ->add("email", "email", array(
|
||||||
|
* "attr" => array(
|
||||||
|
* "class" => "field"
|
||||||
|
* ),
|
||||||
|
* "label" => "email",
|
||||||
|
* "constraints" => array(
|
||||||
|
* new \Symfony\Component\Validator\Constraints\NotBlank()
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* ->add('age', 'integer');
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->formBuilder
|
||||||
|
->add(
|
||||||
|
"id",
|
||||||
|
"integer",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Comment Id"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"comment",
|
||||||
|
"textarea",
|
||||||
|
[
|
||||||
|
"label" => $this->trans("Comment"),
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string the name of you form. This name must be unique
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'admin_comment_update';
|
||||||
|
}
|
||||||
|
}
|
||||||
167
local/modules/AdminComment/Hook/BackHook.php
Normal file
167
local/modules/AdminComment/Hook/BackHook.php
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Hook;
|
||||||
|
|
||||||
|
use AdminComment\AdminComment;
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderBlockEvent;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class BackHook
|
||||||
|
* @package AdminComment\Hook
|
||||||
|
* @author Julien Chanséaume <julien@thelia.net[>
|
||||||
|
*/
|
||||||
|
class BackHook extends baseHook
|
||||||
|
{
|
||||||
|
|
||||||
|
public function onMainAfterContent(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add(
|
||||||
|
$this->render('main-after-content.html')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onMainFooterJs(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add(
|
||||||
|
$this->render('main-footer-js.html')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onEditJs(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$params = $this->getParameters($event);
|
||||||
|
|
||||||
|
if (!empty($params)) {
|
||||||
|
$event->add(
|
||||||
|
$this->render(
|
||||||
|
'edit-js.html',
|
||||||
|
$params
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onEditTab(HookRenderBlockEvent $event)
|
||||||
|
{
|
||||||
|
$params = $this->getTabParameters($event);
|
||||||
|
|
||||||
|
$count = AdminCommentQuery::create()
|
||||||
|
->filterByElementKey($params['key'])
|
||||||
|
->filterByElementId($event->getArgument('id'))
|
||||||
|
->count();
|
||||||
|
|
||||||
|
|
||||||
|
$event->add(
|
||||||
|
[
|
||||||
|
"id" => 'admin-comment',
|
||||||
|
"title" => Translator::getInstance()->trans("Comment (%count)", ['%count' => $count], AdminComment::MESSAGE_DOMAIN),
|
||||||
|
"content" => ""
|
||||||
|
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onListHeader(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add("<td class='text-center'>".Translator::getInstance()->trans('Comment', [], AdminComment::MESSAGE_DOMAIN)."</td>");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onListRow(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$key = null;
|
||||||
|
|
||||||
|
if (false !== strpos($event->getName(), 'orders.table-row')) {
|
||||||
|
$key = 'order';
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
|
|
||||||
|
if ($key) {
|
||||||
|
$count = AdminCommentQuery::create()
|
||||||
|
->filterByElementKey($key)
|
||||||
|
->filterByElementId($event->getArgument($key.'_id'))
|
||||||
|
->count();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$counter = "";
|
||||||
|
|
||||||
|
if ($count > 0) {
|
||||||
|
$counter = "<span class='badge' style='background-color: #f39922'>$count</span>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$event->add("<td class='text-center'>$counter</td>");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getParameters(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$out = [];
|
||||||
|
|
||||||
|
$authorizedHook = [
|
||||||
|
'category.edit-js',
|
||||||
|
'product.edit-js',
|
||||||
|
'folder.edit-js',
|
||||||
|
'content.edit-js',
|
||||||
|
'customer.edit-js',
|
||||||
|
'order.edit-js',
|
||||||
|
'coupon.update-js'
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($authorizedHook as $hookName) {
|
||||||
|
if (false !== strpos($event->getName(), $hookName)) {
|
||||||
|
$key = explode('.', $hookName)[0];
|
||||||
|
$id = intval($event->getArgument($key . '_id'));
|
||||||
|
// try to get from url
|
||||||
|
if (0 === $id) {
|
||||||
|
$id = intval($this->getRequest()->query->get($key . '_id', 0));
|
||||||
|
}
|
||||||
|
if (0 !== $id) {
|
||||||
|
$out = [
|
||||||
|
'key' => $key,
|
||||||
|
'id' => $id
|
||||||
|
];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTabParameters(HookRenderBlockEvent $event)
|
||||||
|
{
|
||||||
|
$out = [];
|
||||||
|
|
||||||
|
$authorizedHook = [
|
||||||
|
'category.tab',
|
||||||
|
'product.tab',
|
||||||
|
'folder.tab',
|
||||||
|
'content.tab',
|
||||||
|
'order.tab'
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($authorizedHook as $hookName) {
|
||||||
|
if (false !== strpos($event->getName(), $hookName)) {
|
||||||
|
$key = explode('.', $hookName)[0];
|
||||||
|
$out['key'] = $key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Admin Comments' => 'Admin Comments',
|
||||||
|
'Delete this comment' => 'Delete this comment',
|
||||||
|
'Edit this comment' => 'Edit this comment',
|
||||||
|
'Message' => 'Message',
|
||||||
|
'Save' => 'Save',
|
||||||
|
);
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Admin Comments' => 'Commentaires Admin',
|
||||||
|
'Delete this comment' => 'Supprimer le commentaire',
|
||||||
|
'Edit this comment' => 'Modifier ce commentaire',
|
||||||
|
'Message' => 'Message',
|
||||||
|
'Save' => 'Enregistrer',
|
||||||
|
);
|
||||||
10
local/modules/AdminComment/I18n/en_US.php
Normal file
10
local/modules/AdminComment/I18n/en_US.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Admin Id' => 'Admin Id',
|
||||||
|
'Comment' => 'Comment',
|
||||||
|
'Comment Id' => 'Comment Id',
|
||||||
|
'Element id' => 'Element id',
|
||||||
|
'Element key' => 'Element key',
|
||||||
|
'Unknown comment' => 'Unknown comment',
|
||||||
|
);
|
||||||
11
local/modules/AdminComment/I18n/fr_FR.php
Normal file
11
local/modules/AdminComment/I18n/fr_FR.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Admin Id' => 'Id Admin',
|
||||||
|
'Comment' => 'Commentaire',
|
||||||
|
'Comment (%count)' => 'Commentaires (%count)',
|
||||||
|
'Comment Id' => 'Id commentaire',
|
||||||
|
'Element id' => 'Id de l\'élément',
|
||||||
|
'Element key' => 'Clé de l\'élément',
|
||||||
|
'Unknown comment' => 'Commentaire inconnu',
|
||||||
|
);
|
||||||
166
local/modules/AdminComment/LICENSE
Normal file
166
local/modules/AdminComment/LICENSE
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
|
|
||||||
117
local/modules/AdminComment/Loop/AdminCommentLoop.php
Normal file
117
local/modules/AdminComment/Loop/AdminCommentLoop.php
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace AdminComment\Loop;
|
||||||
|
|
||||||
|
|
||||||
|
use AdminComment\Model\AdminComment;
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Thelia\Core\Template\Element\BaseLoop;
|
||||||
|
use Thelia\Core\Template\Element\LoopResult;
|
||||||
|
use Thelia\Core\Template\Element\LoopResultRow;
|
||||||
|
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||||
|
use Thelia\Type;
|
||||||
|
|
||||||
|
class AdminCommentLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntListTypeArgument('id'),
|
||||||
|
Argument::createAlphaNumStringTypeArgument('element_key'),
|
||||||
|
Argument::createIntListTypeArgument('element_id'),
|
||||||
|
new Argument(
|
||||||
|
'order',
|
||||||
|
new Type\TypeCollection(
|
||||||
|
new Type\EnumListType(
|
||||||
|
[
|
||||||
|
'id',
|
||||||
|
'id_reverse',
|
||||||
|
'created',
|
||||||
|
'created_reverse',
|
||||||
|
'updated',
|
||||||
|
'updated_reverse'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'manual'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
$search = AdminCommentQuery::create();
|
||||||
|
|
||||||
|
$id = $this->getId();
|
||||||
|
if (null !== $id) {
|
||||||
|
$search->filterById($id, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$elementKey = $this->getElementKey();
|
||||||
|
if (null !== $elementKey) {
|
||||||
|
$search->filterByElementKey($elementKey, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$elementId = $this->getElementId();
|
||||||
|
if (null !== $elementId) {
|
||||||
|
$search->filterByElementId($elementId, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$orders = $this->getOrder();
|
||||||
|
if (null !== $orders) {
|
||||||
|
foreach ($orders as $order) {
|
||||||
|
switch ($order) {
|
||||||
|
case "id":
|
||||||
|
$search->orderById(Criteria::ASC);
|
||||||
|
break;
|
||||||
|
case "id_reverse":
|
||||||
|
$search->orderById(Criteria::DESC);
|
||||||
|
break;
|
||||||
|
case "created":
|
||||||
|
$search->addAscendingOrderByColumn('created_at');
|
||||||
|
break;
|
||||||
|
case "created_reverse":
|
||||||
|
$search->addDescendingOrderByColumn('created_at');
|
||||||
|
break;
|
||||||
|
case "updated":
|
||||||
|
$search->addAscendingOrderByColumn('updated_at');
|
||||||
|
break;
|
||||||
|
case "updated_reverse":
|
||||||
|
$search->addDescendingOrderByColumn('updated_at');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $search;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
/** @var AdminComment $comment */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $comment) {
|
||||||
|
$loopResultRow = new LoopResultRow($comment);
|
||||||
|
$admin = $comment->getAdmin();
|
||||||
|
$adminName = $admin ? $admin->getFirstname().' '.$admin->getLastname() : "";
|
||||||
|
$loopResultRow
|
||||||
|
->set('ID', $comment->getId())
|
||||||
|
->set('ADMIN_ID', $comment->getAdminId())
|
||||||
|
->set('ADMIN_NAME', $adminName)
|
||||||
|
->set('COMMENT', $comment->getComment())
|
||||||
|
->set('ELEMENT_KEY', $comment->getElementKey())
|
||||||
|
->set('ELEMENT_ID', $comment->getElementId())
|
||||||
|
->set('CREATED_AT', $comment->getCreatedAt())
|
||||||
|
->set('UPDATED_AT', $comment->getUpdatedAt());
|
||||||
|
|
||||||
|
$this->addOutputFields($loopResultRow, $comment);
|
||||||
|
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
local/modules/AdminComment/Model/AdminComment.php
Normal file
10
local/modules/AdminComment/Model/AdminComment.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminComment\Model;
|
||||||
|
|
||||||
|
use AdminComment\Model\Base\AdminComment as BaseAdminComment;
|
||||||
|
|
||||||
|
class AdminComment extends BaseAdminComment
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
21
local/modules/AdminComment/Model/AdminCommentQuery.php
Normal file
21
local/modules/AdminComment/Model/AdminCommentQuery.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminComment\Model;
|
||||||
|
|
||||||
|
use AdminComment\Model\Base\AdminCommentQuery as BaseAdminCommentQuery;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'admin_comment' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* You should add additional methods to this class to meet the
|
||||||
|
* application requirements. This class will only be generated as
|
||||||
|
* long as it does not already exist in the output directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class AdminCommentQuery extends BaseAdminCommentQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
} // AdminCommentQuery
|
||||||
1537
local/modules/AdminComment/Model/Base/AdminComment.php
Normal file
1537
local/modules/AdminComment/Model/Base/AdminComment.php
Normal file
File diff suppressed because it is too large
Load Diff
745
local/modules/AdminComment/Model/Base/AdminCommentQuery.php
Normal file
745
local/modules/AdminComment/Model/Base/AdminCommentQuery.php
Normal file
@@ -0,0 +1,745 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminComment\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use AdminComment\Model\AdminComment as ChildAdminComment;
|
||||||
|
use AdminComment\Model\AdminCommentQuery as ChildAdminCommentQuery;
|
||||||
|
use AdminComment\Model\Map\AdminCommentTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||||
|
use Propel\Runtime\Collection\Collection;
|
||||||
|
use Propel\Runtime\Collection\ObjectCollection;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Thelia\Model\Admin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'admin_comment' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildAdminCommentQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildAdminCommentQuery orderByAdminId($order = Criteria::ASC) Order by the admin_id column
|
||||||
|
* @method ChildAdminCommentQuery orderByComment($order = Criteria::ASC) Order by the comment column
|
||||||
|
* @method ChildAdminCommentQuery orderByElementKey($order = Criteria::ASC) Order by the element_key column
|
||||||
|
* @method ChildAdminCommentQuery orderByElementId($order = Criteria::ASC) Order by the element_id column
|
||||||
|
* @method ChildAdminCommentQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||||
|
* @method ChildAdminCommentQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildAdminCommentQuery groupById() Group by the id column
|
||||||
|
* @method ChildAdminCommentQuery groupByAdminId() Group by the admin_id column
|
||||||
|
* @method ChildAdminCommentQuery groupByComment() Group by the comment column
|
||||||
|
* @method ChildAdminCommentQuery groupByElementKey() Group by the element_key column
|
||||||
|
* @method ChildAdminCommentQuery groupByElementId() Group by the element_id column
|
||||||
|
* @method ChildAdminCommentQuery groupByCreatedAt() Group by the created_at column
|
||||||
|
* @method ChildAdminCommentQuery groupByUpdatedAt() Group by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildAdminCommentQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildAdminCommentQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildAdminCommentQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildAdminCommentQuery leftJoinAdmin($relationAlias = null) Adds a LEFT JOIN clause to the query using the Admin relation
|
||||||
|
* @method ChildAdminCommentQuery rightJoinAdmin($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Admin relation
|
||||||
|
* @method ChildAdminCommentQuery innerJoinAdmin($relationAlias = null) Adds a INNER JOIN clause to the query using the Admin relation
|
||||||
|
*
|
||||||
|
* @method ChildAdminComment findOne(ConnectionInterface $con = null) Return the first ChildAdminComment matching the query
|
||||||
|
* @method ChildAdminComment findOneOrCreate(ConnectionInterface $con = null) Return the first ChildAdminComment matching the query, or a new ChildAdminComment object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildAdminComment findOneById(int $id) Return the first ChildAdminComment filtered by the id column
|
||||||
|
* @method ChildAdminComment findOneByAdminId(int $admin_id) Return the first ChildAdminComment filtered by the admin_id column
|
||||||
|
* @method ChildAdminComment findOneByComment(string $comment) Return the first ChildAdminComment filtered by the comment column
|
||||||
|
* @method ChildAdminComment findOneByElementKey(string $element_key) Return the first ChildAdminComment filtered by the element_key column
|
||||||
|
* @method ChildAdminComment findOneByElementId(int $element_id) Return the first ChildAdminComment filtered by the element_id column
|
||||||
|
* @method ChildAdminComment findOneByCreatedAt(string $created_at) Return the first ChildAdminComment filtered by the created_at column
|
||||||
|
* @method ChildAdminComment findOneByUpdatedAt(string $updated_at) Return the first ChildAdminComment filtered by the updated_at column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildAdminComment objects filtered by the id column
|
||||||
|
* @method array findByAdminId(int $admin_id) Return ChildAdminComment objects filtered by the admin_id column
|
||||||
|
* @method array findByComment(string $comment) Return ChildAdminComment objects filtered by the comment column
|
||||||
|
* @method array findByElementKey(string $element_key) Return ChildAdminComment objects filtered by the element_key column
|
||||||
|
* @method array findByElementId(int $element_id) Return ChildAdminComment objects filtered by the element_id column
|
||||||
|
* @method array findByCreatedAt(string $created_at) Return ChildAdminComment objects filtered by the created_at column
|
||||||
|
* @method array findByUpdatedAt(string $updated_at) Return ChildAdminComment objects filtered by the updated_at column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class AdminCommentQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \AdminComment\Model\Base\AdminCommentQuery object.
|
||||||
|
*
|
||||||
|
* @param string $dbName The database name
|
||||||
|
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||||
|
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||||
|
*/
|
||||||
|
public function __construct($dbName = 'thelia', $modelName = '\\AdminComment\\Model\\AdminComment', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildAdminCommentQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \AdminComment\Model\AdminCommentQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \AdminComment\Model\AdminCommentQuery();
|
||||||
|
if (null !== $modelAlias) {
|
||||||
|
$query->setModelAlias($modelAlias);
|
||||||
|
}
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$query->mergeWith($criteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
* Propel uses the instance pool to skip the database if the object exists.
|
||||||
|
* Go fast if the query is untouched.
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* $obj = $c->findPk(12, $con);
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ChildAdminComment|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = AdminCommentTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||||
|
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||||
|
|| $this->map || $this->having || $this->joins) {
|
||||||
|
return $this->findPkComplex($key, $con);
|
||||||
|
} else {
|
||||||
|
return $this->findPkSimple($key, $con);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key using raw SQL to go fast.
|
||||||
|
* Bypass doSelect() and the object formatter by using generated code.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @return ChildAdminComment A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, ADMIN_ID, COMMENT, ELEMENT_KEY, ELEMENT_ID, CREATED_AT, UPDATED_AT FROM admin_comment WHERE ID = :p0';
|
||||||
|
try {
|
||||||
|
$stmt = $con->prepare($sql);
|
||||||
|
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||||
|
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||||
|
}
|
||||||
|
$obj = null;
|
||||||
|
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||||
|
$obj = new ChildAdminComment();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
AdminCommentTableMap::addInstanceToPool($obj, (string) $key);
|
||||||
|
}
|
||||||
|
$stmt->closeCursor();
|
||||||
|
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @return ChildAdminComment|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
protected function findPkComplex($key, $con)
|
||||||
|
{
|
||||||
|
// As the query uses a PK condition, no limit(1) is necessary.
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKey($key)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find objects by primary key
|
||||||
|
* <code>
|
||||||
|
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||||
|
* </code>
|
||||||
|
* @param array $keys Primary keys to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPks($keys, $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKeys($keys)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by primary key
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ID, $key, Criteria::EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a list of primary keys
|
||||||
|
*
|
||||||
|
* @param array $keys The list of primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ID, $keys, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterById(1234); // WHERE id = 1234
|
||||||
|
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||||
|
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $id The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterById($id = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($id)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($id['min'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the admin_id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByAdminId(1234); // WHERE admin_id = 1234
|
||||||
|
* $query->filterByAdminId(array(12, 34)); // WHERE admin_id IN (12, 34)
|
||||||
|
* $query->filterByAdminId(array('min' => 12)); // WHERE admin_id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @see filterByAdmin()
|
||||||
|
*
|
||||||
|
* @param mixed $adminId The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByAdminId($adminId = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($adminId)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($adminId['min'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($adminId['max'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the comment column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByComment('fooValue'); // WHERE comment = 'fooValue'
|
||||||
|
* $query->filterByComment('%fooValue%'); // WHERE comment LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $comment 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 ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByComment($comment = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($comment)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $comment)) {
|
||||||
|
$comment = str_replace('*', '%', $comment);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::COMMENT, $comment, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the element_key column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByElementKey('fooValue'); // WHERE element_key = 'fooValue'
|
||||||
|
* $query->filterByElementKey('%fooValue%'); // WHERE element_key LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $elementKey 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 ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByElementKey($elementKey = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($elementKey)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $elementKey)) {
|
||||||
|
$elementKey = str_replace('*', '%', $elementKey);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ELEMENT_KEY, $elementKey, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the element_id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByElementId(1234); // WHERE element_id = 1234
|
||||||
|
* $query->filterByElementId(array(12, 34)); // WHERE element_id IN (12, 34)
|
||||||
|
* $query->filterByElementId(array('min' => 12)); // WHERE element_id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $elementId The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByElementId($elementId = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($elementId)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($elementId['min'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($elementId['max'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the created_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $createdAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByCreatedAt($createdAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($createdAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($createdAt['min'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($createdAt['max'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the updated_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $updatedAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByUpdatedAt($updatedAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($updatedAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($updatedAt['min'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($updatedAt['max'])) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a related \Thelia\Model\Admin object
|
||||||
|
*
|
||||||
|
* @param \Thelia\Model\Admin|ObjectCollection $admin The related object(s) to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByAdmin($admin, $comparison = null)
|
||||||
|
{
|
||||||
|
if ($admin instanceof \Thelia\Model\Admin) {
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $admin->getId(), $comparison);
|
||||||
|
} elseif ($admin instanceof ObjectCollection) {
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $admin->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||||
|
} else {
|
||||||
|
throw new PropelException('filterByAdmin() only accepts arguments of type \Thelia\Model\Admin or Collection');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a JOIN clause to the query using the Admin relation
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function joinAdmin($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
|
||||||
|
{
|
||||||
|
$tableMap = $this->getTableMap();
|
||||||
|
$relationMap = $tableMap->getRelation('Admin');
|
||||||
|
|
||||||
|
// create a ModelJoin object for this join
|
||||||
|
$join = new ModelJoin();
|
||||||
|
$join->setJoinType($joinType);
|
||||||
|
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||||
|
if ($previousJoin = $this->getPreviousJoin()) {
|
||||||
|
$join->setPreviousJoin($previousJoin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the ModelJoin to the current object
|
||||||
|
if ($relationAlias) {
|
||||||
|
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||||
|
$this->addJoinObject($join, $relationAlias);
|
||||||
|
} else {
|
||||||
|
$this->addJoinObject($join, 'Admin');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the Admin relation Admin object
|
||||||
|
*
|
||||||
|
* @see useQuery()
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation,
|
||||||
|
* to be used as main alias in the secondary query
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return \Thelia\Model\AdminQuery A secondary query class using the current class as primary query
|
||||||
|
*/
|
||||||
|
public function useAdminQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->joinAdmin($relationAlias, $joinType)
|
||||||
|
->useQuery($relationAlias ? $relationAlias : 'Admin', '\Thelia\Model\AdminQuery');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildAdminComment $adminComment Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($adminComment = null)
|
||||||
|
{
|
||||||
|
if ($adminComment) {
|
||||||
|
$this->addUsingAlias(AdminCommentTableMap::ID, $adminComment->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the admin_comment table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
$con->beginTransaction();
|
||||||
|
$affectedRows += parent::doDeleteAll($con);
|
||||||
|
// Because this db requires some delete cascade/set null emulation, we have to
|
||||||
|
// clear the cached instance *after* the emulation has happened (since
|
||||||
|
// instances get re-added by the select statement contained therein).
|
||||||
|
AdminCommentTableMap::clearInstancePool();
|
||||||
|
AdminCommentTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildAdminComment or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildAdminComment object or primary key or array of primary keys
|
||||||
|
* which is used to create the DELETE statement
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public function delete(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
$con->beginTransaction();
|
||||||
|
|
||||||
|
|
||||||
|
AdminCommentTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
AdminCommentTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// timestampable behavior
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest updated
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of the latest update in days
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyUpdated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest created
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of in days
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyCreated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(AdminCommentTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date desc
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(AdminCommentTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date asc
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(AdminCommentTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date desc
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(AdminCommentTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date asc
|
||||||
|
*
|
||||||
|
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(AdminCommentTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // AdminCommentQuery
|
||||||
464
local/modules/AdminComment/Model/Map/AdminCommentTableMap.php
Normal file
464
local/modules/AdminComment/Model/Map/AdminCommentTableMap.php
Normal file
@@ -0,0 +1,464 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminComment\Model\Map;
|
||||||
|
|
||||||
|
use AdminComment\Model\AdminComment;
|
||||||
|
use AdminComment\Model\AdminCommentQuery;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Propel\Runtime\Map\RelationMap;
|
||||||
|
use Propel\Runtime\Map\TableMap;
|
||||||
|
use Propel\Runtime\Map\TableMapTrait;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class defines the structure of the 'admin_comment' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This map class is used by Propel to do runtime db structure discovery.
|
||||||
|
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||||
|
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||||
|
* (i.e. if it's a text column type).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class AdminCommentTableMap extends TableMap
|
||||||
|
{
|
||||||
|
use InstancePoolTrait;
|
||||||
|
use TableMapTrait;
|
||||||
|
/**
|
||||||
|
* The (dot-path) name of this class
|
||||||
|
*/
|
||||||
|
const CLASS_NAME = 'AdminComment.Model.Map.AdminCommentTableMap';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default database name for this class
|
||||||
|
*/
|
||||||
|
const DATABASE_NAME = 'thelia';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table name for this class
|
||||||
|
*/
|
||||||
|
const TABLE_NAME = 'admin_comment';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The related Propel class for this table
|
||||||
|
*/
|
||||||
|
const OM_CLASS = '\\AdminComment\\Model\\AdminComment';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that can be returned by this tableMap
|
||||||
|
*/
|
||||||
|
const CLASS_DEFAULT = 'AdminComment.Model.AdminComment';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The total number of columns
|
||||||
|
*/
|
||||||
|
const NUM_COLUMNS = 7;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of lazy-loaded columns
|
||||||
|
*/
|
||||||
|
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||||
|
*/
|
||||||
|
const NUM_HYDRATE_COLUMNS = 7;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ID field
|
||||||
|
*/
|
||||||
|
const ID = 'admin_comment.ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ADMIN_ID field
|
||||||
|
*/
|
||||||
|
const ADMIN_ID = 'admin_comment.ADMIN_ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the COMMENT field
|
||||||
|
*/
|
||||||
|
const COMMENT = 'admin_comment.COMMENT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ELEMENT_KEY field
|
||||||
|
*/
|
||||||
|
const ELEMENT_KEY = 'admin_comment.ELEMENT_KEY';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ELEMENT_ID field
|
||||||
|
*/
|
||||||
|
const ELEMENT_ID = 'admin_comment.ELEMENT_ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the CREATED_AT field
|
||||||
|
*/
|
||||||
|
const CREATED_AT = 'admin_comment.CREATED_AT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the UPDATED_AT field
|
||||||
|
*/
|
||||||
|
const UPDATED_AT = 'admin_comment.UPDATED_AT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default string format for model objects of the related table
|
||||||
|
*/
|
||||||
|
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of fieldnames
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||||
|
*/
|
||||||
|
protected static $fieldNames = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id', 'AdminId', 'Comment', 'ElementKey', 'ElementId', 'CreatedAt', 'UpdatedAt', ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id', 'adminId', 'comment', 'elementKey', 'elementId', 'createdAt', 'updatedAt', ),
|
||||||
|
self::TYPE_COLNAME => array(AdminCommentTableMap::ID, AdminCommentTableMap::ADMIN_ID, AdminCommentTableMap::COMMENT, AdminCommentTableMap::ELEMENT_KEY, AdminCommentTableMap::ELEMENT_ID, AdminCommentTableMap::CREATED_AT, AdminCommentTableMap::UPDATED_AT, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID', 'ADMIN_ID', 'COMMENT', 'ELEMENT_KEY', 'ELEMENT_ID', 'CREATED_AT', 'UPDATED_AT', ),
|
||||||
|
self::TYPE_FIELDNAME => array('id', 'admin_id', 'comment', 'element_key', 'element_id', 'created_at', 'updated_at', ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of keys for quick access to the fieldnames array
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||||
|
*/
|
||||||
|
protected static $fieldKeys = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id' => 0, 'AdminId' => 1, 'Comment' => 2, 'ElementKey' => 3, 'ElementId' => 4, 'CreatedAt' => 5, 'UpdatedAt' => 6, ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'adminId' => 1, 'comment' => 2, 'elementKey' => 3, 'elementId' => 4, 'createdAt' => 5, 'updatedAt' => 6, ),
|
||||||
|
self::TYPE_COLNAME => array(AdminCommentTableMap::ID => 0, AdminCommentTableMap::ADMIN_ID => 1, AdminCommentTableMap::COMMENT => 2, AdminCommentTableMap::ELEMENT_KEY => 3, AdminCommentTableMap::ELEMENT_ID => 4, AdminCommentTableMap::CREATED_AT => 5, AdminCommentTableMap::UPDATED_AT => 6, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ADMIN_ID' => 1, 'COMMENT' => 2, 'ELEMENT_KEY' => 3, 'ELEMENT_ID' => 4, 'CREATED_AT' => 5, 'UPDATED_AT' => 6, ),
|
||||||
|
self::TYPE_FIELDNAME => array('id' => 0, 'admin_id' => 1, 'comment' => 2, 'element_key' => 3, 'element_id' => 4, 'created_at' => 5, 'updated_at' => 6, ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the table attributes and columns
|
||||||
|
* Relations are not initialized by this method since they are lazy loaded
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws PropelException
|
||||||
|
*/
|
||||||
|
public function initialize()
|
||||||
|
{
|
||||||
|
// attributes
|
||||||
|
$this->setName('admin_comment');
|
||||||
|
$this->setPhpName('AdminComment');
|
||||||
|
$this->setClassName('\\AdminComment\\Model\\AdminComment');
|
||||||
|
$this->setPackage('AdminComment.Model');
|
||||||
|
$this->setUseIdGenerator(true);
|
||||||
|
// columns
|
||||||
|
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||||
|
$this->addForeignKey('ADMIN_ID', 'AdminId', 'INTEGER', 'admin', 'ID', false, null, null);
|
||||||
|
$this->addColumn('COMMENT', 'Comment', 'LONGVARCHAR', false, null, null);
|
||||||
|
$this->addColumn('ELEMENT_KEY', 'ElementKey', 'VARCHAR', true, 255, null);
|
||||||
|
$this->addColumn('ELEMENT_ID', 'ElementId', 'INTEGER', true, null, null);
|
||||||
|
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
|
||||||
|
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
|
||||||
|
} // initialize()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the RelationMap objects for this table relationships
|
||||||
|
*/
|
||||||
|
public function buildRelations()
|
||||||
|
{
|
||||||
|
$this->addRelation('Admin', '\\Thelia\\Model\\Admin', RelationMap::MANY_TO_ONE, array('admin_id' => 'id', ), 'SET NULL', 'RESTRICT');
|
||||||
|
} // buildRelations()
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Gets the list of behaviors registered for this table
|
||||||
|
*
|
||||||
|
* @return array Associative array (name => parameters) of behaviors
|
||||||
|
*/
|
||||||
|
public function getBehaviors()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
|
||||||
|
);
|
||||||
|
} // getBehaviors()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||||
|
*
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
// If the PK cannot be derived from the row, return NULL.
|
||||||
|
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the primary key from the DB resultset row
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*
|
||||||
|
* @return mixed The primary key of the row
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
|
||||||
|
return (int) $row[
|
||||||
|
$indexType == TableMap::TYPE_NUM
|
||||||
|
? 0 + $offset
|
||||||
|
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class that the tableMap will make instances of.
|
||||||
|
*
|
||||||
|
* If $withPrefix is true, the returned path
|
||||||
|
* uses a dot-path notation which is translated into a path
|
||||||
|
* relative to a location on the PHP include_path.
|
||||||
|
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||||
|
*
|
||||||
|
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||||
|
* @return string path.to.ClassName
|
||||||
|
*/
|
||||||
|
public static function getOMClass($withPrefix = true)
|
||||||
|
{
|
||||||
|
return $withPrefix ? AdminCommentTableMap::CLASS_DEFAULT : AdminCommentTableMap::OM_CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates an object of the default type or an object that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param array $row row returned by DataFetcher->fetch().
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||||
|
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||||
|
*
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
* @return array (AdminComment object, last column rank)
|
||||||
|
*/
|
||||||
|
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
$key = AdminCommentTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||||
|
if (null !== ($obj = AdminCommentTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||||
|
$col = $offset + AdminCommentTableMap::NUM_HYDRATE_COLUMNS;
|
||||||
|
} else {
|
||||||
|
$cls = AdminCommentTableMap::OM_CLASS;
|
||||||
|
$obj = new $cls();
|
||||||
|
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||||
|
AdminCommentTableMap::addInstanceToPool($obj, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array($obj, $col);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The returned array will contain objects of the default type or
|
||||||
|
* objects that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param DataFetcherInterface $dataFetcher
|
||||||
|
* @return array
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||||
|
{
|
||||||
|
$results = array();
|
||||||
|
|
||||||
|
// set the class once to avoid overhead in the loop
|
||||||
|
$cls = static::getOMClass(false);
|
||||||
|
// populate the object(s)
|
||||||
|
while ($row = $dataFetcher->fetch()) {
|
||||||
|
$key = AdminCommentTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||||
|
if (null !== ($obj = AdminCommentTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, 0, true); // rehydrate
|
||||||
|
$results[] = $obj;
|
||||||
|
} else {
|
||||||
|
$obj = new $cls();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
$results[] = $obj;
|
||||||
|
AdminCommentTableMap::addInstanceToPool($obj, $key);
|
||||||
|
} // if key exists
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Add all the columns needed to create a new object.
|
||||||
|
*
|
||||||
|
* Note: any columns that were marked with lazyLoad="true" in the
|
||||||
|
* XML schema will not be added to the select list and only loaded
|
||||||
|
* on demand.
|
||||||
|
*
|
||||||
|
* @param Criteria $criteria object containing the columns to add.
|
||||||
|
* @param string $alias optional table alias
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||||
|
{
|
||||||
|
if (null === $alias) {
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::ID);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::ADMIN_ID);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::COMMENT);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::ELEMENT_KEY);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::ELEMENT_ID);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::CREATED_AT);
|
||||||
|
$criteria->addSelectColumn(AdminCommentTableMap::UPDATED_AT);
|
||||||
|
} else {
|
||||||
|
$criteria->addSelectColumn($alias . '.ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.ADMIN_ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.COMMENT');
|
||||||
|
$criteria->addSelectColumn($alias . '.ELEMENT_KEY');
|
||||||
|
$criteria->addSelectColumn($alias . '.ELEMENT_ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.CREATED_AT');
|
||||||
|
$criteria->addSelectColumn($alias . '.UPDATED_AT');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the TableMap related to this object.
|
||||||
|
* This method is not needed for general use but a specific application could have a need.
|
||||||
|
* @return TableMap
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function getTableMap()
|
||||||
|
{
|
||||||
|
return Propel::getServiceContainer()->getDatabaseMap(AdminCommentTableMap::DATABASE_NAME)->getTable(AdminCommentTableMap::TABLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a TableMap instance to the database for this tableMap class.
|
||||||
|
*/
|
||||||
|
public static function buildTableMap()
|
||||||
|
{
|
||||||
|
$dbMap = Propel::getServiceContainer()->getDatabaseMap(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
if (!$dbMap->hasTable(AdminCommentTableMap::TABLE_NAME)) {
|
||||||
|
$dbMap->addTableObject(new AdminCommentTableMap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a AdminComment or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or AdminComment object or primary key or array of primary keys
|
||||||
|
* which is used to create the DELETE statement
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doDelete($values, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) {
|
||||||
|
// rename for clarity
|
||||||
|
$criteria = $values;
|
||||||
|
} elseif ($values instanceof \AdminComment\Model\AdminComment) { // it's a model object
|
||||||
|
// create criteria based on pk values
|
||||||
|
$criteria = $values->buildPkeyCriteria();
|
||||||
|
} else { // it's a primary key, or an array of pks
|
||||||
|
$criteria = new Criteria(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
$criteria->add(AdminCommentTableMap::ID, (array) $values, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = AdminCommentQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) { AdminCommentTableMap::clearInstancePool();
|
||||||
|
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||||
|
foreach ((array) $values as $singleval) { AdminCommentTableMap::removeInstanceFromPool($singleval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query->delete($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the admin_comment table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
return AdminCommentQuery::create()->doDeleteAll($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs an INSERT on the database, given a AdminComment or Criteria object.
|
||||||
|
*
|
||||||
|
* @param mixed $criteria Criteria or AdminComment object containing data that is used to create the INSERT statement.
|
||||||
|
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||||
|
* @return mixed The new primary key.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$criteria = clone $criteria; // rename for clarity
|
||||||
|
} else {
|
||||||
|
$criteria = $criteria->buildCriteria(); // build Criteria from AdminComment object
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria->containsKey(AdminCommentTableMap::ID) && $criteria->keyContainsValue(AdminCommentTableMap::ID) ) {
|
||||||
|
throw new PropelException('Cannot insert a value for auto-increment primary key ('.AdminCommentTableMap::ID.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$query = AdminCommentQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table (I guess, conceivably)
|
||||||
|
$con->beginTransaction();
|
||||||
|
$pk = $query->doInsert($con);
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $pk;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // AdminCommentTableMap
|
||||||
|
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||||
|
//
|
||||||
|
AdminCommentTableMap::buildTableMap();
|
||||||
67
local/modules/AdminComment/README.md
Normal file
67
local/modules/AdminComment/README.md
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# Admin Comment
|
||||||
|
|
||||||
|
This module allows you to add comments on each part of the back office : categories, products, folders, contents,
|
||||||
|
orders, customers and coupons.
|
||||||
|
These comments are not visible for customers.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Manually
|
||||||
|
|
||||||
|
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the
|
||||||
|
module is AdminComment.
|
||||||
|
* Activate it in your thelia administration panel
|
||||||
|
|
||||||
|
### Composer
|
||||||
|
|
||||||
|
Add it in your main thelia composer.json file
|
||||||
|
|
||||||
|
```
|
||||||
|
composer require thelia/admin-comment-module ~1.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## configuration
|
||||||
|
|
||||||
|
no special configurations needed. just set the permissions for administrators.
|
||||||
|
|
||||||
|
## Loop
|
||||||
|
|
||||||
|
Get the comment by loop
|
||||||
|
|
||||||
|
### Input arguments
|
||||||
|
|
||||||
|
|Argument |Description |
|
||||||
|
|--- |--- |
|
||||||
|
|**id** | The id of comment |
|
||||||
|
|**element_key** | The key of commented element |
|
||||||
|
|**element_id** | The id of commented element |
|
||||||
|
|
||||||
|
### Ouput arguments
|
||||||
|
|
||||||
|
|Variable |Description |
|
||||||
|
|--- |--- |
|
||||||
|
|$ID |the comment ID |
|
||||||
|
|$ADMIN_ID |Author id |
|
||||||
|
|$ADMIN_NAME |Author name |
|
||||||
|
|$COMMENT |The message |
|
||||||
|
|$ELEMENT_KEY |The key of commented element |
|
||||||
|
|$ELEMENT_ID |The id of commented element |
|
||||||
|
|$CREATED_AT |Comment creation date|
|
||||||
|
|$UPDATED_AT |Comment update date |
|
||||||
|
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
### 1.1.1
|
||||||
|
|
||||||
|
- Add loop for admin comment
|
||||||
|
|
||||||
|
### 1.1.0
|
||||||
|
|
||||||
|
- Add tab in edit page with comment counter in tab title
|
||||||
|
- Add comment counter in order list
|
||||||
|
|
||||||
|
### 1.0.1
|
||||||
|
|
||||||
|
- Fixed module activation
|
||||||
|
- Removed JS dependency to missing bootbox lib
|
||||||
11
local/modules/AdminComment/composer.json
Normal file
11
local/modules/AdminComment/composer.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "thelia/admin-comment-module",
|
||||||
|
"license": "LGPL-3.0+",
|
||||||
|
"type": "thelia-module",
|
||||||
|
"require": {
|
||||||
|
"thelia/installer": "~1.1"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"installer-name": "AdminComment"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
var adminCommentConfig = {
|
||||||
|
'key': '{$key}',
|
||||||
|
'id': {$id},
|
||||||
|
'urlList': "{url path="/admin/module/AdminComment/list/$key/$id"}"
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<div id="admin-comment-wrapper" class="container hidden">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 general-block-decorator">
|
||||||
|
<div>
|
||||||
|
<div class="title">
|
||||||
|
{intl l="Admin Comments" d="admincomment.bo.default"}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{form name="admin_comment_create_form"}
|
||||||
|
<form id="admin-comment-form" method="post" action="{url path="/admin/module/AdminComment/create"}" {form_enctype form=$form}>
|
||||||
|
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{form_field form=$form field="admin_id"}
|
||||||
|
<input type="hidden" name="{$name}" value="{admin attr="id"}">
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="element_key"}
|
||||||
|
<input type="hidden" id="admin-comment-form-key" name="{$name}" value="">
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="element_id"}
|
||||||
|
<input type="hidden" id="admin-comment-form-id" name="{$name}" value="">
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="comment"}
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea id="admin-comment-form-comment" name="{$name}" class="form-control">{$value}</textarea>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="submit" class="btn btn-primary">{intl l="Save" d="admincomment.bo.default"}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{/form}
|
||||||
|
|
||||||
|
<div id="admin-comment-list" class="list-group">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{* JS Templates *}
|
||||||
|
<script id="tpl-admin-comment" type="text/html">
|
||||||
|
<div class="list-group-item" data-id="<%= comment.id %>">
|
||||||
|
<h4 class="list-group-item-heading u-no-padding"><%= comment.admin %> (<%= comment.date %>)</h4>
|
||||||
|
<p class="list-group-item-text u-padding-bottom">
|
||||||
|
<%= comment.comment %>
|
||||||
|
</p>
|
||||||
|
<% if (comment.canChange) { %>
|
||||||
|
<div class="list-group-item-form hidden">
|
||||||
|
{form name="admin_comment_update_form"}
|
||||||
|
<form class="admin-comment-form" method="post" action="{url path="/admin/module/AdminComment/save"}" {form_enctype form=$form}>
|
||||||
|
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{form_field form=$form field="id"}
|
||||||
|
<input type="hidden" name="{$name}" value="<%= comment.id %>">
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="comment"}
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea name="{$name}" class="form-control"><%= comment.comment %></textarea>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="submit" class="btn btn-primary">{intl l="Save" d="admincomment.bo.default"}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{/form}
|
||||||
|
</div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<a class="btn btn-default btn-xs js-admincomment-edit" title="{intl d='admincomment.bo.default' l='Edit this comment'}">
|
||||||
|
<span class="glyphicon glyphicon-pencil"></span>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-default btn-xs js-admincomment-delete" data-id="<%= comment.id %>" data-action="{url path="/admin/module/AdminComment/delete"}" title="{intl d='admincomment.bo.default' l='Delete this comment'}" >
|
||||||
|
<span class="glyphicon glyphicon-trash"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{include
|
||||||
|
file = "includes/generic-warning-dialog.html"
|
||||||
|
|
||||||
|
dialog_id = "admin_comment_dialog"
|
||||||
|
dialog_title = {intl d='admincomment.bo.default' l="Message"}
|
||||||
|
dialog_body = ""
|
||||||
|
}
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
if (typeof window._ == 'undefined') {
|
||||||
|
{javascripts file='assets/js/libs/underscore-min.js'}
|
||||||
|
console.log("underscore");
|
||||||
|
document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E"));
|
||||||
|
{/javascripts}
|
||||||
|
}
|
||||||
|
|
||||||
|
{literal}
|
||||||
|
(function ($, undefined) {
|
||||||
|
$(document).ready(function () {
|
||||||
|
if (window.adminCommentConfig === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $container = $('#admin-comment-wrapper'),
|
||||||
|
$list = $('#admin-comment-list'),
|
||||||
|
$form = $('#admin-comment-form'),
|
||||||
|
$inputComment = $('#admin-comment-form-comment'),
|
||||||
|
$inputKey = $('#admin-comment-form-key'),
|
||||||
|
$inputId = $('#admin-comment-form-id'),
|
||||||
|
tplComment = _.template($("#tpl-admin-comment").html())
|
||||||
|
;
|
||||||
|
|
||||||
|
$container.removeClass("hidden");
|
||||||
|
$inputKey.val(window.adminCommentConfig.key);
|
||||||
|
$inputId.val(window.adminCommentConfig.id);
|
||||||
|
|
||||||
|
var showMessage = function showMessage(message) {
|
||||||
|
$('#admin_comment_dialog')
|
||||||
|
.find('.modal-body')
|
||||||
|
.html(message)
|
||||||
|
.end()
|
||||||
|
.modal("show");
|
||||||
|
};
|
||||||
|
|
||||||
|
var listComment = function listComment() {
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
dataType: 'json',
|
||||||
|
url: window.adminCommentConfig.urlList
|
||||||
|
}).done(function(data, textStatus, jqXHR){
|
||||||
|
var html = '';
|
||||||
|
if (data.success) {
|
||||||
|
$list.html("");
|
||||||
|
for (var i = 0 ; i < data.data.length ; i++) {
|
||||||
|
html += tplComment({comment: data.data[i]});
|
||||||
|
}
|
||||||
|
$list.html(html);
|
||||||
|
} else {
|
||||||
|
showMessage(data.message);
|
||||||
|
}
|
||||||
|
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||||
|
showMessage(textStatus);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
$form.on('submit', function (ev) {
|
||||||
|
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'json',
|
||||||
|
data: $(this).serialize(),
|
||||||
|
url: $(this).attr('action')
|
||||||
|
}).done(function(data, textStatus, jqXHR){
|
||||||
|
if (data.success) {
|
||||||
|
$list.prepend(tplComment({comment: data.data}));
|
||||||
|
$inputComment.val("");
|
||||||
|
} else {
|
||||||
|
showMessage(data.message);
|
||||||
|
}
|
||||||
|
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||||
|
showMessage(textStatus);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$list.on('click', '.js-admincomment-delete', function(ev){
|
||||||
|
|
||||||
|
var $deleteButton = $(this);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'json',
|
||||||
|
data: {id: $deleteButton.data('id')},
|
||||||
|
url: $deleteButton.data("action")
|
||||||
|
}).done(function(data, textStatus, jqXHR){
|
||||||
|
if (data.success) {
|
||||||
|
$deleteButton.parents('.list-group-item').remove();
|
||||||
|
} else {
|
||||||
|
showMessage(data.message);
|
||||||
|
}
|
||||||
|
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||||
|
showMessage(textStatus);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$list.on('click', '.js-admincomment-edit', function(ev){
|
||||||
|
var $listItem = $(this).parents('.list-group-item');
|
||||||
|
$listItem.find('.list-group-item-text').addClass('hidden');
|
||||||
|
$listItem.find('.list-group-item-form').removeClass('hidden');
|
||||||
|
});
|
||||||
|
|
||||||
|
$list.on('submit', '.admin-comment-form', function (ev) {
|
||||||
|
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
var $editForm = $(this),
|
||||||
|
$listItem = $editForm.parents(".list-group-item").first();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'json',
|
||||||
|
data: $editForm.serialize(),
|
||||||
|
url: $editForm.attr('action')
|
||||||
|
}).done(function(data, textStatus, jqXHR){
|
||||||
|
if (data.success) {
|
||||||
|
$listItem.find('.list-group-item-text').html(data.data.comment).removeClass('hidden');
|
||||||
|
$listItem.find('.list-group-item-form').addClass('hidden');
|
||||||
|
} else {
|
||||||
|
showMessage(data.message);
|
||||||
|
}
|
||||||
|
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||||
|
showMessage(textStatus);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
listComment();
|
||||||
|
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
|
{/literal}
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -153,6 +153,8 @@
|
|||||||
<p style="font-size: 80%; margin-bottom: 0;">N° SIRET : 312 033 764 00043</p>
|
<p style="font-size: 80%; margin-bottom: 0;">N° SIRET : 312 033 764 00043</p>
|
||||||
<p style="font-size: 65%;">Dispensé d'immatriculation en application de l'article L123-1-1 du code du commerce.</p>
|
<p style="font-size: 65%;">Dispensé d'immatriculation en application de l'article L123-1-1 du code du commerce.</p>
|
||||||
|
|
||||||
|
<p style="font-size: 80%; margin-bottom: 0; margin-top: 20px;">N° de bon de commande : {loop name="admin-comment" type="admin_comment" element_key="order" element_id={$ID}}{$COMMENT}{/loop}</p>
|
||||||
|
|
||||||
<p style="margin-top: 5mm; text-align: right;">
|
<p style="margin-top: 5mm; text-align: right;">
|
||||||
Mode de paiement : {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}
|
Mode de paiement : {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -125,7 +125,7 @@
|
|||||||
{$total = $total + $TOTAL_TAXED_AMOUNT}
|
{$total = $total + $TOTAL_TAXED_AMOUNT}
|
||||||
<tr class="small{if $STATUS > 1} bold{/if}">
|
<tr class="small{if $STATUS > 1} bold{/if}">
|
||||||
<td>{format_date date=$CREATE_DATE output="date"}</td>
|
<td>{format_date date=$CREATE_DATE output="date"}</td>
|
||||||
<td> </td>
|
<td>{loop name="admin-comment" type="admin_comment" element_key="order" element_id={$ID}}{$COMMENT}{/loop}</td>
|
||||||
<td>{$INVOICE_REF|default:$REF}</td>
|
<td>{$INVOICE_REF|default:$REF}</td>
|
||||||
<td>{loop type="module" name="pay" id=$PAYMENT_MODULE}{$TITLE}{/loop}</td>
|
<td>{loop type="module" name="pay" id=$PAYMENT_MODULE}{$TITLE}{/loop}</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
Reference in New Issue
Block a user