Commit 669fe9275d4cf7b128700c5da45ea219bbb359b0

Authored by conradverm
1 parent 34a38978

"WSA-5"

"Metadata not updating correctly."
Fixed.

Resolved By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@6818 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 63 additions and 31 deletions
ktapi/KTAPIDocument.inc.php
... ... @@ -237,7 +237,7 @@ class KTAPI_Document extends KTAPI_FolderItem
237 237 if (PEAR::isError($user))
238 238 {
239 239 return $user;
240   - }
  240 + }
241 241  
242 242 if ($this->document->getIsCheckedOut())
243 243 {
... ... @@ -267,7 +267,7 @@ class KTAPI_Document extends KTAPI_FolderItem
267 267 if (PEAR::isError($user))
268 268 {
269 269 return $user;
270   - }
  270 + }
271 271  
272 272 DBUtil::startTransaction();
273 273  
... ... @@ -346,25 +346,25 @@ class KTAPI_Document extends KTAPI_FolderItem
346 346 }
347 347  
348 348 $name = $this->document->getName();
349   - $clash = KTDocumentUtil::nameExists($target_folder, $name);
  349 + $clash = KTDocumentUtil::nameExists($target_folder, $name);
350 350 if ($clash && !is_null($newname))
351 351 {
352 352 $name = $newname;
353 353 $clash = KTDocumentUtil::nameExists($target_folder, $name);
354   - }
  354 + }
355 355 if ($clash)
356 356 {
357 357 return new PEAR_Error('A document with this title already exists in your chosen folder. Please choose a different folder, or specify a new title for the copied document.');
358 358 }
359 359  
360 360 $filename=$this->document->getFilename();
361   - $clash = KTDocumentUtil::fileExists($target_folder, $filename);
  361 + $clash = KTDocumentUtil::fileExists($target_folder, $filename);
362 362  
363 363 if ($clash && !is_null($newname))
364 364 {
365 365 $filename = $newfilename;
366   - $clash = KTDocumentUtil::fileExists($target_folder, $filename);
367   - }
  366 + $clash = KTDocumentUtil::fileExists($target_folder, $filename);
  367 + }
368 368 if ($clash)
369 369 {
370 370 return new PEAR_Error('A document with this filename already exists in your chosen folder. Please choose a different folder, or specify a new filename for the copied document.');
... ... @@ -435,7 +435,7 @@ class KTAPI_Document extends KTAPI_FolderItem
435 435 if (PEAR::isError($user))
436 436 {
437 437 return $user;
438   - }
  438 + }
439 439  
440 440 if ($this->document->getIsCheckedOut())
441 441 {
... ... @@ -457,25 +457,25 @@ class KTAPI_Document extends KTAPI_FolderItem
457 457 }
458 458  
459 459 $name = $this->document->getName();
460   - $clash = KTDocumentUtil::nameExists($target_folder, $name);
  460 + $clash = KTDocumentUtil::nameExists($target_folder, $name);
461 461 if ($clash && !is_null($newname))
462 462 {
463 463 $name = $newname;
464 464 $clash = KTDocumentUtil::nameExists($target_folder, $name);
465   - }
  465 + }
466 466 if ($clash)
467 467 {
468 468 return new PEAR_Error('A document with this title already exists in your chosen folder. Please choose a different folder, or specify a new title for the moved document.');
469 469 }
470 470  
471 471 $filename=$this->document->getFilename();
472   - $clash = KTDocumentUtil::fileExists($target_folder, $filename);
  472 + $clash = KTDocumentUtil::fileExists($target_folder, $filename);
473 473  
474 474 if ($clash && !is_null($newname))
475 475 {
476 476 $filename = $newfilename;
477   - $clash = KTDocumentUtil::fileExists($target_folder, $filename);
478   - }
  477 + $clash = KTDocumentUtil::fileExists($target_folder, $filename);
  478 + }
479 479 if ($clash)
480 480 {
481 481 return new PEAR_Error('A document with this filename already exists in your chosen folder. Please choose a different folder, or specify a new filename for the moved document.');
... ... @@ -516,7 +516,7 @@ class KTAPI_Document extends KTAPI_FolderItem
516 516 if (PEAR::isError($user))
517 517 {
518 518 return $user;
519   - }
  519 + }
520 520  
521 521 DBUtil::startTransaction();
522 522 $res = KTDocumentUtil::rename($this->document, $newname, $user);
... ... @@ -525,7 +525,7 @@ class KTAPI_Document extends KTAPI_FolderItem
525 525 DBUtil::rollback();
526 526 return new KTAPI_Error(KTAPI_ERROR_INTERNAL_ERROR,$res );
527 527 }
528   - DBUtil::commit();
  528 + DBUtil::commit();
529 529 }
530 530  
531 531 /**
... ... @@ -540,7 +540,7 @@ class KTAPI_Document extends KTAPI_FolderItem
540 540 if (PEAR::isError($user))
541 541 {
542 542 return $user;
543   - }
  543 + }
544 544  
545 545 $doctypeid = KTAPI::get_documenttypeid($documenttype);
546 546  
... ... @@ -571,7 +571,7 @@ class KTAPI_Document extends KTAPI_FolderItem
571 571 if (PEAR::isError($user))
572 572 {
573 573 return $user;
574   - }
  574 + }
575 575  
576 576 if ($this->document->getName() != $newname)
577 577 {
... ... @@ -753,7 +753,7 @@ class KTAPI_Document extends KTAPI_FolderItem
753 753 {
754 754 if ($fieldset->getIsConditional()) { /* this is not implemented...*/ continue; }
755 755  
756   - $fields = $fieldset->getFields();
  756 + $fields = $fieldset->getFields();
