managecolletions.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * Bibliotheca
  4. *
  5. * Copyright 2018-2023 Johannes Keßler
  6. *
  7. * This program is free software: you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation, either version 3 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0.
  19. */
  20. require_once 'lib/managecollections.class.php';
  21. $ManageCollections = new ManageCollections($DB,$Doomguy);
  22. require_once 'lib/managecollectionfields.class.php';
  23. $ManageCollectionFields = new ManageCollectionFields($DB,$Doomguy);
  24. $TemplateData['existingCollections'] = $ManageCollections->getCollections();
  25. $TemplateData['ownerSelection'] = $ManageCollections->getUsersForSelection();
  26. $TemplateData['groupSelection'] = $ManageCollections->getGroupsForSelection();
  27. $TemplateData['toolSelection'] = $ManageCollections->getToolsForSelection();
  28. // default rights
  29. $TemplateData['editData']['rights'] = Summoner::prepareRightsArray('rwxr--r--');
  30. // tool needs to be preset
  31. $TemplateData['editData']['tool'] = array();
  32. $TemplateData['existingFields'] = array();
  33. $TemplateData['simpleSearchFields'] = array();
  34. $TemplateData['pageTitle'] = 'Manage collection';
  35. // @todo providing the id is enough
  36. $_editMode = false;
  37. if(isset($_GET['m']) && !empty($_GET['m'])) {
  38. if($_GET['m'] == "edit") {
  39. $_editMode = true;
  40. }
  41. }
  42. $_id ='';
  43. if(isset($_GET['id']) && !empty($_GET['id'])) {
  44. $_id = trim($_GET['id']);
  45. $_id = Summoner::validate($_id,'digit') ? $_id : '';
  46. }
  47. if($_editMode === true && !empty($_id)) {
  48. $TemplateData['editData'] = $ManageCollections->getEditData($_id);
  49. $ManageCollectionFields->setCollection($_id);
  50. $TemplateData['existingFields'] = $ManageCollectionFields->getExistingFields();
  51. $TemplateData['simpleSearchFields'] = $ManageCollectionFields->getSimpleSearchFields();
  52. if(!isset($TemplateData['editData']['name'])) {
  53. $TemplateData['refresh'] = 'index.php?p=managecolletions';
  54. }
  55. }
  56. $_saveData = array();
  57. if(isset($_POST['submitForm'])) {
  58. $fdata = $_POST['fdata'];
  59. if (!empty($fdata)) {
  60. $_saveData['name'] = trim($fdata['name']);
  61. $_saveData['description'] = trim($fdata['description']);
  62. $_saveData['owner'] = trim($fdata['owner']);
  63. $_saveData['group'] = trim($fdata['group']);
  64. $_saveData['rights'] = Summoner::prepareRightsString($fdata['rights']);
  65. $_saveData['defaultSearchField'] = $fdata['defaultSearchField'];
  66. $_saveData['defaultSortField'] = $fdata['defaultSortField'];
  67. $_saveData['defaultSortOrder'] = $fdata['defaultSortOrder'];
  68. $_saveData['id'] = $_id;
  69. $_saveData['tool'] = array();
  70. if(isset($fdata['tool'])) {
  71. $_saveData['tool'] = $fdata['tool'];
  72. }
  73. $_saveData['doRightsForEntries'] = false;
  74. if(isset($fdata['doRightsForEntries'])) {
  75. $_saveData['doRightsForEntries'] = true;
  76. }
  77. $_saveData['advancedSearchTableFields'] = '';
  78. if(isset($fdata['advancedSearchTableFields'])) {
  79. $_saveData['advancedSearchTableFields'] = implode(',',$fdata['advancedSearchTableFields']);
  80. }
  81. $_updateSearchData = false;
  82. if(isset($fdata['updateSearchData'])) {
  83. $_updateSearchData = true;
  84. }
  85. if(!empty($TemplateData['editData']['name'])) { // EDIT
  86. if(isset($fdata['doDelete'])) {
  87. $do = $ManageCollections->deleteCollection($_id);
  88. if ($do === true) {
  89. $TemplateData['refresh'] = 'index.php?p=managecolletions';
  90. } else {
  91. $TemplateData['message']['content'] = $I18n->t('managecol.message.couldNotBeDelete');
  92. $TemplateData['message']['status'] = "error";
  93. }
  94. }
  95. else {
  96. if (Summoner::validate($_saveData['name'], 'nospace') === true
  97. && isset($TemplateData['groupSelection'][$_saveData['group']])
  98. && isset($TemplateData['ownerSelection'][$_saveData['owner']])
  99. ) {
  100. $do = $ManageCollections->updateCollection($_saveData);
  101. if ($do === true) {
  102. if($_updateSearchData) {
  103. $ManageCollections->updateSearchData($_id, $ManageCollectionFields->getSimpleSearchFields());
  104. }
  105. $TemplateData['refresh'] = 'index.php?p=managecolletions';
  106. } else {
  107. $TemplateData['message']['content'] = $I18n->t('managecol.message.couldNotBeUpdated');
  108. $TemplateData['message']['status'] = "error";
  109. }
  110. } else {
  111. $TemplateData['message']['content'] = $I18n->t('managecol.message.missingRights');
  112. $TemplateData['message']['status'] = "error";
  113. }
  114. }
  115. }
  116. else { // ADD
  117. if (!empty($_saveData['name']) && !empty($_saveData['owner']) && !empty($_saveData['group']) && !empty($_saveData['rights'])) {
  118. if (Summoner::validate($_saveData['name'], 'nospace') === true
  119. && isset($TemplateData['groupSelection'][$_saveData['group']])
  120. && isset($TemplateData['ownerSelection'][$_saveData['owner']])
  121. ) {
  122. $do = $ManageCollections->createCollection($_saveData);
  123. if ($do === true) {
  124. $TemplateData['refresh'] = 'index.php?p=managecolletions';
  125. } else {
  126. $TemplateData['message']['content'] = $I18n->t('managecol.message.notBeCreated');
  127. $TemplateData['message']['status'] = "error";
  128. }
  129. } else {
  130. $TemplateData['message']['content'] = $I18n->t('managecol.message.missingRights');
  131. $TemplateData['message']['status'] = "error";
  132. }
  133. }
  134. }
  135. }
  136. }