diff --git a/classes/configdata.php b/classes/configdata.php
index b0e1a0c..2a213c3 100644
--- a/classes/configdata.php
+++ b/classes/configdata.php
@@ -29,7 +29,10 @@ class CConfigDataPIM
const CONFIG_DEFAULT = [
'Optionen' => [
'interface_pff' => 0,
- 'profile_addin' => '',
+ 'profile_addin' => [
+ 'ITEMNAME',
+ 'LAST_RECEIVER'
+ ],
'file_name' => 'InventoryManager',
'add_date' => 0,
'current_user_default_keeper' => 0,
diff --git a/classes/configtable.php b/classes/configtable.php
index 68702f6..433c4df 100644
--- a/classes/configtable.php
+++ b/classes/configtable.php
@@ -53,14 +53,16 @@ public function __construct()
*/
private function checkPffInst()
{
+ global $gDb, $gCurrentOrgId;
+
// check if configuration table for plugin FormFiller exists
$sql = 'SHOW TABLES LIKE \''.$this->table_name.'\';';
- $statement = $GLOBALS['gDb']->queryPrepared($sql);
+ $statement = $gDb->queryPrepared($sql);
if ($statement->rowCount() !== 0)
{
$sql = 'SELECT COUNT(*) AS COUNT FROM '.$this->table_name.' WHERE plp_name = ? AND (plp_org_id = ? OR plp_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array('PFF__Plugininformationen__version', $GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array('PFF__Plugininformationen__version', $gCurrentOrgId));
$this->isPffInst = ((int) $statement->fetchColumn() === 1 && $this->pffDir !== false);
}
@@ -208,12 +210,14 @@ private function createTablesIfNotExist()
*/
private function createTableIfNotExist($tableName, $tableDefinition)
{
+ global $gDb;
+
$sql = 'SHOW TABLES LIKE \'' . $tableName . '\';';
- $statement = $GLOBALS['gDb']->query($sql);
+ $statement = $gDb->query($sql);
if (!$statement->rowCount()) {
$sql = 'CREATE TABLE ' . $tableName . ' (' . $tableDefinition . ') ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;';
- $GLOBALS['gDb']->query($sql);
+ $gDb->query($sql);
}
}
@@ -223,6 +227,8 @@ private function createTableIfNotExist($tableName, $tableDefinition)
*/
private function initializeDefaultFields()
{
+ global $gDb, $gCurrentOrgId;
+
$defaultData = array(
array('imf_id' => 1, 'imf_name' => 'PIM_ITEMNAME', 'imf_name_intern' => 'ITEMNAME', 'imf_type' => 'TEXT', 'imf_description' => convlanguagePIM('PIM_ITEMNAME_DESCRIPTION'), 'imf_sequence' => 0, 'imf_system' => 1, 'imf_mandatory' => 1),
array('imf_id' => 2, 'imf_name' => 'PIM_CATEGORY', 'imf_name_intern' => 'CATEGORY', 'imf_type' => 'DROPDOWN', 'imf_description' => convlanguagePIM('PIM_CATEGORY_DESCRIPTION'), 'imf_sequence' => 1, 'imf_system' => 1, 'imf_mandatory' => 1, 'imf_value_list' => 'Allgemein'),
@@ -233,8 +239,8 @@ private function initializeDefaultFields()
array('imf_id' => 7, 'imf_name' => 'PIM_RECEIVED_BACK_ON', 'imf_name_intern' => 'RECEIVED_BACK_ON', 'imf_type' => 'DATE', 'imf_description' => convlanguagePIM('PIM_RECEIVED_BACK_ON_DESCRIPTION'), 'imf_sequence' => 6, 'imf_system' => 1, 'imf_mandatory' => 0)
);
- $sql = 'SELECT imf_id, imf_name, imf_name_intern, imf_type, imf_description, imf_sequence, imf_system, imf_mandatory, imf_value_list FROM ' . TBL_INVENTORY_MANAGER_FIELDS . ' WHERE imf_org_id = \'' . $GLOBALS['gCurrentOrgId'] . '\';';
- $statement = $GLOBALS['gDb']->query($sql);
+ $sql = 'SELECT imf_id, imf_name, imf_name_intern, imf_type, imf_description, imf_sequence, imf_system, imf_mandatory, imf_value_list FROM ' . TBL_INVENTORY_MANAGER_FIELDS . ' WHERE imf_org_id = \'' . $gCurrentOrgId . '\';';
+ $statement = $gDb->query($sql);
$existingFields = array();
while ($row = $statement->fetch()) {
@@ -324,7 +330,7 @@ private function initializeDefaultFields()
// Clear the table and reset the AUTO_INCREMENT
$sql = 'TRUNCATE TABLE ' . TBL_INVENTORY_MANAGER_FIELDS;
- $GLOBALS['gDb']->query($sql);
+ $gDb->query($sql);
// Insert the new array into the database and keep track of new IDs
$newFieldIds = array();
@@ -341,7 +347,7 @@ private function initializeDefaultFields()
);
// Get the new ID of the inserted field
- $newFieldId = $GLOBALS['gDb']->lastInsertId();
+ $newFieldId = $gDb->lastInsertId();
$newFieldIds[$field['imf_name']] = $newFieldId;
}
@@ -360,13 +366,13 @@ private function initializeDefaultFields()
if (isset($newFieldIds[$oldFieldName])) {
if ($newFieldIds[$oldFieldName] != $oldField['imf_id']) {
$sql = 'UPDATE ' . TBL_INVENTORY_MANAGER_DATA . ' SET imd_imf_id = ? WHERE imd_imf_id = ?';
- $GLOBALS['gDb']->queryPrepared($sql, array($newFieldIds[$oldFieldName], $oldField['imf_id']));
+ $gDb->queryPrepared($sql, array($newFieldIds[$oldFieldName], $oldField['imf_id']));
}
}
else {
// Field no longer exists, set the field to empty and show an error message
$sql = 'UPDATE ' . TBL_INVENTORY_MANAGER_DATA . ' SET imd_imf_id = NULL WHERE imd_imf_id = ?';
- $GLOBALS['gDb']->queryPrepared($sql, array($oldField['imf_id']));
+ $gDb->queryPrepared($sql, array($oldField['imf_id']));
$_SESSION['error_messages'][] = 'Error: Field "' . $oldFieldName . '" no longer exists. Please manually check and adjust the database table"' . TBL_INVENTORY_MANAGER_DATA .'" where "imd_imf_id" equals "NULL" to avoid data loss.';
}
}
@@ -398,8 +404,10 @@ private function initializeDefaultFields()
*/
private function createField($name, $internalName, $type, $description, $sequence, $system, $mandatory, $valueList = '')
{
- $itemField = new TableAccess($GLOBALS['gDb'], TBL_INVENTORY_MANAGER_FIELDS, 'imf');
- $itemField->setValue('imf_org_id', (int) $GLOBALS['gCurrentOrgId']);
+ global $gDb, $gCurrentOrgId;
+
+ $itemField = new TableAccess($gDb, TBL_INVENTORY_MANAGER_FIELDS, 'imf');
+ $itemField->setValue('imf_org_id', (int) $gCurrentOrgId);
$itemField->setValue('imf_sequence', $sequence);
$itemField->setValue('imf_system', $system);
$itemField->setValue('imf_mandatory', $mandatory);
@@ -417,6 +425,8 @@ private function createField($name, $internalName, $type, $description, $sequenc
*/
private function initializePreferences()
{
+ global $gDb, $gCurrentOrgId;
+
$this->read();
$this->config['Plugininformationen']['version'] = CPluginInfoPIM::getPluginVersion();
@@ -442,7 +452,7 @@ private function initializePreferences()
foreach ($sectiondata as $item => $value) {
$plp_name = self::SHORTCUT . '__' . $section . '__' . $item;
$sql = 'DELETE FROM ' . $this->table_name . ' WHERE plp_name = ? AND plp_org_id = ?;';
- $GLOBALS['gDb']->queryPrepared($sql, array($plp_name, $GLOBALS['gCurrentOrgId']));
+ $gDb->queryPrepared($sql, array($plp_name, $gCurrentOrgId));
unset($this->config[$section][$item]);
}
if (count($this->config[$section]) == 0) {
@@ -459,6 +469,8 @@ private function initializePreferences()
*/
public function write()
{
+ global $gDb, $gCurrentOrgId;
+
foreach ($this->config as $section => $sectionData) {
foreach ($sectionData as $item => $value) {
if (is_array($value)) {
@@ -469,17 +481,17 @@ public function write()
$plpName = self::SHORTCUT . '__' . $section . '__' . $item;
$sql = 'SELECT plp_id FROM ' . $this->table_name . ' WHERE plp_name = ? AND (plp_org_id = ? OR plp_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array($plpName, $GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array($plpName, $gCurrentOrgId));
$row = $statement->fetchObject();
if (isset($row->plp_id) && strlen($row->plp_id) > 0) {
// Record exists, update it
$sql = 'UPDATE ' . $this->table_name . ' SET plp_value = ? WHERE plp_id = ?;';
- $GLOBALS['gDb']->queryPrepared($sql, array($value, $row->plp_id));
+ $gDb->queryPrepared($sql, array($value, $row->plp_id));
} else {
// Record does not exist, insert it
$sql = 'INSERT INTO ' . $this->table_name . ' (plp_org_id, plp_name, plp_value) VALUES (?, ?, ?);';
- $GLOBALS['gDb']->queryPrepared($sql, array($GLOBALS['gCurrentOrgId'], $plpName, $value));
+ $gDb->queryPrepared($sql, array($gCurrentOrgId, $plpName, $value));
}
}
}
@@ -511,8 +523,10 @@ public function readPff()
*/
private function readConfigData($pluginShortcut, &$configArray)
{
+ global $gDb, $gCurrentOrgId;
+
$sql = 'SELECT plp_id, plp_name, plp_value FROM '.$this->table_name.' WHERE plp_name LIKE ? AND (plp_org_id = ? OR plp_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array($pluginShortcut.'__%', $GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array($pluginShortcut.'__%', $gCurrentOrgId));
while ($row = $statement->fetch())
{
@@ -553,11 +567,13 @@ private function readConfigData($pluginShortcut, &$configArray)
*/
public function checkForUpdate()
{
+ global $gDb;
+
$needsUpdate = false;
// Check if table *_plugin_preferences exists
$sql = 'SHOW TABLES LIKE \'' . $this->table_name . '\' ';
- $tableExistStatement = $GLOBALS['gDb']->queryPrepared($sql);
+ $tableExistStatement = $gDb->queryPrepared($sql);
if ($tableExistStatement->rowCount()) {
$needsUpdate = $this->compareVersion() || $this->compareStand();
@@ -575,10 +591,12 @@ public function checkForUpdate()
*/
private function compareVersion()
{
+ global $gDb, $gCurrentOrgId;
+
$plp_name = self::SHORTCUT . '__Plugininformationen__version';
$sql = 'SELECT plp_value FROM ' . $this->table_name . ' WHERE plp_name = ? AND (plp_org_id = ? OR plp_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array($plp_name, $GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array($plp_name, $gCurrentOrgId));
$row = $statement->fetchObject();
// Compare versions
@@ -591,10 +609,12 @@ private function compareVersion()
*/
private function compareStand()
{
+ global $gDb, $gCurrentOrgId;
+
$plp_name = self::SHORTCUT . '__Plugininformationen__stand';
$sql = 'SELECT plp_value FROM ' . $this->table_name . ' WHERE plp_name = ? AND (plp_org_id = ? OR plp_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array($plp_name, $GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array($plp_name, $gCurrentOrgId));
$row = $statement->fetchObject();
// Compare stands
@@ -608,6 +628,8 @@ private function compareStand()
*/
public function deleteConfigData($deinstOrgSelect)
{
+ global $gDb, $gCurrentOrgId, $gDb;
+
$result = '';
$sqlWhereCondition = '';
@@ -618,21 +640,21 @@ public function deleteConfigData($deinstOrgSelect)
$sql = 'DELETE FROM ' . $this->table_name . ' WHERE plp_name LIKE ? ' . $sqlWhereCondition;
$params = [self::SHORTCUT . '__%'];
if ($deinstOrgSelect == 0) {
- $params[] = $GLOBALS['gCurrentOrgId'];
+ $params[] = $gCurrentOrgId;
}
- $result_data = $GLOBALS['gDb']->queryPrepared($sql, $params);
- $result .= ($result_data ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [$this->table_name]) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [$this->table_name]));
+ $result_data = $gDb->queryPrepared($sql, $params);
+ $result .= ($result_data ? $gDb->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [$this->table_name]) : $gDb->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [$this->table_name]));
// Check if the table is empty and can be deleted
$sql = 'SELECT * FROM ' . $this->table_name;
- $statement = $GLOBALS['gDb']->queryPrepared($sql);
+ $statement = $gDb->queryPrepared($sql);
if ($statement->rowCount() == 0) {
$sql = 'DROP TABLE ' . $this->table_name;
- $result_db = $GLOBALS['gDb']->queryPrepared($sql);
- $result .= ($result_db ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETED', [$this->table_name]) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_ERROR', [$this->table_name]));
+ $result_db = $gDb->queryPrepared($sql);
+ $result .= ($result_db ? $gDb->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETED', [$this->table_name]) : $gDb->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_ERROR', [$this->table_name]));
} else {
- $result .= $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_CONFIGTABLE_DELETE_NOTPOSSIBLE', [$this->table_name]);
+ $result .= $gDb->get('PLG_INVENTORY_MANAGER_DEINST_CONFIGTABLE_DELETE_NOTPOSSIBLE', [$this->table_name]);
}
return $result;
@@ -645,24 +667,25 @@ public function deleteConfigData($deinstOrgSelect)
*/
public function deleteItemData($deinstOrgSelect)
{
+ global $gDb, $gCurrentOrgId, $gL10n;
$result = '';
if ($deinstOrgSelect == 0) {
$sql = 'DELETE FROM ' . TBL_INVENTORY_MANAGER_DATA . ' WHERE imd_imi_id IN (SELECT imi_id FROM ' . TBL_INVENTORY_MANAGER_ITEMS . ' WHERE imi_org_id = ?)';
- $result_data = $GLOBALS['gDb']->queryPrepared($sql, [$GLOBALS['gCurrentOrgId']]);
- $result .= ($result_data ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_data']) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_data']));
+ $result_data = $gDb->queryPrepared($sql, [$gCurrentOrgId]);
+ $result .= ($result_data ? $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_data']) : $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_data']));
$sql = 'DELETE FROM ' . TBL_INVENTORY_MANAGER_LOG . ' WHERE iml_imi_id IN (SELECT imi_id FROM ' . TBL_INVENTORY_MANAGER_ITEMS . ' WHERE imi_org_id = ?)';
- $result_log = $GLOBALS['gDb']->queryPrepared($sql, [$GLOBALS['gCurrentOrgId']]);
- $result .= ($result_log ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_log']) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_log']));
+ $result_log = $gDb->queryPrepared($sql, [$gCurrentOrgId]);
+ $result .= ($result_log ? $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_log']) : $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_log']));
$sql = 'DELETE FROM ' . TBL_INVENTORY_MANAGER_ITEMS . ' WHERE imi_org_id = ?';
- $result_items = $GLOBALS['gDb']->queryPrepared($sql, [$GLOBALS['gCurrentOrgId']]);
- $result .= ($result_items ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_items']) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_items']));
+ $result_items = $gDb->queryPrepared($sql, [$gCurrentOrgId]);
+ $result .= ($result_items ? $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_items']) : $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_items']));
$sql = 'DELETE FROM ' . TBL_INVENTORY_MANAGER_FIELDS . ' WHERE imf_org_id = ?';
- $result_fields = $GLOBALS['gDb']->queryPrepared($sql, [$GLOBALS['gCurrentOrgId']]);
- $result .= ($result_fields ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_fields']) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_fields']));
+ $result_fields = $gDb->queryPrepared($sql, [$gCurrentOrgId]);
+ $result .= ($result_fields ? $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN', [TABLE_PREFIX . '_inventory_manager_fields']) : $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_DATA_DELETED_IN_ERROR', [TABLE_PREFIX . '_inventory_manager_fields']));
}
// Drop tables if they are empty or if data should be deleted from every org
@@ -675,14 +698,14 @@ public function deleteItemData($deinstOrgSelect)
foreach ($table_array as $table_name) {
$sql = 'SELECT * FROM ' . $table_name;
- $statement = $GLOBALS['gDb']->queryPrepared($sql);
+ $statement = $gDb->queryPrepared($sql);
if ($statement->rowCount() == 0 || $deinstOrgSelect == 1) {
$sql = 'DROP TABLE ' . $table_name;
- $result_db = $GLOBALS['gDb']->queryPrepared($sql);
- $result .= ($result_db ? $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETED', [$table_name]) : $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_ERROR', [$table_name]));
+ $result_db = $gDb->queryPrepared($sql);
+ $result .= ($result_db ? $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETED', [$table_name]) : $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_ERROR', [$table_name]));
} else {
- $result .= $GLOBALS['gL10n']->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_NOTPOSSIBLE', [$table_name]);
+ $result .= $gL10n->get('PLG_INVENTORY_MANAGER_DEINST_TABLE_DELETE_NOTPOSSIBLE', [$table_name]);
}
}
diff --git a/common_function.php b/common_function.php
index 36de439..4d6f87e 100644
--- a/common_function.php
+++ b/common_function.php
@@ -134,6 +134,7 @@ function isUserAuthorizedForPreferencesPIM()
function isUserAuthorizedForAddinPIM()
{
global $gDb;
+
$sql = 'SELECT men_id, men_name, men_name_intern
FROM ' . TBL_MENU . '
WHERE men_men_id_parent IS NULL
@@ -171,7 +172,9 @@ function isUserAuthorizedForAddinPIM()
*/
function convlanguagePIM($field_name)
{
- return (substr($field_name, 3, 1) === '_') ? $GLOBALS['gL10n']->get($field_name) : $field_name;
+ global $gL10n;
+
+ return (substr($field_name, 3, 1) === '_') ? $gL10n->get($field_name) : $field_name;
}
/**
@@ -182,6 +185,8 @@ function convlanguagePIM($field_name)
*/
function getNewNameInternPIM($name, $index)
{
+ global $gDb;
+
$name = umlautePIM($name);
$newNameIntern = strtoupper(str_replace(' ', '_', $name));
@@ -190,7 +195,7 @@ function getNewNameInternPIM($name, $index)
}
$sql = 'SELECT imf_id FROM ' . TBL_INVENTORY_MANAGER_FIELDS . ' WHERE imf_name_intern = ?;';
- $userFieldsStatement = $GLOBALS['gDb']->queryPrepared($sql, array($newNameIntern));
+ $userFieldsStatement = $gDb->queryPrepared($sql, array($newNameIntern));
if ($userFieldsStatement->rowCount() > 0) {
return getNewNameInternPIM($name, ++$index);
@@ -205,8 +210,10 @@ function getNewNameInternPIM($name, $index)
*/
function genNewSequencePIM()
{
+ global $gDb, $gCurrentOrgId;
+
$sql = 'SELECT max(imf_sequence) as max_sequence FROM ' . TBL_INVENTORY_MANAGER_FIELDS . ' WHERE (imf_org_id = ? OR imf_org_id IS NULL);';
- $statement = $GLOBALS['gDb']->queryPrepared($sql, array($GLOBALS['gCurrentOrgId']));
+ $statement = $gDb->queryPrepared($sql, array($gCurrentOrgId));
$row = $statement->fetch();
return $row['max_sequence'] + 1;
diff --git a/inventory_manager_profile_addin.php b/inventory_manager_profile_addin.php
index 8a508de..a758790 100644
--- a/inventory_manager_profile_addin.php
+++ b/inventory_manager_profile_addin.php
@@ -103,7 +103,11 @@ function insertKeeperView($page, $user, $itemsKeeper) {
// headlines for columns
$columnNumber = 1;
- $addinItemFields = array('ITEMNAME', $pPreferences->config['Optionen']['profile_addin'], 'LAST_RECEIVER');
+ $addinItemFields = array();
+ foreach ($pPreferences->config['Optionen']['profile_addin'] as $addinField) {
+ $addinItemFields[] = $addinField;
+ }
+
$itemsKeeper->readItemData($itemsKeeper->items[0]['imi_id'], $gCurrentOrgId);
foreach ($itemsKeeper->mItemFields as $itemField) {
@@ -167,10 +171,12 @@ function insertKeeperView($page, $user, $itemsKeeper) {
$content = $itemsKeeper->getValue($imfNameIntern, 'database');
if (($imfNameIntern == 'KEEPER' || $imfNameIntern == 'LAST_RECEIVER') && strlen($content) > 0) {
- $user->readDataById($content);
- if (!$user->getValue('usr_uuid') == '') {
- $content = '' . $user->getValue('LAST_NAME') . ', ' . $user->getValue('FIRST_NAME') . '';
- }
+ if (is_numeric($content)) {
+ $user->readDataById($content);
+ if (!$user->getValue('usr_uuid') == '') {
+ $content = '' . $user->getValue('LAST_NAME') . ', ' . $user->getValue('FIRST_NAME') . '';
+ }
+ }
}
if ($itemsKeeper->getProperty($imfNameIntern, 'imf_type') == 'CHECKBOX') {
@@ -248,7 +254,11 @@ function insertReceiverView($page, $user, $itemsReceiver) {
// headlines for columns
$columnNumber = 1;
- $addinItemFields = array('ITEMNAME', $pPreferences->config['Optionen']['profile_addin'], 'LAST_RECEIVER');
+ $addinItemFields = array();
+ foreach ($pPreferences->config['Optionen']['profile_addin'] as $addinField) {
+ $addinItemFields[] = $addinField;
+ }
+
$itemsReceiver->readItemData($itemsReceiver->items[0]['imi_id'], $gCurrentOrgId);
foreach ($itemsReceiver->mItemFields as $itemField) {
@@ -312,10 +322,12 @@ function insertReceiverView($page, $user, $itemsReceiver) {
$content = $itemsReceiver->getValue($imfNameIntern, 'database');
if (($imfNameIntern == 'KEEPER' || $imfNameIntern == 'LAST_RECEIVER') && strlen($content) > 0) {
- $user->readDataById($content);
- if (!$user->getValue('usr_uuid') == '') {
- $content = '' . $user->getValue('LAST_NAME') . ', ' . $user->getValue('FIRST_NAME') . '';
- }
+ if (is_numeric($content)) {
+ $user->readDataById($content);
+ if (!$user->getValue('usr_uuid') == '') {
+ $content = '' . $user->getValue('LAST_NAME') . ', ' . $user->getValue('FIRST_NAME') . '';
+ }
+ }
}
if ($itemsReceiver->getProperty($imfNameIntern, 'imf_type') == 'CHECKBOX') {
diff --git a/items/items_delete.php b/items/items_delete.php
index f5e6bfb..85cf0e7 100644
--- a/items/items_delete.php
+++ b/items/items_delete.php
@@ -76,9 +76,11 @@ function displayItemDeleteForm($items, $user, $getItemId, $getItemFormer) {
$imfNameIntern = $itemField->getValue('imf_name_intern');
$content = $items->getValue($imfNameIntern, 'database');
- if ($imfNameIntern === 'KEEPER' && strlen($content) > 0) {
- $user->readDataById($content);
- $content = $user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME');
+ if ($imfNameIntern === 'KEEPER'|| $imfNameIntern == 'LAST_RECEIVER'&& strlen($content) > 0) {
+ if (is_numeric($content)) {
+ $user->readDataById($content);
+ $content = $user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME');
+ }
} elseif ($items->getProperty($imfNameIntern, 'imf_type') === 'DATE') {
$content = $items->getHtmlValue($imfNameIntern, $content);
} elseif (in_array($items->getProperty($imfNameIntern, 'imf_type'), ['DROPDOWN', 'RADIO_BUTTON'])) {
diff --git a/items/items_edit_new.php b/items/items_edit_new.php
index 6ad6561..bfa4c7e 100644
--- a/items/items_edit_new.php
+++ b/items/items_edit_new.php
@@ -94,108 +94,127 @@
$page->addJavascript('
document.addEventListener("DOMContentLoaded", function() {
- var pimInInventoryField = document.querySelector("[id=\'imf-' . $pimInInventoryId . '\']");
- var pimInInventoryGroup = document.getElementById("imf-' . $pimInInventoryId . '_group");
- var pimLastReceiverField = document.querySelector("[id=\'imf-' . $pimLastReceiverId . '\']");
- var pimLastReceiverGroup = document.getElementById("imf-' . $pimLastReceiverId . '_group");
- var pimReceivedOnField = document.querySelector("[id=\'imf-' . $pimReceivedOnId . '\']");
- if ('.$datetime.' === "true") {
- var pimReceivedOnFieldTime = document.querySelector("[id=\'imf-' . $pimReceivedOnId . '_time\']");
- var pimReceivedBackOnFieldTime = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '_time\']");
- }
- var pimReceivedOnGroup = document.getElementById("imf-' . $pimReceivedOnId . '_group");
- var pimReceivedBackOnField = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '\']");
- var pimReceivedBackOnGroup = document.getElementById("imf-' . $pimReceivedBackOnId . '_group");
-
- function setRequired(field, group, required) {
- if (required) {
- field.setAttribute("required", "required");
- group.classList.add("admidio-form-group-required");
+ if (document.querySelector("[id=\'imf-' . $pimReceivedOnId . '_time\']")) {
+ var pDateTime = "true";
} else {
- field.removeAttribute("required");
- group.classList.remove("admidio-form-group-required");
+ var pDateTime = "false";
}
- }
- function checkPimInInventory() {
- var isInInventoryChecked = pimInInventoryField.checked;
- var lastReceiverValue = pimLastReceiverField.value;
- var receivedBackOnValue = pimReceivedBackOnField.value;
+ var pimInInventoryField = document.querySelector("[id=\'imf-' . $pimInInventoryId . '\']");
+ var pimInInventoryGroup = document.getElementById("imf-' . $pimInInventoryId . '_group");
+ var pimLastReceiverField = document.querySelector("[id=\'imf-' . $pimLastReceiverId . '\']");
+ var pimLastReceiverFieldHidden = document.querySelector("[id=\'imf-' . $pimLastReceiverId . '-hidden\']");
+ var pimLastReceiverGroup = document.getElementById("imf-' . $pimLastReceiverId . '_group");
+ var pimReceivedOnField = document.querySelector("[id=\'imf-' . $pimReceivedOnId . '\']");
- setRequired(pimReceivedOnField, pimReceivedOnGroup, isInInventoryChecked && lastReceiverValue !== "");
- if ('.$datetime.' === "true") {
- setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, isInInventoryChecked && lastReceiverValue !== "");
- setRequired(pimReceivedBackOnFieldTime, pimReceivedBackOnGroup, isInInventoryChecked && lastReceiverValue !== "");
+ if (pDateTime === "true") {
+ var pimReceivedOnFieldTime = document.querySelector("[id=\'imf-' . $pimReceivedOnId . '_time\']");
+ var pimReceivedBackOnFieldTime = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '_time\']");
}
- setRequired(pimReceivedBackOnField, pimReceivedBackOnGroup, isInInventoryChecked && lastReceiverValue !== "");
-
- setRequired(pimLastReceiverField, pimLastReceiverGroup, !isInInventoryChecked);
- setRequired(pimReceivedOnField, pimReceivedOnGroup, !isInInventoryChecked);
- if ('.$datetime.' === "true") {
- setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, !isInInventoryChecked);
- }
-
- if (!isInInventoryChecked && lastReceiverValue === "") {
- pimReceivedOnField.value = "";
- if ('.$datetime.' === "true") {
- pimReceivedOnFieldTime.value = "";
+ var pimReceivedOnGroup = document.getElementById("imf-' . $pimReceivedOnId . '_group");
+ var pimReceivedBackOnField = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '\']");
+ var pimReceivedBackOnGroup = document.getElementById("imf-' . $pimReceivedBackOnId . '_group");
+
+ function setRequired(field, group, required) {
+ if (required) {
+ field.setAttribute("required", "required");
+ group.classList.add("admidio-form-group-required");
+ } else {
+ field.removeAttribute("required");
+ group.classList.remove("admidio-form-group-required");
}
}
- if (receivedBackOnValue !== "") {
- setRequired(pimLastReceiverField, pimLastReceiverGroup, true);
- setRequired(pimReceivedOnField, pimReceivedOnGroup, true);
- if ('.$datetime.' === "true") {
- setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, true);
- setRequired(pimReceivedBackOnFieldTime, pimReceivedOnGroup, true);
+ window.checkPimInInventory = function() {
+ var isInInventoryChecked = pimInInventoryField.checked;
+ var lastReceiverValue = pimLastReceiverFieldHidden.value;
+ var receivedBackOnValue = pimReceivedBackOnField.value;
+
+ setRequired(pimReceivedOnField, pimReceivedOnGroup, isInInventoryChecked && (lastReceiverValue && lastReceiverValue !== "undefined"));
+ setRequired(pimReceivedBackOnField, pimReceivedBackOnGroup, isInInventoryChecked && (lastReceiverValue && lastReceiverValue !== "undefined"));
+ if (pDateTime === "true") {
+ setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, isInInventoryChecked && (lastReceiverValue && lastReceiverValue !== "undefined"));
+ setRequired(pimReceivedBackOnFieldTime, pimReceivedBackOnGroup, isInInventoryChecked && (lastReceiverValue && lastReceiverValue !== "undefined"));
}
- }
- var previousPimInInventoryState = isInInventoryChecked;
+ setRequired(pimLastReceiverField, pimLastReceiverGroup, !isInInventoryChecked);
+ setRequired(pimReceivedOnField, pimReceivedOnGroup, !isInInventoryChecked);
+ if (pDateTime === "true") {
+ setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, !isInInventoryChecked);
+ }
- pimInInventoryField.addEventListener("change", function() {
- if (!pimInInventoryField.checked && previousPimInInventoryState) {
- pimReceivedBackOnField.value = "";
- if ('.$datetime.' === "true") {
- pimReceivedBackOnFieldTime.value = "";
+ console.log("Receiver: " + lastReceiverValue);
+ if (!isInInventoryChecked && (lastReceiverValue === "undefined" || !lastReceiverValue)) {
+ pimReceivedOnField.value = "";
+ if (pDateTime === "true") {
+ pimReceivedOnFieldTime.value = "";
+ }
}
- }
- previousPimInInventoryState = pimInInventoryField.checked;
- });
- }
- function validateReceivedOnAndBackOn() {
- if ('.$datetime.' === "true") {
- var receivedOnDate = new Date(pimReceivedOnField.value + " " + pimReceivedOnFieldTime.value);
- var receivedBackOnDate = new Date(pimReceivedBackOnField.value + " " + pimReceivedBackOnFieldTime.value);
- } else {
- var receivedOnDate = new Date(pimReceivedOnField.value);
- var receivedBackOnDate = new Date(pimReceivedBackOnField.value);
+ if (receivedBackOnValue !== "") {
+ setRequired(pimLastReceiverField, pimLastReceiverGroup, true);
+ setRequired(pimReceivedOnField, pimReceivedOnGroup, true);
+ if (pDateTime === "true") {
+ setRequired(pimReceivedOnFieldTime, pimReceivedOnGroup, true);
+ setRequired(pimReceivedBackOnFieldTime, pimReceivedBackOnGroup, true);
+ }
+ }
+
+ var previousPimInInventoryState = isInInventoryChecked;
+
+ pimInInventoryField.addEventListener("change", function() {
+ if (!pimInInventoryField.checked && previousPimInInventoryState) {
+ pimReceivedBackOnField.value = "";
+ if (pDateTime === "true") {
+ pimReceivedBackOnFieldTime.value = "";
+ }
+ }
+ previousPimInInventoryState = pimInInventoryField.checked;
+ window.checkPimInInventory();
+ });
+
+ pimLastReceiverFieldHidden.addEventListener("change", window.checkPimInInventory);
+ pimReceivedBackOnField.addEventListener("input", window.checkPimInInventory);
+ pimReceivedOnField.addEventListener("input", validateReceivedOnAndBackOn);
+ if (pDateTime === "true") {
+ pimReceivedOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
+ pimReceivedBackOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
+ }
}
- if (receivedOnDate > receivedBackOnDate) {
- pimReceivedOnField.setCustomValidity("ReceivedOn date cannot be after ReceivedBack date.");
- } else {
- pimReceivedOnField.setCustomValidity("");
+ function validateReceivedOnAndBackOn() {
+ if (pDateTime === "true") {
+ var receivedOnDate = new Date(pimReceivedOnField.value + " " + pimReceivedOnFieldTime.value);
+ var receivedBackOnDate = new Date(pimReceivedBackOnField.value + " " + pimReceivedBackOnFieldTime.value);
+ } else {
+ var receivedOnDate = new Date(pimReceivedOnField.value);
+ var receivedBackOnDate = new Date(pimReceivedBackOnField.value);
+ }
+
+ if (receivedOnDate > receivedBackOnDate) {
+ pimReceivedOnField.setCustomValidity("ReceivedOn date cannot be after ReceivedBack date.");
+ } else {
+ pimReceivedOnField.setCustomValidity("");
+ }
}
- }
- pimInInventoryField.addEventListener("change", checkPimInInventory);
- pimLastReceiverField.addEventListener("input", checkPimInInventory);
- pimReceivedBackOnField.addEventListener("input", checkPimInInventory);
- pimReceivedOnField.addEventListener("input", validateReceivedOnAndBackOn);
-
- if ('.$datetime.' === "true") {
- pimReceivedOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
- pimReceivedBackOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
- }
- pimReceivedBackOnField.addEventListener("input", validateReceivedOnAndBackOn);
- checkPimInInventory();
+ pimInInventoryField.addEventListener("change", window.checkPimInInventory);
+ pimLastReceiverFieldHidden.addEventListener("change", window.checkPimInInventory);
+
+ pimReceivedOnField.addEventListener("input", validateReceivedOnAndBackOn);
+ pimReceivedBackOnField.addEventListener("input", window.checkPimInInventory);
+
+ if (pDateTime === "true") {
+ pimReceivedOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
+ pimReceivedBackOnFieldTime.addEventListener("input", validateReceivedOnAndBackOn);
+ }
+ pimReceivedBackOnField.addEventListener("input", validateReceivedOnAndBackOn);
+ window.checkPimInInventory();
});
');
}
-
+
if ($itemField->getValue('imf_type') === 'DATE' && $itemField->getValue('imf_sequence') === '1') {
$form->addInput('dummy', 'dummy', 'dummy', ['type' => $pPreferences->config['Optionen']['field_date_time_format'], 'property' => HtmlForm::FIELD_HIDDEN]);
}
@@ -314,6 +333,16 @@ function validateReceivedOnAndBackOn() {
)
);
+ $form->addInput(
+ 'imf-' . $items->getProperty($imfNameIntern, 'imf_id') . '-hidden',
+ '',
+ $items->getValue($imfNameIntern),
+ array(
+ 'type' => 'hidden',
+ 'property' => HtmlForm::FIELD_DISABLED
+ )
+ );
+
if ($page instanceof HtmlPage) {
$page->addCssFile(ADMIDIO_URL . FOLDER_LIBS_CLIENT . '/select2/css/select2.css');
$page->addCssFile(ADMIDIO_URL . FOLDER_LIBS_CLIENT . '/select2-bootstrap-theme/select2-bootstrap4.css');
@@ -323,42 +352,19 @@ function validateReceivedOnAndBackOn() {
$page->addJavascript('
$(document).ready(function() {
- var pimInInventoryField = document.querySelector("[id=\'imf-' . $pimInInventoryId . '\']");
- var pimReceivedBackOnField = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '\']");
- if ('.$datetime.' === "true") {
- var pimReceivedBackOnFieldTime = document.querySelector("[id=\'imf-' . $pimReceivedBackOnId . '_time\']");
- }
- var pimReceivedBackOnGroup = document.getElementById("imf-' . $pimReceivedBackOnId . '_group");
+ var selectId = "#imf-' . $pimLastReceiverId . '";
- var selectId = "#imf-' . $items->getProperty($imfNameIntern, 'imf_id') . '";
var defaultValue = "' . htmlspecialchars($items->getValue($imfNameIntern)) . '";
var defaultText = "' . htmlspecialchars($items->getValue($imfNameIntern)) . '"; // Der Text für den Default-Wert
- function setRequired(field, group, required) {
- if (required) {
- field.setAttribute("required", "required");
- group.classList.add("admidio-form-group-required");
- } else {
- field.removeAttribute("required");
- group.classList.remove("admidio-form-group-required");
- }
- }
-
function isSelect2Empty(selectId) {
// Hole den aktuellen Wert des Select2-Feldes
- var value = $(selectId).val();
-
- // Überprüfe, ob der Wert leer ist
- if (!value || value.length === 0 || !pimInInventoryField.checked) {
- setRequired(pimReceivedBackOnField, pimReceivedBackOnGroup, false);
- if ('.$datetime.' === "true") {
- setRequired(pimReceivedBackOnFieldTime, pimReceivedBackOnGroup, false);
- }
- } else {
- setRequired(pimReceivedBackOnField, pimReceivedBackOnGroup, true);
- if ('.$datetime.' === "true") {
- setRequired(pimReceivedBackOnFieldTime, pimReceivedBackOnGroup, true);
- }
+ var lastReceiverValueHidden = document.querySelector("[id=\'imf-' . $pimLastReceiverId . '-hidden\']");
+ var renderedElement = $("#select2-imf-' . $pimLastReceiverId .'-container");
+ if (renderedElement.length) {
+ lastReceiverValueHidden.value = renderedElement.attr("title");
+ console.log("Hidden: " + lastReceiverValueHidden.value);
+ window.checkPimInInventory();
}
}
// Prüfe, ob der Default-Wert in den Optionen enthalten ist
@@ -368,12 +374,12 @@ function isSelect2Empty(selectId) {
$(selectId).append(newOption).trigger("change");
}
- $("#imf-' . $items->getProperty($imfNameIntern, 'imf_id').'").select2({
- theme: "bootstrap4",
- allowClear: true,
- placeholder: "",
- language: "' . $gL10n->getLanguageLibs() . '",
- tags: true
+ $("#imf-' . $pimLastReceiverId .'").select2({
+ theme: "bootstrap4",
+ allowClear: true,
+ placeholder: "",
+ language: "' . $gL10n->getLanguageLibs() . '",
+ tags: true
});
// Überwache Änderungen im Select2-Feld
diff --git a/items/items_history.php b/items/items_history.php
index 921fbb0..f19a4ae 100644
--- a/items/items_history.php
+++ b/items/items_history.php
@@ -115,8 +115,13 @@
$imlValueNew = $items->getHtmlValue($items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern'), $row['iml_value_new']);
if ($imlValueNew !== '') {
if ($items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern') === 'KEEPER' || $items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern') === 'LAST_RECEIVER') {
- $user->readDataById((int) $imlValueNew);
- $columnValues[] = ''.$user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME').'';
+ if (is_numeric($imlValueNew)) {
+ $user->readDataById($imlValueNew);
+ $columnValues[] = ''.$user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME').'';
+ }
+ else {
+ $columnValues[] = $imlValueNew;
+ }
}
else {
$columnValues[] = $imlValueNew;
@@ -129,8 +134,13 @@
$imlValueOld = $items->getHtmlValue($items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern'), $row['iml_value_old']);
if ($imlValueOld !== '') {
if ($items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern') === 'KEEPER' || $items->getPropertyById((int) $row['iml_imf_id'], 'imf_name_intern') === 'LAST_RECEIVER') {
- $user->readDataById((int) $imlValueOld);
- $columnValues[] = ''.$user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME').'';
+ if (is_numeric($imlValueOld)) {
+ $user->readDataById($imlValueOld);
+ $columnValues[] = ''.$user->getValue('LAST_NAME').', '.$user->getValue('FIRST_NAME').'';
+ }
+ else {
+ $columnValues[] = $imlValueNew;
+ }
}
else {
$columnValues[] = $imlValueOld;
diff --git a/preferences/preferences.php b/preferences/preferences.php
index a579681..50f1e75 100644
--- a/preferences/preferences.php
+++ b/preferences/preferences.php
@@ -140,13 +140,11 @@ function addPreferencePanel($page, $id, $title, $icon, $content) {
$items = new CItems($gDb, $gCurrentOrgId);
$valueList = array();
foreach ($items->mItemFields as $itemField) {
- if (!in_array($itemField->getValue('imf_name_intern'), array('ITEMNAME', 'KEEPER', 'LAST_RECEIVER'), true)) {
- $valueList[$itemField->getValue('imf_name_intern')] = $itemField->getValue('imf_name');
- }
+ $valueList[$itemField->getValue('imf_name_intern')] = $itemField->getValue('imf_name');
}
$helpTextIdLabelLink = 'GitHub Wiki';
$helpTextIdLabel = $gL10n->get('PLG_INVENTORY_MANAGER_PROFILE_ADDIN_DESC2', array($helpTextIdLabelLink));
-$formProfileAddin->addSelectBox('profile_addin', $gL10n->get('PLG_INVENTORY_MANAGER_ITEMFIELD'), $valueList, array('defaultValue' => $pPreferences->config['Optionen']['profile_addin'], 'showContextDependentFirstEntry' => true, 'helpTextIdInline' => 'PLG_INVENTORY_MANAGER_PROFILE_ADDIN_DESC', 'helpTextIdLabel' => $helpTextIdLabel));
+$formProfileAddin->addSelectBox('profile_addin', $gL10n->get('PLG_INVENTORY_MANAGER_ITEMFIELD'), $valueList, array('defaultValue' => $pPreferences->config['Optionen']['profile_addin'], 'helpTextIdInline' => 'PLG_INVENTORY_MANAGER_PROFILE_ADDIN_DESC', 'multiselect' => true, 'helpTextIdLabel' => $helpTextIdLabel));
$formProfileAddin->addSubmitButton('btn_save_configurations', $gL10n->get('SYS_SAVE'), array('icon' => 'fa-check', 'class' => ' offset-sm-3'));
addPreferencePanel($page, 'profile_addin', $gL10n->get('PLG_INVENTORY_MANAGER_PROFILE_ADDIN'), 'fas fa-users-cog', $formProfileAddin->show());
diff --git a/preferences/preferences_function.php b/preferences/preferences_function.php
index 251a4be..ad558b5 100644
--- a/preferences/preferences_function.php
+++ b/preferences/preferences_function.php
@@ -76,7 +76,7 @@ function handleFormSubmission($form, $preferences) {
break;
case 'profile_addin':
- $preferences->config['Optionen']['profile_addin'] = $_POST['profile_addin'];
+ $preferences->config['Optionen']['profile_addin'] = isset($_POST['profile_addin']) ? array_filter($_POST['profile_addin']) : array();
break;
case 'export':