757 757 $result = array('fieldset' => $fieldset->getName(),
758 758 'description' => $fieldset->getDescription());
759 759  
... ... @@ -761,7 +761,7 @@ class KTAPI_Document extends KTAPI_FolderItem
761 761  
762 762 foreach ($fields as $field)
763 763 {
764   - $value = 'n/a';
  764 + $value = 'n/a';
765 765  
766 766 $fieldvalue = DocumentFieldLink::getByDocumentAndField($this->document, $field);
767 767 if (!is_null($fieldvalue) && (!PEAR::isError($fieldvalue)))
... ... @@ -777,12 +777,12 @@ class KTAPI_Document extends KTAPI_FolderItem
777 777 {
778 778 $controltype = 'tree';
779 779 }
780   - }
  780 + }
781 781  
782 782 switch ($controltype)
783 783 {
784 784 case 'lookup':
785   - $selection = KTAPI::get_metadata_lookup($field->getId());
  785 + $selection = KTAPI::get_metadata_lookup($field->getId());
786 786 break;
787 787 case 'tree':
788 788 $selection = KTAPI::get_metadata_tree($field->getId());
... ... @@ -807,7 +807,7 @@ class KTAPI_Document extends KTAPI_FolderItem
807 807 $results [] = $result;
808 808 }
809 809  
810   - return $results;
  810 + return $results;
811 811 }
812 812  
813 813 /**
... ... @@ -817,28 +817,60 @@ class KTAPI_Document extends KTAPI_FolderItem
817 817 */
818 818 function update_metadata($metadata)
819 819 {
  820 + global $default;
820 821 $packed = array();
821 822  
822 823 foreach($metadata as $fieldset_metadata)
823 824 {
824   - $fieldsetname=$fieldset_metadata['fieldset'];
  825 + if (is_array($fieldset_metadata))
  826 + {
  827 + $fieldsetname=$fieldset_metadata['fieldset'];
  828 + $fields=$fieldset_metadata['fields'];
  829 + }
  830 + elseif (is_a($fieldset_metadata, 'stdClass'))
  831 + {
  832 + $fieldsetname=$fieldset_metadata->fieldset;
  833 + $fields=$fieldset_metadata->fields;
  834 + }
  835 + else
  836 + {
  837 + $default->log->debug("unexpected fieldset type");
  838 + continue;
  839 + }
  840 +
825 841 $fieldset = KTFieldset::getByName($fieldsetname);
826 842 if (is_null($fieldset) || PEAR::isError($fieldset))
827 843 {
  844 + $default->log->debug("could not resolve fieldset: $fieldsetname");
828 845 // exit graciously
829 846 continue;
830 847 }
831 848  
832   - foreach($fieldset_metadata['fields'] as $fieldinfo)
  849 + foreach($fields as $fieldinfo)
833 850 {
834   - $fieldname = $fieldinfo['name'];
  851 + if (is_array($fieldinfo))
  852 + {
  853 + $fieldname = $fieldinfo['name'];
  854 + $value = $fieldinfo['value'];
  855 + }
  856 + elseif (is_a($fieldinfo, 'stdClass'))
  857 + {
  858 + $fieldname = $fieldinfo->name;
  859 + $value = $fieldinfo->value;
  860 + }
  861 + else
  862 + {
  863 + $default->log->debug("unexpected fieldinfo type");
  864 + continue;
  865 + }
  866 +
835 867 $field = DocumentField::getByFieldsetAndName($fieldset, $fieldname);
836 868 if (is_null($field) || PEAR::isError($fieldset))
837 869 {
  870 + $default->log->debug("could not resolve field: $fieldname");
838 871 // exit graciously
839 872 continue;
840   - }
841   - $value = $fieldinfo['value'];
  873 + }
842 874  
843 875 $packed[] = array($field, $value);
844 876 }
... ... @@ -890,7 +922,7 @@ class KTAPI_Document extends KTAPI_FolderItem
890 922 }
891 923 foreach($transitions as $transition)
892 924 {
893   - $result[] = $transition->getName();
  925 + $result[] = $transition->getName();
894 926 }
895 927  
896 928 return $result;
... ... @@ -1042,7 +1074,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1042 1074 function download($version=null)
1043 1075 {
1044 1076 $storage =& KTStorageManagerUtil::getSingleton();
1045   - $options = array();
  1077 + $options = array();
1046 1078  
1047 1079  
1048 1080 $oDocumentTransaction = & new DocumentTransaction($this->document, 'Document downloaded', 'ktcore.transactions.download', $aOptions);
... ... @@ -1091,7 +1123,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1091 1123 $user = User::get($userid);
1092 1124  
1093 1125 $version['user'] = $user->getName();
1094   - $version['metadata_version'] = $document->getMetadataVersion();
  1126 + $version['metadata_version'] = $document->getMetadataVersion();
1095 1127 $version['content_version'] = $document->getVersion();
1096 1128  
1097 1129 $versions[] = $version;
... ... @@ -1143,7 +1175,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1143 1175 {
1144 1176 $this->document->setFolderId(1);
1145 1177 $folder = Folder::get(1);
1146   - }
  1178 + }
1147 1179 else
1148 1180 {
1149 1181 $this->document->setFolderId($this->document->getRestoreFolderId());
... ...