diff --git a/app/modules/web/themes/material-blue/views/itemshow/customfield.inc b/app/modules/web/themes/material-blue/views/itemshow/customfield.inc
index 1645a6ae..5bb3eb50 100644
--- a/app/modules/web/themes/material-blue/views/itemshow/customfield.inc
+++ b/app/modules/web/themes/material-blue/views/itemshow/customfield.inc
@@ -34,10 +34,10 @@
@@ -48,9 +48,10 @@
@@ -85,8 +86,8 @@
diff --git a/lib/SP/Repositories/CustomField/CustomFieldDefRepository.php b/lib/SP/Repositories/CustomField/CustomFieldDefRepository.php
index 7b909ec1..6a3f4f60 100644
--- a/lib/SP/Repositories/CustomField/CustomFieldDefRepository.php
+++ b/lib/SP/Repositories/CustomField/CustomFieldDefRepository.php
@@ -24,7 +24,6 @@
namespace SP\Repositories\CustomField;
-use SP\Core\Acl\ActionsInterface;
use SP\Core\Exceptions\SPException;
use SP\DataModel\CustomFieldDefinitionData;
use SP\DataModel\ItemSearchData;
@@ -43,36 +42,6 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
{
use RepositoryItemTrait;
- /**
- * @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
*
@@ -84,7 +53,7 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
public function create($itemData)
{
$query = /** @lang SQL */
- 'INSERT INTO CustomFieldDefinition SET name = ?, moduleId = ?, required = ?, help = ?, showInList = ?, typeId = ?';
+ 'INSERT INTO CustomFieldDefinition SET `name` = ?, moduleId = ?, required = ?, `help` = ?, showInList = ?, typeId = ?';
$queryData = new QueryData();
$queryData->setQuery($query);
@@ -113,7 +82,7 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
{
$query = /** @lang SQL */
'UPDATE CustomFieldDefinition
- SET name = ?, moduleId = ?, required = ?, help = ?, showInList = ?, typeId = ?
+ SET `name` = ?, moduleId = ?, required = ?, `help` = ?, showInList = ?, typeId = ?
WHERE id = ? LIMIT 1';
$queryData = new QueryData();
@@ -139,14 +108,14 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
public function getById($id)
{
$query = /** @lang SQL */
- 'SELECT id, name, moduleId, required, help, showInList, typeId
+ 'SELECT id, `name`, moduleId, required, `help`, showInList, typeId
FROM CustomFieldDefinition
WHERE id = ? LIMIT 1';
$queryData = new QueryData();
- $queryData->setMapClassName(CustomFieldDefinitionData::class);
$queryData->setQuery($query);
$queryData->addParam($id);
+ $queryData->setMapClassName(CustomFieldDefinitionData::class);
return DbWrapper::getResults($queryData, $this->db);
}
@@ -159,13 +128,13 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
public function getAll()
{
$query = /** @lang SQL */
- 'SELECT id, name, moduleId, required, help, showInList
+ 'SELECT id, `name`, moduleId, required, `help`, showInList
FROM CustomFieldDefinition
ORDER BY moduleId';
$queryData = new QueryData();
- $queryData->setMapClassName(CustomFieldDefinitionData::class);
$queryData->setQuery($query);
+ $queryData->setMapClassName(CustomFieldDefinitionData::class);
return DbWrapper::getResultsArray($queryData, $this->db);
}
@@ -179,14 +148,14 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
public function getByIdBatch(array $ids)
{
$query = /** @lang SQL */
- 'SELECT id, name, moduleId, required, help, showInList, typeId
+ 'SELECT id, `name`, moduleId, required, `help`, showInList, typeId
FROM CustomFieldDefinition
WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
$queryData = new QueryData();
- $queryData->setMapClassName(CustomFieldDefinitionData::class);
$queryData->setQuery($query);
$queryData->setParams($ids);
+ $queryData->setMapClassName(CustomFieldDefinitionData::class);
return DbWrapper::getResults($queryData, $this->db);
}
@@ -202,10 +171,6 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
*/
public function deleteByIdBatch(array $ids)
{
- if ($this->deleteItemsDataForDefinitionBatch($ids) === false) {
- throw new SPException(__u('Error al eliminar los campos personalizados'), SPException::ERROR);
- }
-
$query = /** @lang SQL */
'DELETE FROM CustomFieldDefinition WHERE id IN (' . $this->getParamsFromArray($ids) . ')';
@@ -219,25 +184,6 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
return $this->db->getNumRows();
}
- /**
- * Eliminar los datos de los elementos de una definición
- *
- * @param array $ids
- * @return bool
- * @throws \SP\Core\Exceptions\ConstraintException
- * @throws \SP\Core\Exceptions\QueryException
- */
- protected function deleteItemsDataForDefinitionBatch(array $ids)
- {
- $queryData = new QueryData();
- $queryData->setQuery('DELETE FROM CustomFieldData WHERE id IN (' . $this->getParamsFromArray($ids) . ')');
- $queryData->setParams($ids);
-
- DbWrapper::getQuery($queryData, $this->db);
-
- return $this->db->getNumRows();
- }
-
/**
* Deletes an item
*
@@ -249,10 +195,6 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
*/
public function delete($id)
{
- if ($this->deleteItemsDataForDefinition($id) === false) {
- throw new SPException(__u('Error al eliminar el campo personalizado'), SPException::ERROR);
- }
-
$queryData = new QueryData();
$queryData->setQuery('DELETE FROM CustomFieldDefinition WHERE id = ? LIMIT 1');
$queryData->addParam($id);
@@ -261,22 +203,6 @@ class CustomFieldDefRepository extends Repository implements RepositoryItemInter
return DbWrapper::getQuery($queryData, $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)
- {
- $queryData = new QueryData();
- $queryData->setQuery('DELETE FROM CustomFieldData WHERE id = ?');
- $queryData->addParam($id);
-
- return DbWrapper::getQuery($queryData, $this->db);
- }
-
/**
* Checks whether the item is in use or not
*
diff --git a/lib/SP/Repositories/CustomField/CustomFieldRepository.php b/lib/SP/Repositories/CustomField/CustomFieldRepository.php
index e9057312..0cc54a65 100644
--- a/lib/SP/Repositories/CustomField/CustomFieldRepository.php
+++ b/lib/SP/Repositories/CustomField/CustomFieldRepository.php
@@ -2,8 +2,8 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
@@ -60,15 +60,15 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
AND itemId = ?
AND definitionId = ?';
- $Data = new QueryData();
- $Data->setQuery($query);
- $Data->addParam($itemData->getData());
- $Data->addParam($itemData->getKey());
- $Data->addParam($itemData->getModuleId());
- $Data->addParam($itemData->getId());
- $Data->addParam($itemData->getDefinitionId());
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($itemData->getData());
+ $queryData->addParam($itemData->getKey());
+ $queryData->addParam($itemData->getModuleId());
+ $queryData->addParam($itemData->getId());
+ $queryData->addParam($itemData->getDefinitionId());
- return DbWrapper::getQuery($Data, $this->db);
+ return DbWrapper::getQuery($queryData, $this->db);
}
/**
@@ -88,15 +88,15 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
AND itemId = ?
AND definitionId = ?';
- $Data = new QueryData();
- $Data->setQuery($query);
- $Data->addParam($itemData->getModuleId());
- $Data->addParam($itemData->getId());
- $Data->addParam($itemData->getDefinitionId());
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($itemData->getModuleId());
+ $queryData->addParam($itemData->getId());
+ $queryData->addParam($itemData->getDefinitionId());
- DbWrapper::getQuery($Data, $this->db);
+ DbWrapper::getQuery($queryData, $this->db);
- return $Data->getQueryNumRows() >= 1;
+ return $queryData->getQueryNumRows() >= 1;
}
/**
@@ -123,15 +123,17 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
$query = /** @lang SQL */
'INSERT INTO CustomFieldData 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($itemData->getData());
- $Data->addParam($itemData->getKey());
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($itemData->getId());
+ $queryData->addParam($itemData->getModuleId());
+ $queryData->addParam($itemData->getDefinitionId());
+ $queryData->addParam($itemData->getData());
+ $queryData->addParam($itemData->getKey());
- return DbWrapper::getQuery($Data, $this->db);
+ DbWrapper::getQuery($queryData, $this->db);
+
+ return $this->db->getLastId();
}
/**
@@ -140,7 +142,8 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
* @param int $id
* @param int $moduleId
* @return bool
- * @throws \SP\Core\Exceptions\SPException
+ * @throws QueryException
+ * @throws \SP\Core\Exceptions\ConstraintException
*/
public function deleteCustomFieldData($id, $moduleId)
{
@@ -149,12 +152,79 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
WHERE itemId = ?
AND moduleId = ?';
- $Data = new QueryData();
- $Data->setQuery($query);
- $Data->addParam($id);
- $Data->addParam($moduleId);
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($id);
+ $queryData->addParam($moduleId);
- DbWrapper::getQuery($Data, $this->db);
+ DbWrapper::getQuery($queryData, $this->db);
+
+ return $this->db->getNumRows();
+ }
+
+ /**
+ * Eliminar los datos de los campos personalizados del módulo
+ *
+ * @param int $id
+ * @param int $moduleId
+ * @param int $definitionId
+ * @return bool
+ * @throws QueryException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ */
+ public function deleteCustomFieldDataForDefinition($id, $moduleId, $definitionId)
+ {
+ $query = /** @lang SQL */
+ 'DELETE FROM CustomFieldData
+ WHERE itemId = ?
+ AND moduleId = ?
+ AND definitionId = ?';
+
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($id);
+ $queryData->addParam($moduleId);
+ $queryData->addParam($definitionId);
+
+ DbWrapper::getQuery($queryData, $this->db);
+
+ return $this->db->getNumRows();
+ }
+
+ /**
+ * Eliminar los datos de los campos personalizados del módulo
+ *
+ * @param int $definitionId
+ * @return int
+ * @throws QueryException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ */
+ public function deleteCustomFieldDefinitionData($definitionId)
+ {
+ $queryData = new QueryData();
+ $queryData->setQuery('DELETE FROM CustomFieldData WHERE definitionId = ?');
+ $queryData->addParam($definitionId);
+
+ DbWrapper::getQuery($queryData, $this->db);
+
+ return $this->db->getNumRows();
+ }
+
+ /**
+ * Eliminar los datos de los elementos de una definición
+ *
+ * @param array $definitionIds
+ * @return int
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
+ */
+ public function deleteCustomFieldDefinitionDataBatch(array $definitionIds)
+ {
+ $queryData = new QueryData();
+ $queryData->setQuery('DELETE FROM CustomFieldData WHERE definitionId IN (' . $this->getParamsFromArray($definitionIds) . ')');
+ $queryData->setParams($definitionIds);
+
+ DbWrapper::getQuery($queryData, $this->db);
return $this->db->getNumRows();
}
@@ -175,12 +245,12 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
WHERE itemId IN (' . $this->getParamsFromArray($ids) . ')
AND moduleId = ?';
- $Data = new QueryData();
- $Data->setQuery($query);
- $Data->setParams($ids);
- $Data->addParam($moduleId);
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->setParams($ids);
+ $queryData->addParam($moduleId);
- DbWrapper::getQuery($Data, $this->db);
+ DbWrapper::getQuery($queryData, $this->db);
return $this->db->getNumRows();
}
@@ -203,12 +273,9 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
*/
public function getAll()
{
- $query = /** @lang SQL */
- 'SELECT * FROM CustomFieldData';
-
$queryData = new QueryData();
+ $queryData->setQuery('SELECT * FROM CustomFieldData');
$queryData->setMapClassName(CustomFieldData::class);
- $queryData->setQuery($query);
return DbWrapper::getResultsArray($queryData, $this->db);
}
@@ -279,18 +346,17 @@ class CustomFieldRepository extends Repository implements RepositoryItemInterfac
CFT.name AS typeName,
CFT.text AS typeText
FROM CustomFieldDefinition CFD
- LEFT JOIN CustomFieldData CFD2 ON CFD2.definitionId = CFD.id
+ LEFT JOIN CustomFieldData CFD2 ON CFD2.definitionId = CFD.id AND CFD2.itemId = ?
INNER JOIN CustomFieldType CFT ON CFT.id = CFD.typeId
WHERE CFD.moduleId = ?
- AND (CFD2.itemId = ? OR CFD2.definitionId IS NULL)
- ORDER BY CFD.id';
+ ORDER BY CFT.text';
- $Data = new QueryData();
- $Data->setQuery($query);
- $Data->addParam($moduleId);
- $Data->addParam($itemId);
+ $queryData = new QueryData();
+ $queryData->setQuery($query);
+ $queryData->addParam($itemId);
+ $queryData->addParam($moduleId);
- return DbWrapper::getResultsArray($Data, $this->db);
+ return DbWrapper::getResultsArray($queryData, $this->db);
}
/**
diff --git a/lib/SP/Repositories/CustomField/CustomFieldTypeRepository.php b/lib/SP/Repositories/CustomField/CustomFieldTypeRepository.php
index 93523d4b..80d26bb8 100644
--- a/lib/SP/Repositories/CustomField/CustomFieldTypeRepository.php
+++ b/lib/SP/Repositories/CustomField/CustomFieldTypeRepository.php
@@ -2,8 +2,8 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
@@ -24,7 +24,6 @@
namespace SP\Repositories\CustomField;
-
use SP\Core\Exceptions\SPException;
use SP\DataModel\CustomFieldTypeData;
use SP\DataModel\ItemSearchData;
@@ -54,16 +53,13 @@ class CustomFieldTypeRepository extends Repository implements RepositoryItemInte
*/
public function create($itemData)
{
- $query = /** @lang SQL */
- 'INSERT INTO CustomFieldType SET name = ?, text = ?';
+ $queryData = new QueryData();
+ $queryData->setQuery('INSERT INTO CustomFieldType SET name = ?, text = ?');
+ $queryData->addParam($itemData->getName());
+ $queryData->addParam($itemData->getText());
+ $queryData->setOnErrorMessage(__u('Error al crear el tipo de campo'));
- $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);
+ DbWrapper::getQuery($queryData, $this->db);
return $this->db->getLastId();
}
@@ -90,17 +86,16 @@ class CustomFieldTypeRepository extends Repository implements RepositoryItemInte
*/
public function update($itemData)
{
- $query = /** @lang SQL */
- 'UPDATE CustomFieldType SET name = ?, text = ? WHERE id = ? LIMIT 1';
+ $queryData = new QueryData();
+ $queryData->setQuery('UPDATE CustomFieldType SET name = ?, text = ? WHERE id = ? LIMIT 1');
+ $queryData->addParam($itemData->getName());
+ $queryData->addParam($itemData->getText());
+ $queryData->addParam($itemData->getId());
+ $queryData->setOnErrorMessage(__u('Error al actualizar el tipo de campo'));
- $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'));
+ DbWrapper::getQuery($queryData, $this->db);
- return DbWrapper::getQuery($Data, $this->db);
+ return $this->db->getNumRows();
}
/**
@@ -118,36 +113,30 @@ class CustomFieldTypeRepository extends Repository implements RepositoryItemInte
* Returns the item for given id
*
* @param int $id
- * @return mixed
+ * @return CustomFieldTypeData
*/
public function getById($id)
{
- $query = /** @lang SQL */
- 'SELECT id, name, text FROM CustomFieldType WHERE id = ? LIMIT 1';
+ $queryData = new QueryData();
+ $queryData->setQuery('SELECT id, name, text FROM CustomFieldType WHERE id = ? LIMIT 1');
+ $queryData->addParam($id);
+ $queryData->setMapClassName(CustomFieldTypeData::class);
- $Data = new QueryData();
- $Data->setMapClassName(CustomFieldTypeData::class);
- $Data->setQuery($query);
- $Data->addParam($id);
-
- return DbWrapper::getResults($Data, $this->db);
+ return DbWrapper::getResults($queryData, $this->db);
}
/**
* Returns all the items
*
- * @return array
+ * @return CustomFieldTypeData[]
*/
public function getAll()
{
- $query = /** @lang SQL */
- 'SELECT id, name, text FROM CustomFieldType';
+ $queryData = new QueryData();
+ $queryData->setQuery('SELECT id, `name`, `text` FROM CustomFieldType');
+ $queryData->setMapClassName(CustomFieldTypeData::class);
- $Data = new QueryData();
- $Data->setMapClassName(CustomFieldTypeData::class);
- $Data->setQuery($query);
-
- return DbWrapper::getResultsArray($Data, $this->db);
+ return DbWrapper::getResultsArray($queryData, $this->db);
}
/**
@@ -186,15 +175,12 @@ class CustomFieldTypeRepository extends Repository implements RepositoryItemInte
*/
public function delete($id)
{
- $query = /** @lang SQL */
- 'DELETE FROM CustomFieldType WHERE id = ? LIMIT 1';
+ $queryData = new QueryData();
+ $queryData->setQuery('DELETE FROM CustomFieldType WHERE id = ? LIMIT 1');
+ $queryData->addParam($id);
+ $queryData->setOnErrorMessage(__u('Error al eliminar el tipo de campo'));
- $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);
+ return DbWrapper::getQuery($queryData, $this->db);
}
/**
diff --git a/lib/SP/Services/CustomField/CustomFieldDefService.php b/lib/SP/Services/CustomField/CustomFieldDefService.php
index 593f1278..dfeb4375 100644
--- a/lib/SP/Services/CustomField/CustomFieldDefService.php
+++ b/lib/SP/Services/CustomField/CustomFieldDefService.php
@@ -2,8 +2,8 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
@@ -24,6 +24,7 @@
namespace SP\Services\CustomField;
+use SP\Core\Acl\ActionsInterface;
use SP\DataModel\ItemSearchData;
use SP\Repositories\CustomField\CustomFieldDefRepository;
use SP\Services\Service;
@@ -45,12 +46,33 @@ class CustomFieldDefService extends Service
protected $customFieldDefRepository;
/**
- * @throws \Psr\Container\ContainerExceptionInterface
- * @throws \Psr\Container\NotFoundExceptionInterface
+ * @param $id
+ * @return mixed
*/
- protected function initialize()
+ public static function getFieldModuleById($id)
{
- $this->customFieldDefRepository = $this->dic->get(CustomFieldDefRepository::class);
+ $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;
}
/**
@@ -81,7 +103,8 @@ class CustomFieldDefService extends Service
*/
public function delete($id)
{
- if ($this->customFieldDefRepository->delete($id) === 0) {
+ if ($this->dic->get(CustomFieldService::class)->deleteCustomFieldDefinitionData($id) === 0
+ || $this->customFieldDefRepository->delete($id) === 0) {
throw new ServiceException(__u('Campo no encontrado'), ServiceException::INFO);
}
@@ -100,7 +123,10 @@ class CustomFieldDefService extends Service
*/
public function deleteByIdBatch(array $ids)
{
- if (($count = $this->customFieldDefRepository->deleteByIdBatch($ids)) !== count($ids)){
+ $numIds = count($ids);
+
+ if ($this->dic->get(CustomFieldService::class)->deleteCustomFieldDefinitionDataBatch($ids) !== $numIds
+ || ($count = $this->customFieldDefRepository->deleteByIdBatch($ids)) !== $numIds) {
throw new ServiceException(__u('Error al eliminar los campos'), ServiceException::WARNING);
}
@@ -138,4 +164,13 @@ class CustomFieldDefService extends Service
{
return $this->customFieldDefRepository->getAll();
}
+
+ /**
+ * @throws \Psr\Container\ContainerExceptionInterface
+ * @throws \Psr\Container\NotFoundExceptionInterface
+ */
+ protected function initialize()
+ {
+ $this->customFieldDefRepository = $this->dic->get(CustomFieldDefRepository::class);
+ }
}
\ No newline at end of file
diff --git a/lib/SP/Services/CustomField/CustomFieldItem.php b/lib/SP/Services/CustomField/CustomFieldItem.php
new file mode 100644
index 00000000..e7852119
--- /dev/null
+++ b/lib/SP/Services/CustomField/CustomFieldItem.php
@@ -0,0 +1,45 @@
+.
+ */
+
+namespace SP\Services\CustomField;
+
+/**
+ * Class CustomFieldItem
+ *
+ * @package SP\Services\CustomField
+ */
+class CustomFieldItem
+{
+ public $required = false;
+ public $showInList = false;
+ public $help;
+ public $definitionId = 0;
+ public $definitionName;
+ public $typeId = 0;
+ public $typeName;
+ public $typeText;
+ public $moduleId = 0;
+ public $formId;
+ public $value;
+}
\ No newline at end of file
diff --git a/lib/SP/Services/CustomField/CustomFieldService.php b/lib/SP/Services/CustomField/CustomFieldService.php
index 69e0e477..fb7f2047 100644
--- a/lib/SP/Services/CustomField/CustomFieldService.php
+++ b/lib/SP/Services/CustomField/CustomFieldService.php
@@ -2,8 +2,8 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
@@ -61,17 +61,18 @@ class CustomFieldService extends Service
/**
* Desencriptar y formatear los datos del campo
*
- * @param CustomFieldData $CustomFieldData
- * @param SessionContext $sessionContext
+ * @param string $data
+ * @param string $key
+ * @param SessionContext $sessionContext
* @return string
* @throws CryptoException
*/
- public static function decryptData(CustomFieldData $CustomFieldData, SessionContext $sessionContext)
+ public static function decryptData($data, $key, SessionContext $sessionContext)
{
- if ($CustomFieldData->getData() !== '') {
- $securedKey = Crypt::unlockSecuredKey($CustomFieldData->getKey(), CryptSession::getSessionKey($sessionContext));
+ if ($data !== '') {
+ $securedKey = Crypt::unlockSecuredKey($key, CryptSession::getSessionKey($sessionContext));
- return self::formatValue(Crypt::decrypt($CustomFieldData->getData(), $securedKey));
+ return self::formatValue(Crypt::decrypt($data, $securedKey));
}
return '';
@@ -120,7 +121,7 @@ class CustomFieldService extends Service
// Deletes item's custom field data if value is left blank
if ($exists && $customFieldData->getData() === '') {
- return $this->deleteCustomFieldData($customFieldData->getId(), $customFieldData->getModuleId());
+ return $this->deleteCustomFieldData($customFieldData->getId(), $customFieldData->getModuleId(), $customFieldData->getDefinitionId());
}
// Create item's custom field data if value is set
@@ -138,12 +139,17 @@ class CustomFieldService extends Service
*
* @param int $id
* @param int $moduleId
+ * @param int $definitionId
* @return bool
- * @throws \SP\Core\Exceptions\SPException
+ * @throws SPException
*/
- public function deleteCustomFieldData($id, $moduleId)
+ public function deleteCustomFieldData($id, $moduleId, $definitionId = null)
{
- return $this->customFieldRepository->deleteCustomFieldData($id, $moduleId);
+ if ($definitionId === null) {
+ return $this->customFieldRepository->deleteCustomFieldData($id, $moduleId);
+ } else {
+ return $this->customFieldRepository->deleteCustomFieldDataForDefinition($id, $moduleId, $definitionId);
+ }
}
/**
@@ -186,6 +192,19 @@ class CustomFieldService extends Service
$customFieldData->setKey($securedKey);
}
+ /**
+ * Eliminar los datos de los campos personalizados del módulo
+ *
+ * @param int $definitionId
+ * @return int
+ * @throws QueryException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ */
+ public function deleteCustomFieldDefinitionData($definitionId)
+ {
+ return $this->customFieldRepository->deleteCustomFieldDefinitionData($definitionId);
+ }
+
/**
* Eliminar los datos de los campos personalizados del módulo
*
@@ -200,6 +219,19 @@ class CustomFieldService extends Service
return $this->customFieldRepository->deleteCustomFieldDataBatch($ids, $moduleId);
}
+ /**
+ * Eliminar los datos de los elementos de una definición
+ *
+ * @param array $definitionIds
+ * @return int
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
+ */
+ public function deleteCustomFieldDefinitionDataBatch(array $definitionIds)
+ {
+ return $this->customFieldRepository->deleteCustomFieldDefinitionDataBatch($definitionIds);
+ }
+
/**
* Updates an item
*
diff --git a/lib/SP/Services/CustomField/CustomFieldTypeService.php b/lib/SP/Services/CustomField/CustomFieldTypeService.php
new file mode 100644
index 00000000..6107f3cb
--- /dev/null
+++ b/lib/SP/Services/CustomField/CustomFieldTypeService.php
@@ -0,0 +1,70 @@
+.
+ */
+
+namespace SP\Services\CustomField;
+
+use SP\DataModel\CustomFieldTypeData;
+use SP\Repositories\CustomField\CustomFieldTypeRepository;
+use SP\Services\Service;
+use SP\Services\ServiceItemTrait;
+
+/**
+ * Class CustomFieldTypeService
+ *
+ * @package SP\Services\CustomField
+ */
+class CustomFieldTypeService extends Service
+{
+ use ServiceItemTrait;
+
+ /**
+ * @var CustomFieldTypeRepository
+ */
+ protected $customFieldTypeRepository;
+
+ /**
+ * Returns all the items
+ *
+ * @return CustomFieldTypeData[]
+ */
+ public function getAll()
+ {
+ return $this->customFieldTypeRepository->getAll();
+ }
+
+ protected function initialize()
+ {
+ $this->customFieldTypeRepository = $this->dic->get(CustomFieldTypeRepository::class);
+ }
+
+ /**
+ * Get all items from the service's repository
+ *
+ * @return CustomFieldTypeData[]
+ */
+ public function getAllBasic()
+ {
+ return $this->getAll();
+ }
+}
\ No newline at end of file