mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-11 10:56:58 +01:00
* [ADD] Finished items manager refactoring. Work in progress.
This commit is contained in:
@@ -59,7 +59,6 @@ class AccessManagerController extends ControllerBase
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\InvalidArgumentException
|
||||
* @throws \SP\Core\Exceptions\InvalidClassException
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
@@ -70,7 +69,6 @@ class AccessManagerController extends ControllerBase
|
||||
* Returns a tabbed grid with items
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\InvalidArgumentException
|
||||
* @throws \SP\Core\Exceptions\InvalidClassException
|
||||
*/
|
||||
protected function getGridTabs()
|
||||
{
|
||||
@@ -150,8 +148,6 @@ class AccessManagerController extends ControllerBase
|
||||
|
||||
/**
|
||||
* Returns public links data tab
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\InvalidClassException
|
||||
*/
|
||||
protected function getPublicLinksList()
|
||||
{
|
||||
|
||||
282
app/modules/web/Controllers/CategoryController.php
Normal file
282
app/modules/web/Controllers/CategoryController.php
Normal file
@@ -0,0 +1,282 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
|
||||
use SP\Controller\ControllerBase;
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\Forms\CategoryForm;
|
||||
use SP\Http\JsonResponse;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\ItemTrait;
|
||||
use SP\Modules\Web\Controllers\Traits\JsonTrait;
|
||||
use SP\Mvc\Controller\CrudControllerInterface;
|
||||
use SP\Services\Category\CategoryService;
|
||||
|
||||
/**
|
||||
* Class CategoryController
|
||||
*
|
||||
* @package SP\Modules\Web\Controllers
|
||||
*/
|
||||
class CategoryController extends ControllerBase implements CrudControllerInterface
|
||||
{
|
||||
use JsonTrait;
|
||||
use ItemTrait;
|
||||
|
||||
/**
|
||||
* @var CategoryService
|
||||
*/
|
||||
protected $categoryService;
|
||||
|
||||
/**
|
||||
* Search action
|
||||
*/
|
||||
public function searchAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_SEARCH)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$itemsGridHelper = new ItemsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
$grid = $itemsGridHelper->getCategoriesGrid($this->categoryService->search($this->getSearchData($this->configData)))->updatePager();
|
||||
|
||||
$this->view->addTemplate('datagrid-table', 'grid');
|
||||
$this->view->assign('index', Request::analyze('activetab', 0));
|
||||
$this->view->assign('data', $grid);
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create action
|
||||
*
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function createAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign(__FUNCTION__, 1);
|
||||
$this->view->assign('header', __('Nueva Categoría'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'category/saveCreate');
|
||||
|
||||
try {
|
||||
$this->setViewData();
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.category.create', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(1, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets view data for displaying user's data
|
||||
*
|
||||
* @param $categoryId
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
protected function setViewData($categoryId = null)
|
||||
{
|
||||
$this->view->addTemplate('category', 'itemshow');
|
||||
|
||||
$category = $categoryId ? $this->categoryService->getById($categoryId) : new CategoryData();
|
||||
|
||||
$this->view->assign('category', $category);
|
||||
|
||||
$this->view->assign('sk', SessionUtil::getSessionKey(true));
|
||||
$this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE));
|
||||
|
||||
if ($this->view->isView === true) {
|
||||
$this->view->assign('disabled', 'disabled');
|
||||
$this->view->assign('readonly', 'readonly');
|
||||
} else {
|
||||
$this->view->assign('disabled');
|
||||
$this->view->assign('readonly');
|
||||
}
|
||||
|
||||
$this->view->assign('customFields', $this->getCustomFieldsForItem(ActionsInterface::CATEGORY, $categoryId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function editAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Editar Categoría'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'category/saveEdit/' . $id);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.category.edit', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function deleteAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_DELETE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->categoryService->delete($id);
|
||||
|
||||
$this->deleteCustomFieldsForItem(ActionsInterface::CATEGORY, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('delete.category', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Categoría eliminada'));
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves create action
|
||||
*/
|
||||
public function saveCreateAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new CategoryForm();
|
||||
$form->validate(ActionsInterface::CATEGORY_CREATE);
|
||||
|
||||
$id = $this->categoryService->create($form->getItemData());
|
||||
|
||||
$this->addCustomFieldsForItem(ActionsInterface::CATEGORY, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.category', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Categoría creada'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves edit action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function saveEditAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new CategoryForm($id);
|
||||
$form->validate(ActionsInterface::CATEGORY_EDIT);
|
||||
|
||||
$this->categoryService->update($form->getItemData());
|
||||
|
||||
$this->updateCustomFieldsForItem(ActionsInterface::CATEGORY, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.category', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Categoría actualizada'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function viewAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CATEGORY_VIEW)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Ver Categoría'));
|
||||
$this->view->assign('isView', true);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.category', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize class
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->checkLoggedIn();
|
||||
|
||||
$this->categoryService = new CategoryService();
|
||||
}
|
||||
|
||||
}
|
||||
278
app/modules/web/Controllers/ClientController.php
Normal file
278
app/modules/web/Controllers/ClientController.php
Normal file
@@ -0,0 +1,278 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
|
||||
use SP\Controller\ControllerBase;
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\Forms\ClientForm;
|
||||
use SP\Http\JsonResponse;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\ItemTrait;
|
||||
use SP\Modules\Web\Controllers\Traits\JsonTrait;
|
||||
use SP\Mvc\Controller\CrudControllerInterface;
|
||||
use SP\Services\Client\ClientService;
|
||||
|
||||
/**
|
||||
* Class ClientController
|
||||
*
|
||||
* @package SP\Modules\Web\Controllers
|
||||
*/
|
||||
class ClientController extends ControllerBase implements CrudControllerInterface
|
||||
{
|
||||
use JsonTrait;
|
||||
use ItemTrait;
|
||||
|
||||
/**
|
||||
* @var ClientService
|
||||
*/
|
||||
protected $clientService;
|
||||
|
||||
/**
|
||||
* Search action
|
||||
*/
|
||||
public function searchAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_SEARCH)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$itemsGridHelper = new ItemsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
$grid = $itemsGridHelper->getClientsGrid($this->clientService->search($this->getSearchData($this->configData)))->updatePager();
|
||||
|
||||
$this->view->addTemplate('datagrid-table', 'grid');
|
||||
$this->view->assign('index', Request::analyze('activetab', 0));
|
||||
$this->view->assign('data', $grid);
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create action
|
||||
*
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function createAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign(__FUNCTION__, 1);
|
||||
$this->view->assign('header', __('Nuevo Cliente'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'client/saveCreate');
|
||||
|
||||
try {
|
||||
$this->setViewData();
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.client.create', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(1, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets view data for displaying user's data
|
||||
*
|
||||
* @param $clientId
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
protected function setViewData($clientId = null)
|
||||
{
|
||||
$this->view->addTemplate('client', 'itemshow');
|
||||
|
||||
$client = $clientId ? $this->clientService->getById($clientId) : new ClientData();
|
||||
|
||||
$this->view->assign('client', $client);
|
||||
|
||||
$this->view->assign('sk', SessionUtil::getSessionKey(true));
|
||||
$this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE));
|
||||
|
||||
if ($this->view->isView === true) {
|
||||
$this->view->assign('disabled', 'disabled');
|
||||
$this->view->assign('readonly', 'readonly');
|
||||
} else {
|
||||
$this->view->assign('disabled');
|
||||
$this->view->assign('readonly');
|
||||
}
|
||||
|
||||
$this->view->assign('customFields', $this->getCustomFieldsForItem(ActionsInterface::CLIENT, $clientId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function editAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Editar Cliente'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'client/saveEdit/' . $id);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.client.edit', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function deleteAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_DELETE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->clientService->delete($id);
|
||||
|
||||
$this->deleteCustomFieldsForItem(ActionsInterface::CLIENT, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('delete.client', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Cliente eliminado'));
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves create action
|
||||
*/
|
||||
public function saveCreateAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new ClientForm();
|
||||
$form->validate(ActionsInterface::CLIENT_CREATE);
|
||||
|
||||
$this->clientService->create($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.client', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Cliente creado'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves edit action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function saveEditAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new ClientForm($id);
|
||||
$form->validate(ActionsInterface::CLIENT_EDIT);
|
||||
|
||||
$this->clientService->update($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.client', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Cliente actualizado'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function viewAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CLIENT_VIEW)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Ver Cliente'));
|
||||
$this->view->assign('isView', true);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.client', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize class
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->checkLoggedIn();
|
||||
|
||||
$this->clientService = new ClientService();
|
||||
}
|
||||
|
||||
}
|
||||
281
app/modules/web/Controllers/CustomFieldController.php
Normal file
281
app/modules/web/Controllers/CustomFieldController.php
Normal file
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
|
||||
use SP\Controller\ControllerBase;
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\DataModel\CustomFieldDefData;
|
||||
use SP\Forms\CustomFieldDefForm;
|
||||
use SP\Http\JsonResponse;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\ItemTrait;
|
||||
use SP\Modules\Web\Controllers\Traits\JsonTrait;
|
||||
use SP\Mvc\Controller\CrudControllerInterface;
|
||||
use SP\Services\CustomField\CustomFieldDefService;
|
||||
use SP\Services\CustomField\CustomFieldTypeService;
|
||||
|
||||
/**
|
||||
* Class CustomFieldController
|
||||
*
|
||||
* @package SP\Modules\Web\Controllers
|
||||
*/
|
||||
class CustomFieldController extends ControllerBase implements CrudControllerInterface
|
||||
{
|
||||
use JsonTrait;
|
||||
use ItemTrait;
|
||||
|
||||
/**
|
||||
* @var CustomFieldDefService
|
||||
*/
|
||||
protected $customFieldService;
|
||||
|
||||
/**
|
||||
* Search action
|
||||
*/
|
||||
public function searchAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_SEARCH)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$itemsGridHelper = new ItemsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
$grid = $itemsGridHelper->getCustomFieldsGrid($this->customFieldService->search($this->getSearchData($this->configData)))->updatePager();
|
||||
|
||||
$this->view->addTemplate('datagrid-table', 'grid');
|
||||
$this->view->assign('index', Request::analyze('activetab', 0));
|
||||
$this->view->assign('data', $grid);
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create action
|
||||
*
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function createAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign(__FUNCTION__, 1);
|
||||
$this->view->assign('header', __('Nuevo Campo'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'customField/saveCreate');
|
||||
|
||||
try {
|
||||
$this->setViewData();
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.customField.create', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(1, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets view data for displaying user's data
|
||||
*
|
||||
* @param $clientId
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
protected function setViewData($clientId = null)
|
||||
{
|
||||
$this->view->addTemplate('customfield', 'itemshow');
|
||||
|
||||
$customField = $clientId ? $this->customFieldService->getById($clientId) : new CustomFieldDefData();
|
||||
|
||||
$customFieldTypeService = new CustomFieldTypeService();
|
||||
|
||||
$this->view->assign('field', $customField);
|
||||
$this->view->assign('types', $customFieldTypeService->getAll());
|
||||
$this->view->assign('modules', CustomFieldDefService::getFieldModules());
|
||||
|
||||
$this->view->assign('sk', SessionUtil::getSessionKey(true));
|
||||
$this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE));
|
||||
|
||||
if ($this->view->isView === true) {
|
||||
$this->view->assign('disabled', 'disabled');
|
||||
$this->view->assign('readonly', 'readonly');
|
||||
} else {
|
||||
$this->view->assign('disabled');
|
||||
$this->view->assign('readonly');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function editAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Editar Campo'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'customField/saveEdit/' . $id);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.customField.edit', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function deleteAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_DELETE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->customFieldService->delete($id);
|
||||
|
||||
$this->deleteCustomFieldsForItem(ActionsInterface::CUSTOMFIELD, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('delete.customField', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Campo eliminado'));
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves create action
|
||||
*/
|
||||
public function saveCreateAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new CustomFieldDefForm();
|
||||
$form->validate(ActionsInterface::CUSTOMFIELD_CREATE);
|
||||
|
||||
$this->customFieldService->create($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.customField', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Campo creado'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves edit action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function saveEditAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new CustomFieldDefForm($id);
|
||||
$form->validate(ActionsInterface::CUSTOMFIELD_EDIT);
|
||||
|
||||
$this->customFieldService->update($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.customField', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Campo actualizado'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function viewAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::CUSTOMFIELD_VIEW)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Ver Campo'));
|
||||
$this->view->assign('isView', true);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.customField', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize class
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->checkLoggedIn();
|
||||
|
||||
$this->customFieldService = new CustomFieldDefService();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -41,8 +41,10 @@ use SP\Mgmt\Groups\GroupAccountsUtil;
|
||||
use SP\Mgmt\Tags\Tag;
|
||||
use SP\Mgmt\Users\UserPass;
|
||||
use SP\Mgmt\Users\UserUtil;
|
||||
use SP\Modules\Web\Controllers\Traits\ItemTrait;
|
||||
use SP\Services\Account\AccountHistoryService;
|
||||
use SP\Services\Account\AccountService;
|
||||
use SP\Services\CustomField\CustomFieldService;
|
||||
use SP\Services\PublicLink\PublicLinkService;
|
||||
use SP\Util\ErrorUtil;
|
||||
use SP\Util\Json;
|
||||
@@ -54,6 +56,8 @@ use SP\Util\Json;
|
||||
*/
|
||||
class AccountHelper extends HelperBase
|
||||
{
|
||||
use ItemTrait;
|
||||
|
||||
/** @var Acl */
|
||||
protected $acl;
|
||||
/**
|
||||
@@ -148,8 +152,6 @@ class AccountHelper extends HelperBase
|
||||
{
|
||||
$userProfileData = $this->session->getUserProfile();
|
||||
|
||||
$this->getCustomFieldsForItem();
|
||||
|
||||
if ($this->isGotData()) {
|
||||
$accountHistoryService = new AccountHistoryService();
|
||||
|
||||
@@ -181,6 +183,7 @@ class AccountHelper extends HelperBase
|
||||
}
|
||||
|
||||
|
||||
$this->view->assign('customFields', $this->getCustomFieldsForItem(ActionsInterface::ACCOUNT, $this->accountId));
|
||||
$this->view->assign('actionId', Acl::getActionRoute($this->actionId));
|
||||
$this->view->assign('categories', Category::getItem()->getItemsForSelect());
|
||||
$this->view->assign('customers', Customer::getItem()->getItemsForSelectByUser());
|
||||
@@ -208,14 +211,6 @@ class AccountHelper extends HelperBase
|
||||
$this->view->assign('actions', $this->getActions());
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtener la lista de campos personalizados y sus valores
|
||||
*/
|
||||
private function getCustomFieldsForItem()
|
||||
{
|
||||
$this->view->assign('customFields', CustomField::getItem(new CustomFieldData(ActionsInterface::ACCOUNT))->getById($this->accountId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set icons for view
|
||||
*/
|
||||
|
||||
@@ -37,6 +37,7 @@ use SP\Html\DataGrid\DataGridData;
|
||||
use SP\Html\DataGrid\DataGridHeader;
|
||||
use SP\Html\DataGrid\DataGridPager;
|
||||
use SP\Html\DataGrid\DataGridTab;
|
||||
use SP\Services\CustomField\CustomFieldDefService;
|
||||
|
||||
/**
|
||||
* Class Grids con las plantillas de tablas de datos
|
||||
@@ -174,12 +175,16 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridHeaders = new DataGridHeader();
|
||||
$GridHeaders->addHeader(__('Nombre'));
|
||||
$GridHeaders->addHeader(__('Descripción'));
|
||||
$GridHeaders->addHeader(__('Global'));
|
||||
|
||||
// Grid Data
|
||||
$GridData = new DataGridData();
|
||||
$GridData->setDataRowSourceId('customer_id');
|
||||
$GridData->addDataRowSource('customer_name');
|
||||
$GridData->addDataRowSource('customer_description');
|
||||
$GridData->addDataRowSource('customer_isGlobal', false, function ($value) {
|
||||
return $value ? __u('SI') : __u('NO');
|
||||
});
|
||||
$GridData->setData($data);
|
||||
|
||||
// Grid
|
||||
@@ -224,7 +229,7 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionEdit->setTitle(__('Editar Cliente'));
|
||||
$GridActionEdit->setIcon($this->icons->getIconEdit());
|
||||
$GridActionEdit->setOnClickFunction('appMgmt/show');
|
||||
$GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_VIEW));
|
||||
$GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_EDIT));
|
||||
|
||||
$Grid->setDataActions($GridActionEdit);
|
||||
|
||||
@@ -251,15 +256,17 @@ class ItemsGridHelper extends HelperBase
|
||||
{
|
||||
// Grid Header
|
||||
$GridHeaders = new DataGridHeader();
|
||||
$GridHeaders->addHeader(__('Módulo'));
|
||||
$GridHeaders->addHeader(__('Nombre'));
|
||||
$GridHeaders->addHeader(__('Módulo'));
|
||||
$GridHeaders->addHeader(__('Tipo'));
|
||||
|
||||
// Grid Data
|
||||
$GridData = new DataGridData();
|
||||
$GridData->setDataRowSourceId('id');
|
||||
$GridData->addDataRowSource('moduleName');
|
||||
$GridData->addDataRowSource('name');
|
||||
$GridData->addDataRowSource('moduleId', false, function ($value) {
|
||||
return CustomFieldDefService::getFieldModuleById($value);
|
||||
});
|
||||
$GridData->addDataRowSource('typeName');
|
||||
$GridData->setData($data);
|
||||
|
||||
@@ -340,12 +347,12 @@ class ItemsGridHelper extends HelperBase
|
||||
|
||||
// Grid Data
|
||||
$GridData = new DataGridData();
|
||||
$GridData->setDataRowSourceId('accfile_id');
|
||||
$GridData->setDataRowSourceId('id');
|
||||
$GridData->addDataRowSource('account_name');
|
||||
$GridData->addDataRowSource('customer_name');
|
||||
$GridData->addDataRowSource('accfile_name');
|
||||
$GridData->addDataRowSource('accfile_type');
|
||||
$GridData->addDataRowSource('accfile_size');
|
||||
$GridData->addDataRowSource('name');
|
||||
$GridData->addDataRowSource('type');
|
||||
$GridData->addDataRowSource('size');
|
||||
$GridData->setData($data);
|
||||
|
||||
// Grid
|
||||
@@ -1076,7 +1083,8 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionEdit->setName(__('Editar Etiqueta'));
|
||||
$GridActionEdit->setTitle(__('Editar Etiqueta'));
|
||||
$GridActionEdit->setIcon($this->icons->getIconEdit());
|
||||
$GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_VIEW));
|
||||
$GridActionEdit->setOnClickFunction('appMgmt/show');
|
||||
$GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_EDIT));
|
||||
|
||||
$Grid->setDataActions($GridActionEdit);
|
||||
|
||||
@@ -1108,11 +1116,11 @@ class ItemsGridHelper extends HelperBase
|
||||
|
||||
// Grid Data
|
||||
$GridData = new DataGridData();
|
||||
$GridData->setDataRowSourceId('plugin_id');
|
||||
$GridData->addDataRowSource('plugin_name');
|
||||
$GridData->addDataRowSourceWithIcon('plugin_enabled', $this->icons->getIconEnabled());
|
||||
$GridData->addDataRowSourceWithIcon('plugin_enabled', $this->icons->getIconDisabled(), 0);
|
||||
$GridData->addDataRowSourceWithIcon('plugin_available', $this->icons->getIconDelete()->setTitle(__('No disponible')), 0);
|
||||
$GridData->setDataRowSourceId('id');
|
||||
$GridData->addDataRowSource('name');
|
||||
$GridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconEnabled());
|
||||
$GridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconDisabled(), 0);
|
||||
$GridData->addDataRowSourceWithIcon('available', $this->icons->getIconDelete()->setTitle(__('No disponible')), 0);
|
||||
$GridData->setData($data);
|
||||
|
||||
// Grid
|
||||
@@ -1145,7 +1153,7 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionView->setTitle(__('Ver Plugin'));
|
||||
$GridActionView->setIcon($this->icons->getIconView());
|
||||
$GridActionView->setOnClickFunction('appMgmt/show');
|
||||
$GridActionView->setFilterRowSource('plugin_available', 0);
|
||||
$GridActionView->setFilterRowSource('available', 0);
|
||||
$GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_VIEW));
|
||||
|
||||
$Grid->setDataActions($GridActionView);
|
||||
@@ -1156,8 +1164,8 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionEnable->setTitle(__('Habilitar'));
|
||||
$GridActionEnable->setIcon($this->icons->getIconEnabled());
|
||||
$GridActionEnable->setOnClickFunction('plugin/toggle');
|
||||
$GridActionEnable->setFilterRowSource('plugin_enabled');
|
||||
$GridActionEnable->setFilterRowSource('plugin_available', 0);
|
||||
$GridActionEnable->setFilterRowSource('enabled');
|
||||
$GridActionEnable->setFilterRowSource('available', 0);
|
||||
$GridActionEnable->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_ENABLE));
|
||||
|
||||
$Grid->setDataActions($GridActionEnable);
|
||||
@@ -1168,8 +1176,8 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionDisable->setTitle(__('Deshabilitar'));
|
||||
$GridActionDisable->setIcon($this->icons->getIconDisabled());
|
||||
$GridActionDisable->setOnClickFunction('plugin/toggle');
|
||||
$GridActionDisable->setFilterRowSource('plugin_enabled', 0);
|
||||
$GridActionDisable->setFilterRowSource('plugin_available', 0);
|
||||
$GridActionDisable->setFilterRowSource('enabled', 0);
|
||||
$GridActionDisable->setFilterRowSource('available', 0);
|
||||
$GridActionDisable->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_DISABLE));
|
||||
|
||||
$Grid->setDataActions($GridActionDisable);
|
||||
@@ -1180,7 +1188,7 @@ class ItemsGridHelper extends HelperBase
|
||||
$GridActionReset->setTitle(__('Restablecer Datos'));
|
||||
$GridActionReset->setIcon($this->icons->getIconRefresh());
|
||||
$GridActionReset->setOnClickFunction('plugin/reset');
|
||||
$GridActionReset->setFilterRowSource('plugin_available', 0);
|
||||
$GridActionReset->setFilterRowSource('available', 0);
|
||||
$GridActionReset->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_RESET));
|
||||
|
||||
$Grid->setDataActions($GridActionReset);
|
||||
|
||||
211
app/modules/web/Controllers/ItemManagerController.php
Normal file
211
app/modules/web/Controllers/ItemManagerController.php
Normal file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
use SP\Controller\ControllerBase;
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
|
||||
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
|
||||
use SP\Services\Account\AccountFileService;
|
||||
use SP\Services\Account\AccountHistoryService;
|
||||
use SP\Services\Account\AccountService;
|
||||
use SP\Services\Category\CategoryService;
|
||||
use SP\Services\Client\ClientService;
|
||||
use SP\Services\CustomField\CustomFieldDefService;
|
||||
use SP\Services\Plugin\PluginService;
|
||||
use SP\Services\Tag\TagService;
|
||||
|
||||
/**
|
||||
* Class ItemManagerController
|
||||
*
|
||||
* @package SP\Modules\Web\Controllers
|
||||
*/
|
||||
class ItemManagerController extends ControllerBase
|
||||
{
|
||||
/**
|
||||
* @var ItemSearchData
|
||||
*/
|
||||
protected $itemSearchData;
|
||||
/**
|
||||
* @var ItemsGridHelper
|
||||
*/
|
||||
protected $itemsGridHelper;
|
||||
/**
|
||||
* @var TabsGridHelper
|
||||
*/
|
||||
protected $tabsGridHelper;
|
||||
|
||||
/**
|
||||
* @throws \SP\Core\Exceptions\InvalidArgumentException
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
$this->getGridTabs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a tabbed grid with items
|
||||
*
|
||||
* @throws \SP\Core\Exceptions\InvalidArgumentException
|
||||
*/
|
||||
protected function getGridTabs()
|
||||
{
|
||||
$this->itemSearchData = new ItemSearchData();
|
||||
$this->itemSearchData->setLimitCount($this->configData->getAccountCount());
|
||||
|
||||
$this->itemsGridHelper = new ItemsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
|
||||
$this->tabsGridHelper = new TabsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::CATEGORY)) {
|
||||
$this->tabsGridHelper->addTab($this->getCategoriesList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::TAG)) {
|
||||
$this->tabsGridHelper->addTab($this->getTagsList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::CLIENT)) {
|
||||
$this->tabsGridHelper->addTab($this->getClientsList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::CUSTOMFIELD)) {
|
||||
$this->tabsGridHelper->addTab($this->getCustomFieldsList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::FILE)) {
|
||||
$this->tabsGridHelper->addTab($this->getAccountFilesList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::ACCOUNTMGR)) {
|
||||
$this->tabsGridHelper->addTab($this->getAccountsList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::ACCOUNTMGR_HISTORY)) {
|
||||
$this->tabsGridHelper->addTab($this->getAccountsHistoryList());
|
||||
}
|
||||
|
||||
if ($this->checkAccess(ActionsInterface::PLUGIN)) {
|
||||
$this->tabsGridHelper->addTab($this->getPluginsList());
|
||||
}
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.itemlist.items', $this);
|
||||
|
||||
$this->tabsGridHelper->renderTabs(Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE), Request::analyze('tabIndex', 0));
|
||||
|
||||
$this->view();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns categories' data tab
|
||||
*/
|
||||
protected function getCategoriesList()
|
||||
{
|
||||
$service = new CategoryService();
|
||||
|
||||
return $this->itemsGridHelper->getCategoriesGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns tags' data tab
|
||||
*/
|
||||
protected function getTagsList()
|
||||
{
|
||||
$service = new TagService();
|
||||
|
||||
return $this->itemsGridHelper->getTagsGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns clients' data tab
|
||||
*/
|
||||
protected function getClientsList()
|
||||
{
|
||||
$service = new ClientService();
|
||||
|
||||
return $this->itemsGridHelper->getClientsGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns custom fields' data tab
|
||||
*/
|
||||
protected function getCustomFieldsList()
|
||||
{
|
||||
$service = new CustomFieldDefService();
|
||||
|
||||
return $this->itemsGridHelper->getCustomFieldsGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns account files' data tab
|
||||
*/
|
||||
protected function getAccountFilesList()
|
||||
{
|
||||
$service = new AccountFileService();
|
||||
|
||||
return $this->itemsGridHelper->getFilesGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns accounts' data tab
|
||||
*/
|
||||
protected function getAccountsList()
|
||||
{
|
||||
$service = new AccountService();
|
||||
|
||||
return $this->itemsGridHelper->getAccountsGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns accounts' history data tab
|
||||
*/
|
||||
protected function getAccountsHistoryList()
|
||||
{
|
||||
$service = new AccountHistoryService();
|
||||
|
||||
return $this->itemsGridHelper->getAccountsHistoryGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns plugins' data tab
|
||||
*/
|
||||
protected function getPluginsList()
|
||||
{
|
||||
$service = new PluginService();
|
||||
|
||||
return $this->itemsGridHelper->getPluginsGrid($service->search($this->itemSearchData))->updatePager();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return TabsGridHelper
|
||||
*/
|
||||
public function getTabsGridHelper()
|
||||
{
|
||||
return $this->tabsGridHelper;
|
||||
}
|
||||
}
|
||||
276
app/modules/web/Controllers/TagController.php
Normal file
276
app/modules/web/Controllers/TagController.php
Normal file
@@ -0,0 +1,276 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Modules\Web\Controllers;
|
||||
|
||||
|
||||
use SP\Controller\ControllerBase;
|
||||
use SP\Core\Acl\Acl;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\Core\SessionUtil;
|
||||
use SP\DataModel\TagData;
|
||||
use SP\Forms\TagForm;
|
||||
use SP\Http\JsonResponse;
|
||||
use SP\Http\Request;
|
||||
use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
|
||||
use SP\Modules\Web\Controllers\Traits\ItemTrait;
|
||||
use SP\Modules\Web\Controllers\Traits\JsonTrait;
|
||||
use SP\Mvc\Controller\CrudControllerInterface;
|
||||
use SP\Services\Tag\TagService;
|
||||
|
||||
/**
|
||||
* Class TagController
|
||||
*
|
||||
* @package SP\Modules\Web\Controllers
|
||||
*/
|
||||
class TagController extends ControllerBase implements CrudControllerInterface
|
||||
{
|
||||
use JsonTrait;
|
||||
use ItemTrait;
|
||||
|
||||
/**
|
||||
* @var TagService
|
||||
*/
|
||||
protected $tagService;
|
||||
|
||||
/**
|
||||
* Search action
|
||||
*/
|
||||
public function searchAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_SEARCH)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$itemsGridHelper = new ItemsGridHelper($this->view, $this->config, $this->session, $this->eventDispatcher);
|
||||
$grid = $itemsGridHelper->getTagsGrid($this->tagService->search($this->getSearchData($this->configData)))->updatePager();
|
||||
|
||||
$this->view->addTemplate('datagrid-table', 'grid');
|
||||
$this->view->assign('index', Request::analyze('activetab', 0));
|
||||
$this->view->assign('data', $grid);
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create action
|
||||
*
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function createAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign(__FUNCTION__, 1);
|
||||
$this->view->assign('header', __('Nueva Etiqueta'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'tag/saveCreate');
|
||||
|
||||
try {
|
||||
$this->setViewData();
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.tag.create', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(1, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets view data for displaying user's data
|
||||
*
|
||||
* @param $tagId
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
protected function setViewData($tagId = null)
|
||||
{
|
||||
$this->view->addTemplate('tag', 'itemshow');
|
||||
|
||||
$tag = $tagId ? $this->tagService->getById($tagId) : new TagData();
|
||||
|
||||
$this->view->assign('tag', $tag);
|
||||
|
||||
$this->view->assign('sk', SessionUtil::getSessionKey(true));
|
||||
$this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE));
|
||||
|
||||
if ($this->view->isView === true) {
|
||||
$this->view->assign('disabled', 'disabled');
|
||||
$this->view->assign('readonly', 'readonly');
|
||||
} else {
|
||||
$this->view->assign('disabled');
|
||||
$this->view->assign('readonly');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function editAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Editar Etiqueta'));
|
||||
$this->view->assign('isView', false);
|
||||
$this->view->assign('route', 'tag/saveEdit/' . $id);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.tag.edit', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function deleteAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_DELETE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->tagService->delete($id);
|
||||
|
||||
$this->deleteCustomFieldsForItem(ActionsInterface::TAG, $id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('delete.tag', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Etiqueta eliminada'));
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves create action
|
||||
*/
|
||||
public function saveCreateAction()
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_CREATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new TagForm();
|
||||
$form->validate(ActionsInterface::TAG_CREATE);
|
||||
|
||||
$this->tagService->create($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('create.tag', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Etiqueta creada'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves edit action
|
||||
*
|
||||
* @param $id
|
||||
*/
|
||||
public function saveEditAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_EDIT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
$form = new TagForm($id);
|
||||
$form->validate(ActionsInterface::TAG_EDIT);
|
||||
|
||||
$this->tagService->update($form->getItemData());
|
||||
|
||||
$this->eventDispatcher->notifyEvent('edit.tag', $this);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Etiqueta actualizada'));
|
||||
} catch (ValidationException $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
} catch (SPException $e) {
|
||||
debugLog($e->getMessage(), true);
|
||||
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View action
|
||||
*
|
||||
* @param $id
|
||||
* @throws \Psr\Container\ContainerExceptionInterface
|
||||
*/
|
||||
public function viewAction($id)
|
||||
{
|
||||
if (!$this->acl->checkUserAccess(ActionsInterface::TAG_VIEW)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->assign('header', __('Ver Etiqueta'));
|
||||
$this->view->assign('isView', true);
|
||||
|
||||
try {
|
||||
$this->setViewData($id);
|
||||
|
||||
$this->eventDispatcher->notifyEvent('show.tag', $this);
|
||||
} catch (\Exception $e) {
|
||||
$this->returnJsonResponse(JsonResponse::JSON_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
$this->returnJsonResponseData(['html' => $this->render()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize class
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
$this->checkLoggedIn();
|
||||
|
||||
$this->tagService = new TagService();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,8 +24,10 @@
|
||||
|
||||
namespace SP\Modules\Web\Controllers\Traits;
|
||||
|
||||
use Defuse\Crypto\Exception\CryptoException;
|
||||
use SP\Config\ConfigData;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CustomFieldData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Http\Request;
|
||||
use SP\Services\CustomField\CustomFieldService;
|
||||
@@ -43,12 +45,35 @@ trait ItemTrait
|
||||
* @param $moduleId
|
||||
* @param $itemId
|
||||
* @return array
|
||||
* @throws \Defuse\Crypto\Exception\CryptoException
|
||||
*/
|
||||
protected function getCustomFieldsForItem($moduleId, $itemId)
|
||||
{
|
||||
$customFieldService = new CustomFieldService();
|
||||
return $customFieldService->getForModuleById($moduleId, $itemId);
|
||||
$customFields = [];
|
||||
|
||||
$customFieldBase = new \stdClass();
|
||||
|
||||
foreach ($customFieldService->getForModuleById($moduleId, $itemId) as $item) {
|
||||
try {
|
||||
$customField = clone $customFieldBase;
|
||||
$customField->required = (bool)$item->required;
|
||||
$customField->showInList = (bool)$item->showInList;
|
||||
$customField->help = $item->help;
|
||||
$customField->definitionId = (int)$item->definitionId;
|
||||
$customField->definitionName = $item->definitionName;
|
||||
$customField->typeId = (int)$item->typeId;
|
||||
$customField->typeName = $item->typeName;
|
||||
$customField->moduleId = (int)$item->moduleId;
|
||||
$customField->formId = CustomFieldService::getFormIdForName($item->definitionName);
|
||||
$customField->value = $item->data !== null ? CustomFieldService::unencryptData($item->data) : '';
|
||||
|
||||
$customFields[] = $customField;
|
||||
} catch (CryptoException $e) {
|
||||
debugLog($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
return $customFields;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,8 +85,25 @@ trait ItemTrait
|
||||
*/
|
||||
protected function addCustomFieldsForItem($moduleId, $itemId)
|
||||
{
|
||||
$customFieldService = new CustomFieldService();
|
||||
$customFieldService->addCustomFieldData(Request::analyze('customfield'), $itemId, $moduleId);
|
||||
$customFields = Request::analyze('customfield');
|
||||
|
||||
if (is_array($customFields)) {
|
||||
$customFieldData = new CustomFieldData();
|
||||
$customFieldData->setId($itemId);
|
||||
$customFieldData->setModuleId($moduleId);
|
||||
|
||||
$customFieldService = new CustomFieldService();
|
||||
try {
|
||||
foreach ($customFields as $id => $value) {
|
||||
$customFieldData->setDefinitionId($id);
|
||||
$customFieldData->setData($value);
|
||||
|
||||
$customFieldService->create($customFieldData);
|
||||
}
|
||||
} catch (CryptoException $e) {
|
||||
throw new SPException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,8 +128,25 @@ trait ItemTrait
|
||||
*/
|
||||
protected function updateCustomFieldsForItem($moduleId, $itemId)
|
||||
{
|
||||
$customFieldService = new CustomFieldService();
|
||||
$customFieldService->updateCustomFieldData(Request::analyze('customfield'), $itemId, $moduleId);
|
||||
$customFields = Request::analyze('customfield');
|
||||
|
||||
if (is_array($customFields)) {
|
||||
$customFieldService = new CustomFieldService();
|
||||
$customFieldData = new CustomFieldData();
|
||||
$customFieldData->setId($itemId);
|
||||
$customFieldData->setModuleId($moduleId);
|
||||
|
||||
try {
|
||||
foreach ($customFields as $id => $value) {
|
||||
$customFieldData->setDefinitionId($id);
|
||||
$customFieldData->setData($value);
|
||||
|
||||
$customFieldService->update($customFieldData);
|
||||
}
|
||||
} catch (CryptoException $e) {
|
||||
throw new SPException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,57 +3,56 @@
|
||||
use SP\Mgmt\CustomFields\CustomFieldTypes;
|
||||
|
||||
/** @var $icons \Theme\Icons */
|
||||
/** @var \SP\DataModel\CustomFieldData $field */
|
||||
|
||||
foreach ($customFields as $index => $field):?>
|
||||
<tr>
|
||||
<td class="descField">
|
||||
<?php echo $field->getDefinition()->getName(); ?>
|
||||
<?php if ($field->getDefinition()->getHelp()): ?>
|
||||
<div id="help-<?php echo $field->getDefinition()->getFormId(); ?>"
|
||||
<?php echo $field->typeName; ?>
|
||||
<?php if ($field->help): ?>
|
||||
<div id="help-<?php echo $field->formId; ?>"
|
||||
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>">
|
||||
<?php echo $icons->getIconHelp()->getIcon(); ?>
|
||||
</div>
|
||||
<div class="mdl-tooltip mdl-tooltip--large"
|
||||
for="help-<?php echo $field->getDefinition()->getFormId(); ?>">
|
||||
<p><?php echo $field->getDefinition()->getHelp(); ?></p>
|
||||
for="help-<?php echo $field->formId; ?>">
|
||||
<p><?php echo $field->formId; ?></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td class="valField">
|
||||
<?php if ($field->getDefinition()->getType() === CustomFieldTypes::TYPE_COLOR && $isView): ?>
|
||||
<?php if ($field->typeId === CustomFieldTypes::TYPE_COLOR && $isView): ?>
|
||||
<span class="round custom-input-color"
|
||||
style="background-color: <?php echo $field->getValue(); ?>;"></span>
|
||||
<?php elseif ($field->getDefinition()->getType() === CustomFieldTypes::TYPE_PASSWORD): ?>
|
||||
<?php elseif ($field->typeId === CustomFieldTypes::TYPE_PASSWORD): ?>
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="<?php echo $field->getDefinition()->getFormId(); ?>"
|
||||
name="customfield[<?php echo $field->getDefinitionId(); ?>]"
|
||||
<input id="<?php echo $field->formId; ?>"
|
||||
name="customfield[<?php echo $field->definitionId; ?>]"
|
||||
type="password"
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400 passwordfield__no-pki <?php echo $isView ? 'passwordfield__input-show' : 'passwordfield__input'; ?>"
|
||||
data-clipboard="1"
|
||||
maxlength="500"
|
||||
value="<?php echo (!$showViewCustomPass && $field->getValue() !== '') ? '***' : $field->getSafeHtmlValue(); ?>" <?php echo $field->getDefinition()->isRequired() ? 'required' : ''; ?> <?php echo $readonly; ?>>
|
||||
value="<?php echo (!$showViewCustomPass && $field->value !== '') ? '***' : htmlspecialchars($field->value, ENT_QUOTES); ?>" <?php echo $field->required ? 'required' : ''; ?> <?php echo $readonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="<?php echo $field->getDefinition()->getFormId(); ?>"><?php echo $field->getDefinition()->getName(); ?></label>
|
||||
for="<?php echo $field->formId; ?>"><?php echo $field->typeName; ?></label>
|
||||
</div>
|
||||
<?php elseif ($field->getDefinition()->getType() === CustomFieldTypes::TYPE_TEXTAREA): ?>
|
||||
<?php elseif ($field->typeId === CustomFieldTypes::TYPE_TEXTAREA): ?>
|
||||
<div class="mdl-textfield mdl-js-textfield">
|
||||
<textarea class="mdl-textfield__input mdl-color-text--indigo-400" type="text" rows="3"
|
||||
name="customfield[<?php echo $field->getDefinitionId(); ?>]"
|
||||
id="<?php echo $field->getDefinition()->getFormId(); ?>" <?php echo $readonly; ?>><?php echo $field->getCleanValue(); ?></textarea>
|
||||
name="customfield[<?php echo $field->definitionId; ?>]"
|
||||
id="<?php echo $field->formId; ?>" <?php echo $readonly; ?>><?php echo SP\Html\Html::sanitize($field->value); ?></textarea>
|
||||
<label class="mdl-textfield__label"
|
||||
for="<?php echo $field->getDefinition()->getFormId(); ?>"><?php echo $field->getDefinition()->getName(); ?></label>
|
||||
for="<?php echo $field->formId; ?>"><?php echo $field->definitionName; ?></label>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="<?php echo $field->getDefinition()->getFormId(); ?>"
|
||||
name="customfield[<?php echo $field->getDefinitionId(); ?>]"
|
||||
type="<?php echo $field->getTypeName(); ?>"
|
||||
<input id="<?php echo $field->formId; ?>"
|
||||
name="customfield[<?php echo $field->definitionId; ?>]"
|
||||
type="<?php echo $field->typeName; ?>"
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
maxlength="500"
|
||||
value="<?php echo $field->getCleanValue(); ?>" <?php echo $field->getDefinition()->isRequired() ? 'required' : ''; ?> <?php echo $readonly; ?>>
|
||||
value="<?php echo SP\Html\Html::sanitize($field->value); ?>" <?php echo $field->required ? 'required' : ''; ?> <?php echo $readonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="<?php echo $field->getDefinition()->getFormId(); ?>"><?php echo $field->getDefinition()->getName(); ?></label>
|
||||
for="<?php echo $field->formId; ?>"><?php echo $field->definitionName; ?></label>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
|
||||
@@ -20,6 +20,7 @@ use SP\Html\Html;
|
||||
data-activetab="<?php echo $index; ?>">
|
||||
<?php foreach ($data->getData()->getDataRowSources() as $rowSrc): ?>
|
||||
<?php $value = $rowSrc['isMethod'] === true && method_exists($dataItem, $rowSrc['name']) ? $dataItem->{$rowSrc['name']}() : $dataItem->{$rowSrc['name']}; ?>
|
||||
<?php $value = $rowSrc['filter'] !== null && is_callable($rowSrc['filter']) ? $rowSrc['filter']($value) : $value; ?>
|
||||
<td class="cell-data"><?php echo $value !== '' ? Html::truncate($value, 100 / $numFields) : ' '; // Fix height ?></td>
|
||||
<?php endforeach; ?>
|
||||
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
|
||||
<form method="post" name="frmCategories" id="frmCategories" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
data-route="<?php echo isset($route) ? $route : ''; ?>"
|
||||
data-activetab="<?php echo isset($activeTab) ? $activeTab : ''; ?>"
|
||||
data-nextaction-id="<?php echo \SP\Core\Acl\ActionsInterface::CATEGORY; ?>"
|
||||
data-nextaction="<?php echo $nextAction; ?>"
|
||||
data-hash="">
|
||||
<table class="popup-data">
|
||||
<tbody>
|
||||
@@ -42,8 +43,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="itemId" value="<?php echo $category->getCategoryId(); ?>"/>
|
||||
<input type="hidden" name="actionId" value="<?php echo $actionId; ?>"/>
|
||||
<input type="hidden" name="sk" value="">
|
||||
<input type="hidden" name="isAjax" value="1">
|
||||
</form>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
/** @var $icons \Theme\Icons */
|
||||
/** @var $customer \SP\DataModel\CustomerData */
|
||||
/** @var $customer \SP\DataModel\ClientData */
|
||||
|
||||
?>
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
|
||||
<form method="post" name="frmCustomers" id="frmCustomers" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
data-route="<?php echo isset($route) ? $route : ''; ?>"
|
||||
data-activetab="<?php echo isset($activeTab) ? $activeTab : ''; ?>"
|
||||
data-nextaction-id="<?php echo \SP\Core\Acl\ActionsInterface::CLIENT; ?>"
|
||||
data-nextaction="<?php echo $nextAction; ?>"
|
||||
data-hash="">
|
||||
<table class="popup-data">
|
||||
<tbody>
|
||||
@@ -21,7 +22,7 @@
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="name" name="name" type="text" required
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
maxlength="50" value="<?php echo $customer->getCustomerName(); ?>">
|
||||
maxlength="50" value="<?php echo $client->getCustomerName(); ?>">
|
||||
<label class="mdl-textfield__label"
|
||||
for="name"><?php echo __('Nombre del cliente'); ?></label>
|
||||
</div>
|
||||
@@ -34,7 +35,7 @@
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="description" name="description" type="text"
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
maxlength="50" value="<?php echo $customer->getCustomerDescription(); ?>">
|
||||
maxlength="50" value="<?php echo $client->getCustomerDescription(); ?>">
|
||||
<label class="mdl-textfield__label"
|
||||
for="description"><?php echo __('Descripción del cliente'); ?></label>
|
||||
</div>
|
||||
@@ -58,7 +59,7 @@
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="isglobal">
|
||||
<input type="checkbox" id="isglobal"
|
||||
class="mdl-switch__input mdl-color-text--indigo-400"
|
||||
name="isglobal" <?php echo $customer->getCustomerIsGlobal() ? 'checked' : ' '; ?>/>
|
||||
name="isglobal" <?php echo $client->getCustomerIsGlobal() ? 'checked' : ' '; ?>/>
|
||||
<span class="mdl-switch__label"><?php echo __('Global'); ?></span>
|
||||
</label>
|
||||
</td>
|
||||
@@ -70,8 +71,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="itemId" value="<?php echo $customer->getCustomerId(); ?>"/>
|
||||
<input type="hidden" name="actionId" value="<?php echo $actionId; ?>"/>
|
||||
<input type="hidden" name="sk" value="">
|
||||
<input type="hidden" name="isAjax" value="1">
|
||||
</form>
|
||||
@@ -10,8 +10,9 @@
|
||||
|
||||
<form method="post" name="frmCustomFields" id="frmCustomFields" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
data-route="<?php echo isset($route) ? $route : ''; ?>"
|
||||
data-activetab="<?php echo isset($activeTab) ? $activeTab : ''; ?>"
|
||||
data-nextaction-id="<?php echo \SP\Core\Acl\ActionsInterface::CUSTOMFIELD; ?>"
|
||||
data-nextaction="<?php echo $nextAction; ?>"
|
||||
data-hash="">
|
||||
<table class="popup-data">
|
||||
<tbody>
|
||||
@@ -33,9 +34,10 @@
|
||||
<div class="lowres-title"><?php echo __('Tipo'); ?></div>
|
||||
|
||||
<select name="type" id="sel-type" size="1" class="select-box">
|
||||
<?php foreach ($types as $id => $type): ?>
|
||||
<?php /** @var \SP\DataModel\CustomFieldTypeData[] $types */
|
||||
foreach ($types as $type): ?>
|
||||
<option
|
||||
value='<?php echo $id; ?>' <?php echo ($id === $field->getType()) ? 'selected' : ''; ?>><?php echo $type[1]; ?></option>
|
||||
value='<?php echo $type->getId(); ?>' <?php echo ($type->getId() === $field->getTypeId()) ? 'selected' : ''; ?>><?php echo $type->getText(); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
@@ -48,7 +50,7 @@
|
||||
<select name="module" id="sel-module" size="1" class="select-box">
|
||||
<?php foreach ($modules as $id => $module): ?>
|
||||
<option
|
||||
value='<?php echo $id; ?>' <?php echo ($id === $field->getModule()) ? 'selected' : ''; ?>><?php echo $module; ?></option>
|
||||
value='<?php echo $id; ?>' <?php echo ($id === $field->getModuleId()) ? 'selected' : ''; ?>><?php echo $module; ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
@@ -70,7 +72,7 @@
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="required">
|
||||
<input type="checkbox" id="required" class="mdl-switch__input mdl-color-text--indigo-400"
|
||||
name="required"
|
||||
<?php echo $field->isRequired() ? 'checked' : ''; ?>/>
|
||||
<?php echo $field->getRequired() ? 'checked' : ''; ?>/>
|
||||
<span class="mdl-switch__label"><?php echo __('Obligatorio'); ?></span>
|
||||
</label>
|
||||
</td>
|
||||
@@ -78,8 +80,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="itemId" value="<?php echo $field->getId(); ?>"/>
|
||||
<input type="hidden" name="actionId" value="<?php echo $actionId; ?>"/>
|
||||
<input type="hidden" name="sk" value="">
|
||||
<input type="hidden" name="isAjax" value="1">
|
||||
</form>
|
||||
@@ -7,8 +7,9 @@
|
||||
|
||||
<form method="post" name="frmTags" id="frmTags" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
data-route="<?php echo isset($route) ? $route : ''; ?>"
|
||||
data-activetab="<?php echo isset($activeTab) ? $activeTab : ''; ?>"
|
||||
data-nextaction-id="<?php echo \SP\Core\ActionsInterface::TAG; ?>"
|
||||
data-nextaction="<?php echo $nextAction; ?>"
|
||||
data-hash="">
|
||||
<table class="popup-data">
|
||||
<tbody>
|
||||
@@ -27,8 +28,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="itemId" value="<?php echo $tag->getTagId(); ?>"/>
|
||||
<input type="hidden" name="actionId" value="<?php echo $actionId; ?>"/>
|
||||
<input type="hidden" name="sk" value="">
|
||||
<input type="hidden" name="isAjax" value="1">
|
||||
</form>
|
||||
@@ -36,7 +36,7 @@ use SP\Core\Crypt\Crypt;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Mgmt\Categories\Category;
|
||||
use SP\Mgmt\Categories\CategorySearch;
|
||||
@@ -358,7 +358,7 @@ class SyspassApi extends ApiBase
|
||||
{
|
||||
$this->checkActionAccess(ActionsInterface::CLIENT);
|
||||
|
||||
$CustomerData = new CustomerData();
|
||||
$CustomerData = new ClientData();
|
||||
$CustomerData->setCustomerName($this->getParam('name', true));
|
||||
$CustomerData->setCustomerDescription($this->getParam('description'));
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ use SP\DataModel\PublicLinkData;
|
||||
use SP\Forms\AccountForm;
|
||||
use SP\Forms\ApiTokenForm;
|
||||
use SP\Forms\CategoryForm;
|
||||
use SP\Forms\CustomerForm;
|
||||
use SP\Forms\ClientForm;
|
||||
use SP\Forms\CustomFieldDefForm;
|
||||
use SP\Forms\NoticeForm;
|
||||
use SP\Forms\TagForm;
|
||||
@@ -484,7 +484,7 @@ class ItemActionController implements ItemControllerInterface
|
||||
*/
|
||||
protected function customerAction()
|
||||
{
|
||||
$Form = new CustomerForm($this->itemId);
|
||||
$Form = new ClientForm($this->itemId);
|
||||
$Form->validate($this->actionId);
|
||||
|
||||
$this->setCustomFieldData(ActionsInterface::CLIENT);
|
||||
|
||||
@@ -40,7 +40,7 @@ use SP\Mvc\View\Template;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\ApiTokenData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\DataModel\CustomFieldData;
|
||||
use SP\DataModel\CustomFieldDefData;
|
||||
use SP\DataModel\GroupData;
|
||||
@@ -359,7 +359,7 @@ class ItemShowController extends ControllerBase implements ActionsInterface, Ite
|
||||
$this->module = self::CLIENT;
|
||||
$this->view->addTemplate('customers');
|
||||
|
||||
$this->view->assign('customer', $this->itemId ? Customer::getItem()->getById($this->itemId) : new CustomerData());
|
||||
$this->view->assign('customer', $this->itemId ? Customer::getItem()->getById($this->itemId) : new ClientData());
|
||||
$this->getCustomFieldsForItem();
|
||||
|
||||
$this->JsonResponse->setStatus(0);
|
||||
@@ -399,7 +399,7 @@ class ItemShowController extends ControllerBase implements ActionsInterface, Ite
|
||||
|
||||
$this->view->assign('users', User::getItem()->getItemsForSelect());
|
||||
$this->view->assign('actions', ApiTokensUtil::getTokenActions());
|
||||
$this->view->assign('ApiTokenData', $ApiTokenData);
|
||||
$this->view->assign('apiTokenData', $ApiTokenData);
|
||||
$this->view->assign('isDisabled', ($this->view->actionId === self::APITOKEN_VIEW) ? 'disabled' : '');
|
||||
$this->view->assign('isReadonly', $this->view->isDisabled ? 'readonly' : '');
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ class CategoryData extends DataModelBase implements DataModelInterface
|
||||
public $category_hash = '';
|
||||
|
||||
/**
|
||||
* CategoryData constructor.
|
||||
* categoryData constructor.
|
||||
*
|
||||
* @param int $category_id
|
||||
* @param string $category_name
|
||||
|
||||
@@ -27,11 +27,11 @@ namespace SP\DataModel;
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
/**
|
||||
* Class CustomerData
|
||||
* Class ClientData
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class CustomerData extends DataModelBase implements DataModelInterface
|
||||
class ClientData extends DataModelBase implements DataModelInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
@@ -26,138 +26,84 @@ namespace SP\DataModel;
|
||||
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
use SP\Html\Html;
|
||||
|
||||
/**
|
||||
* Class CustomFieldData
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class CustomFieldData extends CustomFieldBaseData
|
||||
class CustomFieldData
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $customfielddata_itemId = 0;
|
||||
public $id;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $customfielddata_moduleId = 0;
|
||||
public $moduleId;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $customfielddata_defId = 0;
|
||||
public $itemId;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $definitionId;
|
||||
/**
|
||||
* @var string Encrypted data
|
||||
*/
|
||||
public $data;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $typeName = '';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $value = '';
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $definitionId = 0;
|
||||
/**
|
||||
* @var CustomFieldDefData
|
||||
*/
|
||||
protected $definition;
|
||||
public $key;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomfielddataItemId()
|
||||
public function getId()
|
||||
{
|
||||
return $this->customfielddata_itemId;
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $customfielddata_itemId
|
||||
* @param int $id
|
||||
*/
|
||||
public function setCustomfielddataItemId($customfielddata_itemId)
|
||||
public function setId($id)
|
||||
{
|
||||
$this->customfielddata_itemId = $customfielddata_itemId;
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomfielddataModuleId()
|
||||
public function getModuleId()
|
||||
{
|
||||
return $this->customfielddata_moduleId;
|
||||
return (int)$this->moduleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $customfielddata_moduleId
|
||||
* @param int $moduleId
|
||||
*/
|
||||
public function setCustomfielddataModuleId($customfielddata_moduleId)
|
||||
public function setModuleId($moduleId)
|
||||
{
|
||||
$this->customfielddata_moduleId = $customfielddata_moduleId;
|
||||
$this->moduleId = (int)$moduleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomfielddataDefId()
|
||||
public function getItemId()
|
||||
{
|
||||
return $this->customfielddata_defId;
|
||||
return (int)$this->itemId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $customfielddata_defId
|
||||
* @param int $itemId
|
||||
*/
|
||||
public function setCustomfielddataDefId($customfielddata_defId)
|
||||
public function setItemId($itemId)
|
||||
{
|
||||
$this->customfielddata_defId = $customfielddata_defId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeName()
|
||||
{
|
||||
return $this->typeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $typeName
|
||||
*/
|
||||
public function setTypeName($typeName)
|
||||
{
|
||||
$this->typeName = $typeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
*/
|
||||
public function setValue($value)
|
||||
{
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCleanValue()
|
||||
{
|
||||
return Html::sanitize($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getSafeHtmlValue()
|
||||
{
|
||||
return htmlspecialchars($this->value, ENT_QUOTES);
|
||||
$this->itemId = (int)$itemId;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +111,7 @@ class CustomFieldData extends CustomFieldBaseData
|
||||
*/
|
||||
public function getDefinitionId()
|
||||
{
|
||||
return $this->definitionId;
|
||||
return (int)$this->definitionId;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -173,23 +119,38 @@ class CustomFieldData extends CustomFieldBaseData
|
||||
*/
|
||||
public function setDefinitionId($definitionId)
|
||||
{
|
||||
$this->definitionId = $definitionId;
|
||||
$this->definitionId = (int)$definitionId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CustomFieldDefData
|
||||
* @return string
|
||||
*/
|
||||
public function getDefinition()
|
||||
public function getData()
|
||||
{
|
||||
return $this->definition;
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CustomFieldDefData $definition
|
||||
* @param string $data
|
||||
*/
|
||||
public function setDefinition(CustomFieldDefData $definition)
|
||||
public function setData($data)
|
||||
{
|
||||
$this->definition = $definition;
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getKey()
|
||||
{
|
||||
return $this->key;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
*/
|
||||
public function setKey($key)
|
||||
{
|
||||
$this->key = $key;
|
||||
}
|
||||
}
|
||||
@@ -24,126 +24,124 @@
|
||||
|
||||
namespace SP\DataModel;
|
||||
|
||||
use SP\Mgmt\CustomFields\CustomFieldTypes;
|
||||
|
||||
/**
|
||||
* Class CustomFieldDefData
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class CustomFieldDefData extends CustomFieldBaseData implements DataModelInterface
|
||||
class CustomFieldDefData
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $customfielddef_module = 0;
|
||||
public $id;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $typeName = '';
|
||||
public $name;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $moduleId;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $moduleName = '';
|
||||
public $field;
|
||||
/**
|
||||
* @var bool
|
||||
* @var int
|
||||
*/
|
||||
public $required = false;
|
||||
public $required;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $help = '';
|
||||
public $help;
|
||||
/**
|
||||
* @var bool
|
||||
* @var int
|
||||
*/
|
||||
public $showInItemsList = false;
|
||||
public $showInList;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $typeId;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomfielddefModule()
|
||||
public function getId()
|
||||
{
|
||||
return $this->customfielddef_module;
|
||||
return (int)$this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $customfielddef_module
|
||||
* @param int $id
|
||||
*/
|
||||
public function setCustomfielddefModule($customfielddef_module)
|
||||
public function setId($id)
|
||||
{
|
||||
$this->customfielddef_module = $customfielddef_module;
|
||||
$this->id = (int)$id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeName()
|
||||
public function getName()
|
||||
{
|
||||
return $this->typeName;
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $typeName
|
||||
* @param string $name
|
||||
*/
|
||||
public function setTypeName($typeName)
|
||||
public function setName($name)
|
||||
{
|
||||
$this->typeName = $typeName;
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getModuleId()
|
||||
{
|
||||
return (int)$this->moduleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $moduleId
|
||||
*/
|
||||
public function setModuleId($moduleId)
|
||||
{
|
||||
$this->moduleId = (int)$moduleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getModuleName()
|
||||
public function getField()
|
||||
{
|
||||
return $this->moduleName;
|
||||
return $this->field;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $moduleName
|
||||
* @param string $field
|
||||
*/
|
||||
public function setModuleName($moduleName)
|
||||
public function setField($field)
|
||||
{
|
||||
$this->moduleName = $moduleName;
|
||||
$this->field = $field;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @return int
|
||||
*/
|
||||
public function getFormId()
|
||||
public function getRequired()
|
||||
{
|
||||
return 'cf_' . strtolower(preg_replace('/\W*/', '', $this->name));
|
||||
return (int)$this->required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function isShowInItemsList()
|
||||
{
|
||||
return $this->showInItemsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param boolean $showInItemsList
|
||||
*/
|
||||
public function setShowInItemsList($showInItemsList)
|
||||
{
|
||||
$this->showInItemsList = $showInItemsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function isRequired()
|
||||
{
|
||||
return $this->required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param boolean $required
|
||||
* @param int $required
|
||||
*/
|
||||
public function setRequired($required)
|
||||
{
|
||||
$this->required = $required;
|
||||
$this->required = (int)$required;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -163,27 +161,34 @@ class CustomFieldDefData extends CustomFieldBaseData implements DataModelInterfa
|
||||
}
|
||||
|
||||
/**
|
||||
* unserialize() checks for the presence of a function with the magic name __wakeup.
|
||||
* If present, this function can reconstruct any resources that the object may have.
|
||||
* The intended use of __wakeup is to reestablish any database connections that may have been lost during
|
||||
* serialization and perform other reinitialization tasks.
|
||||
*
|
||||
* @return void
|
||||
* @link http://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep
|
||||
* @return int
|
||||
*/
|
||||
public function __wakeup()
|
||||
public function getShowInList()
|
||||
{
|
||||
parent::__wakeup();
|
||||
return (int)$this->showInList;
|
||||
}
|
||||
|
||||
$this->moduleName = CustomFieldTypes::getFieldsModules($this->getModule());
|
||||
$this->typeName = CustomFieldTypes::getFieldsTypes($this->getType(), true);
|
||||
/**
|
||||
* @param int $showInList
|
||||
*/
|
||||
public function setShowInList($showInList)
|
||||
{
|
||||
$this->showInList = (int)$showInList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId()
|
||||
public function getTypeId()
|
||||
{
|
||||
return $this->customfielddef_id;
|
||||
return (int)$this->typeId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $typeId
|
||||
*/
|
||||
public function setTypeId($typeId)
|
||||
{
|
||||
$this->typeId = (int)$typeId;
|
||||
}
|
||||
}
|
||||
189
lib/SP/DataModel/CustomFieldDefDataOld.php
Normal file
189
lib/SP/DataModel/CustomFieldDefDataOld.php
Normal file
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\DataModel;
|
||||
|
||||
use SP\Mgmt\CustomFields\CustomFieldTypes;
|
||||
|
||||
/**
|
||||
* Class CustomFieldDefDataOld
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class CustomFieldDefDataOld extends CustomFieldBaseData implements DataModelInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $customfielddef_module = 0;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $typeName = '';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $moduleName = '';
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $required = false;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $help = '';
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $showInItemsList = false;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomfielddefModule()
|
||||
{
|
||||
return $this->customfielddef_module;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $customfielddef_module
|
||||
*/
|
||||
public function setCustomfielddefModule($customfielddef_module)
|
||||
{
|
||||
$this->customfielddef_module = $customfielddef_module;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeName()
|
||||
{
|
||||
return $this->typeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $typeName
|
||||
*/
|
||||
public function setTypeName($typeName)
|
||||
{
|
||||
$this->typeName = $typeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getModuleName()
|
||||
{
|
||||
return $this->moduleName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $moduleName
|
||||
*/
|
||||
public function setModuleName($moduleName)
|
||||
{
|
||||
$this->moduleName = $moduleName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFormId()
|
||||
{
|
||||
return 'cf_' . strtolower(preg_replace('/\W*/', '', $this->name));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function isShowInItemsList()
|
||||
{
|
||||
return $this->showInItemsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param boolean $showInItemsList
|
||||
*/
|
||||
public function setShowInItemsList($showInItemsList)
|
||||
{
|
||||
$this->showInItemsList = $showInItemsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function isRequired()
|
||||
{
|
||||
return $this->required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param boolean $required
|
||||
*/
|
||||
public function setRequired($required)
|
||||
{
|
||||
$this->required = $required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getHelp()
|
||||
{
|
||||
return $this->help;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $help
|
||||
*/
|
||||
public function setHelp($help)
|
||||
{
|
||||
$this->help = $help;
|
||||
}
|
||||
|
||||
/**
|
||||
* unserialize() checks for the presence of a function with the magic name __wakeup.
|
||||
* If present, this function can reconstruct any resources that the object may have.
|
||||
* The intended use of __wakeup is to reestablish any database connections that may have been lost during
|
||||
* serialization and perform other reinitialization tasks.
|
||||
*
|
||||
* @return void
|
||||
* @link http://php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep
|
||||
*/
|
||||
public function __wakeup()
|
||||
{
|
||||
parent::__wakeup();
|
||||
|
||||
$this->moduleName = CustomFieldTypes::getFieldsModules($this->getModule());
|
||||
$this->typeName = CustomFieldTypes::getFieldsTypes($this->getType(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->customfielddef_id;
|
||||
}
|
||||
}
|
||||
97
lib/SP/DataModel/CustomFieldTypeData.php
Normal file
97
lib/SP/DataModel/CustomFieldTypeData.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\DataModel;
|
||||
|
||||
|
||||
/**
|
||||
* Class CustomFieldTypeData
|
||||
*
|
||||
* @package SP\DataModel
|
||||
*/
|
||||
class CustomFieldTypeData extends DataModelBase implements DataModelInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $id;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $text;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return (int)$this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = (int)$id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
*/
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getText()
|
||||
{
|
||||
return $this->text;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $text
|
||||
*/
|
||||
public function setText($text)
|
||||
{
|
||||
$this->text = $text;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
@@ -36,178 +36,66 @@ class FileData extends DataModelBase implements DataModelInterface
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $accfile_id = 0;
|
||||
public $id;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $accfile_accountId = 0;
|
||||
public $accountId;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $accfile_name = '';
|
||||
public $name;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $accfile_type = 0;
|
||||
public $type;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $accfile_content = '';
|
||||
public $content;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $accfile_extension = '';
|
||||
public $extension;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $accfile_thumb = '';
|
||||
public $thumb;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $accfile_size = 0;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAccfileAccountId()
|
||||
{
|
||||
return $this->accfile_accountId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $accfile_accountId
|
||||
*/
|
||||
public function setAccfileAccountId($accfile_accountId)
|
||||
{
|
||||
$this->accfile_accountId = $accfile_accountId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAccfileName()
|
||||
{
|
||||
return $this->accfile_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $accfile_name
|
||||
*/
|
||||
public function setAccfileName($accfile_name)
|
||||
{
|
||||
$this->accfile_name = $accfile_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAccfileType()
|
||||
{
|
||||
return $this->accfile_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $accfile_type
|
||||
*/
|
||||
public function setAccfileType($accfile_type)
|
||||
{
|
||||
$this->accfile_type = $accfile_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAccfileContent()
|
||||
{
|
||||
return $this->accfile_content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $accfile_content
|
||||
*/
|
||||
public function setAccfileContent($accfile_content)
|
||||
{
|
||||
$this->accfile_content = $accfile_content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAccfileExtension()
|
||||
{
|
||||
return $this->accfile_extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $accfile_extension
|
||||
*/
|
||||
public function setAccfileExtension($accfile_extension)
|
||||
{
|
||||
$this->accfile_extension = $accfile_extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAccfileThumb()
|
||||
{
|
||||
return $this->accfile_thumb;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $accfile_thumb
|
||||
*/
|
||||
public function setAccfileThumb($accfile_thumb)
|
||||
{
|
||||
$this->accfile_thumb = $accfile_thumb;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAccfileSize()
|
||||
{
|
||||
return $this->accfile_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $accfile_size
|
||||
*/
|
||||
public function setAccfileSize($accfile_size)
|
||||
{
|
||||
$this->accfile_size = $accfile_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getRoundSize()
|
||||
{
|
||||
return round(($this->accfile_size / 1000), 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAccfileId()
|
||||
{
|
||||
return $this->accfile_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $accfile_id
|
||||
*/
|
||||
public function setAccfileId($accfile_id)
|
||||
{
|
||||
$this->accfile_id = $accfile_id;
|
||||
}
|
||||
public $size;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->accfile_id;
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAccountId()
|
||||
{
|
||||
return $this->accountId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $accountId
|
||||
*/
|
||||
public function setAccountId($accountId)
|
||||
{
|
||||
$this->accountId = $accountId;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,6 +103,102 @@ class FileData extends DataModelBase implements DataModelInterface
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->accfile_name;
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
*/
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $type
|
||||
*/
|
||||
public function setType($type)
|
||||
{
|
||||
$this->type = $type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $content
|
||||
*/
|
||||
public function setContent($content)
|
||||
{
|
||||
$this->content = $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getExtension()
|
||||
{
|
||||
return $this->extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $extension
|
||||
*/
|
||||
public function setExtension($extension)
|
||||
{
|
||||
$this->extension = $extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getThumb()
|
||||
{
|
||||
return $this->thumb;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $thumb
|
||||
*/
|
||||
public function setThumb($thumb)
|
||||
{
|
||||
$this->thumb = $thumb;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getSize()
|
||||
{
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $size
|
||||
*/
|
||||
public function setSize($size)
|
||||
{
|
||||
$this->size = $size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getRoundSize()
|
||||
{
|
||||
return round($this->size / 1000, 2);
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class ApiTokenForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var ApiTokenData
|
||||
*/
|
||||
protected $ApiTokenData;
|
||||
protected $apiTokenData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,11 +68,11 @@ class ApiTokenForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->ApiTokenData = new ApiTokenData();
|
||||
$this->ApiTokenData->setAuthtokenId($this->itemId);
|
||||
$this->ApiTokenData->setAuthtokenUserId(Request::analyze('users', 0));
|
||||
$this->ApiTokenData->setAuthtokenActionId(Request::analyze('actions', 0));
|
||||
$this->ApiTokenData->setAuthtokenHash(Request::analyzeEncrypted('pass'));
|
||||
$this->apiTokenData = new ApiTokenData();
|
||||
$this->apiTokenData->setAuthtokenId($this->itemId);
|
||||
$this->apiTokenData->setAuthtokenUserId(Request::analyze('users', 0));
|
||||
$this->apiTokenData->setAuthtokenActionId(Request::analyze('actions', 0));
|
||||
$this->apiTokenData->setAuthtokenHash(Request::analyzeEncrypted('pass'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,19 +80,19 @@ class ApiTokenForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if ($this->ApiTokenData->getAuthtokenUserId() === 0) {
|
||||
if ($this->apiTokenData->getAuthtokenUserId() === 0) {
|
||||
throw new ValidationException(__u('Usuario no indicado'));
|
||||
}
|
||||
|
||||
if ($this->ApiTokenData->getAuthtokenActionId() === 0) {
|
||||
if ($this->apiTokenData->getAuthtokenActionId() === 0) {
|
||||
throw new ValidationException(__u('Acción no indicada'));
|
||||
}
|
||||
|
||||
$action = $this->ApiTokenData->getAuthtokenActionId();
|
||||
$action = $this->apiTokenData->getAuthtokenActionId();
|
||||
|
||||
if (($action === ActionsInterface::ACCOUNT_VIEW_PASS
|
||||
|| $action === ActionsInterface::ACCOUNT_CREATE)
|
||||
&& $this->ApiTokenData->getAuthtokenHash() === ''
|
||||
&& $this->apiTokenData->getAuthtokenHash() === ''
|
||||
) {
|
||||
throw new ValidationException(__u('La clave no puede estar en blanco'));
|
||||
}
|
||||
@@ -103,6 +103,6 @@ class ApiTokenForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->ApiTokenData;
|
||||
return $this->apiTokenData;
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class CategoryForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var CategoryData
|
||||
*/
|
||||
protected $CategoryData;
|
||||
protected $categoryData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,10 +68,10 @@ class CategoryForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->CategoryData = new CategoryData();
|
||||
$this->CategoryData->setCategoryId($this->itemId);
|
||||
$this->CategoryData->setCategoryName(Request::analyze('name'));
|
||||
$this->CategoryData->setCategoryDescription(Request::analyze('description'));
|
||||
$this->categoryData = new CategoryData();
|
||||
$this->categoryData->setCategoryId($this->itemId);
|
||||
$this->categoryData->setCategoryName(Request::analyze('name'));
|
||||
$this->categoryData->setCategoryDescription(Request::analyze('description'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,7 +79,7 @@ class CategoryForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->CategoryData->getCategoryName()) {
|
||||
if (!$this->categoryData->getCategoryName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de categoría'));
|
||||
}
|
||||
}
|
||||
@@ -89,6 +89,6 @@ class CategoryForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->CategoryData;
|
||||
return $this->categoryData;
|
||||
}
|
||||
}
|
||||
@@ -24,22 +24,22 @@
|
||||
|
||||
namespace SP\Forms;
|
||||
|
||||
use SP\Core\ActionsInterface;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\Http\Request;
|
||||
|
||||
/**
|
||||
* Class CustomerForm
|
||||
* Class ClientForm
|
||||
*
|
||||
* @package SP\Forms
|
||||
*/
|
||||
class CustomerForm extends FormBase implements FormInterface
|
||||
class ClientForm extends FormBase implements FormInterface
|
||||
{
|
||||
/**
|
||||
* @var CustomerData
|
||||
* @var ClientData
|
||||
*/
|
||||
protected $CustomerData;
|
||||
protected $clientData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,11 +68,11 @@ class CustomerForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->CustomerData = new CustomerData();
|
||||
$this->CustomerData->setCustomerId($this->itemId);
|
||||
$this->CustomerData->setCustomerName(Request::analyze('name'));
|
||||
$this->CustomerData->setCustomerDescription(Request::analyze('description'));
|
||||
$this->CustomerData->setCustomerIsGlobal(Request::analyze('isglobal', 0, false, 1));
|
||||
$this->clientData = new ClientData();
|
||||
$this->clientData->setCustomerId($this->itemId);
|
||||
$this->clientData->setCustomerName(Request::analyze('name'));
|
||||
$this->clientData->setCustomerDescription(Request::analyze('description'));
|
||||
$this->clientData->setCustomerIsGlobal(Request::analyze('isglobal', 0, false, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,16 +80,16 @@ class CustomerForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->CustomerData->getCustomerName()) {
|
||||
throw new ValidationException(__('Es necesario un nombre de cliente', false));
|
||||
if (!$this->clientData->getCustomerName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de cliente'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CustomerData
|
||||
* @return ClientData
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->CustomerData;
|
||||
return $this->clientData;
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class CustomFieldDefForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var CustomFieldDefData
|
||||
*/
|
||||
protected $CustomFieldDefData;
|
||||
protected $customFieldDefData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,14 +68,13 @@ class CustomFieldDefForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->CustomFieldDefData = new CustomFieldDefData();
|
||||
$this->CustomFieldDefData->setCustomfielddefId($this->itemId);
|
||||
$this->CustomFieldDefData->setId($this->itemId);
|
||||
$this->CustomFieldDefData->setName(Request::analyze('name'));
|
||||
$this->CustomFieldDefData->setType(Request::analyze('type', 0));
|
||||
$this->CustomFieldDefData->setModule(Request::analyze('module', 0));
|
||||
$this->CustomFieldDefData->setHelp(Request::analyze('help'));
|
||||
$this->CustomFieldDefData->setRequired(Request::analyze('required', false, false, true));
|
||||
$this->customFieldDefData = new CustomFieldDefData();
|
||||
$this->customFieldDefData->setId($this->itemId);
|
||||
$this->customFieldDefData->setName(Request::analyze('name'));
|
||||
$this->customFieldDefData->setTypeId(Request::analyze('type', 0));
|
||||
$this->customFieldDefData->setModuleId(Request::analyze('module', 0));
|
||||
$this->customFieldDefData->setHelp(Request::analyze('help'));
|
||||
$this->customFieldDefData->setRequired(Request::analyze('required', false, false, true));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,12 +82,16 @@ class CustomFieldDefForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->CustomFieldDefData->getName()) {
|
||||
throw new ValidationException(__('Nombre del campo no indicado', false));
|
||||
} elseif ($this->CustomFieldDefData->getType() === 0) {
|
||||
throw new ValidationException(__('Tipo del campo no indicado', false));
|
||||
} elseif ($this->CustomFieldDefData->getModule() === 0) {
|
||||
throw new ValidationException(__('Módulo del campo no indicado', false));
|
||||
if (!$this->customFieldDefData->getName()) {
|
||||
throw new ValidationException(__u('Nombre del campo no indicado'));
|
||||
}
|
||||
|
||||
if ($this->customFieldDefData->getTypeId() === 0) {
|
||||
throw new ValidationException(__u('Tipo del campo no indicado'));
|
||||
}
|
||||
|
||||
if ($this->customFieldDefData->getModuleId() === 0) {
|
||||
throw new ValidationException(__u('Módulo del campo no indicado'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,6 +100,6 @@ class CustomFieldDefForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->CustomFieldDefData;
|
||||
return $this->customFieldDefData;
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ class NoticeForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var NoticeData
|
||||
*/
|
||||
protected $NoticeData;
|
||||
protected $noticeData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -72,32 +72,40 @@ class NoticeForm extends FormBase implements FormInterface
|
||||
$Description = new NoticeMessage();
|
||||
$Description->addDescription(Request::analyze('notice_description'));
|
||||
|
||||
$this->NoticeData = new NoticeData();
|
||||
$this->NoticeData->setNoticeId($this->itemId);
|
||||
$this->NoticeData->setNoticeType(Request::analyze('notice_type'));
|
||||
$this->NoticeData->setNoticeComponent(Request::analyze('notice_component'));
|
||||
$this->NoticeData->setNoticeDescription($Description);
|
||||
$this->NoticeData->setNoticeUserId(Request::analyze('notice_user', 0));
|
||||
$this->noticeData = new NoticeData();
|
||||
$this->noticeData->setNoticeId($this->itemId);
|
||||
$this->noticeData->setNoticeType(Request::analyze('notice_type'));
|
||||
$this->noticeData->setNoticeComponent(Request::analyze('notice_component'));
|
||||
$this->noticeData->setNoticeDescription($Description);
|
||||
$this->noticeData->setNoticeUserId(Request::analyze('notice_user', 0));
|
||||
|
||||
if ($this->NoticeData->getNoticeUserId() === 0) {
|
||||
$this->NoticeData->setNoticeOnlyAdmin(Request::analyze('notice_onlyadmin', 0, false, 1));
|
||||
$this->NoticeData->setNoticeSticky(Request::analyze('notice_sticky', 0, false, 1));
|
||||
if ($this->noticeData->getNoticeUserId() === 0) {
|
||||
$this->noticeData->setNoticeOnlyAdmin(Request::analyze('notice_onlyadmin', 0, false, 1));
|
||||
$this->noticeData->setNoticeSticky(Request::analyze('notice_sticky', 0, false, 1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws ValidationException
|
||||
*/
|
||||
private function checkCommon()
|
||||
{
|
||||
if (!$this->NoticeData->getNoticeComponent()) {
|
||||
throw new ValidationException(__('Es necesario un componente', false));
|
||||
} elseif (!$this->NoticeData->getNoticeType()) {
|
||||
throw new ValidationException(__('Es necesario un tipo', false));
|
||||
} elseif (!$this->NoticeData->getNoticeDescription()) {
|
||||
throw new ValidationException(__('Es necesaria una descripción', false));
|
||||
} elseif (!$this->NoticeData->getNoticeUserId()
|
||||
&& !$this->NoticeData->isNoticeOnlyAdmin()
|
||||
&& !$this->NoticeData->isNoticeSticky()
|
||||
) {
|
||||
throw new ValidationException(__('Es necesario un destinatario', false));
|
||||
if (!$this->noticeData->getNoticeComponent()) {
|
||||
throw new ValidationException(__u('Es necesario un componente'));
|
||||
}
|
||||
|
||||
if (!$this->noticeData->getNoticeType()) {
|
||||
throw new ValidationException(__u('Es necesario un tipo'));
|
||||
}
|
||||
|
||||
if (!$this->noticeData->getNoticeDescription()) {
|
||||
throw new ValidationException(__u('Es necesaria una descripción'));
|
||||
}
|
||||
|
||||
if (!$this->noticeData->getNoticeUserId()
|
||||
&& !$this->noticeData->isNoticeOnlyAdmin()
|
||||
&& !$this->noticeData->isNoticeSticky()) {
|
||||
throw new ValidationException(__u('Es necesario un destinatario'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,6 +114,6 @@ class NoticeForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->NoticeData;
|
||||
return $this->noticeData;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class PublicLinkForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var PublicLinkData
|
||||
*/
|
||||
protected $PublicLinkData;
|
||||
protected $publicLinkData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -72,12 +72,12 @@ class PublicLinkForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->PublicLinkData = new PublicLinkData();
|
||||
$this->PublicLinkData->setPublicLinkId($this->itemId);
|
||||
$this->PublicLinkData->setPublicLinkTypeId(PublicLink::TYPE_ACCOUNT);
|
||||
$this->PublicLinkData->setPublicLinkItemId(Request::analyze('accountId', 0));
|
||||
$this->PublicLinkData->setPublicLinkNotify(Request::analyze('notify', false, false, true));
|
||||
$this->PublicLinkData->setPublicLinkHash(Util::generateRandomBytes());
|
||||
$this->publicLinkData = new PublicLinkData();
|
||||
$this->publicLinkData->setPublicLinkId($this->itemId);
|
||||
$this->publicLinkData->setPublicLinkTypeId(PublicLink::TYPE_ACCOUNT);
|
||||
$this->publicLinkData->setPublicLinkItemId(Request::analyze('accountId', 0));
|
||||
$this->publicLinkData->setPublicLinkNotify(Request::analyze('notify', false, false, true));
|
||||
$this->publicLinkData->setPublicLinkHash(Util::generateRandomBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,7 +85,7 @@ class PublicLinkForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->PublicLinkData->getPublicLinkItemId()) {
|
||||
if (!$this->publicLinkData->getPublicLinkItemId()) {
|
||||
throw new ValidationException(__u('Es necesario una cuenta'));
|
||||
}
|
||||
}
|
||||
@@ -95,6 +95,6 @@ class PublicLinkForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->PublicLinkData;
|
||||
return $this->publicLinkData;
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
namespace SP\Forms;
|
||||
|
||||
use SP\Core\ActionsInterface;
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\ValidationException;
|
||||
use SP\DataModel\TagData;
|
||||
use SP\Http\Request;
|
||||
@@ -39,7 +39,7 @@ class TagForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var TagData
|
||||
*/
|
||||
protected $TagData;
|
||||
protected $tagData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,9 +68,9 @@ class TagForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->TagData = new TagData();
|
||||
$this->TagData->setTagId($this->itemId);
|
||||
$this->TagData->setTagName(Request::analyze('name'));
|
||||
$this->tagData = new TagData();
|
||||
$this->tagData->setTagId($this->itemId);
|
||||
$this->tagData->setTagName(Request::analyze('name'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,8 +78,8 @@ class TagForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->TagData->getTagName()) {
|
||||
throw new ValidationException(__('Es necesario un nombre de etiqueta', false));
|
||||
if (!$this->tagData->getTagName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de etiqueta'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,6 +88,6 @@ class TagForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->TagData;
|
||||
return $this->tagData;
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ class UserForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var UserData
|
||||
*/
|
||||
protected $UserData;
|
||||
protected $userData;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
@@ -86,20 +86,20 @@ class UserForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->UserData = new UserData();
|
||||
$this->UserData->setUserId($this->itemId);
|
||||
$this->UserData->setUserName(Request::analyze('name'));
|
||||
$this->UserData->setUserLogin(Request::analyze('login'));
|
||||
$this->UserData->setUserSsoLogin(Request::analyze('login_sso'));
|
||||
$this->UserData->setUserEmail(Request::analyze('email'));
|
||||
$this->UserData->setUserNotes(Request::analyze('notes'));
|
||||
$this->UserData->setUserGroupId(Request::analyze('groupid', 0));
|
||||
$this->UserData->setUserProfileId(Request::analyze('profileid', 0));
|
||||
$this->UserData->setUserIsAdminApp(Request::analyze('adminapp', 0, false, 1));
|
||||
$this->UserData->setUserIsAdminAcc(Request::analyze('adminacc', 0, false, 1));
|
||||
$this->UserData->setUserIsDisabled(Request::analyze('disabled', 0, false, 1));
|
||||
$this->UserData->setUserIsChangePass(Request::analyze('changepass', 0, false, 1));
|
||||
$this->UserData->setUserPass(Request::analyzeEncrypted('pass'));
|
||||
$this->userData = new UserData();
|
||||
$this->userData->setUserId($this->itemId);
|
||||
$this->userData->setUserName(Request::analyze('name'));
|
||||
$this->userData->setUserLogin(Request::analyze('login'));
|
||||
$this->userData->setUserSsoLogin(Request::analyze('login_sso'));
|
||||
$this->userData->setUserEmail(Request::analyze('email'));
|
||||
$this->userData->setUserNotes(Request::analyze('notes'));
|
||||
$this->userData->setUserGroupId(Request::analyze('groupid', 0));
|
||||
$this->userData->setUserProfileId(Request::analyze('profileid', 0));
|
||||
$this->userData->setUserIsAdminApp(Request::analyze('adminapp', 0, false, 1));
|
||||
$this->userData->setUserIsAdminAcc(Request::analyze('adminacc', 0, false, 1));
|
||||
$this->userData->setUserIsDisabled(Request::analyze('disabled', 0, false, 1));
|
||||
$this->userData->setUserIsChangePass(Request::analyze('changepass', 0, false, 1));
|
||||
$this->userData->setUserPass(Request::analyzeEncrypted('pass'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,27 +107,29 @@ class UserForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->isLdap && !$this->UserData->getUserName()) {
|
||||
if (!$this->isLdap && !$this->userData->getUserName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de usuario'));
|
||||
}
|
||||
|
||||
if (!$this->isLdap && !$this->UserData->getUserLogin()) {
|
||||
if (!$this->isLdap && !$this->userData->getUserLogin()) {
|
||||
throw new ValidationException(__u('Es necesario un login'));
|
||||
}
|
||||
|
||||
if (!$this->UserData->getUserProfileId()) {
|
||||
if (!$this->userData->getUserProfileId()) {
|
||||
throw new ValidationException(__u('Es necesario un perfil'));
|
||||
}
|
||||
|
||||
if (!$this->UserData->getUserGroupId()) {
|
||||
if (!$this->userData->getUserGroupId()) {
|
||||
throw new ValidationException(__u('Es necesario un grupo'));
|
||||
}
|
||||
|
||||
if (!$this->isLdap && !$this->UserData->getUserEmail()) {
|
||||
if (!$this->isLdap && !$this->userData->getUserEmail()) {
|
||||
throw new ValidationException(__u('Es necesario un email'));
|
||||
}
|
||||
|
||||
if ($this->ConfigData->isDemoEnabled() && !SessionFactory::getUserData()->isUserIsAdminApp() && $this->UserData->getUserLogin() === 'demo') {
|
||||
if ($this->ConfigData->isDemoEnabled()
|
||||
&& $this->userData->getUserLogin() === 'demo'
|
||||
&& !SessionFactory::getUserData()->isUserIsAdminApp()) {
|
||||
throw new ValidationException(__u('Ey, esto es una DEMO!!'));
|
||||
}
|
||||
}
|
||||
@@ -143,11 +145,11 @@ class UserForm extends FormBase implements FormInterface
|
||||
throw new ValidationException(__u('Ey, esto es una DEMO!!'));
|
||||
}
|
||||
|
||||
if (!$userPassR || !$this->UserData->getUserPass()) {
|
||||
if (!$userPassR || !$this->userData->getUserPass()) {
|
||||
throw new ValidationException(__u('La clave no puede estar en blanco'));
|
||||
}
|
||||
|
||||
if ($this->UserData->getUserPass() !== $userPassR) {
|
||||
if ($this->userData->getUserPass() !== $userPassR) {
|
||||
throw new ValidationException(__u('Las claves no coinciden'));
|
||||
}
|
||||
}
|
||||
@@ -173,7 +175,7 @@ class UserForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->UserData;
|
||||
return $this->userData;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,7 +39,7 @@ class UserGroupForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var GroupData
|
||||
*/
|
||||
protected $GroupData;
|
||||
protected $groupData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,11 +68,11 @@ class UserGroupForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->GroupData = new GroupData();
|
||||
$this->GroupData->setUsergroupId($this->itemId);
|
||||
$this->GroupData->setUsergroupName(Request::analyze('name'));
|
||||
$this->GroupData->setUsergroupDescription(Request::analyze('description'));
|
||||
$this->GroupData->setUsers(Request::analyze('users', 0));
|
||||
$this->groupData = new GroupData();
|
||||
$this->groupData->setUsergroupId($this->itemId);
|
||||
$this->groupData->setUsergroupName(Request::analyze('name'));
|
||||
$this->groupData->setUsergroupDescription(Request::analyze('description'));
|
||||
$this->groupData->setUsers(Request::analyze('users', 0));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,7 @@ class UserGroupForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->GroupData->getUsergroupName()) {
|
||||
if (!$this->groupData->getUsergroupName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de grupo'));
|
||||
}
|
||||
}
|
||||
@@ -90,6 +90,6 @@ class UserGroupForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->GroupData;
|
||||
return $this->groupData;
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class UserProfileForm extends FormBase implements FormInterface
|
||||
/**
|
||||
* @var ProfileData
|
||||
*/
|
||||
protected $ProfileData;
|
||||
protected $profileData;
|
||||
|
||||
/**
|
||||
* Validar el formulario
|
||||
@@ -68,38 +68,38 @@ class UserProfileForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function analyzeRequestData()
|
||||
{
|
||||
$this->ProfileData = new ProfileData();
|
||||
$this->ProfileData->setUserprofileName(Request::analyze('profile_name'));
|
||||
$this->ProfileData->setUserprofileId($this->itemId);
|
||||
$this->ProfileData->setAccAdd(Request::analyze('profile_accadd', 0, false, 1));
|
||||
$this->ProfileData->setAccView(Request::analyze('profile_accview', 0, false, 1));
|
||||
$this->ProfileData->setAccViewPass(Request::analyze('profile_accviewpass', 0, false, 1));
|
||||
$this->ProfileData->setAccViewHistory(Request::analyze('profile_accviewhistory', 0, false, 1));
|
||||
$this->ProfileData->setAccEdit(Request::analyze('profile_accedit', 0, false, 1));
|
||||
$this->ProfileData->setAccEditPass(Request::analyze('profile_acceditpass', 0, false, 1));
|
||||
$this->ProfileData->setAccDelete(Request::analyze('profile_accdel', 0, false, 1));
|
||||
$this->ProfileData->setAccFiles(Request::analyze('profile_accfiles', 0, false, 1));
|
||||
$this->ProfileData->setAccPublicLinks(Request::analyze('profile_accpublinks', 0, false, 1));
|
||||
$this->ProfileData->setAccPrivate(Request::analyze('profile_accprivate', 0, false, 1));
|
||||
$this->ProfileData->setAccPrivateGroup(Request::analyze('profile_accprivategroup', 0, false, 1));
|
||||
$this->ProfileData->setAccPermission(Request::analyze('profile_accpermissions', 0, false, 1));
|
||||
$this->ProfileData->setAccGlobalSearch(Request::analyze('profile_accglobalsearch', 0, false, 1));
|
||||
$this->ProfileData->setConfigGeneral(Request::analyze('profile_config', 0, false, 1));
|
||||
$this->ProfileData->setConfigEncryption(Request::analyze('profile_configmpw', 0, false, 1));
|
||||
$this->ProfileData->setConfigBackup(Request::analyze('profile_configback', 0, false, 1));
|
||||
$this->ProfileData->setConfigImport(Request::analyze('profile_configimport', 0, false, 1));
|
||||
$this->ProfileData->setMgmCategories(Request::analyze('profile_categories', 0, false, 1));
|
||||
$this->ProfileData->setMgmCustomers(Request::analyze('profile_customers', 0, false, 1));
|
||||
$this->ProfileData->setMgmCustomFields(Request::analyze('profile_customfields', 0, false, 1));
|
||||
$this->ProfileData->setMgmUsers(Request::analyze('profile_users', 0, false, 1));
|
||||
$this->ProfileData->setMgmGroups(Request::analyze('profile_groups', 0, false, 1));
|
||||
$this->ProfileData->setMgmProfiles(Request::analyze('profile_profiles', 0, false, 1));
|
||||
$this->ProfileData->setMgmApiTokens(Request::analyze('profile_apitokens', 0, false, 1));
|
||||
$this->ProfileData->setMgmPublicLinks(Request::analyze('profile_publinks', 0, false, 1));
|
||||
$this->ProfileData->setMgmAccounts(Request::analyze('profile_accounts', 0, false, 1));
|
||||
$this->ProfileData->setMgmFiles(Request::analyze('profile_files', 0, false, 1));
|
||||
$this->ProfileData->setMgmTags(Request::analyze('profile_tags', 0, false, 1));
|
||||
$this->ProfileData->setEvl(Request::analyze('profile_eventlog', 0, false, 1));
|
||||
$this->profileData = new ProfileData();
|
||||
$this->profileData->setUserprofileName(Request::analyze('profile_name'));
|
||||
$this->profileData->setUserprofileId($this->itemId);
|
||||
$this->profileData->setAccAdd(Request::analyze('profile_accadd', 0, false, 1));
|
||||
$this->profileData->setAccView(Request::analyze('profile_accview', 0, false, 1));
|
||||
$this->profileData->setAccViewPass(Request::analyze('profile_accviewpass', 0, false, 1));
|
||||
$this->profileData->setAccViewHistory(Request::analyze('profile_accviewhistory', 0, false, 1));
|
||||
$this->profileData->setAccEdit(Request::analyze('profile_accedit', 0, false, 1));
|
||||
$this->profileData->setAccEditPass(Request::analyze('profile_acceditpass', 0, false, 1));
|
||||
$this->profileData->setAccDelete(Request::analyze('profile_accdel', 0, false, 1));
|
||||
$this->profileData->setAccFiles(Request::analyze('profile_accfiles', 0, false, 1));
|
||||
$this->profileData->setAccPublicLinks(Request::analyze('profile_accpublinks', 0, false, 1));
|
||||
$this->profileData->setAccPrivate(Request::analyze('profile_accprivate', 0, false, 1));
|
||||
$this->profileData->setAccPrivateGroup(Request::analyze('profile_accprivategroup', 0, false, 1));
|
||||
$this->profileData->setAccPermission(Request::analyze('profile_accpermissions', 0, false, 1));
|
||||
$this->profileData->setAccGlobalSearch(Request::analyze('profile_accglobalsearch', 0, false, 1));
|
||||
$this->profileData->setConfigGeneral(Request::analyze('profile_config', 0, false, 1));
|
||||
$this->profileData->setConfigEncryption(Request::analyze('profile_configmpw', 0, false, 1));
|
||||
$this->profileData->setConfigBackup(Request::analyze('profile_configback', 0, false, 1));
|
||||
$this->profileData->setConfigImport(Request::analyze('profile_configimport', 0, false, 1));
|
||||
$this->profileData->setMgmCategories(Request::analyze('profile_categories', 0, false, 1));
|
||||
$this->profileData->setMgmCustomers(Request::analyze('profile_customers', 0, false, 1));
|
||||
$this->profileData->setMgmCustomFields(Request::analyze('profile_customfields', 0, false, 1));
|
||||
$this->profileData->setMgmUsers(Request::analyze('profile_users', 0, false, 1));
|
||||
$this->profileData->setMgmGroups(Request::analyze('profile_groups', 0, false, 1));
|
||||
$this->profileData->setMgmProfiles(Request::analyze('profile_profiles', 0, false, 1));
|
||||
$this->profileData->setMgmApiTokens(Request::analyze('profile_apitokens', 0, false, 1));
|
||||
$this->profileData->setMgmPublicLinks(Request::analyze('profile_publinks', 0, false, 1));
|
||||
$this->profileData->setMgmAccounts(Request::analyze('profile_accounts', 0, false, 1));
|
||||
$this->profileData->setMgmFiles(Request::analyze('profile_files', 0, false, 1));
|
||||
$this->profileData->setMgmTags(Request::analyze('profile_tags', 0, false, 1));
|
||||
$this->profileData->setEvl(Request::analyze('profile_eventlog', 0, false, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,7 +107,7 @@ class UserProfileForm extends FormBase implements FormInterface
|
||||
*/
|
||||
protected function checkCommon()
|
||||
{
|
||||
if (!$this->ProfileData->getUserprofileName()) {
|
||||
if (!$this->profileData->getUserprofileName()) {
|
||||
throw new ValidationException(__u('Es necesario un nombre de perfil'));
|
||||
}
|
||||
}
|
||||
@@ -117,6 +117,6 @@ class UserProfileForm extends FormBase implements FormInterface
|
||||
*/
|
||||
public function getItemData()
|
||||
{
|
||||
return $this->ProfileData;
|
||||
return $this->profileData;
|
||||
}
|
||||
}
|
||||
@@ -73,12 +73,13 @@ abstract class DataGridDataBase implements DataGridDataInterface
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $source string
|
||||
* @param bool $isMethod
|
||||
* @param string $source
|
||||
* @param bool $isMethod
|
||||
* @param null $filter
|
||||
*/
|
||||
public function addDataRowSource($source, $isMethod = false)
|
||||
public function addDataRowSource($source, $isMethod = false, $filter = null)
|
||||
{
|
||||
$this->_sources[] = ['name' => $source, 'isMethod' => $isMethod];
|
||||
$this->_sources[] = ['name' => $source, 'isMethod' => $isMethod, 'filter' => $filter];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,10 +38,11 @@ interface DataGridDataInterface
|
||||
/**
|
||||
* Establecer los orígenes de datos de la consulta
|
||||
*
|
||||
* @param $source string
|
||||
* @param bool $isMethod
|
||||
* @param string $source
|
||||
* @param bool $isMethod
|
||||
* @param null $filter
|
||||
*/
|
||||
public function addDataRowSource($source, $isMethod = false);
|
||||
public function addDataRowSource($source, $isMethod = false, $filter = null);
|
||||
|
||||
/**
|
||||
* Devolver los orígenes de datos de la consulta
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace SP\Import;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
@@ -90,7 +90,7 @@ abstract class CsvImportBase extends ImportBase
|
||||
list($accountName, $customerName, $categoryName, $url, $login, $password, $notes) = $fields;
|
||||
|
||||
// Obtener los ids de cliente y categoría
|
||||
$CustomerData = new CustomerData(null, $customerName);
|
||||
$CustomerData = new ClientData(null, $customerName);
|
||||
$this->addCustomer($CustomerData);
|
||||
$CategoryData = new CategoryData(null, $categoryName);
|
||||
$this->addCategory($CategoryData);
|
||||
|
||||
@@ -32,7 +32,7 @@ use SP\Core\Messages\LogMessage;
|
||||
use SP\Core\OldCrypt;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\DataModel\TagData;
|
||||
use SP\Log\Log;
|
||||
use SP\Mgmt\Categories\Category;
|
||||
@@ -196,10 +196,10 @@ abstract class ImportBase implements ImportInterface
|
||||
/**
|
||||
* Añadir un cliente y devolver el Id
|
||||
*
|
||||
* @param CustomerData $CustomerData
|
||||
* @param ClientData $CustomerData
|
||||
* @return Customer|null
|
||||
*/
|
||||
protected function addCustomer(CustomerData $CustomerData)
|
||||
protected function addCustomer(ClientData $CustomerData)
|
||||
{
|
||||
try {
|
||||
$Customer = Customer::getItem($CustomerData)->add();
|
||||
|
||||
@@ -28,7 +28,7 @@ use DOMElement;
|
||||
use DOMXPath;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
@@ -52,7 +52,7 @@ class KeepassImport extends ImportBase
|
||||
*/
|
||||
public function doImport()
|
||||
{
|
||||
$customerData = new CustomerData(null, 'KeePass');
|
||||
$customerData = new ClientData(null, 'KeePass');
|
||||
$this->addCustomer($customerData);
|
||||
|
||||
$this->customerId = $customerData->getCustomerId();
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace SP\Import;
|
||||
use SimpleXMLElement;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
@@ -52,7 +52,7 @@ class KeepassXImport extends ImportBase
|
||||
*/
|
||||
public function doImport()
|
||||
{
|
||||
$customerData = new CustomerData(null, 'KeePassX');
|
||||
$customerData = new ClientData(null, 'KeePassX');
|
||||
$this->addCustomer($customerData);
|
||||
|
||||
$this->customerId = $customerData->getCustomerId();
|
||||
|
||||
@@ -32,7 +32,7 @@ use SP\Core\Exceptions\SPException;
|
||||
use SP\Core\OldCrypt;
|
||||
use SP\DataModel\AccountExtData;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\DataModel\TagData;
|
||||
|
||||
defined('APP_ROOT') || die();
|
||||
@@ -206,7 +206,7 @@ class SyspassImport extends ImportBase
|
||||
return;
|
||||
}
|
||||
|
||||
$CustomerData = new CustomerData();
|
||||
$CustomerData = new ClientData();
|
||||
|
||||
foreach ($Customer->childNodes as $customerNode) {
|
||||
if (isset($customerNode->tagName)) {
|
||||
|
||||
@@ -29,7 +29,7 @@ defined('APP_ROOT') || die();
|
||||
|
||||
use SP\Account\AccountUtil;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\Mgmt\ItemInterface;
|
||||
use SP\Mgmt\ItemSelectInterface;
|
||||
use SP\Mgmt\ItemTrait;
|
||||
@@ -39,7 +39,7 @@ use SP\Storage\QueryData;
|
||||
/**
|
||||
* Esta clase es la encargada de realizar las operaciones sobre los clientes de sysPass
|
||||
*
|
||||
* @property CustomerData $itemData
|
||||
* @property ClientData $itemData
|
||||
*/
|
||||
class Customer extends CustomerBase implements ItemInterface, ItemSelectInterface
|
||||
{
|
||||
@@ -156,7 +156,7 @@ class Customer extends CustomerBase implements ItemInterface, ItemSelectInterfac
|
||||
|
||||
/**
|
||||
* @param $id int
|
||||
* @return CustomerData
|
||||
* @return ClientData
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
@@ -224,7 +224,7 @@ class Customer extends CustomerBase implements ItemInterface, ItemSelectInterfac
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CustomerData[]
|
||||
* @return ClientData[]
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
@@ -269,7 +269,7 @@ class Customer extends CustomerBase implements ItemInterface, ItemSelectInterfac
|
||||
* Devolver los elementos con los ids especificados
|
||||
*
|
||||
* @param array $ids
|
||||
* @return CustomerData[]
|
||||
* @return ClientData[]
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace SP\Mgmt\Customers;
|
||||
defined('APP_ROOT') || die();
|
||||
|
||||
use SP\Core\Exceptions\InvalidClassException;
|
||||
use SP\DataModel\CustomerData;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\Mgmt\ItemBaseInterface;
|
||||
use SP\Mgmt\ItemBaseTrait;
|
||||
|
||||
@@ -48,6 +48,6 @@ abstract class CustomerBase implements ItemBaseInterface
|
||||
*/
|
||||
protected function init()
|
||||
{
|
||||
$this->setDataModel(CustomerData::class);
|
||||
$this->setDataModel(ClientData::class);
|
||||
}
|
||||
}
|
||||
@@ -60,13 +60,13 @@ class File extends FileBase implements ItemInterface, ItemSelectInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO accFiles
|
||||
SET accfile_accountId = ?,
|
||||
accfile_name = ?,
|
||||
accfile_type = ?,
|
||||
accfile_size = ?,
|
||||
accfile_content = ?,
|
||||
accfile_extension = ?,
|
||||
accfile_thumb = ?';
|
||||
SET accountId = ?,
|
||||
name = ?,
|
||||
type = ?,
|
||||
size = ?,
|
||||
content = ?,
|
||||
extension = ?,
|
||||
thumb = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -117,7 +117,7 @@ class File extends FileBase implements ItemInterface, ItemSelectInterface
|
||||
{
|
||||
// Eliminamos el archivo de la BBDD
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM accFiles WHERE accfile_id = ? LIMIT 1';
|
||||
'DELETE FROM accFiles WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -140,17 +140,17 @@ class File extends FileBase implements ItemInterface, ItemSelectInterface
|
||||
public function getInfoById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT accfile_name,
|
||||
accfile_size,
|
||||
accfile_type,
|
||||
accfile_accountId,
|
||||
accfile_extension,
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
LEFT JOIN accounts ON account_id = accfile_accountId
|
||||
LEFT JOIN accounts ON account_id = accountId
|
||||
LEFT JOIN customers ON customer_id = account_customerId
|
||||
WHERE accfile_id = ? LIMIT 1';
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
@@ -175,19 +175,19 @@ class File extends FileBase implements ItemInterface, ItemSelectInterface
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT accfile_name,
|
||||
accfile_size,
|
||||
accfile_type,
|
||||
accfile_accountId,
|
||||
accfile_content,
|
||||
accfile_thumb,
|
||||
accfile_extension,
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
content,
|
||||
thumb,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
LEFT JOIN accounts ON account_id = accfile_accountId
|
||||
LEFT JOIN accounts ON account_id = accountId
|
||||
LEFT JOIN customers ON customer_id = account_customerId
|
||||
WHERE accfile_id = ? LIMIT 1';
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
@@ -243,19 +243,19 @@ class File extends FileBase implements ItemInterface, ItemSelectInterface
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'SELECT accfile_name,
|
||||
accfile_size,
|
||||
accfile_type,
|
||||
accfile_accountId,
|
||||
accfile_content,
|
||||
accfile_thumb,
|
||||
accfile_extension,
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
content,
|
||||
thumb,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
LEFT JOIN accounts ON account_id = accfile_accountId
|
||||
LEFT JOIN accounts ON account_id = accountId
|
||||
LEFT JOIN customers ON customer_id = account_customerId
|
||||
WHERE accfile_id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
|
||||
@@ -49,13 +49,13 @@ class FileUtil
|
||||
*/
|
||||
public static function getAccountFiles($accountId)
|
||||
{
|
||||
$query = 'SELECT accfile_id,
|
||||
accfile_name,
|
||||
accfile_size,
|
||||
accfile_thumb,
|
||||
accfile_type
|
||||
$query = 'SELECT id,
|
||||
name,
|
||||
size,
|
||||
thumb,
|
||||
type
|
||||
FROM accFiles
|
||||
WHERE accfile_accountId = ?';
|
||||
WHERE accountId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileData::class);
|
||||
@@ -75,7 +75,7 @@ class FileUtil
|
||||
*/
|
||||
public static function countAccountFiles($accountId)
|
||||
{
|
||||
$query = 'SELECT accfile_id FROM accFiles WHERE accfile_accountId = ?';
|
||||
$query = 'SELECT id FROM accFiles WHERE accountId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -94,7 +94,7 @@ class FileUtil
|
||||
*/
|
||||
public static function deleteAccountFiles($accountId)
|
||||
{
|
||||
$query = 'DELETE FROM accFiles WHERE accfile_accountId = ?';
|
||||
$query = 'DELETE FROM accFiles WHERE accountId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -110,6 +110,6 @@ class FileUtil
|
||||
*/
|
||||
public static function isImage(FileData $FileData)
|
||||
{
|
||||
return in_array(mb_strtoupper($FileData->getAccfileExtension()), FileUtil::$imageExtensions);
|
||||
return in_array(mb_strtoupper($FileData->getExtension()), FileUtil::$imageExtensions);
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,7 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function add()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO plugins SET plugin_name = ?, plugin_data = ?, plugin_enabled = ?, plugin_available = ?';
|
||||
'INSERT INTO plugins SET name = ?, data = ?, enabled = ?, available = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -77,7 +77,7 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function delete($name)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM plugins WHERE plugin_name = ? LIMIT 1';
|
||||
'DELETE FROM plugins WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -103,11 +103,11 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_name = ?,
|
||||
plugin_data = ?,
|
||||
plugin_enabled = ?,
|
||||
plugin_available = ?
|
||||
WHERE plugin_name = ? LIMIT 1';
|
||||
SET name = ?,
|
||||
data = ?,
|
||||
enabled = ?,
|
||||
available = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -132,13 +132,13 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT plugin_id,
|
||||
plugin_name,
|
||||
plugin_data,
|
||||
plugin_enabled,
|
||||
plugin_available
|
||||
'SELECT id,
|
||||
name,
|
||||
data,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE plugin_id = ? LIMIT 1';
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName($this->getDataModel());
|
||||
@@ -156,12 +156,12 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT plugin_id,
|
||||
plugin_name,
|
||||
plugin_enabled,
|
||||
plugin_available
|
||||
'SELECT id,
|
||||
name,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
ORDER BY plugin_name';
|
||||
ORDER BY name';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName($this->getDataModel());
|
||||
@@ -204,13 +204,13 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function getByName($name)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT plugin_id,
|
||||
plugin_name,
|
||||
plugin_data,
|
||||
plugin_enabled,
|
||||
plugin_available
|
||||
'SELECT id,
|
||||
name,
|
||||
data,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE plugin_name = ? LIMIT 1';
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName($this->getDataModel());
|
||||
@@ -230,8 +230,8 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_enabled = ?
|
||||
WHERE plugin_id = ? LIMIT 1';
|
||||
SET enabled = ?
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -254,8 +254,8 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_enabled = ?
|
||||
WHERE plugin_name = ? LIMIT 1';
|
||||
SET enabled = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -278,8 +278,8 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_available = ?, plugin_enabled = ?
|
||||
WHERE plugin_id = ? LIMIT 1';
|
||||
SET available = ?, enabled = ?
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -303,8 +303,8 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_available = ?, plugin_enabled = ?
|
||||
WHERE plugin_name = ? LIMIT 1';
|
||||
SET available = ?, enabled = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -329,8 +329,8 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET plugin_data = NULL
|
||||
WHERE plugin_id = ? LIMIT 1';
|
||||
SET data = NULL
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -355,12 +355,12 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'SELECT plugin_id,
|
||||
plugin_name,
|
||||
plugin_enabled,
|
||||
plugin_available
|
||||
'SELECT id,
|
||||
name,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE plugin_id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName($this->getDataModel());
|
||||
@@ -378,7 +378,7 @@ class Plugin extends PluginBase implements ItemInterface
|
||||
public function getEnabled()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT plugin_name FROM plugins WHERE plugin_enabled = 1';
|
||||
'SELECT name FROM plugins WHERE enabled = 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
|
||||
341
lib/SP/Services/Account/AccountFileService.php
Normal file
341
lib/SP/Services/Account/AccountFileService.php
Normal file
@@ -0,0 +1,341 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Account;
|
||||
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\FileData;
|
||||
use SP\DataModel\FileExtData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Mgmt\Files\FileUtil;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
use SP\Util\ImageUtil;
|
||||
|
||||
/**
|
||||
* Class AccountFileService
|
||||
*
|
||||
* @package SP\Services\Account
|
||||
*/
|
||||
class AccountFileService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param FileData $itemData
|
||||
* @return mixed
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO accFiles
|
||||
SET accountId = ?,
|
||||
name = ?,
|
||||
type = ?,
|
||||
size = ?,
|
||||
content = ?,
|
||||
extension = ?,
|
||||
thumb = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getAccountId());
|
||||
$Data->addParam($itemData->getName());
|
||||
$Data->addParam($itemData->getType());
|
||||
$Data->addParam($itemData->getSize());
|
||||
$Data->addParam($itemData->getContent());
|
||||
$Data->addParam($itemData->getExtension());
|
||||
$Data->setOnErrorMessage(__u('No se pudo guardar el archivo'));
|
||||
|
||||
if (FileUtil::isImage($itemData)) {
|
||||
$thumbnail = ImageUtil::createThumbnail($itemData->getContent());
|
||||
|
||||
$Data->addParam($thumbnail ?: 'no_thumb');
|
||||
} else {
|
||||
$Data->addParam('no_thumb');
|
||||
}
|
||||
|
||||
// $Log = new Log();
|
||||
// $LogMessage = $Log->getLogMessage();
|
||||
// $LogMessage->setAction(__('Subir Archivo', false));
|
||||
// $LogMessage->addDetails(__('Cuenta', false), AccountUtil::getAccountNameById($this->itemData->getAccfileAccountId()));
|
||||
// $LogMessage->addDetails(__('Archivo', false), $this->itemData->getAccfileName());
|
||||
// $LogMessage->addDetails(__('Tipo', false), $this->itemData->getAccfileType());
|
||||
// $LogMessage->addDetails(__('Tamaño', false), $this->itemData->getRoundSize() . 'KB');
|
||||
//
|
||||
// DbWrapper::getQuery($Data);
|
||||
//
|
||||
// $LogMessage->addDescription(__('Archivo subido', false));
|
||||
// $Log->writeLog();
|
||||
//
|
||||
// Email::sendEmail($LogMessage);
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return mixed
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return FileExtData
|
||||
*/
|
||||
public function getInfoById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
INNER JOIN accounts ON account_id = accountId
|
||||
INNER JOIN customers ON customer_id = account_customerId
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
content,
|
||||
thumb,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
INNER JOIN accounts ON account_id = accountId
|
||||
INNER JOIN customers ON customer_id = account_customerId
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return FileExtData[]
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
content,
|
||||
thumb,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
INNER JOIN accounts ON account_id = accountId
|
||||
INNER JOIN customers ON customer_id = account_customerId';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT name,
|
||||
size,
|
||||
type,
|
||||
accountId,
|
||||
content,
|
||||
thumb,
|
||||
extension,
|
||||
account_name,
|
||||
customer_name
|
||||
FROM accFiles
|
||||
LEFT JOIN accounts ON account_id = accountId
|
||||
LEFT JOIN customers ON customer_id = account_customerId
|
||||
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return AccountFileService
|
||||
* @throws SPException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
// Eliminamos el archivo de la BBDD
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM accFiles WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar el archivo'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
if ($Data->getQueryNumRows() === 0) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Archivo no encontrado'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return mixed
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(FileExtData::class);
|
||||
$Data->setSelect('id, name, CONCAT(ROUND(size/1000, 2), "KB") AS size, thumb, type, account_name, customer_name');
|
||||
$Data->setFrom('accFiles INNER JOIN accounts ON accountId = account_id INNER JOIN customers ON customer_id = account_customerId');
|
||||
$Data->setOrder('name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('name LIKE ? OR type LIKE ? OR account_name LIKE ? OR customer_name LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
}
|
||||
@@ -236,7 +236,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +344,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -355,7 +355,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -366,7 +366,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -377,7 +377,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -388,7 +388,7 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -399,6 +399,29 @@ class AccountHistoryService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
$Data = new QueryData();
|
||||
$Data->setSelect('acchistory_id, acchistory_name, customer_name, IFNULL(acchistory_dateEdit,acchistory_dateAdd) as acchistory_date, BIN(acchistory_isModify) as acchistory_isModify, BIN(acchistory_isDeleted) as acchistory_isDeleted');
|
||||
$Data->setFrom('accHistory LEFT JOIN customers ON acchistory_customerId = customer_id');
|
||||
$Data->setOrder('acchistory_name, customer_name, acchistory_id DESC');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('acchistory_name LIKE ? OR customer_name LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
}
|
||||
@@ -270,18 +270,6 @@ class AccountService extends Service implements ServiceItemInterface
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza los datos de una cuenta en la BBDD.
|
||||
*
|
||||
* @param AccountExtData $accountData
|
||||
* @return AccountExtData
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
public function edit(AccountExtData $accountData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza la clave de una cuenta en la BBDD.
|
||||
*
|
||||
@@ -532,66 +520,60 @@ class AccountService extends Service implements ServiceItemInterface
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
// TODO: Implement getAll() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
// TODO: Implement getByIdBatch() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return $this
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
// TODO: Implement deleteByIdBatch() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
// TODO: Implement checkInUse() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
// TODO: Implement checkDuplicatedOnUpdate() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
// TODO: Implement checkDuplicatedOnAdd() method.
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -602,7 +584,30 @@ class AccountService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
// TODO: Implement search() method.
|
||||
$Data = new QueryData();
|
||||
$Data->setSelect('account_id, account_name, customer_name');
|
||||
$Data->setFrom('accounts LEFT JOIN customers ON account_customerId = customer_id');
|
||||
$Data->setOrder('account_name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('account_name LIKE ? OR customer_name LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
310
lib/SP/Services/Category/CategoryService.php
Normal file
310
lib/SP/Services/Category/CategoryService.php
Normal file
@@ -0,0 +1,310 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Category;
|
||||
|
||||
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CategoryData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class CategoryService
|
||||
*
|
||||
* @package SP\Services\Category
|
||||
*/
|
||||
class CategoryService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param CategoryData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnAdd($itemData)) {
|
||||
throw new SPException(SPException::SP_WARNING, __u('Categoría duplicada'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO categories SET category_name = ?, category_description = ?, category_hash = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getCategoryName());
|
||||
$Data->addParam($itemData->getCategoryDescription());
|
||||
$Data->addParam($this->makeItemHash($itemData->getCategoryName()));
|
||||
$Data->setOnErrorMessage(__u('Error al crear la categoría'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param CategoryData $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT category_id FROM categories WHERE category_hash = ? OR category_name = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($this->makeItemHash($itemData->getCategoryName()));
|
||||
$Data->addParam($itemData->getCategoryName());
|
||||
$Data->addParam($itemData->getCategoryId());
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param CategoryData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnUpdate($itemData)) {
|
||||
throw new SPException(SPException::SP_WARNING, __u('Nombre de categoría duplicado'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE categories
|
||||
SET category_name = ?,
|
||||
category_description = ?,
|
||||
category_hash = ?
|
||||
WHERE category_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getCategoryName());
|
||||
$Data->addParam($itemData->getCategoryDescription());
|
||||
$Data->addParam($this->makeItemHash($itemData->getCategoryName()));
|
||||
$Data->addParam($itemData->getCategoryId());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar la categoría'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param CategoryData $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT category_id FROM categories WHERE (category_hash = ? OR category_name = ?) AND category_id <> ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($this->makeItemHash($itemData->getCategoryName()));
|
||||
$Data->addParam($itemData->getCategoryName());
|
||||
$Data->addParam($itemData->getCategoryId());
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT category_id, category_name, category_description FROM categories WHERE category_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setMapClassName(CategoryData::class);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT category_id, category_name, category_description, category_hash FROM categories ORDER BY category_name';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CategoryData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT category_id, category_name, category_description FROM categories WHERE category_id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
$Data->setMapClassName(CategoryData::class);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return CategoryService
|
||||
* @throws SPException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM categories WHERE category_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar la categoría'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
if ($Data->getQueryNumRows() === 0) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Categoría no encontrada'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT account_id FROM accounts WHERE account_categoryId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return mixed
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setSelect('category_id, category_name, category_description');
|
||||
$Data->setFrom('categories');
|
||||
$Data->setOrder('category_name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('category_name LIKE ? OR category_description LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
/** @var array $queryRes */
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
}
|
||||
344
lib/SP/Services/Client/ClientService.php
Normal file
344
lib/SP/Services/Client/ClientService.php
Normal file
@@ -0,0 +1,344 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Client;
|
||||
|
||||
|
||||
use SP\Account\AccountUtil;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\ClientData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class ClientService
|
||||
*
|
||||
* @package SP\Services\Client
|
||||
*/
|
||||
class ClientService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param ClientData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnAdd($itemData)) {
|
||||
throw new SPException(SPException::SP_WARNING, __u('Cliente duplicado'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO customers
|
||||
SET customer_name = ?,
|
||||
customer_description = ?,
|
||||
customer_isGlobal = ?,
|
||||
customer_hash = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getCustomerName());
|
||||
$Data->addParam($itemData->getCustomerDescription());
|
||||
$Data->addParam($itemData->getCustomerIsGlobal());
|
||||
$Data->addParam($this->makeItemHash($itemData->getCustomerName()));
|
||||
$Data->setOnErrorMessage(__u('Error al crear el cliente'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param ClientData $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id FROM customers WHERE customer_hash = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($this->makeItemHash($itemData->getCustomerName()));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param ClientData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnUpdate($itemData)) {
|
||||
throw new SPException(SPException::SP_WARNING, __u('Cliente duplicado'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE customers
|
||||
SET customer_name = ?,
|
||||
customer_description = ?,
|
||||
customer_isGlobal = ?,
|
||||
customer_hash = ?
|
||||
WHERE customer_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getCustomerName());
|
||||
$Data->addParam($itemData->getCustomerDescription());
|
||||
$Data->addParam($itemData->getCustomerIsGlobal());
|
||||
$Data->addParam($this->makeItemHash($itemData->getCustomerName()));
|
||||
$Data->addParam($itemData->getCustomerId());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el cliente'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param ClientData $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id FROM customers WHERE customer_hash = ? AND customer_id <> ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($this->makeItemHash($itemData->getCustomerName()));
|
||||
$Data->addParam($itemData->getCustomerId());
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id, customer_name, customer_description, customer_isGlobal FROM customers WHERE customer_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(ClientData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id, customer_name, customer_description, customer_isGlobal FROM customers ORDER BY customer_name';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(ClientData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id, customer_name, customer_description, customer_isGlobal FROM customers WHERE customer_id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(ClientData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return ClientService
|
||||
* @throws SPException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
if ($this->checkInUse($id)) {
|
||||
throw new SPException(SPException::SP_WARNING, __u('No es posible eliminar'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM customers WHERE customer_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar el cliente'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
if ($Data->getQueryNumRows() === 0) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Cliente no encontrado'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT account_id FROM accounts WHERE account_customerId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return ClientData[]
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(ClientData::class);
|
||||
$Data->setSelect('customer_id, customer_name, customer_description, customer_isGlobal');
|
||||
$Data->setFrom('customers');
|
||||
$Data->setOrder('customer_name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('customer_name LIKE ? OR customer_description LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devolver los clientes visibles por el usuario
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getItemsForSelectByUser()
|
||||
{
|
||||
$Data = new QueryData();
|
||||
|
||||
// Acotar los resultados por usuario
|
||||
$queryWhere = AccountUtil::getAccountFilterUser($Data, $this->session);
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customer_id AS id, customer_name AS name
|
||||
FROM accounts
|
||||
RIGHT JOIN customers ON customer_id = account_customerId
|
||||
WHERE account_customerId IS NULL
|
||||
OR customer_isGlobal = 1
|
||||
OR (' . implode(' AND ', $queryWhere) . ')
|
||||
GROUP BY customer_id
|
||||
ORDER BY customer_name';
|
||||
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
}
|
||||
311
lib/SP/Services/CustomField/CustomFieldDefService.php
Normal file
311
lib/SP/Services/CustomField/CustomFieldDefService.php
Normal file
@@ -0,0 +1,311 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\CustomField;
|
||||
|
||||
use SP\Core\Acl\ActionsInterface;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CustomFieldDefData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class CustomFieldDefService
|
||||
*
|
||||
* @package SP\Services\CustomField
|
||||
*/
|
||||
class CustomFieldDefService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return mixed
|
||||
*/
|
||||
public static function getFieldModuleById($id)
|
||||
{
|
||||
$modules = self::getFieldModules();
|
||||
|
||||
return isset($modules[$id]) ? $modules[$id] : $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve los módulos disponibles para los campos personalizados
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getFieldModules()
|
||||
{
|
||||
$modules = [
|
||||
ActionsInterface::ACCOUNT => __('Cuentas'),
|
||||
ActionsInterface::CATEGORY => __('Categorías'),
|
||||
ActionsInterface::CLIENT => __('Clientes'),
|
||||
ActionsInterface::USER => __('Usuarios'),
|
||||
ActionsInterface::GROUP => __('Grupos')
|
||||
|
||||
];
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param CustomFieldDefData $itemData
|
||||
* @return mixed
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO customFieldsDef SET name = ?, moduleId = ?, required = ?, help = ?, showInList = ?, typeId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getName());
|
||||
$Data->addParam($itemData->getModuleId());
|
||||
$Data->addParam($itemData->getRequired());
|
||||
$Data->addParam($itemData->getHelp());
|
||||
$Data->addParam($itemData->getShowInList());
|
||||
$Data->addParam($itemData->getTypeId());
|
||||
$Data->setOnErrorMessage(__u('Error al crear el campo personalizado'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param CustomFieldDefData $itemData
|
||||
* @return mixed
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE customFieldsDef
|
||||
SET name = ?, moduleId = ?, required = ?, help = ?, showInList = ?, typeId = ?
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getName());
|
||||
$Data->addParam($itemData->getModuleId());
|
||||
$Data->addParam($itemData->getRequired());
|
||||
$Data->addParam($itemData->getHelp());
|
||||
$Data->addParam($itemData->getShowInList());
|
||||
$Data->addParam($itemData->getTypeId());
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el campo personalizado'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return CustomFieldDefData
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id, name, moduleId, required, help, showInList, typeId
|
||||
FROM customFieldsDef
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldDefData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return CustomFieldDefData[]
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id, name, moduleId, required, help, showInList
|
||||
FROM customFieldsDef
|
||||
ORDER BY moduleId';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldDefData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id, name, moduleId, required, help, showInList, typeId
|
||||
FROM customFieldsDef
|
||||
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldDefData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
if ($this->deleteItemsDataForDefinition($id) === false) {
|
||||
throw new SPException(SPException::SP_ERROR, __u('Error al eliminar el campo personalizado'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM customFieldsDef WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar el campo personalizado'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Eliminar los datos de los elementos de una definición
|
||||
*
|
||||
* @param $id
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
*/
|
||||
protected function deleteItemsDataForDefinition($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM customFieldsData WHERE id = ?';
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return CustomFieldDefData[]
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldDefData::class);
|
||||
$Data->setSelect('a.id, a.name, a.moduleId, a.required, a.help, a.showInList, a.typeId, b.name AS typeName');
|
||||
$Data->setFrom('customFieldsDef a INNER JOIN customFieldsType b ON b.id = a.typeId');
|
||||
$Data->setOrder('moduleId');
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
/** @var CustomFieldDefData[] $queryRes */
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
}
|
||||
@@ -30,14 +30,11 @@ use SP\Core\Crypt\Session as CryptSession;
|
||||
use SP\Core\Exceptions\QueryException;
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CustomFieldData;
|
||||
use SP\DataModel\CustomFieldDefData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Mgmt\CustomFields\CustomFieldTypes;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
use SP\Util\Util;
|
||||
|
||||
/**
|
||||
* Class CustomFieldService
|
||||
@@ -47,107 +44,54 @@ use SP\Util\Util;
|
||||
class CustomFieldService extends Service implements ServiceItemInterface
|
||||
{
|
||||
/**
|
||||
* Guardar los datos de los campos personalizados del módulo
|
||||
* Returns the form Id for a given name
|
||||
*
|
||||
* @param array $customFields
|
||||
* @param int $itemId
|
||||
* @param int $moduleId
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
* @param $name
|
||||
* @return string
|
||||
*/
|
||||
public function addCustomFieldData($customFields, $itemId, $moduleId)
|
||||
public static function getFormIdForName($name)
|
||||
{
|
||||
if (is_array($customFields)) {
|
||||
$customFieldData = new CustomFieldData();
|
||||
$customFieldData->setId($itemId);
|
||||
$customFieldData->setModule($moduleId);
|
||||
|
||||
try {
|
||||
foreach ($customFields as $id => $value) {
|
||||
$customFieldData->setDefinitionId($id);
|
||||
$customFieldData->setValue($value);
|
||||
|
||||
$this->create($customFieldData);
|
||||
}
|
||||
} catch (CryptoException $e) {
|
||||
throw new SPException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
}
|
||||
return 'cf_' . strtolower(preg_replace('/\W*/', '', $name));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
* Desencriptar y formatear los datos del campo
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @throws CryptoException
|
||||
* @throws QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @param CustomFieldData $CustomFieldData
|
||||
* @return string
|
||||
* @throws \Defuse\Crypto\Exception\CryptoException
|
||||
*/
|
||||
public function create($itemData)
|
||||
public static function unencryptData(CustomFieldData $CustomFieldData)
|
||||
{
|
||||
if ($itemData->getValue() === '') {
|
||||
return true;
|
||||
if ($CustomFieldData->getData() !== '') {
|
||||
$securedKey = Crypt::unlockSecuredKey($CustomFieldData->getKey(), CryptSession::getSessionKey());
|
||||
|
||||
return self::formatValue(Crypt::decrypt($CustomFieldData->getData(), $securedKey));
|
||||
}
|
||||
|
||||
$sessionKey = CryptSession::getSessionKey();
|
||||
$securedKey = Crypt::makeSecuredKey($sessionKey);
|
||||
|
||||
if (strlen($securedKey) > 1000) {
|
||||
throw new QueryException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO customFieldsData SET
|
||||
customfielddata_itemId = ?,
|
||||
customfielddata_moduleId = ?,
|
||||
customfielddata_defId = ?,
|
||||
customfielddata_data = ?,
|
||||
customfielddata_key = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->addParam($itemData->getModule());
|
||||
$Data->addParam($itemData->getDefinitionId());
|
||||
$Data->addParam(Crypt::encrypt($itemData->getValue(), $securedKey, $sessionKey));
|
||||
$Data->addParam($securedKey);
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualizar los datos de los campos personalizados del módulo
|
||||
* Formatear el valor del campo
|
||||
*
|
||||
* @param array $customFields
|
||||
* @param int $itemId
|
||||
* @param int $moduleId
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
* @param $value string El valor del campo
|
||||
* @return string
|
||||
*/
|
||||
public function updateCustomFieldData($customFields, $itemId, $moduleId)
|
||||
public static function formatValue($value)
|
||||
{
|
||||
if (is_array($customFields)) {
|
||||
$customFieldData = new CustomFieldData();
|
||||
$customFieldData->setId($itemId);
|
||||
$customFieldData->setModule($moduleId);
|
||||
|
||||
try {
|
||||
foreach ($customFields as $id => $value) {
|
||||
$customFieldData->setDefinitionId($id);
|
||||
$customFieldData->setValue($value);
|
||||
|
||||
$this->update($customFieldData);
|
||||
}
|
||||
} catch (CryptoException $e) {
|
||||
throw new SPException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
if (preg_match('#https?://#', $value)) {
|
||||
return '<a href="' . $value . '" target="_blank">' . $value . '</a>';
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return mixed
|
||||
* @param CustomFieldData $itemData
|
||||
* @return bool
|
||||
* @throws CryptoException
|
||||
* @throws QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
@@ -157,12 +101,12 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
$exists = $this->checkExists($itemData);
|
||||
|
||||
// Deletes item's custom field data if value is left blank
|
||||
if ($exists && $itemData->getValue() === '') {
|
||||
if ($exists && $itemData->getData() === '') {
|
||||
return $this->delete($itemData->getId());
|
||||
}
|
||||
|
||||
// Create item's custom field data if value is set
|
||||
if (!$exists && $itemData->getValue() !== '') {
|
||||
if (!$exists && $itemData->getData() !== '') {
|
||||
return $this->create($itemData);
|
||||
}
|
||||
|
||||
@@ -175,17 +119,17 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE customFieldsData SET
|
||||
customfielddata_data = ?,
|
||||
customfielddata_key = ?
|
||||
WHERE customfielddata_moduleId = ?
|
||||
AND customfielddata_itemId = ?
|
||||
AND customfielddata_defId = ?';
|
||||
`data` = ?,
|
||||
`key` = ?
|
||||
WHERE moduleId = ?
|
||||
AND itemId = ?
|
||||
AND definitionId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam(Crypt::encrypt($itemData->getValue(), $securedKey, $sessionKey));
|
||||
$Data->addParam(Crypt::encrypt($itemData->getData(), $securedKey, $sessionKey));
|
||||
$Data->addParam($securedKey);
|
||||
$Data->addParam($itemData->getModule());
|
||||
$Data->addParam($itemData->getModuleId());
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->addParam($itemData->getDefinitionId());
|
||||
|
||||
@@ -203,21 +147,21 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
protected function checkExists($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customfielddata_id
|
||||
'SELECT id
|
||||
FROM customFieldsData
|
||||
WHERE customfielddata_moduleId = ?
|
||||
AND customfielddata_itemId = ?
|
||||
AND customfielddata_defId = ?';
|
||||
WHERE moduleId = ?
|
||||
AND itemId = ?
|
||||
AND definitionId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getModule());
|
||||
$Data->addParam($itemData->getModuleId());
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->addParam($itemData->getDefinitionId());
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return ($Data->getQueryNumRows() >= 1);
|
||||
return $Data->getQueryNumRows() >= 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -228,7 +172,43 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
// TODO: Implement delete() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param CustomFieldData $itemData
|
||||
* @return bool
|
||||
* @throws CryptoException
|
||||
* @throws QueryException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
if ($itemData->getData() === '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
$sessionKey = CryptSession::getSessionKey();
|
||||
$securedKey = Crypt::makeSecuredKey($sessionKey);
|
||||
|
||||
if (strlen($securedKey) > 1000) {
|
||||
throw new QueryException(SPException::SP_ERROR, __u('Error interno'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO customFieldsData SET itemId = ?, moduleId = ?, definitionId = ?, `data` = ?, `key` = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->addParam($itemData->getModuleId());
|
||||
$Data->addParam($itemData->getDefinitionId());
|
||||
$Data->addParam(Crypt::encrypt($itemData->getData(), $securedKey, $sessionKey));
|
||||
$Data->addParam($securedKey);
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -243,8 +223,8 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM customFieldsData
|
||||
WHERE customfielddata_itemId = ?
|
||||
AND customfielddata_moduleId = ?';
|
||||
WHERE itemId = ?
|
||||
AND moduleId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
@@ -258,11 +238,11 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
* @return void
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
// TODO: Implement getById() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -272,40 +252,40 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
// TODO: Implement getAll() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
* @return void
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
// TODO: Implement getByIdBatch() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return $this
|
||||
* @return void
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
// TODO: Implement deleteByIdBatch() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
* @return void
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
// TODO: Implement checkInUse() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,7 +296,7 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
// TODO: Implement search() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -325,100 +305,55 @@ class CustomFieldService extends Service implements ServiceItemInterface
|
||||
* @param $moduleId
|
||||
* @param $itemId
|
||||
* @return array
|
||||
* @throws \Defuse\Crypto\Exception\CryptoException
|
||||
*/
|
||||
public function getForModuleById($moduleId, $itemId)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT customfielddata_id,
|
||||
customfielddef_id,
|
||||
customfielddata_data,
|
||||
customfielddata_key,
|
||||
customfielddef_field
|
||||
FROM customFieldsDef a
|
||||
LEFT JOIN customFieldsData b ON b.customfielddata_defId = a.customfielddef_id
|
||||
WHERE customfielddef_module = ?
|
||||
AND (customfielddata_itemId = ? OR customfielddata_defId IS NULL)
|
||||
ORDER BY customfielddef_id';
|
||||
'SELECT cf_definition.name AS definitionName,
|
||||
cf_definition.id AS definitionId,
|
||||
cf_definition.moduleId,
|
||||
cf_definition.required,
|
||||
cf_definition.showInList,
|
||||
cf_definition.help,
|
||||
cf_data.data,
|
||||
cf_data.key,
|
||||
cf_type.id AS typeId,
|
||||
cf_type.name AS typeName,
|
||||
cf_type.text AS typeText
|
||||
FROM customFieldsDef cf_definition
|
||||
LEFT JOIN customFieldsData cf_data ON cf_data.definitionId = cf_definition.id
|
||||
INNER JOIN customFieldsType cf_type ON cf_type.id = cf_definition.typeId
|
||||
WHERE cf_definition.moduleId = ?
|
||||
AND (cf_data.itemId = ? OR cf_data.definitionId IS NULL)
|
||||
ORDER BY cf_definition.id';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($moduleId);
|
||||
$Data->addParam($itemId);
|
||||
|
||||
/** @var CustomFieldData[] $queryRes */
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$customFields = [];
|
||||
|
||||
foreach ($queryRes as $CustomFieldData) {
|
||||
/** @var CustomFieldDefData $fieldDef */
|
||||
$fieldDef = Util::unserialize(CustomFieldDefData::class, $CustomFieldData->getCustomfielddefField());
|
||||
|
||||
$CustomFieldData->setDefinition($fieldDef);
|
||||
$CustomFieldData->setDefinitionId($CustomFieldData->getCustomfielddefId());
|
||||
$CustomFieldData->setTypeName(CustomFieldTypes::getFieldsTypes($fieldDef->getType()));
|
||||
$CustomFieldData->setValue($this->unencryptData($CustomFieldData));
|
||||
|
||||
$customFields[] = $CustomFieldData;
|
||||
}
|
||||
|
||||
return $customFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Desencriptar y formatear los datos del campo
|
||||
*
|
||||
* @param CustomFieldData $CustomFieldData
|
||||
* @return string
|
||||
* @throws \Defuse\Crypto\Exception\CryptoException
|
||||
*/
|
||||
protected function unencryptData(CustomFieldData $CustomFieldData)
|
||||
{
|
||||
if ($CustomFieldData->getCustomfielddataData() !== '') {
|
||||
$securedKey = Crypt::unlockSecuredKey($CustomFieldData->getCustomfielddataKey(), CryptSession::getSessionKey());
|
||||
|
||||
return $this->formatValue(Crypt::decrypt($CustomFieldData->getCustomfielddataData(), $securedKey));
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Formatear el valor del campo
|
||||
*
|
||||
* @param $value string El valor del campo
|
||||
* @return string
|
||||
*/
|
||||
protected function formatValue($value)
|
||||
{
|
||||
if (preg_match('#https?://#', $value)) {
|
||||
return '<a href="' . $value . '" target="_blank">' . $value . '</a>';
|
||||
}
|
||||
|
||||
return $value;
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
// TODO: Implement checkDuplicatedOnUpdate() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
// TODO: Implement checkDuplicatedOnAdd() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
}
|
||||
221
lib/SP/Services/CustomField/CustomFieldTypeService.php
Normal file
221
lib/SP/Services/CustomField/CustomFieldTypeService.php
Normal file
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\CustomField;
|
||||
|
||||
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\CustomFieldTypeData;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class CustomFieldTypeService
|
||||
*
|
||||
* @package SP\Services\CustomField
|
||||
*/
|
||||
class CustomFieldTypeService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param CustomFieldTypeData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO customFieldsType SET name = ?, text = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getName());
|
||||
$Data->addParam($itemData->getText());
|
||||
$Data->setOnErrorMessage(__u('Error al crear el tipo de campo'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param CustomFieldTypeData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE customFieldsType SET name = ?, text = ? WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getName());
|
||||
$Data->addParam($itemData->getText());
|
||||
$Data->addParam($itemData->getId());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el tipo de campo'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id, name, text FROM customFieldsType WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldTypeData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id, name, text FROM customFieldsType';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(CustomFieldTypeData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM customFieldsType WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar el tipo de campo'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return void
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return mixed
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
}
|
||||
446
lib/SP/Services/Plugin/PluginService.php
Normal file
446
lib/SP/Services/Plugin/PluginService.php
Normal file
@@ -0,0 +1,446 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Plugin;
|
||||
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\DataModel\PluginData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class PluginService
|
||||
*
|
||||
* @package SP\Services\Plugin
|
||||
*/
|
||||
class PluginService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param PluginData $itemData
|
||||
* @return mixed
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO plugins SET name = ?, data = ?, enabled = ?, available = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getPluginName());
|
||||
$Data->addParam($itemData->getPluginData());
|
||||
$Data->addParam($itemData->getPluginEnabled());
|
||||
$Data->addParam($itemData->getPluginAvailable());
|
||||
$Data->setOnErrorMessage(__u('Error al crear el plugin'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param PluginData $itemData
|
||||
* @return mixed
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET name = ?,
|
||||
data = ?,
|
||||
enabled = ?,
|
||||
available = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getPluginName());
|
||||
$Data->addParam($itemData->getPluginData());
|
||||
$Data->addParam($itemData->getPluginEnabled());
|
||||
$Data->addParam($itemData->getPluginAvailable());
|
||||
$Data->addParam($itemData->getPluginName());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id,
|
||||
name,
|
||||
data,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(PluginData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return PluginData[]
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id,
|
||||
name,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
ORDER BY name';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(PluginData::class);
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id,
|
||||
name,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(PluginData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return PluginService
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM plugins WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar el plugin'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
if ($Data->getQueryNumRows() === 0) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Plugin no encontrado'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return void
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
throw new \RuntimeException('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return mixed
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setSelect('id, name, enabled, available');
|
||||
$Data->setFrom('plugins');
|
||||
$Data->setOrder('name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('name LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
/** @var array $queryRes */
|
||||
$queryRes = DbWrapper::getResultsArray($Data);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve los datos de un plugin por su nombre
|
||||
*
|
||||
* @param $name int
|
||||
* @return mixed
|
||||
*/
|
||||
public function getByName($name)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT id,
|
||||
name,
|
||||
data,
|
||||
enabled,
|
||||
available
|
||||
FROM plugins
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(PluginData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($name);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cambiar el estado del plugin
|
||||
*
|
||||
* @param $id
|
||||
* @param $enabled
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function toggleEnabled($id, $enabled)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET enabled = ?
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($enabled);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cambiar el estado del plugin
|
||||
*
|
||||
* @param $name
|
||||
* @param $enabled
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function toggleEnabledByName($name, $enabled)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET enabled = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($enabled);
|
||||
$Data->addParam($name);
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cambiar el estado del plugin
|
||||
*
|
||||
* @param $id
|
||||
* @param $available
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function toggleAvailable($id, $available)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET available = ?
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->addParam($available);
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cambiar el estado del plugin
|
||||
*
|
||||
* @param $name
|
||||
* @param $available
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function toggleAvailableByName($name, $available)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET available = ?
|
||||
WHERE name = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($available);
|
||||
$Data->addParam($name);
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restablecer los datos de un plugin
|
||||
*
|
||||
* @param int $id Id del plugin
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function resetById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE plugins
|
||||
SET data = NULL
|
||||
WHERE id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar el plugin'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Devolver los plugins activados
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getEnabled()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT name FROM plugins WHERE enabled = 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,6 @@
|
||||
|
||||
namespace SP\Services\PublicLink;
|
||||
|
||||
use SP\Account\AccountUtil;
|
||||
use SP\Bootstrap;
|
||||
use SP\Config\Config;
|
||||
use SP\Core\Crypt\Crypt;
|
||||
@@ -35,9 +34,6 @@ use SP\DataModel\ItemSearchData;
|
||||
use SP\DataModel\PublicLinkData;
|
||||
use SP\DataModel\PublicLinkListData;
|
||||
use SP\Http\Request;
|
||||
use SP\Log\Email;
|
||||
use SP\Log\Log;
|
||||
use SP\Mgmt\Users\UserUtil;
|
||||
use SP\Services\Account\AccountService;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
@@ -45,7 +41,6 @@ use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
use SP\Util\Checks;
|
||||
use SP\Util\DateUtil;
|
||||
use SP\Util\HttpUtil;
|
||||
use SP\Util\Util;
|
||||
|
||||
@@ -204,11 +199,11 @@ class PublicLinkService extends Service implements ServiceItemInterface
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
* @return void
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
// TODO: Implement checkInUse() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -381,11 +376,11 @@ class PublicLinkService extends Service implements ServiceItemInterface
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @return void
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
// TODO: Implement checkDuplicatedOnUpdate() method.
|
||||
throw new \RuntimeException('Unimplemented');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -393,7 +388,6 @@ class PublicLinkService extends Service implements ServiceItemInterface
|
||||
*
|
||||
* @param PublicLinkData $publicLinkData
|
||||
* @return void
|
||||
* @throws \PHPMailer\PHPMailer\Exception
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
@@ -419,18 +413,18 @@ class PublicLinkService extends Service implements ServiceItemInterface
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
// FIXME
|
||||
$Log = new Log();
|
||||
$LogMessage = $Log->getLogMessage();
|
||||
$LogMessage->setAction(__u('Ver Enlace Público'));
|
||||
$LogMessage->addDescription(__u('Enlace visualizado'));
|
||||
$LogMessage->addDetails(__u('Tipo'), $publicLinkData->getPublicLinkTypeId());
|
||||
$LogMessage->addDetails(__u('Cuenta'), AccountUtil::getAccountNameById($publicLinkData->getPublicLinkItemId()));
|
||||
$LogMessage->addDetails(__u('Usuario'), UserUtil::getUserLoginById($publicLinkData->getPublicLinkUserId()));
|
||||
$Log->writeLog();
|
||||
|
||||
if ($publicLinkData->isPublicLinkNotify()) {
|
||||
Email::sendEmail($LogMessage);
|
||||
}
|
||||
// $Log = new Log();
|
||||
// $LogMessage = $Log->getLogMessage();
|
||||
// $LogMessage->setAction(__u('Ver Enlace Público'));
|
||||
// $LogMessage->addDescription(__u('Enlace visualizado'));
|
||||
// $LogMessage->addDetails(__u('Tipo'), $publicLinkData->getPublicLinkTypeId());
|
||||
// $LogMessage->addDetails(__u('Cuenta'), AccountUtil::getAccountNameById($publicLinkData->getPublicLinkItemId()));
|
||||
// $LogMessage->addDetails(__u('Usuario'), UserUtil::getUserLoginById($publicLinkData->getPublicLinkUserId()));
|
||||
// $Log->writeLog();
|
||||
//
|
||||
// if ($publicLinkData->isPublicLinkNotify()) {
|
||||
// Email::sendEmail($LogMessage);
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
@@ -42,6 +42,17 @@ trait ServiceItemTrait
|
||||
*/
|
||||
private static $itemsSelectCache;
|
||||
|
||||
/**
|
||||
* Returns service items for a select
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function getServiceItems()
|
||||
{
|
||||
$service = new static();
|
||||
return $service->getItemsForSelect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Devolver los elementos para un campo select
|
||||
*
|
||||
@@ -105,15 +116,14 @@ trait ServiceItemTrait
|
||||
protected function makeItemHash($name)
|
||||
{
|
||||
$charsSrc = ['.', ' ', '_', ', ', '-', ';', '\'', '"', ':', '(', ')', '|', '/'];
|
||||
$newValue = strtolower(str_replace($charsSrc, '', DBUtil::escape($name)));
|
||||
|
||||
return md5($newValue);
|
||||
return md5(strtolower(str_replace($charsSrc, '', DBUtil::escape($name))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve una cadena con los parámetros para una consulta SQL desde un array
|
||||
*
|
||||
* @param array $items
|
||||
* @param array $items
|
||||
* @param string $string Cadena a utilizar para los parámetros
|
||||
* @return string
|
||||
*/
|
||||
@@ -121,15 +131,4 @@ trait ServiceItemTrait
|
||||
{
|
||||
return implode(',', array_fill(0, count($items), $string));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns service items for a select
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function getServiceItems()
|
||||
{
|
||||
$service = new static();
|
||||
return $service->getItemsForSelect();
|
||||
}
|
||||
}
|
||||
295
lib/SP/Services/Tag/TagService.php
Normal file
295
lib/SP/Services/Tag/TagService.php
Normal file
@@ -0,0 +1,295 @@
|
||||
<?php
|
||||
/**
|
||||
* sysPass
|
||||
*
|
||||
* @author nuxsmin
|
||||
* @link http://syspass.org
|
||||
* @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org
|
||||
*
|
||||
* This file is part of sysPass.
|
||||
*
|
||||
* sysPass is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* sysPass is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace SP\Services\Tag;
|
||||
|
||||
|
||||
use SP\Core\Exceptions\SPException;
|
||||
use SP\DataModel\ItemSearchData;
|
||||
use SP\DataModel\TagData;
|
||||
use SP\Services\Service;
|
||||
use SP\Services\ServiceItemInterface;
|
||||
use SP\Services\ServiceItemTrait;
|
||||
use SP\Storage\DbWrapper;
|
||||
use SP\Storage\QueryData;
|
||||
|
||||
/**
|
||||
* Class TagService
|
||||
*
|
||||
* @package SP\Services\Tag
|
||||
*/
|
||||
class TagService extends Service implements ServiceItemInterface
|
||||
{
|
||||
use ServiceItemTrait;
|
||||
|
||||
/**
|
||||
* Creates an item
|
||||
*
|
||||
* @param TagData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function create($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnAdd($itemData)) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Etiqueta duplicada'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'INSERT INTO tags SET tag_name = ?, tag_hash = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getTagName());
|
||||
$Data->addParam($itemData->getTagHash());
|
||||
$Data->setOnErrorMessage(__u('Error al crear etiqueta'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $this->db->getLastId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on adding
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnAdd($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT tag_id FROM tags WHERE tag_hash = ?';
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getTagHash());
|
||||
|
||||
DbWrapper::getQuery($Data);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an item
|
||||
*
|
||||
* @param TagData $itemData
|
||||
* @return mixed
|
||||
* @throws SPException
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function update($itemData)
|
||||
{
|
||||
if ($this->checkDuplicatedOnUpdate($itemData)) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Etiqueta duplicada'));
|
||||
}
|
||||
|
||||
$query = /** @lang SQL */
|
||||
'UPDATE tags SET tag_name = ?, tag_hash = ? WHERE tag_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getTagName());
|
||||
$Data->addParam($itemData->getTagHash());
|
||||
$Data->addParam($itemData->getTagId());
|
||||
$Data->setOnErrorMessage(__u('Error al actualizar etiqueta'));
|
||||
|
||||
return DbWrapper::getQuery($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is duplicated on updating
|
||||
*
|
||||
* @param mixed $itemData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkDuplicatedOnUpdate($itemData)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT tag_hash FROM tags WHERE tag_hash = ? AND tag_id <> ?';
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($itemData->getTagHash());
|
||||
$Data->addParam($itemData->getTagId());
|
||||
|
||||
DbWrapper::getQuery($Data);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item for given id
|
||||
*
|
||||
* @param int $id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT tag_id, tag_name FROM tags WHERE tag_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setMapClassName(TagData::class);
|
||||
|
||||
return DbWrapper::getResults($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items
|
||||
*
|
||||
* @return TagData[]
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT tag_id, tag_name, tag_hash FROM tags ORDER BY tag_name';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->setMapClassName(TagData::class);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return TagData[]
|
||||
*/
|
||||
public function getByIdBatch(array $ids)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT tag_id, tag_name FROM tags WHERE tag_id IN (' . $this->getParamsFromArray($ids) . ')';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setMapClassName(TagData::class);
|
||||
$Data->setQuery($query);
|
||||
$Data->setParams($ids);
|
||||
|
||||
return DbWrapper::getResultsArray($Data, $this->db);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all the items for given ids
|
||||
*
|
||||
* @param array $ids
|
||||
* @return void
|
||||
* @throws SPException
|
||||
*/
|
||||
public function deleteByIdBatch(array $ids)
|
||||
{
|
||||
foreach ($ids as $id) {
|
||||
$this->delete($id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an item
|
||||
*
|
||||
* @param $id
|
||||
* @return TagService
|
||||
* @throws SPException
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'DELETE FROM tags WHERE tag_id = ? LIMIT 1';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
$Data->setOnErrorMessage(__u('Error al eliminar etiqueta'));
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
if ($Data->getQueryNumRows() === 0) {
|
||||
throw new SPException(SPException::SP_INFO, __u('Etiqueta no encontrada'));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the item is in use or not
|
||||
*
|
||||
* @param $id int
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\ConstraintException
|
||||
* @throws \SP\Core\Exceptions\QueryException
|
||||
*/
|
||||
public function checkInUse($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT acctag_tagId FROM accTags WHERE acctag_tagId = ?';
|
||||
|
||||
$Data = new QueryData();
|
||||
$Data->setQuery($query);
|
||||
$Data->addParam($id);
|
||||
|
||||
DbWrapper::getQuery($Data, $this->db);
|
||||
|
||||
return $Data->getQueryNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for items by a given filter
|
||||
*
|
||||
* @param ItemSearchData $SearchData
|
||||
* @return mixed
|
||||
*/
|
||||
public function search(ItemSearchData $SearchData)
|
||||
{
|
||||
$Data = new QueryData();
|
||||
$Data->setSelect('tag_id, tag_name');
|
||||
$Data->setFrom('tags');
|
||||
$Data->setOrder('tag_name');
|
||||
|
||||
if ($SearchData->getSeachString() !== '') {
|
||||
$Data->setWhere('tag_name LIKE ?');
|
||||
|
||||
$search = '%' . $SearchData->getSeachString() . '%';
|
||||
$Data->addParam($search);
|
||||
}
|
||||
|
||||
$Data->setLimit('?,?');
|
||||
$Data->addParam($SearchData->getLimitStart());
|
||||
$Data->addParam($SearchData->getLimitCount());
|
||||
|
||||
DbWrapper::setFullRowCount();
|
||||
|
||||
$queryRes = DbWrapper::getResultsArray($Data, $this->db);
|
||||
|
||||
$queryRes['count'] = $Data->getQueryNumRows();
|
||||
|
||||
return $queryRes;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
-- To 1.1.0;
|
||||
ALTER TABLE `accFiles`
|
||||
CHANGE COLUMN `accfile_name` `accfile_name` VARCHAR(100) NOT NULL;
|
||||
CHANGE COLUMN name `accfile_name` VARCHAR(100) NOT NULL;
|
||||
ALTER TABLE `accounts`
|
||||
ADD COLUMN `account_otherGroupEdit` BIT(1) NULL DEFAULT 0
|
||||
AFTER `account_dateEdit`,
|
||||
@@ -20,4 +20,4 @@ ALTER TABLE `accHistory`
|
||||
ADD COLUMN `accHistory_otherGroupEdit` VARCHAR(45) NULL
|
||||
AFTER `accHistory_otherUserEdit`;
|
||||
ALTER TABLE `accFiles`
|
||||
CHANGE COLUMN `accfile_type` `accfile_type` VARCHAR(100) NOT NULL;
|
||||
CHANGE COLUMN type `accfile_type` VARCHAR(100) NOT NULL;
|
||||
@@ -78,7 +78,7 @@ REFERENCES `usrData` (`user_id`)
|
||||
|
||||
ALTER TABLE `accFiles`
|
||||
ADD CONSTRAINT `fk_accFiles_accounts_id`
|
||||
FOREIGN KEY (`accfile_accountId`)
|
||||
FOREIGN KEY (accountId)
|
||||
REFERENCES `accounts` (`account_id`)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION;
|
||||
@@ -339,7 +339,7 @@ CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = CURRENT_USER SQL SECURITY DEFI
|
||||
FROM
|
||||
`accFiles`
|
||||
WHERE
|
||||
(`accFiles`.`accfile_accountId` = `accounts`.`account_id`)) AS `num_files`
|
||||
(`accFiles`.accountId = `accounts`.`account_id`)) AS `num_files`
|
||||
FROM
|
||||
(((`accounts`
|
||||
LEFT JOIN `categories` ON ((`accounts`.`account_categoryId` = `categories`.`category_id`)))
|
||||
|
||||
@@ -72,7 +72,7 @@ CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = CURRENT_USER SQL SECURITY DEFI
|
||||
FROM
|
||||
`accFiles`
|
||||
WHERE
|
||||
(`accFiles`.`accfile_accountId` = `accounts`.`account_id`)) AS `num_files`
|
||||
(`accFiles`.accountId = `accounts`.`account_id`)) AS `num_files`
|
||||
FROM
|
||||
(((`accounts`
|
||||
LEFT JOIN `categories` ON ((`accounts`.`account_categoryId` = `categories`.`category_id`)))
|
||||
|
||||
@@ -32,7 +32,7 @@ CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = CURRENT_USER SQL SECURITY DEFI
|
||||
FROM
|
||||
`accFiles`
|
||||
WHERE
|
||||
(`accFiles`.`accfile_accountId` = `accounts`.`account_id`)) AS `num_files`
|
||||
(`accFiles`.accountId = `accounts`.`account_id`)) AS `num_files`
|
||||
FROM
|
||||
(((`accounts`
|
||||
LEFT JOIN `categories` ON ((`accounts`.`account_categoryId` = `categories`.`category_id`)))
|
||||
|
||||
@@ -1,153 +1,423 @@
|
||||
ALTER TABLE `customers` ADD `customer_isGlobal` BIT(1) DEFAULT b'0' NULL;
|
||||
ALTER TABLE `usrData` ADD `user_ssoLogin` VARCHAR(100) NULL AFTER `user_login`;
|
||||
ALTER TABLE `customers`
|
||||
ADD `customer_isGlobal` BIT(1) DEFAULT b'0' NULL;
|
||||
ALTER TABLE `usrData`
|
||||
ADD `user_ssoLogin` VARCHAR(100) NULL
|
||||
AFTER `user_login`;
|
||||
|
||||
DROP INDEX IDX_login ON `usrData`;
|
||||
CREATE UNIQUE INDEX `IDX_login` ON `usrData` (`user_login`, `user_ssoLogin`);
|
||||
DROP INDEX IDX_login
|
||||
ON `usrData`;
|
||||
CREATE UNIQUE INDEX `IDX_login`
|
||||
ON `usrData` (`user_login`, `user_ssoLogin`);
|
||||
|
||||
ALTER TABLE plugins ADD `plugin_available` BIT(1) DEFAULT b'0' NULL;
|
||||
ALTER TABLE plugins
|
||||
ADD `plugin_available` BIT(1) DEFAULT b'0' NULL;
|
||||
|
||||
CREATE TABLE `actions` (
|
||||
`action_id` SMALLINT(5) UNSIGNED NOT NULL,
|
||||
`action_name` VARCHAR(50) NOT NULL,
|
||||
`action_text` VARCHAR(100) NOT NULL,
|
||||
`action_id` SMALLINT(5) UNSIGNED NOT NULL,
|
||||
`action_name` VARCHAR(50) NOT NULL,
|
||||
`action_text` VARCHAR(100) NOT NULL,
|
||||
`action_route` VARCHAR(100),
|
||||
PRIMARY KEY (`action_id`, `action_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8;
|
||||
|
||||
CREATE TABLE actions
|
||||
(
|
||||
action_id int(10) unsigned PRIMARY KEY NOT NULL,
|
||||
action_name varchar(50) NOT NULL,
|
||||
action_text varchar(100) NOT NULL,
|
||||
action_route varchar(100)
|
||||
action_id INT(10) UNSIGNED PRIMARY KEY NOT NULL,
|
||||
action_name VARCHAR(50) NOT NULL,
|
||||
action_text VARCHAR(100) NOT NULL,
|
||||
action_route VARCHAR(100)
|
||||
);
|
||||
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1, 'ACCOUNT_SEARCH', 'Buscar Cuentas', 'account/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (10, 'ACCOUNT', 'Cuentas', 'account/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (11, 'ACCOUNT_FILE', 'Archivos', 'account/listFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (12, 'ACCOUNT_REQUEST', 'Peticiones', 'account/request');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (13, 'ACCOUNT_FAVORITE', 'Favoritos', 'favorite/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1, 'ACCOUNT_SEARCH', 'Buscar Cuentas', 'account/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (10, 'ACCOUNT', 'Cuentas', 'account/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (11, 'ACCOUNT_FILE', 'Archivos', 'account/listFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (12, 'ACCOUNT_REQUEST', 'Peticiones', 'account/request');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (13, 'ACCOUNT_FAVORITE', 'Favoritos', 'favorite/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (20, 'WIKI', 'Wiki', 'wiki/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (60, 'ITEMS_MANAGE', 'Elementos y Personalización', 'itemManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (61, 'CATEGORY', 'Gestión Categorías', 'category/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (62, 'CLIENT', 'Gestión Clientes', 'client/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (63, 'APITOKEN', 'Gestión Autorizaciones API', 'apiToken/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (64, 'CUSTOMFIELD', 'Gestión Campos Personalizados', 'customField/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (65, 'PUBLICLINK', 'Enlaces Públicos', 'publicLink/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (66, 'FILE', 'Gestión de Archivos', 'file/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (67, 'ACCOUNTMGR', 'Gestión de Cuentas', 'accountManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (68, 'TAG', 'Gestión de Etiquetas', 'tag/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (69, 'PLUGIN', 'Gestión Plugins', 'plugin/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (70, 'ACCESS_MANAGE', 'Usuarios y Accesos', 'accessManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (71, 'USER', 'Gestión Usuarios', 'user/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (72, 'GROUP', 'Gestión Grupos', 'group/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (73, 'PROFILE', 'Gestión Perfiles', 'profile/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (90, 'EVENTLOG', 'Registro de Eventos', 'eventlog/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (100, 'ACCOUNT_VIEW', 'Ver Cuenta', 'account/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (101, 'ACCOUNT_CREATE', 'Nueva Cuenta', 'account/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (102, 'ACCOUNT_EDIT', 'Editar Cuenta', 'account/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (103, 'ACCOUNT_DELETE', 'Eliminar Cuenta', 'account/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (104, 'ACCOUNT_VIEW_PASS', 'Ver Clave', 'account/viewPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (105, 'ACCOUNT_VIEW_HISTORY', 'Ver Historial', 'account/viewHistory');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (106, 'ACCOUNT_EDIT_PASS', 'Editar Clave de Cuenta', 'account/editPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (107, 'ACCOUNT_EDIT_RESTORE', 'Restaurar Cuenta', 'account/restore');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (108, 'ACCOUNT_COPY', 'Copiar Cuenta', 'account/copy');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (109, 'ACCOUNT_COPY_PASS', 'Copiar Clave', 'account/copyPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (111, 'ACCOUNT_FILE_VIEW', 'Ver Archivo', 'account/viewFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (112, 'ACCOUNT_FILE_UPLOAD', 'Subir Archivo', 'account/uploadFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (113, 'ACCOUNT_FILE_DOWNLOAD', 'Descargar Archivo', 'account/downloadFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (114, 'ACCOUNT_FILE_DELETE', 'Eliminar Archivo', 'account/deleteFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (130, 'ACCOUNT_FAVORITE_VIEW', 'Ver Favoritos', 'favorite/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (131, 'ACCOUNT_FAVORITE_ADD', 'Añadir Favorito', 'favorite/add');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (133, 'ACCOUNT_FAVORITE_DELETE', 'Eliminar Favorito', 'favorite/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (200, 'WIKI_VIEW', 'Ver Wiki', 'wiki/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (201, 'WIKI_NEW', 'Añadir Wiki', 'wiki/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (202, 'WIKI_EDIT', 'Editar Wiki', 'wiki/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (203, 'WIKI_DELETE', 'Eliminar Wiki', 'wiki/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (610, 'CATEGORY_VIEW', 'Ver Categoría', 'category/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (611, 'CATEGORY_CREATE', 'Nueva Categoría', 'category/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (612, 'CATEGORY_EDIT', 'Editar Categoría', 'category/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (613, 'CATEGORY_DELETE', 'Eliminar Categoría', 'category/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (615, 'CATEGORY_SEARCH', 'Buscar Categoría', 'category/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (620, 'CLIENT_VIEW', 'Ver Cliente', 'client/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (621, 'CLIENT_CREATE', 'Nuevo CLiente', 'client/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (622, 'CLIENT_EDIT', 'Editar Cliente', 'client/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (623, 'CLIENT_DELETE', 'Eliminar Cliente', 'client/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (625, 'CLIENT_SEARCH', 'Buscar Cliente', 'client/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (630, 'APITOKEN_CREATE', 'Nuevo Token API', 'apiToken/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (631, 'APITOKEN_VIEW', 'Ver Token API', 'apiToken/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (632, 'APITOKEN_EDIT', 'Editar Token API', 'apiToken/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (633, 'APITOKEN_DELETE', 'Eliminar Token API', 'apiToken/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (635, 'APITOKEN_SEARCH', 'Buscar Token API', 'apiToken/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (640, 'CUSTOMFIELD_CREATE', 'Nuevo Campo Personalizado', 'customField/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (641, 'CUSTOMFIELD_VIEW', 'Ver Campo Personalizado', 'customField/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (642, 'CUSTOMFIELD_EDIT', 'Editar Campo Personalizado', 'customField/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (643, 'CUSTOMFIELD_DELETE', 'Eliminar Campo Personalizado', 'customField/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (645, 'CUSTOMFIELD_SEARCH', 'Buscar Campo Personalizado', 'customField/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (650, 'PUBLICLINK_CREATE', 'Crear Enlace Público', 'publicLink/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (651, 'PUBLICLINK_VIEW', 'Ver Enlace Público', 'publicLink/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (653, 'PUBLICLINK_DELETE', 'Eliminar Enlace Público', 'publicLink/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (654, 'PUBLICLINK_REFRESH', 'Actualizar Enlace Público', 'publicLink/refresh');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (655, 'PUBLICLINK_SEARCH', 'Buscar Enlace Público', 'publicLink/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (661, 'FILE_VIEW', 'Ver Archivo', 'file/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (663, 'FILE_DELETE', 'Eliminar Archivo', 'file/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (665, 'FILE_SEARCH', 'Buscar Archivo', 'file/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (671, 'ACCOUNTMGR_VIEW', 'Ver Cuenta', 'accountManager/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (673, 'ACCOUNTMGR_DELETE', 'Eliminar Cuenta', 'accountManager/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (675, 'ACCOUNTMGR_SEARCH', 'Buscar Cuenta', 'accountManager/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (680, 'TAG_CREATE', 'Nueva Etiqueta', 'tag/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (681, 'TAG_VIEW', 'Ver Etiqueta', 'tag/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (682, 'TAG_EDIT', 'Editar Etiqueta', 'tag/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (683, 'TAG_DELETE', 'Eliminar Etiqueta', 'tag/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (685, 'TAG_SEARCH', 'Buscar Etiqueta', 'tag/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (690, 'PLUGIN_NEW', 'Nuevo Plugin', 'plugin/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (691, 'PLUGIN_VIEW', 'Ver Plugin', 'plugin/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (695, 'PLUGIN_SEARCH', 'Buscar Plugin', 'plugin/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (696, 'PLUGIN_ENABLE', 'Habilitar Plugin', 'plugin/enable');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (697, 'PLUGIN_DISABLE', 'Deshabilitar Plugin', 'plugin/disable');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (698, 'PLUGIN_RESET', 'Restablecer Plugin', 'plugin/reset');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (710, 'USER_VIEW', 'Ver Usuario', 'user/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (711, 'USER_CREATE', 'Nuevo Usuario', 'user/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (712, 'USER_EDIT', 'Editar Usuario', 'user/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (713, 'USER_DELETE', 'Eliminar Usuario', 'user/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (714, 'USER_EDIT_PASS', 'Editar Clave Usuario', 'user/editPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (715, 'USER_SEARCH', 'Buscar Usuario', 'user/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (720, 'GROUP_VIEW', 'Ver Grupo', 'userGroup/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (721, 'GROUP_CREATE', 'Nuevo Grupo', 'userGroup/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (722, 'GROUP_EDIT', 'Editar Grupo', 'userGroup/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (723, 'GROUP_DELETE', 'Eliminar Grupo', 'userGroup/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (725, 'GROUP_SEARCH', 'Buscar Grupo', 'userGroup/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (730, 'PROFILE_VIEW', 'Ver Perfil', 'userProfile/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (731, 'PROFILE_CREATE', 'Nuevo Perfil', 'userProfile/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (732, 'PROFILE_EDIT', 'Editar Perfil', 'userProfile/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (733, 'PROFILE_DELETE', 'Eliminar Perfil', 'userProfile/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (735, 'PROFILE_SEARCH', 'Buscar Perfil', 'userProfile/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (740, 'PREFERENCE', 'Gestión Preferencias', 'userPreference/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (741, 'PREFERENCE_GENERAL', 'Preferencias General', 'userPreference/general');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (742, 'PREFERENCE_SECURITY', 'Preferencias Seguridad', 'userPreference/security');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (760, 'NOTICE', 'Notificaciones', 'notice/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (761, 'NOTICE_USER', 'Notificaciones Usuario', 'noticeUser/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1000, 'CONFIG', 'Configuración', 'config/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1001, 'CONFIG_GENERAL', 'Configuración General', 'config/general');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1010, 'ACCOUNT_CONFIG', 'Configuración Cuentas', 'account/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1020, 'WIKI_CONFIG', 'Configuración Wiki', 'wiki/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1030, 'ENCRYPTION_CONFIG', 'Configuración Encriptación', 'encryption/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1031, 'ENCRYPTION_REFRESH', 'Actualizar Hash', 'encryption/updateHash');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1032, 'ENCRYPTION_TEMPPASS', 'Clave Maestra Temporal', 'encryption/createTempPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1040, 'BACKUP_CONFIG', 'Configuración Copia de Seguridad', 'backup/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1050, 'IMPORT_CONFIG', 'Configuración Importación', 'import/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1051, 'IMPORT_CSV', 'Importar CSV', 'import/csv');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1052, 'IMPORT_XML', 'Importar XML', 'import/xml');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1070, 'MAIL_CONFIG', 'Configuración Email', 'mail/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1080, 'LDAP_CONFIG', 'Configuración LDAP', 'ldap/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (1081, 'LDAP_SYNC', 'Sincronización LDAP', 'ldap/sync');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (6701, 'ACCOUNTMGR_HISTORY', 'Gestión de Cuenta (H)', 'accountHistoryManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (6731, 'ACCOUNTMGR_DELETE_HISTORY', 'Eliminar Cuenta', 'accountHistoryManager/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (6751, 'ACCOUNTMGR_SEARCH_HISTORY', 'Buscar Cuenta', 'accountHistoryManager/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (6771, 'ACCOUNTMGR_RESTORE', 'Restaurar Cuenta', 'accountManager/restore');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7610, 'NOTICE_USER_VIEW', 'Ver Notificación', 'userNotice/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7611, 'NOTICE_USER_CREATE', 'Crear Notificación', 'userNotice/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7612, 'NOTICE_USER_EDIT', 'Editar Notificación', 'userNotice/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7613, 'NOTICE_USER_DELETE', 'Eliminar Notificación', 'userNotice/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7614, 'NOTICE_USER_CHECK', 'Marcar Notificación', 'userNotice/check');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route) VALUES (7615, 'NOTICE_USER_SEARCH', 'Buscar Notificación', 'userNotice/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (60, 'ITEMS_MANAGE', 'Elementos y Personalización', 'itemManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (61, 'CATEGORY', 'Gestión Categorías', 'category/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (62, 'CLIENT', 'Gestión Clientes', 'client/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (63, 'APITOKEN', 'Gestión Autorizaciones API', 'apiToken/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (64, 'CUSTOMFIELD', 'Gestión Campos Personalizados', 'customField/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (65, 'PUBLICLINK', 'Enlaces Públicos', 'publicLink/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (66, 'FILE', 'Gestión de Archivos', 'file/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (67, 'ACCOUNTMGR', 'Gestión de Cuentas', 'accountManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (68, 'TAG', 'Gestión de Etiquetas', 'tag/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (69, 'PLUGIN', 'Gestión Plugins', 'plugin/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (70, 'ACCESS_MANAGE', 'Usuarios y Accesos', 'accessManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (71, 'USER', 'Gestión Usuarios', 'user/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (72, 'GROUP', 'Gestión Grupos', 'group/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (73, 'PROFILE', 'Gestión Perfiles', 'profile/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (90, 'EVENTLOG', 'Registro de Eventos', 'eventlog/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (100, 'ACCOUNT_VIEW', 'Ver Cuenta', 'account/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (101, 'ACCOUNT_CREATE', 'Nueva Cuenta', 'account/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (102, 'ACCOUNT_EDIT', 'Editar Cuenta', 'account/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (103, 'ACCOUNT_DELETE', 'Eliminar Cuenta', 'account/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (104, 'ACCOUNT_VIEW_PASS', 'Ver Clave', 'account/viewPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (105, 'ACCOUNT_VIEW_HISTORY', 'Ver Historial', 'account/viewHistory');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (106, 'ACCOUNT_EDIT_PASS', 'Editar Clave de Cuenta', 'account/editPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (107, 'ACCOUNT_EDIT_RESTORE', 'Restaurar Cuenta', 'account/restore');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (108, 'ACCOUNT_COPY', 'Copiar Cuenta', 'account/copy');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (109, 'ACCOUNT_COPY_PASS', 'Copiar Clave', 'account/copyPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (111, 'ACCOUNT_FILE_VIEW', 'Ver Archivo', 'account/viewFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (112, 'ACCOUNT_FILE_UPLOAD', 'Subir Archivo', 'account/uploadFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (113, 'ACCOUNT_FILE_DOWNLOAD', 'Descargar Archivo', 'account/downloadFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (114, 'ACCOUNT_FILE_DELETE', 'Eliminar Archivo', 'account/deleteFile');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (130, 'ACCOUNT_FAVORITE_VIEW', 'Ver Favoritos', 'favorite/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (131, 'ACCOUNT_FAVORITE_ADD', 'Añadir Favorito', 'favorite/add');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (133, 'ACCOUNT_FAVORITE_DELETE', 'Eliminar Favorito', 'favorite/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (200, 'WIKI_VIEW', 'Ver Wiki', 'wiki/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (201, 'WIKI_NEW', 'Añadir Wiki', 'wiki/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (202, 'WIKI_EDIT', 'Editar Wiki', 'wiki/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (203, 'WIKI_DELETE', 'Eliminar Wiki', 'wiki/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (610, 'CATEGORY_VIEW', 'Ver Categoría', 'category/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (611, 'CATEGORY_CREATE', 'Nueva Categoría', 'category/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (612, 'CATEGORY_EDIT', 'Editar Categoría', 'category/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (613, 'CATEGORY_DELETE', 'Eliminar Categoría', 'category/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (615, 'CATEGORY_SEARCH', 'Buscar Categoría', 'category/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (620, 'CLIENT_VIEW', 'Ver Cliente', 'client/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (621, 'CLIENT_CREATE', 'Nuevo CLiente', 'client/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (622, 'CLIENT_EDIT', 'Editar Cliente', 'client/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (623, 'CLIENT_DELETE', 'Eliminar Cliente', 'client/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (625, 'CLIENT_SEARCH', 'Buscar Cliente', 'client/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (630, 'APITOKEN_CREATE', 'Nuevo Token API', 'apiToken/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (631, 'APITOKEN_VIEW', 'Ver Token API', 'apiToken/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (632, 'APITOKEN_EDIT', 'Editar Token API', 'apiToken/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (633, 'APITOKEN_DELETE', 'Eliminar Token API', 'apiToken/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (635, 'APITOKEN_SEARCH', 'Buscar Token API', 'apiToken/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (640, 'CUSTOMFIELD_CREATE', 'Nuevo Campo Personalizado', 'customField/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (641, 'CUSTOMFIELD_VIEW', 'Ver Campo Personalizado', 'customField/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (642, 'CUSTOMFIELD_EDIT', 'Editar Campo Personalizado', 'customField/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (643, 'CUSTOMFIELD_DELETE', 'Eliminar Campo Personalizado', 'customField/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (645, 'CUSTOMFIELD_SEARCH', 'Buscar Campo Personalizado', 'customField/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (650, 'PUBLICLINK_CREATE', 'Crear Enlace Público', 'publicLink/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (651, 'PUBLICLINK_VIEW', 'Ver Enlace Público', 'publicLink/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (653, 'PUBLICLINK_DELETE', 'Eliminar Enlace Público', 'publicLink/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (654, 'PUBLICLINK_REFRESH', 'Actualizar Enlace Público', 'publicLink/refresh');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (655, 'PUBLICLINK_SEARCH', 'Buscar Enlace Público', 'publicLink/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (661, 'FILE_VIEW', 'Ver Archivo', 'file/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (663, 'FILE_DELETE', 'Eliminar Archivo', 'file/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (665, 'FILE_SEARCH', 'Buscar Archivo', 'file/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (671, 'ACCOUNTMGR_VIEW', 'Ver Cuenta', 'accountManager/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (673, 'ACCOUNTMGR_DELETE', 'Eliminar Cuenta', 'accountManager/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (675, 'ACCOUNTMGR_SEARCH', 'Buscar Cuenta', 'accountManager/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (680, 'TAG_CREATE', 'Nueva Etiqueta', 'tag/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (681, 'TAG_VIEW', 'Ver Etiqueta', 'tag/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (682, 'TAG_EDIT', 'Editar Etiqueta', 'tag/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (683, 'TAG_DELETE', 'Eliminar Etiqueta', 'tag/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (685, 'TAG_SEARCH', 'Buscar Etiqueta', 'tag/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (690, 'PLUGIN_NEW', 'Nuevo Plugin', 'plugin/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (691, 'PLUGIN_VIEW', 'Ver Plugin', 'plugin/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (695, 'PLUGIN_SEARCH', 'Buscar Plugin', 'plugin/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (696, 'PLUGIN_ENABLE', 'Habilitar Plugin', 'plugin/enable');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (697, 'PLUGIN_DISABLE', 'Deshabilitar Plugin', 'plugin/disable');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (698, 'PLUGIN_RESET', 'Restablecer Plugin', 'plugin/reset');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (710, 'USER_VIEW', 'Ver Usuario', 'user/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (711, 'USER_CREATE', 'Nuevo Usuario', 'user/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (712, 'USER_EDIT', 'Editar Usuario', 'user/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (713, 'USER_DELETE', 'Eliminar Usuario', 'user/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (714, 'USER_EDIT_PASS', 'Editar Clave Usuario', 'user/editPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (715, 'USER_SEARCH', 'Buscar Usuario', 'user/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (720, 'GROUP_VIEW', 'Ver Grupo', 'userGroup/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (721, 'GROUP_CREATE', 'Nuevo Grupo', 'userGroup/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (722, 'GROUP_EDIT', 'Editar Grupo', 'userGroup/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (723, 'GROUP_DELETE', 'Eliminar Grupo', 'userGroup/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (725, 'GROUP_SEARCH', 'Buscar Grupo', 'userGroup/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (730, 'PROFILE_VIEW', 'Ver Perfil', 'userProfile/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (731, 'PROFILE_CREATE', 'Nuevo Perfil', 'userProfile/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (732, 'PROFILE_EDIT', 'Editar Perfil', 'userProfile/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (733, 'PROFILE_DELETE', 'Eliminar Perfil', 'userProfile/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (735, 'PROFILE_SEARCH', 'Buscar Perfil', 'userProfile/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (740, 'PREFERENCE', 'Gestión Preferencias', 'userPreference/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (741, 'PREFERENCE_GENERAL', 'Preferencias General', 'userPreference/general');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (742, 'PREFERENCE_SECURITY', 'Preferencias Seguridad', 'userPreference/security');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (760, 'NOTICE', 'Notificaciones', 'notice/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (761, 'NOTICE_USER', 'Notificaciones Usuario', 'noticeUser/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1000, 'CONFIG', 'Configuración', 'config/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1001, 'CONFIG_GENERAL', 'Configuración General', 'config/general');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1010, 'ACCOUNT_CONFIG', 'Configuración Cuentas', 'account/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1020, 'WIKI_CONFIG', 'Configuración Wiki', 'wiki/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1030, 'ENCRYPTION_CONFIG', 'Configuración Encriptación', 'encryption/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1031, 'ENCRYPTION_REFRESH', 'Actualizar Hash', 'encryption/updateHash');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1032, 'ENCRYPTION_TEMPPASS', 'Clave Maestra Temporal', 'encryption/createTempPass');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1040, 'BACKUP_CONFIG', 'Configuración Copia de Seguridad', 'backup/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1050, 'IMPORT_CONFIG', 'Configuración Importación', 'import/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1051, 'IMPORT_CSV', 'Importar CSV', 'import/csv');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1052, 'IMPORT_XML', 'Importar XML', 'import/xml');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1070, 'MAIL_CONFIG', 'Configuración Email', 'mail/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1080, 'LDAP_CONFIG', 'Configuración LDAP', 'ldap/config');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (1081, 'LDAP_SYNC', 'Sincronización LDAP', 'ldap/sync');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (6701, 'ACCOUNTMGR_HISTORY', 'Gestión de Cuenta (H)', 'accountHistoryManager/index');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (6731, 'ACCOUNTMGR_DELETE_HISTORY', 'Eliminar Cuenta', 'accountHistoryManager/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (6751, 'ACCOUNTMGR_SEARCH_HISTORY', 'Buscar Cuenta', 'accountHistoryManager/search');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (6771, 'ACCOUNTMGR_RESTORE', 'Restaurar Cuenta', 'accountManager/restore');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7610, 'NOTICE_USER_VIEW', 'Ver Notificación', 'userNotice/view');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7611, 'NOTICE_USER_CREATE', 'Crear Notificación', 'userNotice/create');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7612, 'NOTICE_USER_EDIT', 'Editar Notificación', 'userNotice/edit');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7613, 'NOTICE_USER_DELETE', 'Eliminar Notificación', 'userNotice/delete');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7614, 'NOTICE_USER_CHECK', 'Marcar Notificación', 'userNotice/check');
|
||||
INSERT INTO actions (action_id, action_name, action_text, action_route)
|
||||
VALUES (7615, 'NOTICE_USER_SEARCH', 'Buscar Notificación', 'userNotice/search');
|
||||
|
||||
ALTER TABLE customFieldsDef
|
||||
MODIFY field BLOB;
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD required TINYINT(1) UNSIGNED NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD help VARCHAR(255) NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD showInList TINYINT(1) UNSIGNED NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD name VARCHAR(100) NOT NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
MODIFY COLUMN name VARCHAR(100) NOT NULL
|
||||
AFTER id;
|
||||
ALTER TABLE customFieldsDef
|
||||
CHANGE customfielddef_module moduleId SMALLINT(5) UNSIGNED NOT NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
CHANGE customfielddef_field field BLOB NOT NULL;
|
||||
ALTER TABLE customFieldsData
|
||||
DROP FOREIGN KEY fk_customFieldsDef_id;
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_defId defId INT(10) UNSIGNED NOT NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
CHANGE customfielddef_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
|
||||
ALTER TABLE customFieldsData
|
||||
ADD CONSTRAINT fk_customFieldsDef_id
|
||||
FOREIGN KEY (definitionId) REFERENCES customFieldsDef (id);
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_moduleId moduleId SMALLINT(5) UNSIGNED NOT NULL;
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_itemId itemId INT(10) UNSIGNED NOT NULL;
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_data data LONGBLOB;
|
||||
ALTER TABLE customFieldsData
|
||||
CHANGE customfielddata_key `key` VARBINARY(1000);
|
||||
|
||||
CREATE TABLE customFieldsType
|
||||
(
|
||||
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
text VARCHAR(50) NOT NULL
|
||||
);
|
||||
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD typeId TINYINT UNSIGNED NULL;
|
||||
ALTER TABLE customFieldsDef
|
||||
ADD CONSTRAINT fk_customFieldsType_id
|
||||
FOREIGN KEY (typeId) REFERENCES customFieldsType (id)
|
||||
ON UPDATE CASCADE;
|
||||
|
||||
CREATE TABLE customFieldsType
|
||||
(
|
||||
id TINYINT(3) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
text VARCHAR(50) NOT NULL
|
||||
);
|
||||
|
||||
-- Extraer antes desde los datos
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (1, 'text', 'Texto');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (2, 'password', 'Clave');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (3, 'date', 'Fecha');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (4, 'number', 'Número');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (5, 'email', 'Email');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (6, 'telephone', 'Teléfono');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (7, 'url', 'URL');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (8, 'color', 'Color');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (9, 'wiki', 'Wiki');
|
||||
INSERT INTO customFieldsType (id, name, text) VALUES (10, 'textarea', 'Área de texto');
|
||||
|
||||
ALTER TABLE accFiles
|
||||
DROP FOREIGN KEY fk_accFiles_accounts_id;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_accountId accountId SMALLINT(5) UNSIGNED NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
ADD CONSTRAINT fk_account_id
|
||||
FOREIGN KEY (accountId) REFERENCES accounts (account_id);
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_id id INT(11) NOT NULL AUTO_INCREMENT;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_name name VARCHAR(100) NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_type type VARCHAR(100) NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_size size INT(11) NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_content content MEDIUMBLOB NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accfile_extension extension VARCHAR(10) NOT NULL;
|
||||
ALTER TABLE accFiles
|
||||
CHANGE accFile_thumb thumb MEDIUMBLOB;
|
||||
|
||||
CREATE OR REPLACE VIEW account_search_v AS
|
||||
SELECT DISTINCT
|
||||
`accounts`.`account_id` AS `account_id`,
|
||||
`accounts`.`account_customerId` AS `account_customerId`,
|
||||
`accounts`.`account_categoryId` AS `account_categoryId`,
|
||||
`accounts`.`account_name` AS `account_name`,
|
||||
`accounts`.`account_login` AS `account_login`,
|
||||
`accounts`.`account_url` AS `account_url`,
|
||||
`accounts`.`account_notes` AS `account_notes`,
|
||||
`accounts`.`account_userId` AS `account_userId`,
|
||||
`accounts`.`account_userGroupId` AS `account_userGroupId`,
|
||||
`accounts`.`account_otherUserEdit` AS `account_otherUserEdit`,
|
||||
`accounts`.`account_otherGroupEdit` AS `account_otherGroupEdit`,
|
||||
`accounts`.`account_isPrivate` AS `account_isPrivate`,
|
||||
`accounts`.`account_isPrivateGroup` AS `account_isPrivateGroup`,
|
||||
`accounts`.`account_passDate` AS `account_passDate`,
|
||||
`accounts`.`account_passDateChange` AS `account_passDateChange`,
|
||||
`accounts`.`account_parentId` AS `account_parentId`,
|
||||
`accounts`.`account_countView` AS `account_countView`,
|
||||
`ug`.`usergroup_name` AS `usergroup_name`,
|
||||
`categories`.`category_name` AS `category_name`,
|
||||
`customers`.`customer_name` AS `customer_name`,
|
||||
(SELECT count(0)
|
||||
FROM `accFiles`
|
||||
WHERE (`accFiles`.`accountId` = `accounts`.`account_id`)) AS `num_files`
|
||||
FROM (((`accounts`
|
||||
LEFT JOIN `categories`
|
||||
ON ((`accounts`.`account_categoryId` = `categories`.`category_id`))) LEFT JOIN
|
||||
`usrGroups` `ug` ON ((`accounts`.`account_userGroupId` = `ug`.`usergroup_id`))) LEFT JOIN
|
||||
`customers` ON ((`customers`.`customer_id` = `accounts`.`account_customerId`)));
|
||||
|
||||
ALTER TABLE plugins
|
||||
CHANGE plugin_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
|
||||
ALTER TABLE plugins
|
||||
CHANGE plugin_name name VARCHAR(100) NOT NULL;
|
||||
ALTER TABLE plugins
|
||||
CHANGE plugin_data data VARBINARY(5000);
|
||||
ALTER TABLE plugins
|
||||
CHANGE plugin_enabled enabled TINYINT(1) NOT NULL DEFAULT 0;
|
||||
ALTER TABLE plugins
|
||||
CHANGE plugin_available available TINYINT(1) DEFAULT 0;
|
||||
@@ -520,7 +520,7 @@ CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = CURRENT_USER SQL SECURITY DEFI
|
||||
FROM
|
||||
`accFiles`
|
||||
WHERE
|
||||
(`accFiles`.`accfile_accountId` = `accounts`.`account_id`)) AS `num_files`
|
||||
(`accFiles`.accountId = `accounts`.`account_id`)) AS `num_files`
|
||||
FROM
|
||||
(((`accounts`
|
||||
LEFT JOIN `categories` ON ((`accounts`.`account_categoryId` = `categories`.`category_id`)))
|
||||
|
||||
Reference in New Issue
Block a user