Commit c59dfb4730d4a1e8819319318e40ac42bce1d181
1 parent
d3b12e42
KTMetadataUtil::synchroniseMetadata allows for a field's lookup options
to be synchronised from a list of values (from LDAP, another database, or manually). git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3908 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
43 additions
and
0 deletions
lib/metadata/metadatautil.inc.php
| @@ -532,6 +532,49 @@ class KTMetadataUtil { | @@ -532,6 +532,49 @@ class KTMetadataUtil { | ||
| 532 | return true; | 532 | return true; |
| 533 | } | 533 | } |
| 534 | // }}} | 534 | // }}} |
| 535 | + | ||
| 536 | + // {{{ synchroniseMetadata | ||
| 537 | + /** | ||
| 538 | + * This function takes a list of metadata values and synchronises | ||
| 539 | + * those values into the values that already exist for the field by | ||
| 540 | + * adding new values and disabling values that aren't in the new | ||
| 541 | + * list. | ||
| 542 | + * | ||
| 543 | + * XXX: Scalability: This function | ||
| 544 | + */ | ||
| 545 | + function synchroniseMetadata($oField, $aNewMetadata) { | ||
| 546 | + $iFieldId = KTUtil::getId($oField); | ||
| 547 | + | ||
| 548 | + $aCurrentAllValues = Metadata::getValuesByDocumentField($iFieldId); | ||
| 549 | + $aCurrentEnabledValues = Metadata::getEnabledValuesByDocumentField($iFieldId); | ||
| 550 | + $aCurrentDisabledValues = Metadata::getDisabledValuesByDocumentField($iFieldId); | ||
| 551 | + | ||
| 552 | + $aToBeAddedValues = array_diff($aNewMetadata, $aCurrentAllValues); | ||
| 553 | + $aToBeDisabledValues = array_diff($aCurrentEnabledValues, $aNewMetadata); | ||
| 554 | + $aToBeEnabledValues = array_intersect($aCurrentDisabledValues, $aNewMetadata); | ||
| 555 | + | ||
| 556 | + foreach ($aToBeAddedValues as $sValue) { | ||
| 557 | + $oMetadata =& Metadata::createFromArray(array( | ||
| 558 | + 'name' => $sValue, | ||
| 559 | + 'docfieldid' => $iFieldId, | ||
| 560 | + )); | ||
| 561 | + } | ||
| 562 | + | ||
| 563 | + foreach ($aToBeDisabledValues as $sValue) { | ||
| 564 | + $oMetadata =& Metadata::getByValueAndDocumentField($sValue, $iFieldId); | ||
| 565 | + $oMetadata->updateFromArray(array( | ||
| 566 | + 'disabled' => true, | ||
| 567 | + )); | ||
| 568 | + } | ||
| 569 | + | ||
| 570 | + foreach ($aToBeEnabledValues as $sValue) { | ||
| 571 | + $oMetadata =& Metadata::getByValueAndDocumentField($sValue, $iFieldId); | ||
| 572 | + $oMetadata->updateFromArray(array( | ||
| 573 | + 'disabled' => false, | ||
| 574 | + )); | ||
| 575 | + } | ||
| 576 | + } | ||
| 577 | + // }}} | ||
| 535 | } | 578 | } |
| 536 | 579 | ||
| 537 | ?> | 580 | ?> |