|
4 | 4 | require_once ROOT_DIR . '/sys/LibraryLocation/LibraryFacetSetting.php'; |
5 | 5 | require_once ROOT_DIR . '/sys/LibraryLocation/LibraryCombinedResultSection.php'; |
6 | 6 | require_once ROOT_DIR . '/sys/LibraryLocation/LibraryTheme.php'; |
| 7 | +require_once ROOT_DIR . '/sys/LibraryLocation/LibraryUserDefinedField.php'; |
7 | 8 | if (file_exists(ROOT_DIR . '/sys/Indexing/LibraryRecordToInclude.php')) { |
8 | 9 | require_once ROOT_DIR . '/sys/Indexing/LibraryRecordToInclude.php'; |
9 | 10 | } |
@@ -525,6 +526,8 @@ class Library extends DataObject { |
525 | 526 | private $_sideLoadScopes; |
526 | 527 | /** @var ILLItemType[] */ |
527 | 528 | private $_interLibraryLoanItemTypes; |
| 529 | + /** @var LibraryUserDefinedField[] */ |
| 530 | + private $_userDefinedFields; |
528 | 531 | /** @var LibraryLink[] */ |
529 | 532 | private $_libraryLinks; |
530 | 533 | /** @var LibraryRecordToInclude[] */ |
@@ -2664,6 +2667,34 @@ static function getObjectStructure(string $context = ''): array { |
2664 | 2667 | 'description' => 'Whether or not to log self registrations (to approve in Review Library Registrations) (Sierra only)', |
2665 | 2668 | 'default' => false, |
2666 | 2669 | ], |
| 2670 | + 'userDefinedFields' => [ |
| 2671 | + 'property' => 'userDefinedFields', |
| 2672 | + 'type' => 'oneToMany', |
| 2673 | + 'label' => 'User Defined Fields', |
| 2674 | + 'description' => 'User defined fields for self registration.', |
| 2675 | + 'keyThis' => 'libraryId', |
| 2676 | + 'keyOther' => 'libraryId', |
| 2677 | + 'subObjectType' => 'LibraryUserDefinedField', |
| 2678 | + 'structure' => LibraryUserDefinedField::getObjectStructure(), |
| 2679 | + 'sortable' => false, |
| 2680 | + 'storeDb' => true, |
| 2681 | + 'allowEdit' => false, |
| 2682 | + 'canEdit' => false, |
| 2683 | + 'canAddNew' => false, |
| 2684 | + 'canDelete' => false, |
| 2685 | + 'hideInLists' => true, |
| 2686 | + 'relatedIls' => ['polaris'], |
| 2687 | + 'prefilledRows' => [ |
| 2688 | + ['fieldNumber' => 'User Defined Field 1'], |
| 2689 | + ['fieldNumber' => 'User Defined Field 2'], |
| 2690 | + ['fieldNumber' => 'User Defined Field 3'], |
| 2691 | + ['fieldNumber' => 'User Defined Field 4'], |
| 2692 | + ['fieldNumber' => 'User Defined Field 5'], |
| 2693 | + ], |
| 2694 | + 'noteBullets' => [ |
| 2695 | + 'Not every row must be filled out. Leave the "Label" field empty to hide that User Defined Field.', |
| 2696 | + ], |
| 2697 | + ], |
2667 | 2698 | ], |
2668 | 2699 | ], |
2669 | 2700 | 'thirdPartyRegistrationSection' => [ |
@@ -4931,6 +4962,8 @@ public function __get($name) { |
4931 | 4962 | return $this->getCloudLibraryScope(); |
4932 | 4963 | } elseif ($name == 'interLibraryLoanItemTypes') { |
4933 | 4964 | return $this->getILLItemTypes(); |
| 4965 | + } elseif ($name == 'userDefinedFields') { |
| 4966 | + return $this->getUserDefinedFields(); |
4934 | 4967 | } else { |
4935 | 4968 | return parent::__get($name); |
4936 | 4969 | } |
@@ -4963,6 +4996,8 @@ public function __set($name, $value) { |
4963 | 4996 | $this->_cloudLibraryScope = $value; |
4964 | 4997 | } elseif ($name == 'interLibraryLoanItemTypes') { |
4965 | 4998 | $this->_interLibraryLoanItemTypes = $value; |
| 4999 | + } elseif ($name == 'userDefinedFields') { |
| 5000 | + $this->_userDefinedFields = $value; |
4966 | 5001 | } else { |
4967 | 5002 | parent::__set($name, $value); |
4968 | 5003 | } |
@@ -5014,6 +5049,7 @@ public function update(string $context = '') : int|bool { |
5014 | 5049 | $this->saveCloudLibraryScopes(); |
5015 | 5050 | $this->saveThemes(); |
5016 | 5051 | $this->saveILLItemTypes(); |
| 5052 | + $this->saveUserDefinedFields(); |
5017 | 5053 | $this->saveTextBlockTranslations('paymentHistoryExplanation'); |
5018 | 5054 | $this->saveTextBlockTranslations('costSavingsExplanationEnabled'); |
5019 | 5055 | $this->saveTextBlockTranslations('costSavingsExplanationDisabled'); |
@@ -5090,6 +5126,7 @@ public function insert(string $context = '') : int|bool { |
5090 | 5126 | $this->saveCloudLibraryScopes(); |
5091 | 5127 | $this->saveThemes(); |
5092 | 5128 | $this->saveILLItemTypes(); |
| 5129 | + $this->saveUserDefinedFields(); |
5093 | 5130 | $this->saveTextBlockTranslations('paymentHistoryExplanation'); |
5094 | 5131 | $this->saveTextBlockTranslations('costSavingsExplanationEnabled'); |
5095 | 5132 | $this->saveTextBlockTranslations('costSavingsExplanationDisabled'); |
@@ -5544,6 +5581,32 @@ public function saveILLItemTypes() : void { |
5544 | 5581 | } |
5545 | 5582 | } |
5546 | 5583 |
|
| 5584 | + /** |
| 5585 | + * @return LibraryUserDefinedField[] |
| 5586 | + */ |
| 5587 | + public function getUserDefinedFields() : array { |
| 5588 | + if (!isset($this->_userDefinedFields)) { |
| 5589 | + $this->_userDefinedFields = []; |
| 5590 | + if (!empty($this->libraryId)) { |
| 5591 | + $userDefinedField = new LibraryUserDefinedField(); |
| 5592 | + $userDefinedField->libraryId = $this->libraryId; |
| 5593 | + $userDefinedField->orderBy('fieldNumber'); |
| 5594 | + $userDefinedField->find(); |
| 5595 | + while ($userDefinedField->fetch()) { |
| 5596 | + $this->_userDefinedFields[$userDefinedField->id] = clone($userDefinedField); |
| 5597 | + } |
| 5598 | + } |
| 5599 | + } |
| 5600 | + return $this->_userDefinedFields; |
| 5601 | + } |
| 5602 | + |
| 5603 | + public function saveUserDefinedFields() : void { |
| 5604 | + if (isset($this->_userDefinedFields) && is_array($this->_userDefinedFields)) { |
| 5605 | + $this->saveOneToManyOptions($this->_userDefinedFields, 'libraryId'); |
| 5606 | + unset($this->_userDefinedFields); |
| 5607 | + } |
| 5608 | + } |
| 5609 | + |
5547 | 5610 | public function getNumLocationsForLibrary() { |
5548 | 5611 | $location = new Location; |
5549 | 5612 | $location->libraryId = $this->libraryId; |
|
0 commit comments