Commit 93ca40c8fd6995c535ae99e90b035f2da390ab47
1 parent
c330991f
WSA-71
"Add missing fields to folder contents structure in web services" Fixed. Committed By: Conrad Vermeulen Reviewed By: Martin Kirsten git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7732 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
3 changed files
with
158 additions
and
24 deletions
config/dmsDefaults.php
| @@ -43,6 +43,7 @@ if (defined('DMS_DEFAULTS_INCLUDED')) | @@ -43,6 +43,7 @@ if (defined('DMS_DEFAULTS_INCLUDED')) | ||
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | define('DMS_DEFAULTS_INCLUDED',1); | 45 | define('DMS_DEFAULTS_INCLUDED',1); |
| 46 | +define('LATEST_WEBSERVICE_VERSION',2); | ||
| 46 | 47 | ||
| 47 | 48 | ||
| 48 | if (function_exists('apd_set_pprof_trace')) { | 49 | if (function_exists('apd_set_pprof_trace')) { |
ktapi/KTAPIFolder.inc.php
| @@ -315,6 +315,9 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -315,6 +315,9 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 315 | $read_permission = &KTPermission::getByName(KTAPI_PERMISSION_READ); | 315 | $read_permission = &KTPermission::getByName(KTAPI_PERMISSION_READ); |
| 316 | $folder_permission = &KTPermission::getByName(KTAPI_PERMISSION_VIEW_FOLDER); | 316 | $folder_permission = &KTPermission::getByName(KTAPI_PERMISSION_VIEW_FOLDER); |
| 317 | 317 | ||
| 318 | + $config = KTConfig::getSingleton(); | ||
| 319 | + | ||
| 320 | + $wsversion = $config->get('webservice/version', LATEST_WEBSERVICE_VERSION); | ||
| 318 | 321 | ||
| 319 | $user = $this->ktapi->get_user(); | 322 | $user = $this->ktapi->get_user(); |
| 320 | 323 | ||
| @@ -324,13 +327,10 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -324,13 +327,10 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 324 | { | 327 | { |
| 325 | $folder_children = Folder::getList(array('parent_id = ?', $this->folderid)); | 328 | $folder_children = Folder::getList(array('parent_id = ?', $this->folderid)); |
| 326 | 329 | ||
| 327 | - | ||
| 328 | foreach ($folder_children as $folder) | 330 | foreach ($folder_children as $folder) |
| 329 | { | 331 | { |
| 330 | if(KTPermissionUtil::userHasPermissionOnItem($user, $folder_permission, $folder)) | 332 | if(KTPermissionUtil::userHasPermissionOnItem($user, $folder_permission, $folder)) |
| 331 | { | 333 | { |
| 332 | - $creator=$this->_resolve_user($folder->getCreatorID()); | ||
| 333 | - | ||
| 334 | if ($depth-1 > 0) | 334 | if ($depth-1 > 0) |
| 335 | { | 335 | { |
| 336 | $sub_folder = &$this->ktapi->get_folder_by_id($folder->getId()); | 336 | $sub_folder = &$this->ktapi->get_folder_by_id($folder->getId()); |
| @@ -341,6 +341,50 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -341,6 +341,50 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 341 | $items=array(); | 341 | $items=array(); |
| 342 | } | 342 | } |
| 343 | 343 | ||
| 344 | + $creator=$this->_resolve_user($folder->getCreatorID()); | ||
| 345 | + | ||
| 346 | + | ||
| 347 | + if ($wsversion >= 2) | ||
| 348 | + { | ||
| 349 | + $contents[] = array( | ||
| 350 | + 'id' => (int) $folder->getId(), | ||
| 351 | + 'item_type' => 'F', | ||
| 352 | + | ||
| 353 | + 'title' => $folder->getName(), | ||
| 354 | + 'filename' => $folder->getName(), | ||
| 355 | + 'filesize' => 'n/a', | ||
| 356 | + | ||
| 357 | + 'created_by' => is_null($creator)?'n/a':$creator->getName(), | ||
| 358 | + 'created_date' => 'n/a', | ||
| 359 | + | ||
| 360 | + 'checked_out_by' => 'n/a', | ||
| 361 | + 'checked_out_date' => 'n/a', | ||
| 362 | + | ||
| 363 | + 'modified_by' => 'n/a', | ||
| 364 | + 'modified_date' => 'n/a', | ||
| 365 | + | ||
| 366 | + 'owned_by' => 'n/a', | ||
| 367 | + | ||
| 368 | + 'version' => 'n/a', | ||
| 369 | + | ||
| 370 | + 'immutable'=> 'n/a', | ||
| 371 | + 'permissions' => 'n/a', | ||
| 372 | + | ||
| 373 | + 'workflow'=>'n/a', | ||
| 374 | + 'workflow_state'=>'n/a', | ||
| 375 | + | ||
| 376 | + 'mime_type' => 'folder', | ||
| 377 | + 'mime_icon_path' => 'folder', | ||
| 378 | + 'mime_display' => 'Folder', | ||
| 379 | + | ||
| 380 | + 'storage_path' => 'n/a', | ||
| 381 | + | ||
| 382 | + 'items'=>$items, | ||
| 383 | + | ||
| 384 | + ); | ||
| 385 | + } | ||
| 386 | + else | ||
| 387 | + { | ||
| 344 | 388 | ||
| 345 | $contents[] = array( | 389 | $contents[] = array( |
| 346 | 'id' => (int) $folder->getId(), | 390 | 'id' => (int) $folder->getId(), |
| @@ -360,8 +404,9 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -360,8 +404,9 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 360 | 'items'=>$items, | 404 | 'items'=>$items, |
| 361 | 'workflow'=>'n/a', | 405 | 'workflow'=>'n/a', |
| 362 | 'workflow_state'=>'n/a' | 406 | 'workflow_state'=>'n/a' |
| 363 | - | ||
| 364 | ); | 407 | ); |
| 408 | + } | ||
| 409 | + | ||
| 365 | } | 410 | } |
| 366 | } | 411 | } |
| 367 | } | 412 | } |
| @@ -376,9 +421,19 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -376,9 +421,19 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 376 | { | 421 | { |
| 377 | if (KTPermissionUtil::userHasPermissionOnItem($user, $read_permission, $document)) | 422 | if (KTPermissionUtil::userHasPermissionOnItem($user, $read_permission, $document)) |
| 378 | { | 423 | { |
| 379 | - $creator=$this->_resolve_user($document->getCreatorID()); | ||
| 380 | - $checkedoutby=$this->_resolve_user($document->getCheckedOutUserID()); | ||
| 381 | - $modifiedby=$this->_resolve_user($document->getCreatorID()); | 424 | + $created_by=$this->_resolve_user($document->getCreatorID()); |
| 425 | + $created_date = $document->getCreatedDateTime(); | ||
| 426 | + if (empty($created_date)) $created_date = 'n/a'; | ||
| 427 | + | ||
| 428 | + $checked_out_by=$this->_resolve_user($document->getCheckedOutUserID()); | ||
| 429 | + $checked_out_date = $document->getCheckedOutDate(); | ||
| 430 | + if (empty($checked_out_date)) $checked_out_date = 'n/a'; | ||
| 431 | + | ||
| 432 | + $modified_by=$this->_resolve_user($document->getCreatorID()); | ||
| 433 | + $modified_date = $document->getCheckedOutDate(); | ||
| 434 | + if (empty($modified_date)) $modified_date = 'n/a'; | ||
| 435 | + | ||
| 436 | + $owned_by =$this->_resolve_user($document->getOwnerID()); | ||
| 382 | 437 | ||
| 383 | $mimetypeid=$document->getMimeTypeID(); | 438 | $mimetypeid=$document->getMimeTypeID(); |
| 384 | if (!array_key_exists($mimetypeid, $mime_cache)) | 439 | if (!array_key_exists($mimetypeid, $mime_cache)) |
| @@ -396,37 +451,73 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -396,37 +451,73 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 396 | } | 451 | } |
| 397 | $mimeinfo=$mime_cache[$mimetypeid]; | 452 | $mimeinfo=$mime_cache[$mimetypeid]; |
| 398 | 453 | ||
| 399 | - $workflow = KTWorkflowUtil::getWorkflowForDocument($document); | 454 | + $workflow='n/a'; |
| 455 | + $state='n/a'; | ||
| 456 | + | ||
| 457 | + $wf = KTWorkflowUtil::getWorkflowForDocument($document); | ||
| 400 | 458 | ||
| 401 | - if (!is_null($workflow) && !PEAR::isError($workflow)) | 459 | + if (!is_null($wf) && !PEAR::isError($wf)) |
| 402 | { | 460 | { |
| 403 | - $workflow=$workflow->getHumanName(); | 461 | + $workflow=$wf->getHumanName(); |
| 404 | 462 | ||
| 405 | - $state=KTWorkflowUtil::getWorkflowStateForDocument($document); | ||
| 406 | - if (!is_null($state) && !PEAR::isError($state)) | 463 | + $ws=KTWorkflowUtil::getWorkflowStateForDocument($document); |
| 464 | + if (!is_null($ws) && !PEAR::isError($ws)) | ||
| 407 | { | 465 | { |
| 408 | $state=$state->getHumanName(); | 466 | $state=$state->getHumanName(); |
| 409 | } | 467 | } |
| 410 | - else | ||
| 411 | - { | ||
| 412 | - $state='n/a'; | ||
| 413 | - } | ||
| 414 | } | 468 | } |
| 415 | - else | 469 | + |
| 470 | + if ($wsversion >= 2) | ||
| 416 | { | 471 | { |
| 417 | - $workflow='n/a'; | ||
| 418 | - $state='n/a'; | 472 | + $contents[] = array( |
| 473 | + 'id' => (int) $document->getId(), | ||
| 474 | + 'item_type' => 'D', | ||
| 475 | + | ||
| 476 | + 'title' => $document->getName(), | ||
| 477 | + 'filename' => $document->getFileName(), | ||
| 478 | + 'filesize' => $document->getFileSize(), | ||
| 479 | + | ||
| 480 | + 'created_by' => is_null($created_by)?'n/a':$created_by->getName(), | ||
| 481 | + 'created_date' => $created_date, | ||
| 482 | + | ||
| 483 | + 'checked_out_by' => is_null($checked_out_by)?'n/a':$checked_out_by->getName(), | ||
| 484 | + 'checked_out_date' => $checked_out_date, | ||
| 485 | + | ||
| 486 | + 'modified_by' => is_null($modified_by)?'n/a':$modified_by->getName(), | ||
| 487 | + 'modified_date' => $modified_date, | ||
| 488 | + | ||
| 489 | + 'owned_by' => is_null($owned_by)?'n/a':$owned_by->getName(), | ||
| 490 | + | ||
| 491 | + 'version' => $document->getMajorVersionNumber() . '.' . $document->getMinorVersionNumber(), | ||
| 492 | + | ||
| 493 | + 'immutable'=> $document->getImmutable()?'true':'false', | ||
| 494 | + 'permissions' => 'n/a', | ||
| 495 | + | ||
| 496 | + 'workflow'=> $workflow, | ||
| 497 | + 'workflow_state'=> $state, | ||
| 498 | + | ||
| 499 | + 'mime_type' => $mime_cache[$mimetypeid]['type'], | ||
| 500 | + 'mime_icon_path' => $mime_cache[$mimetypeid]['icon'], | ||
| 501 | + 'mime_display' => $mime_cache[$mimetypeid]['display'], | ||
| 502 | + | ||
| 503 | + 'storage_path' => $document->getStoragePath(), | ||
| 504 | + | ||
| 505 | + 'items'=>array(), | ||
| 506 | + | ||
| 507 | + ); | ||
| 419 | } | 508 | } |
| 509 | + else | ||
| 510 | + { | ||
| 420 | 511 | ||
| 421 | 512 | ||
| 422 | $contents[] = array( | 513 | $contents[] = array( |
| 423 | 'id' => (int) $document->getId(), | 514 | 'id' => (int) $document->getId(), |
| 424 | 'item_type'=>'D', | 515 | 'item_type'=>'D', |
| 425 | 'title'=>$document->getName(), | 516 | 'title'=>$document->getName(), |
| 426 | - 'creator'=>is_null($creator)?'n/a':$creator->getName(), | ||
| 427 | - 'checkedoutby'=>is_null($checkedoutby)?'n/a':$checkedoutby->getName(), | ||
| 428 | - 'modifiedby'=>is_null($modifiedby)?'n/a':$modifiedby->getName(), | ||
| 429 | - 'filename'=>$document->getName(), | 517 | + 'creator'=>is_null($created_by)?'n/a':$created_by->getName(), |
| 518 | + 'checkedoutby'=>is_null($checked_out_by)?'n/a':$checked_out_by->getName(), | ||
| 519 | + 'modifiedby'=>is_null($modified_by)?'n/a':$modified_by->getName(), | ||
| 520 | + 'filename'=>$document->getFileName(), | ||
| 430 | 'size'=>$document->getFileSize(), | 521 | 'size'=>$document->getFileSize(), |
| 431 | 'major_version'=>$document->getMajorVersionNumber(), | 522 | 'major_version'=>$document->getMajorVersionNumber(), |
| 432 | 'minor_version'=>$document->getMinorVersionNumber(), | 523 | 'minor_version'=>$document->getMinorVersionNumber(), |
| @@ -438,6 +529,8 @@ class KTAPI_Folder extends KTAPI_FolderItem | @@ -438,6 +529,8 @@ class KTAPI_Folder extends KTAPI_FolderItem | ||
| 438 | 'workflow'=>$workflow, | 529 | 'workflow'=>$workflow, |
| 439 | 'workflow_state'=>$state | 530 | 'workflow_state'=>$state |
| 440 | ); | 531 | ); |
| 532 | + | ||
| 533 | + } | ||
| 441 | } | 534 | } |
| 442 | } | 535 | } |
| 443 | 536 |
ktwebservice/webservice.php
| @@ -127,7 +127,7 @@ class KTWebService | @@ -127,7 +127,7 @@ class KTWebService | ||
| 127 | // Caching was giving some problems, so disable it. | 127 | // Caching was giving some problems, so disable it. |
| 128 | 128 | ||
| 129 | $config = &KTConfig::getSingleton(); | 129 | $config = &KTConfig::getSingleton(); |
| 130 | - $this->version = $config->get('webservice/version', 2); | 130 | + $this->version = $config->get('webservice/version', LATEST_WEBSERVICE_VERSION); |
| 131 | $this->mustDebug = $config->get('webservice/debug', false); | 131 | $this->mustDebug = $config->get('webservice/debug', false); |
| 132 | $this->ktapi = null; | 132 | $this->ktapi = null; |
| 133 | 133 | ||
| @@ -175,6 +175,46 @@ class KTWebService | @@ -175,6 +175,46 @@ class KTWebService | ||
| 175 | 'items' =>"{urn:$this->namespace}kt_folder_items" | 175 | 'items' =>"{urn:$this->namespace}kt_folder_items" |
| 176 | ); | 176 | ); |
| 177 | 177 | ||
| 178 | + if ($this->version >= 2) | ||
| 179 | + { | ||
| 180 | + $this->__typedef["{urn:$this->namespace}kt_folder_item"] = | ||
| 181 | + array( | ||
| 182 | + 'id' => 'int', | ||
| 183 | + 'item_type' => 'string', | ||
| 184 | + | ||
| 185 | + 'title' => 'string', | ||
| 186 | + 'filename' => 'string', | ||
| 187 | + 'filesize' => 'string', | ||
| 188 | + | ||
| 189 | + 'created_by' => 'string', | ||
| 190 | + 'created_date' => 'string', | ||
| 191 | + | ||
| 192 | + 'checked_out_by' => 'string', | ||
| 193 | + 'checked_out_date' => 'string', | ||
| 194 | + | ||
| 195 | + 'modified_by' => 'string', | ||
| 196 | + 'modified_date' => 'string', | ||
| 197 | + | ||
| 198 | + 'owned_by' => 'string', | ||
| 199 | + | ||
| 200 | + 'version' => 'string', | ||
| 201 | + | ||
| 202 | + 'immutable'=>'boolean', | ||
| 203 | + 'permissions' => 'string', | ||
| 204 | + | ||
| 205 | + 'workflow'=>'string', | ||
| 206 | + 'workflow_state'=>'string', | ||
| 207 | + | ||
| 208 | + 'mime_type' => 'string', | ||
| 209 | + 'mime_icon_path' => 'string', | ||
| 210 | + 'mime_display' => 'string', | ||
| 211 | + | ||
| 212 | + 'storage_path' => 'string', | ||
| 213 | + | ||
| 214 | + 'items' =>"{urn:$this->namespace}kt_folder_items" | ||
| 215 | + ); | ||
| 216 | + } | ||
| 217 | + | ||
| 178 | $this->__typedef["{urn:$this->namespace}kt_folder_items"] = | 218 | $this->__typedef["{urn:$this->namespace}kt_folder_items"] = |
| 179 | array( | 219 | array( |
| 180 | array( | 220 | array( |