diff --git a/ktwebservice/KTUploadManager.inc.php b/ktwebservice/KTUploadManager.inc.php index 9888b12..32dd4fd 100644 --- a/ktwebservice/KTUploadManager.inc.php +++ b/ktwebservice/KTUploadManager.inc.php @@ -64,7 +64,7 @@ class KTUploadManager function set_session($session) { $user = &$session->get_user(); - $this->userid=$user->getId(); + $this->userid=$_SESSION['userID']; $this->session = $session->get_session(); } @@ -119,7 +119,7 @@ class KTUploadManager $now=date('Y-m-d H:i:s'); $now_str=date('YmdHis'); - $newtempfile = realpath($this->temp_dir) . '/' . $this->userid . '-'. $now_str; + $newtempfile = realpath($this->temp_dir) . '/' . $_SESSION['userID'] . '-'. $now_str; if (OS_WINDOWS) { $tempfile = str_replace('/','\\',$tempfile); @@ -145,7 +145,15 @@ class KTUploadManager return $id; } global $php_errormsg; - $result = @move_uploaded_file($tempfile, $newtempfile); + if (is_uploaded_file($tempfile)) + { + $result = @move_uploaded_file($tempfile, $newtempfile); + } + else + { + $result = @rename($tempfile, $newtempfile); + } + $tmp = $php_errormsg; if ($result == false) diff --git a/ktwebservice/webservice.php b/ktwebservice/webservice.php index ef8223d..22ff192 100644 --- a/ktwebservice/webservice.php +++ b/ktwebservice/webservice.php @@ -59,7 +59,18 @@ if (defined('HAS_SEARCH_FUNCTIONALITY')) require_once(KT_DIR . '/search2/search/search.inc.php'); } -// TODO: Test getting files/metadata based on versioning works and implementation is consistent. +// TODO: allow downloading of metadata versions +// TODO: allow downloading of document versions +// TODO: chunking search results +// TODO: add basic permissions management - add permissions to folder based on user/groups +// TODO: refactor!!! download manager, split this file into a few smaller ones, etc +// TOdO: define more reason codes! +// TODO: get_folder must have a 'create' option +// TODO: redo metadata encoding +// TODO: unit tests - metadata - test return values in selectin - list/tree +// TODO: ktwsapi/php must be made compatible with v2/v3 + +// NOTE: some features are not implemented yet. most expected for v3. e.g. oem_document_no, custom_document_no, download($version)., get_metadata($version) // Status Codes as defined in the specification. @@ -67,16 +78,24 @@ define('KTWS_SUCCESS', 0); define('KTWS_ERR_INVALID_SESSION', 1); define('KTWS_ERR_AUTHENTICATION_ERROR', 2); define('KTWS_ERR_INSUFFICIENT_PERMISSIONS', 3); + define('KTWS_ERR_FILE_NOT_FOUND', 10); define('KTWS_ERR_INVALID_FILENAME', 20); + define('KTWS_ERR_INVALID_DOCUMENT', 21); define('KTWS_ERR_INVALID_FOLDER', 22); define('KTWS_ERR_INVALID_METADATA', 23); define('KTWS_ERR_INVALID_REASON', 24); define('KTWS_ERR_INVALID_DEPTH', 25); +define('KTWS_ERR_INVALID_DOCUMENT_TYPE', 26); + define('KTWS_ERR_PROBLEM', 98); define('KTWS_ERR_DB_PROBLEM', 99); +if (!defined('LATEST_WEBSERVICE_VERSION')) +{ + define('LATEST_WEBSERVICE_VERSION',2); +} function bool2str($bool) { @@ -120,7 +139,7 @@ class KTWebService var $version; var $ktapi; - + static $wsclass = 'KTWebService'; function KTWebService() { @@ -396,7 +415,6 @@ class KTWebService 'parent_id' => 'int' ); - $this->__typedef["{urn:$this->namespace}kt_metadata_selection"] = array( array( @@ -404,7 +422,6 @@ class KTWebService ) ); - $this->__typedef["{urn:$this->namespace}kt_metadata_field"] = array( 'name' => 'string', @@ -478,7 +495,6 @@ class KTWebService ); } - $this->__typedef["{urn:$this->namespace}kt_linked_document"] = array( 'document_id'=>'int', @@ -539,7 +555,6 @@ class KTWebService ); } - $this->__typedef["{urn:$this->namespace}kt_document_version_history"] = array( array( @@ -582,7 +597,6 @@ class KTWebService ) ); - $this->__typedef["{urn:$this->namespace}kt_client_policies_response"] = array( 'status_code' => 'int', @@ -593,7 +607,6 @@ class KTWebService /* methods */ if (defined('HAS_SEARCH_FUNCTIONALITY')) { - $this->__dispatch_map['search'] = array( 'in' => array('session_id' => 'string', 'search'=>'string' ,'options'=>'string'), 'out' => array('return' => "{urn:$this->namespace}kt_search_response" ), @@ -612,7 +625,6 @@ class KTWebService 'out' => array('return' => "{urn:$this->namespace}kt_response" ), ); - // logout $this->__dispatch_map['logout'] = array('in' => array('session_id' => 'string' ), @@ -625,12 +637,22 @@ class KTWebService 'out' => array('return' => "{urn:$this->namespace}kt_folder_detail"), ); + if ($this->version >=3) + { + $this->__dispatch_map['get_folder_detail']['in'] = array('session_id' => 'string', 'folder_id' => 'int', 'create'=>'boolean' ); + } + // get_folder_detail_by_name $this->__dispatch_map['get_folder_detail_by_name'] = array('in' => array('session_id' => 'string', 'folder_name' => 'string' ), 'out' => array('return' => "{urn:$this->namespace}kt_folder_detail"), ); + if ($this->version >=3) + { + $this->__dispatch_map['get_folder_detail_by_name']['in'] = array('session_id' => 'string', 'folder_id' => 'int', 'create'=>'boolean' ); + } + // get_folder_contents $this->__dispatch_map['get_folder_contents'] = array('in' => array('session_id'=>'string','folder_id'=>'int','depth'=>'int','what'=>'string'), @@ -653,7 +675,6 @@ class KTWebService ); } - // delete_folder $this->__dispatch_map['delete_folder'] = array('in' => array('session_id'=>'string','folder_id'=>'int','reason' =>'string'), @@ -708,7 +729,6 @@ class KTWebService $this->__dispatch_map['get_document_detail']['in'] = array('session_id' => 'string', 'document_id' => 'int', 'detail'=>'string' ); } - // checkin_document $this->__dispatch_map['checkin_document'] = array('in' => array('session_id'=>'string','document_id'=>'int','filename'=>'string','reason' =>'string','tempfilename' =>'string', 'major_update'=>'boolean' ), @@ -739,7 +759,6 @@ class KTWebService array('in' => array('session_id'=>'string','document_id'=>'int','filename'=>'string','reason' =>'string','tempfilename' =>'string', 'major_update'=>'boolean', 'metadata'=>"{urn:$this->namespace}kt_metadata_fieldsets",'sysdata'=>"{urn:$this->namespace}kt_sysdata" ), 'out' => array( 'return' => "{urn:$this->namespace}kt_document_detail" ) ); - } // add_document @@ -774,12 +793,8 @@ class KTWebService array('in' => array('session_id'=>'string','folder_id'=>'int','title'=>'string','filename'=>'string','documentype' =>'string','tempfilename' =>'string', 'metadata'=>"{urn:$this->namespace}kt_metadata_fieldsets",'sysdata'=>"{urn:$this->namespace}kt_sysdata" ), 'out' => array( 'return' => "{urn:$this->namespace}kt_document_detail" ) ); - - } - - // get_document_detail_by_name $this->__dispatch_map['get_document_detail_by_name'] = array('in' => array('session_id' => 'string', 'document_name' => 'string', 'what'=>'string' ), @@ -815,7 +830,6 @@ class KTWebService ); } - // checkout_small_document $this->__dispatch_map['checkout_small_document'] = array('in' => array('session_id'=>'string','document_id'=>'int','reason' =>'string','download' => 'boolean'), @@ -827,7 +841,6 @@ class KTWebService $this->__dispatch_map['checkout_small_document']['out'] = array('return' => "{urn:$this->namespace}kt_document_detail" ); } - // checkout_base64_document $this->__dispatch_map['checkout_base64_document'] = array('in' => array('session_id'=>'string','document_id'=>'int','reason' =>'string','download' => 'boolean'), @@ -840,7 +853,6 @@ class KTWebService $this->__dispatch_map['checkout_base64_document']['out'] = array('return' => "{urn:$this->namespace}kt_document_detail" ); } - // undo_document_checkout $this->__dispatch_map['undo_document_checkout'] = array('in' => array('session_id'=>'string','document_id'=>'int','reason' =>'string'), @@ -852,8 +864,6 @@ class KTWebService $this->__dispatch_map['undo_document_checkout']['out'] = array('return' => "{urn:$this->namespace}kt_document_detail" ); } - - // download_document $this->__dispatch_map['download_document'] = array('in' => array('session_id'=>'string','document_id'=>'int' ), @@ -873,13 +883,19 @@ class KTWebService 'alias' => 'download_small_document' ); + if ($this->version >= 3) + { + $this->__dispatch_map['download_document']['in'] = array('session_id'=>'string','document_id'=>'int', 'version'=>'string' ); + $this->__dispatch_map['download_small_document']['in'] = array('session_id'=>'string','document_id'=>'int', 'version'=>'string' ); + $this->__dispatch_map['download_base64_document']['in'] = array('session_id'=>'string','document_id'=>'int', 'version'=>'string' ); + } + // delete_document $this->__dispatch_map['delete_document'] = array('in' => array('session_id'=>'string','document_id'=>'int','reason'=>'string'), 'out' => array( 'return' => "{urn:$this->namespace}kt_response" ), ); - // change_document_owner $this->__dispatch_map['change_document_owner'] = array('in' => array('session_id'=>'string','document_id'=>'int','username'=>'string','reason'=>'string'), @@ -891,7 +907,6 @@ class KTWebService $this->__dispatch_map['change_document_owner']['out'] = array( 'return' => "{urn:$this->namespace}kt_document_detail" ); } - // copy_document $this->__dispatch_map['copy_document'] = array('in' => array('session_id'=>'string','document_id'=>'int','folder_id'=>'int','reason'=>'string','newtitle'=>'string','newfilename'=>'string'), @@ -931,7 +946,6 @@ class KTWebService $this->__dispatch_map['rename_document_filename']['out'] = array( 'return' => "{urn:$this->namespace}kt_document_detail" ); } - // change_document_type $this->__dispatch_map['change_document_type'] = array('in' => array('session_id'=>'string','document_id'=>'int', 'documenttype'=>'string' ), @@ -989,6 +1003,11 @@ class KTWebService 'out' => array( 'return' => "{urn:$this->namespace}kt_metadata_response" ), ); + if ($this->version >= 3) + { + $this->__dispatch_map['get_document_metadata']['in'] = array('session_id'=>'string','document_id'=>'int', 'version'=>'string'); + } + // get_document_type_metadata $this->__dispatch_map['get_document_type_metadata'] = array('in' => array('session_id'=>'string','document_type'=>'string' ), @@ -1007,17 +1026,14 @@ class KTWebService 'out' => array( 'return' => "{urn:$this->namespace}kt_document_detail" ) ); - } - //get_document_workflow_transitions $this->__dispatch_map['get_document_workflow_transitions'] = array('in' => array('session_id'=>'string','document_id'=>'int' ), 'out' => array( 'return' => "{urn:$this->namespace}kt_workflow_transitions_response" ), ); - //get_document_workflow_state $this->__dispatch_map['get_document_workflow_state'] = array('in' => array('session_id'=>'string','document_id'=>'int' ), @@ -1030,7 +1046,6 @@ class KTWebService 'out' => array( 'return' => "{urn:$this->namespace}kt_document_transaction_history_response" ), ); - // get_document_version_history $this->__dispatch_map['get_document_version_history'] = array('in' => array('session_id'=>'string','document_id'=>'int' ), @@ -1058,10 +1073,18 @@ class KTWebService if ($this->version >= 2) { $this->__dispatch_map['get_client_policies']['in'] = array('session_id'=>'string', 'client'=>'string'); - } + } - + function get() + { + static $ws = null; + if (is_null($ws)) + { + $classname = KTWebService::$wsclass; + $ws = new $classname(); + } + return $ws; } function debug($msg, $function = null, $level=0) @@ -1091,6 +1114,14 @@ class KTWebService } } + function _status($code, $message='') + { + if (PEAR::isError($message)) + { + $message = $message->getMessage(); + } + return array('status_code'=>$code, 'message'=>$message); + } /** * This is used by all exposed functions dependant on the sessionid. @@ -1111,12 +1142,7 @@ class KTWebService if ( PEAR::isError($session)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_SESSION, - 'message'=>$session->getMessage() - ); - - return $response; + return KTWebService::_status(KTWS_ERR_INVALID_SESSION,$session); } $this->ktapi = $kt; return $kt; @@ -1130,10 +1156,7 @@ class KTWebService */ function anonymous_login($ip=null) { - $response = array( - 'status_code'=>KTWS_ERR_AUTHENTICATION_ERROR, - 'message'=>'', - ); + $response = KTWebService::_status(KTWS_ERR_AUTHENTICATION_ERROR); $kt = new KTAPI(); @@ -1165,10 +1188,7 @@ class KTWebService */ function login($username, $password, $ip=null) { - $response = array( - 'status_code'=>KTWS_ERR_AUTHENTICATION_ERROR, - 'message'=>'', - ); + $response = KTWebService::_status(KTWS_ERR_AUTHENTICATION_ERROR); $kt = new KTAPI(); @@ -1205,10 +1225,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_SESSION, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_SESSION); $session = &$kt->get_session(); if (PEAR::isError($session)) @@ -1243,10 +1260,7 @@ class KTWebService $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); $this->debug("get_folder_detail - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_detail", $response); } @@ -1277,10 +1291,7 @@ class KTWebService $folder = &$kt->get_folder_by_name($folder_name); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); $this->debug("get_folder_detail_by_name - cannot get folder $folder_name - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_detail", $response); } @@ -1290,48 +1301,6 @@ class KTWebService $detail['message']=''; return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_detail", $detail); - - } - - /** - * Encodes an array as kt_folder_item - * - * @param array $item - * @param string $name - * @return SOAP_Value of kt_folder_item - * @access private - * @static - */ - function _encode_folder_item($item, $name='item') - { - $item['id'] = (int) $item['id']; - - if (!empty($item['items'])) - { - $item['items'] = KTWebService::_encode_folder_items($item['items']); - } - - return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_item", $item); - } - - /** - * Encodes an array as kt_folder_items - * - * @param array $items - * @param string $name - * @return SOAP_Value of kt_folder_items - * @access private - * @static - */ - function _encode_folder_items($items, $name='items') - { - $encoded=array(); - foreach($items as $item) - { - $encoded[] = KTWebService::_encode_folder_item($item); - } - - return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_items", $encoded); } /** @@ -1343,12 +1312,17 @@ class KTWebService * @access private * @static */ - function _encode_folder_contents($contents, $name='return') + function _encode_folder_items($items) { - $contents['items'] = KTWebService::_encode_folder_items($contents['items']); - return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_contents", $contents); - } + foreach($items as $key=>$item) + { + $item['id'] = (int) $item['id']; + $item['items'] = KTWebService::_encode_folder_items($item['items']); + $items[$key] = new SOAP_Value('item',"{urn:$this->namespace}kt_folder_item", $item); + } + return new SOAP_Value('items',"{urn:$this->namespace}kt_folder_items", $items); + } /** * Returns the contents of a folder. @@ -1371,10 +1345,8 @@ class KTWebService $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); + $this->debug("get_folder_contents - cannot get folderid $folder_id - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_contents", $response); } @@ -1387,10 +1359,10 @@ class KTWebService 'folder_id' => $folder_id+0, 'folder_name'=>$folder->get_folder_name(), 'full_path'=>$folder->get_full_path(), - 'items'=>$listing + 'items'=>KTWebService::_encode_folder_items($listing) ); - return KTWebService::_encode_folder_contents($contents); + return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_contents", $contents); } /** @@ -1414,10 +1386,8 @@ class KTWebService $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); + $this->debug("create_folder - cannot get folderid $folder_id - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_detail", $response); @@ -1426,10 +1396,7 @@ class KTWebService $newfolder = &$folder->add_folder($folder_name); if (PEAR::isError($newfolder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$newfolder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$newfolder); $this->debug("create_folder - cannot create folder $folder_name - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_detail", $response); @@ -1459,10 +1426,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER); $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) @@ -1503,10 +1467,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER); $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) @@ -1548,10 +1509,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER); $src_folder = &$kt->get_folder_by_id($source_id); if (PEAR::isError($src_folder)) @@ -1603,10 +1561,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER); $src_folder = &$kt->get_folder_by_id($source_id); if (PEAR::isError($src_folder)) @@ -1653,10 +1608,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_document_types_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_PROBLEM, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_PROBLEM); $result = $kt->get_documenttypes(); if (PEAR::isError($result)) @@ -1683,10 +1635,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_document_types_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_PROBLEM, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_PROBLEM); $result = $kt->get_document_link_types(); if (PEAR::isError($result)) @@ -1723,10 +1672,8 @@ class KTWebService $document = $kt->get_document_by_id($document_id); if (PEAR::isError($document)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>$document->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,$document); + $this->debug("get_document_detail - cannot get documentid $document_id - " . $document->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); @@ -1837,10 +1784,9 @@ class KTWebService function get_document_detail_by_name($session_id, $folder_id, $document_name, $what='T', $detail='') { $this->debug("get_document_detail_by_name('$session_id','$document_name','$what','$detail')"); - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER); + if (empty($document_name)) { $response['message'] = 'Document_name is empty.'; @@ -1891,8 +1837,6 @@ class KTWebService return $this->get_document_detail($session_id, $document->documentid, $detail); } - - /** * Adds a document to the repository. * @@ -1918,10 +1862,7 @@ class KTWebService $upload_manager = new KTUploadManager(); if (!$upload_manager->is_valid_temporary_file($tempfilename)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>"Invalid temporary file: $tempfilename. Not compatible with $upload_manager->temp_dir." - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,"Invalid temporary file: $tempfilename. Not compatible with $upload_manager->temp_dir."); $this->debug("add_document - Invalid temporary file: $tempfilename. Not compatible with $upload_manager->temp_dir.", $session_id); @@ -1931,10 +1872,7 @@ class KTWebService $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); $this->debug("add_document - cannot get folder $folder_id - " . $folder->getMessage(), $session_id); @@ -1944,13 +1882,8 @@ class KTWebService $document = &$folder->add_document($title, $filename, $documenttype, $tempfilename); if (PEAR::isError($document)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>$document->getMessage() - ); - + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,$document); $this->debug("add_document - cannot add document - " . $document->getMessage(), $session_id); - return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); } @@ -2029,8 +1962,6 @@ class KTWebService return $update_result; } - - /** * Adds a document to the repository. * @@ -2054,10 +1985,7 @@ class KTWebService $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_FOLDER, - 'message'=>$folder->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_FOLDER,$folder); $this->debug("add_small_document - cannot get folderid $folder_id - " . $folder->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); } @@ -2067,26 +1995,21 @@ class KTWebService if (PEAR::isError($tempfilename)) { $reason = $tempfilename->getMessage(); - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'Cannot write to temp file: ' + $tempfilename . ". Reason: $reason" - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,'Cannot write to temp file: ' + $tempfilename . ". Reason: $reason"); $this->debug("add_small_document - cannot write $tempfilename. Reason: $reason", $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); } // simulate the upload - $upload_manager->uploaded($filename,$tempfilename, 'A'); + $tempfilename = $upload_manager->uploaded($filename,$tempfilename, 'A'); // add the document $document = &$folder->add_document($title, $filename, $documenttype, $tempfilename); if (PEAR::isError($document)) { - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>$document->getMessage() - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,$document); + $this->debug("add_small_document - cannot add document - " . $document->getMessage(), $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); } @@ -2118,12 +2041,9 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'', - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); - // we need to add some security to ensure that people don't frig the checkin process to access restricted files. + // we need to add some security to ensure that people don't frig the checkin process to access restricted files. // possibly should change 'tempfilename' to be a hash or id of some sort if this is troublesome. $upload_manager = new KTUploadManager(); if (!$upload_manager->is_valid_temporary_file($tempfilename)) @@ -2155,9 +2075,8 @@ class KTWebService return $this->get_document_detail($session_id, $document_id); } - - function checkin_small_document_with_metadata($session_id, $document_id, $filename, $reason, $base64, $major_update, $metadata, $sysdata) - { + function checkin_small_document_with_metadata($session_id, $document_id, $filename, $reason, $base64, $major_update, $metadata, $sysdata) + { $add_result = $this->checkin_small_document($session_id, $document_id, $filename, $reason, $base64, $major_update); $status_code = $add_result->value['status_code']; @@ -2187,10 +2106,10 @@ class KTWebService } return $update_result; - } + } - function checkin_document_with_metadata($session_id, $document_id, $filename, $reason, $tempfilename, $major_update, $metadata, $sysdata) - { + function checkin_document_with_metadata($session_id, $document_id, $filename, $reason, $tempfilename, $major_update, $metadata, $sysdata) + { $add_result = $this->checkin_document($session_id, $document_id, $filename, $reason, $tempfilename, $major_update); $status_code = $add_result->value['status_code']; @@ -2220,7 +2139,7 @@ class KTWebService } return $update_result; - } + } /** @@ -2243,27 +2162,21 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'', - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $upload_manager = new KTUploadManager(); $tempfilename = $upload_manager->store_base64_file($base64, 'su_'); if (PEAR::isError($tempfilename)) { $reason = $tempfilename->getMessage(); - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'Cannot write to temp file: ' + $tempfilename . ". Reason: $reason" - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT,'Cannot write to temp file: ' + $tempfilename . ". Reason: $reason"); $this->debug("checkin_small_document - cannot write $tempfilename. Reason: $reason", $session_id); return new SOAP_Value('return',"{urn:$this->namespace}kt_document_detail", $response); } // simulate the upload - $upload_manager->uploaded($filename,$tempfilename, 'C'); + $tempfilename = $upload_manager->uploaded($filename,$tempfilename, 'C'); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2302,10 +2215,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2367,10 +2277,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2441,10 +2348,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2482,7 +2386,7 @@ class KTWebService * @return kt_response. status_code can be KTWS_ERR_INVALID_SESSION, KTWS_ERR_INVALID_DOCUMENT or KTWS_SUCCESS */ - function download_document($session_id, $document_id) + function download_document($session_id, $document_id, $version=null) { $this->debug("download_document('$session_id',$document_id)"); @@ -2492,10 +2396,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2534,7 +2435,7 @@ class KTWebService * @return kt_response. status_code can be KTWS_ERR_INVALID_SESSION, KTWS_ERR_INVALID_DOCUMENT or KTWS_SUCCESS */ - function download_small_document($session_id, $document_id) + function download_small_document($session_id, $document_id, $version=null) { $this->debug("download_small_document('$session_id',$document_id)"); @@ -2544,10 +2445,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2606,10 +2504,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2656,10 +2552,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2673,6 +2567,7 @@ class KTWebService $result = $document->change_document_type($documenttype); if (PEAR::isError($result)) { + $response['status_code'] = KTWS_ERR_INVALID_DOCUMENT_TYPE; $response['message'] = $result->getMessage(); $this->debug("change_document_type - cannot change type - " . $result->getMessage(), $session_id); @@ -2708,10 +2603,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2766,10 +2659,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2823,10 +2714,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2876,10 +2765,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2902,7 +2789,6 @@ class KTWebService return $this->get_document_detail($session_id, $document_id); } - return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $response); } @@ -2932,10 +2818,7 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -2985,10 +2868,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3035,10 +2916,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3088,10 +2967,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3127,9 +3004,8 @@ class KTWebService * @access private * @static */ - function _encode_metadata_fields($fields, $name='fields') + function _encode_metadata_fields($fields) { - foreach($fields as $key=>$field) { $selection = $field['selection']; @@ -3144,17 +3020,17 @@ class KTWebService { $sitem['parent_id'] = (int) $sitem['parent_id']; } - $selection[$skey] = new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_selection_item", $sitem); + $selection[$skey] = new SOAP_Value('item',"{urn:$this->namespace}kt_metadata_selection_item", $sitem); } - $field['selection'] = new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_selection", $selection); + $field['selection'] = new SOAP_Value('selection',"{urn:$this->namespace}kt_metadata_selection", $selection); $field['required'] = is_null($field['required'])?false:(bool) $field['required']; - $fields[$key] = new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_field", $field); + $fields[$key] = new SOAP_Value('field',"{urn:$this->namespace}kt_metadata_field", $field); } - return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_fields", $fields); + return new SOAP_Value('fields',"{urn:$this->namespace}kt_metadata_fields", $fields); } /** @@ -3219,7 +3095,6 @@ class KTWebService } return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_response", $response); - } /** @@ -3229,7 +3104,6 @@ class KTWebService * @param string $document_type * @return kt_metadata_response */ - function get_document_type_metadata($session_id, $document_type) { $this->debug("get_document_type_metadata('$session_id','$document_type')"); @@ -3238,10 +3112,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_metadata_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $metadata = $kt->get_document_type_metadata($document_type); if (PEAR::isError($metadata)) @@ -3298,10 +3170,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_metadata_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3366,10 +3236,8 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3387,7 +3255,6 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $response); } - if ($this->version >= 2) { $result = $document->update_sysdata($sysdata); @@ -3398,13 +3265,11 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $response); } - return $this->get_document_detail($session_id, $document_id, 'M'); } $response['status_code'] = KTWS_SUCCESS; return new SOAP_Value('return',"{urn:$this->namespace}$responseType", $response); - } /** @@ -3422,10 +3287,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_workflow_transitions_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3471,10 +3333,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3514,7 +3373,6 @@ class KTWebService { $history[$key] = new SOAP_Value('item',"{urn:$this->namespace}kt_document_transaction_history_item", $item); } - return new SOAP_Value($name,"{urn:$this->namespace}kt_document_transaction_history", $history); } @@ -3533,10 +3391,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_document_transaction_history_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3576,7 +3431,6 @@ class KTWebService { $history[$key] = new SOAP_Value('item',"{urn:$this->namespace}kt_document_version_history_item", $item); } - return new SOAP_Value($name,"{urn:$this->namespace}kt_document_version_history", $history); } @@ -3596,10 +3450,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_document_version_history_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) @@ -3624,7 +3475,6 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_document_version_history_response", $response); } - /** * Returns a list of linked documents * @@ -3678,7 +3528,6 @@ class KTWebService return new SOAP_Value($name,"{urn:$this->namespace}kt_linked_documents", $links); } - /** * Removes a link between documents * @@ -3696,10 +3545,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($parent_document_id); if (PEAR::isError($document)) @@ -3748,10 +3594,7 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, - 'message'=>'' - ); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); $document = &$kt->get_document_by_id($parent_document_id); if (PEAR::isError($document)) @@ -3846,7 +3689,6 @@ class KTWebService ), ); - $response['policies'] = $this->_encode_client_policies($policies); $response['message'] = 'Knowledgetree client policies retrieval succeeded.'; $response['status_code'] = KTWS_SUCCESS; @@ -3871,11 +3713,9 @@ class KTWebService { return new SOAP_Value('return',"{urn:$this->namespace}kt_search_response", $kt); } - $response=array( - 'status_code'=>KTWS_ERR_PROBLEM, - 'message'=>'', - 'hits'=>array() - ); + + $response = KTWebService::_status(KTWS_ERR_PROBLEM); + $response['hits'] = array(); if (!defined('HAS_SEARCH_FUNCTIONALITY')) { @@ -3904,7 +3744,6 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_search_response", $response); } - /** * The main json request processing function. * @@ -4066,7 +3905,7 @@ class KTWebService } -$webservice = new KTWebService(); +$webservice = KTWebService::get(); $webservice->run(); ?> \ No newline at end of file