Commit bdf9a2c026a85df782614112cbc7f9ca52aa9a8b

Authored by conradverm
1 parent bd9cb133

"KTS-1973"

"Webservice error when calling get_folder_contents fom VB.NET"
Fixed. Types for metadata and history info has been catered for.

Reviewed By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@6627 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 339 additions and 34 deletions
ktwebservice/webservice.php
... ... @@ -106,9 +106,7 @@ class KTWebService
106 106 'folder_name' => 'string',
107 107 'parent_id' => 'int',
108 108 'full_path' => 'string',
109   - );
110   -
111   -
  109 + );
112 110  
113 111 $this->__typedef["{urn:$this->namespace}kt_folder_item"] =
114 112 array(
... ... @@ -127,14 +125,14 @@ class KTWebService
127 125 'mime_icon_path' => 'string',
128 126 'mime_display' => 'string',
129 127 'items' =>"{urn:$this->namespace}kt_folder_items"
130   - );
  128 + );
131 129  
132 130 $this->__typedef["{urn:$this->namespace}kt_folder_items"] =
133 131 array(
134 132 array(
135 133 'item' => "{urn:$this->namespace}kt_folder_item"
136 134 )
137   - );
  135 + );
138 136  
139 137  
140 138 $this->__typedef["{urn:$this->namespace}kt_folder_contents"] =
... ... @@ -145,7 +143,7 @@ class KTWebService
145 143 'folder_name' => 'string' ,
146 144 'full_path' => 'string' ,
147 145 'items' => "{urn:$this->namespace}kt_folder_items",
148   - );
  146 + );
149 147  
150 148 $this->__typedef["{urn:$this->namespace}kt_document_detail"] =
151 149 array(
... ... @@ -166,7 +164,7 @@ class KTWebService
166 164 'checkout_by' => 'string',
167 165 'full_path' => 'string',
168 166 // 'metadata' => "{urn:$this->namespace}kt_metadata_fieldsets"
169   - );
  167 + );
170 168  
171 169 $this->__typedef["{urn:$this->namespace}kt_metadata_selection_item"] =
172 170 array(
... ... @@ -174,7 +172,7 @@ class KTWebService
174 172 'name' => 'string',
175 173 'value' => 'string',
176 174 'parent_id' => 'int'
177   - );
  175 + );
178 176  
179 177  
180 178 $this->__typedef["{urn:$this->namespace}kt_metadata_selection"] =
... ... @@ -182,7 +180,7 @@ class KTWebService
182 180 array(
183 181 'item' => "{urn:$this->namespace}kt_metadata_selection_item"
184 182 )
185   - );
  183 + );
186 184  
187 185  
188 186 $this->__typedef["{urn:$this->namespace}kt_metadata_field"] =
... ... @@ -192,7 +190,7 @@ class KTWebService
192 190 'value' => 'string' ,
193 191 'description' => 'string' ,
194 192 'control_type' => 'string' ,
195   - 'selection' => "{urn:$this->namespace}kt_metadata_selection" ,
  193 + 'selection' => "{urn:$this->namespace}kt_metadata_selection"
196 194 );
197 195  
198 196 $this->__typedef["{urn:$this->namespace}kt_metadata_fields"] =
... ... @@ -201,6 +199,7 @@ class KTWebService
201 199 'field' => "{urn:$this->namespace}kt_metadata_field"
202 200 )
203 201 );
  202 +
204 203 $this->__typedef["{urn:$this->namespace}kt_metadata_fieldset"] =
205 204 array(
206 205 'fieldset' => 'string',
... ... @@ -213,7 +212,7 @@ class KTWebService
213 212 array(
214 213 'fieldset' => "{urn:$this->namespace}kt_metadata_fieldset"
215 214 )
216   - );
  215 + );
217 216  
218 217 $this->__typedef["{urn:$this->namespace}kt_metadata_response"] =
219 218 array(
... ... @@ -227,14 +226,14 @@ class KTWebService
227 226 array(
228 227 'transition' => 'string'
229 228 )
230   - );
  229 + );
231 230  
232 231 $this->__typedef["{urn:$this->namespace}kt_document_transitions_response"] =
233 232 array(
234 233 'status_code'=>'int',
235 234 'message'=>'string',
236 235 'metadata' => "{urn:$this->namespace}kt_document_transitions"
237   - );
  236 + );
238 237  
239 238 $this->__typedef["{urn:$this->namespace}kt_document_transaction_history_item"] =
240 239 array(
... ... @@ -244,16 +243,14 @@ class KTWebService
244 243 'comment' => 'string',
245 244 'datetime' => 'string',
246 245  
247   - );
248   -
  246 + );
249 247  
250 248 $this->__typedef["{urn:$this->namespace}kt_document_transaction_history"] =
251 249 array(
252 250 array(
253 251 'history' => "{urn:$this->namespace}kt_document_transaction_history_item"
254 252 )
255   - );
256   -
  253 + );
257 254  
258 255 $this->__typedef["{urn:$this->namespace}kt_document_transaction_history_response"] =
259 256 array(
... ... @@ -267,16 +264,14 @@ class KTWebService
267 264 'user'=>'int',
268 265 'metadata_version'=>'string',
269 266 'content_version'=>'string',
270   - );
271   -
  267 + );
272 268  
273 269 $this->__typedef["{urn:$this->namespace}kt_document_version_history"] =
274 270 array(
275 271 array(
276 272 'history' => "{urn:$this->namespace}kt_document_version_history_item"
277 273 )
278   - );
279   -
  274 + );
280 275  
281 276 $this->__typedef["{urn:$this->namespace}kt_document_version_history_response"] =
282 277 array(
... ... @@ -285,21 +280,19 @@ class KTWebService
285 280 'history' => "{urn:$this->namespace}kt_document_version_history"
286 281 );
287 282  
288   -
289 283 $this->__typedef["{urn:$this->namespace}kt_document_types_array"] =
290 284 array(
291 285 array(
292 286 'document_type' => 'string'
293 287 )
294   - );
  288 + );
295 289  
296 290 $this->__typedef["{urn:$this->namespace}kt_document_types_response"] =
297 291 array(
298 292 'status_code' => 'int',
299 293 'message' => 'string',
300 294 'document_types' => "{urn:$this->namespace}kt_document_types_array"
301   - );
302   -
  295 + );
303 296  
304 297 /* methods */
305 298  
... ... @@ -676,6 +669,63 @@ class KTWebService
676 669 }
677 670  
678 671 /**
  672 + * Encodes an array as kt_folder_item
  673 + *
  674 + * @param array $item
  675 + * @param string $name
  676 + * @return SOAP_Value of kt_folder_item
  677 + * @access private
  678 + * @static
  679 + */
  680 + function _encode_folder_item($item, $name='item')
  681 + {
  682 + $item['id'] = (int) $item['id'];
  683 +
  684 + if (!empty($item['items']))
  685 + {
  686 + $item['items'] = KTWebService::_encode_folder_items($item['items']);
  687 + }
  688 +
  689 + return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_item", $item);
  690 + }
  691 +
  692 + /**
  693 + * Encodes an array as kt_folder_items
  694 + *
  695 + * @param array $items
  696 + * @param string $name
  697 + * @return SOAP_Value of kt_folder_items
  698 + * @access private
  699 + * @static
  700 + */
  701 + function _encode_folder_items($items, $name='items')
  702 + {
  703 + $encoded=array();
  704 + foreach($items as $item)
  705 + {
  706 + $encoded[] = KTWebService::_encode_folder_item($item);
  707 + }
  708 +
  709 + return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_items", $encoded);
  710 + }
  711 +
  712 + /**
  713 + * Encodes an array as kt_folder_contents
  714 + *
  715 + * @param array $contents
  716 + * @param string $name
  717 + * @return SOAP_Value of kt_folder_contents
  718 + * @access private
  719 + * @static
  720 + */
  721 + function _encode_folder_contents($contents, $name='return')
  722 + {
  723 + $contents['items'] = KTWebService::_encode_folder_items($contents['items']);
  724 + return new SOAP_Value($name,"{urn:$this->namespace}kt_folder_contents", $contents);
  725 + }
  726 +
  727 +
  728 + /**
679 729 * Returns the contents of a folder.
680 730 *
681 731 * @param string $session_id
... ... @@ -713,7 +763,7 @@ class KTWebService
713 763 'items'=>$listing
714 764 );
715 765  
716   - return new SOAP_Value('return',"{urn:$this->namespace}kt_folder_contents", $contents);
  766 + return KTWebService::_encode_folder_contents($contents);
717 767 }
718 768  
719 769 /**
... ... @@ -1741,6 +1791,161 @@ class KTWebService
1741 1791 }
1742 1792  
1743 1793 /**
  1794 + * Encodes the array as a kt_metadata_selection_item
  1795 + *
  1796 + * @param aray $item
  1797 + * @param string $name
  1798 + * @return SOAP_Value of kt_metadata_selection_item
  1799 + * @access private
  1800 + * @static
  1801 + */
  1802 + function _encode_metadata_selection_item($item, $name='item')
  1803 + {
  1804 + if (!is_null($item['id']))
  1805 + {
  1806 + $item['id'] = (int) $item['id'];
  1807 + }
  1808 +
  1809 + if (!is_null($item['parent_id']))
  1810 + {
  1811 + $item['parent_id'] = (int) $item['parent_id'];
  1812 + }
  1813 +
  1814 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_selection_item", $item);
  1815 + }
  1816 +
  1817 + /**
  1818 + * Encode an array as kt_metadata_selection
  1819 + *
  1820 + * @param array $selection
  1821 + * @param string $name
  1822 + * @return SOAP_Value of kt_metadata_selection
  1823 + * @access private
  1824 + * @static
  1825 + */
  1826 +
  1827 + function _encode_metadata_selection($selection, $name='selection')
  1828 + {
  1829 + $encoded=array();
  1830 + foreach($selection as $field)
  1831 + {
  1832 + $encoded[] = KTWebService::_encode_metadata_selection_item($field);
  1833 + }
  1834 +
  1835 + if (empty($encoded))
  1836 + {
  1837 + $encoded=null;
  1838 + }
  1839 +
  1840 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_selection", $encoded);
  1841 + }
  1842 +
  1843 + /**
  1844 + * Encode an array as kt_metadata_field
  1845 + *
  1846 + * @param arra $field
  1847 + * @param string $name
  1848 + * @return SOAP_Value of kt_metadata_field
  1849 + * @access private
  1850 + * @static
  1851 + */
  1852 +
  1853 + function _encode_metadata_field($field, $name='field')
  1854 + {
  1855 + if (!empty($field['selection']))
  1856 + {
  1857 + $field['selection'] = KTWebService::_encode_metadata_selection($field['selection']);
  1858 + }
  1859 + if (!is_null($field['required']))
  1860 + {
  1861 + $field['required'] = (bool) $field['required'];
  1862 + }
  1863 +
  1864 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_field", $field);
  1865 + }
  1866 +
  1867 + /**
  1868 + * Encode an array as kt_metadata_fields
  1869 + *
  1870 + * @param array $fields
  1871 + * @param string $name
  1872 + * @return SOAP_Value of kt_metadata_fields
  1873 + * @access private
  1874 + * @static
  1875 + */
  1876 + function _encode_metadata_fields($fields, $name='fields')
  1877 + {
  1878 + $encoded=array();
  1879 + foreach($fields as $field)
  1880 + {
  1881 + $encoded[] = KTWebService::_encode_metadata_field($field);
  1882 + }
  1883 + if (empty($encoded))
  1884 + {
  1885 + $encoded=null;
  1886 + }
  1887 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_fields", $encoded);
  1888 + }
  1889 +
  1890 + /**
  1891 + * Encode an array as kt_metadata_fieldset
  1892 + *
  1893 + * @param array $fieldset
  1894 + * @param string $name
  1895 + * @return SOAP_Value of kt_metadata_fieldset
  1896 + * @access private
  1897 + * @static
  1898 + */
  1899 + function _encode_metadata_fieldset($fieldset, $name='fieldset')
  1900 + {
  1901 + if (!empty($fieldset['fields']))
  1902 + {
  1903 + $fieldset['fields'] = KTWebService::_encode_metadata_fields($fieldset['fields']);
  1904 + }
  1905 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_fieldset", $fieldset);
  1906 + }
  1907 +
  1908 + /**
  1909 + * Encode an array as kt_metadata_fieldsets
  1910 + *
  1911 + * @param array $fieldsets
  1912 + * @param string $name
  1913 + * @return SOAP_Value of kt_metadata_fieldsets
  1914 + * @access private
  1915 + * @static
  1916 + */
  1917 + function _encode_metadata_fieldsets($fieldsets, $name='metadata')
  1918 + {
  1919 + $encoded=array();
  1920 + foreach($fieldsets as $fieldset)
  1921 + {
  1922 + $encoded[] = KTWebService::_encode_metadata_fieldset($fieldset);
  1923 + }
  1924 + if (empty($encoded))
  1925 + {
  1926 + $encoded=null;
  1927 + }
  1928 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_fieldsets", $encoded);
  1929 + }
  1930 +
  1931 + /**
  1932 + * Encodes an array into a kt_metadata_response
  1933 + *
  1934 + * @param array $response
  1935 + * @param string $name
  1936 + * @return SOAP_Value of kt_metadata_response
  1937 + * @access private
  1938 + * @static
  1939 + */
  1940 + function _encode_metadata_response($response, $name='return')
  1941 + {
  1942 + $response['metadata'] = KTWebService::_encode_metadata_fieldsets($response['metadata']);
  1943 +
  1944 + return new SOAP_Value($name,"{urn:$this->namespace}kt_metadata_response", $response);
  1945 +
  1946 + }
  1947 +
  1948 + /**
1744 1949 * Returns the metadata on a document.
1745 1950 *
1746 1951 * @param string $session_id
... ... @@ -1795,8 +2000,7 @@ class KTWebService
1795 2000 'message' => '',
1796 2001 'metadata' => $metadata);
1797 2002  
1798   - return new SOAP_Value('return',"{urn:$this->namespace}kt_metadata_response", $response);
1799   -
  2003 + return KTWebService::_encode_metadata_response($response);
1800 2004 }
1801 2005  
1802 2006 /**
... ... @@ -1920,18 +2124,68 @@ class KTWebService
1920 2124 }
1921 2125  
1922 2126 /**
  2127 + * Encode an array as kt_document_transaction_history_item
  2128 + *
  2129 + * @param array $item
  2130 + * @param string $name
  2131 + * @return SOAP_Value of kt_document_transaction_history_item
  2132 + * @access private
  2133 + * @static
  2134 + */
  2135 + function _encode_transaction_history_item($item, $name='item')
  2136 + {
  2137 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_transaction_history_item", $item);
  2138 + }
  2139 +
  2140 + /**
  2141 + * Encode an array as kt_document_transaction_history
  2142 + *
  2143 + * @param array $history
  2144 + * @param string $name
  2145 + * @return SOAP_Value of kt_document_transaction_history
  2146 + * @access private
  2147 + * @static
  2148 + */
  2149 + function _encode_transaction_history($history, $name='history')
  2150 + {
  2151 + $encoded=array();
  2152 + foreach($history as $item)
  2153 + {
  2154 + $encoded[] = KTWebService::_encode_transaction_history_item($item);
  2155 + }
  2156 +
  2157 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_transaction_history", $encoded);
  2158 + }
  2159 +
  2160 + /**
  2161 + * Encode an array as kt_document_transaction_history_response
  2162 + *
  2163 + * @param array $response
  2164 + * @param string $name
  2165 + * @return SOAP_Value of kt_document_transaction_history_response
  2166 + * @access private
  2167 + * @static
  2168 + */
  2169 + function _encode_transaction_history_response($response, $name='return')
  2170 + {
  2171 + $response['history'] = KTWebService::_encode_transaction_history($response['history']);
  2172 +
  2173 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_transaction_history_response", $response);
  2174 + }
  2175 +
  2176 + /**
1923 2177 * Returns the document transaction history.
1924 2178 *
1925 2179 * @param string $session_id
1926 2180 * @param int $document_id
1927   - * @return kt_transaction_history_response
  2181 + * @return kt_document_transaction_history_response
1928 2182 */
1929 2183 function get_document_transaction_history($session_id, $document_id)
1930 2184 {
1931 2185 $kt = &$this->get_ktapi($session_id );
1932 2186 if (is_array($kt))
1933 2187 {
1934   - return new SOAP_Value('return',"{urn:$this->namespace}kt_transaction_history_response", $kt);
  2188 + return new SOAP_Value('return',"{urn:$this->namespace}kt_document_transaction_history_response", $kt);
1935 2189 }
1936 2190 $response=array(
1937 2191 'status_code'=>KTWS_ERR_INVALID_DOCUMENT,
... ... @@ -1942,7 +2196,7 @@ class KTWebService
1942 2196 if (PEAR::isError($document))
1943 2197 {
1944 2198 $response['message'] = $document->getMessage();
1945   - return new SOAP_Value('return',"{urn:$this->namespace}kt_transaction_history_response", $response);
  2199 + return new SOAP_Value('return',"{urn:$this->namespace}kt_document_transaction_history_response", $response);
1946 2200 }
1947 2201  
1948 2202 $result = $document->get_transaction_history();
... ... @@ -1950,16 +2204,67 @@ class KTWebService
1950 2204 {
1951 2205 $response['status_code'] = KTWS_PROBLEM;
1952 2206 $response['message'] = $result->getMessage();
1953   - return new SOAP_Value('return',"{urn:$this->namespace}kt_transaction_history_response", $response);
  2207 + return new SOAP_Value('return',"{urn:$this->namespace}kt_document_transaction_history_response", $response);
1954 2208 }
1955 2209  
1956 2210 $response['status_code'] = KTWS_SUCCESS;
1957 2211 $response['history'] = $result;
1958 2212  
1959   - return new SOAP_Value('return',"{urn:$this->namespace}kt_transaction_history_response", $response);
  2213 + return KTWebService::_encode_transaction_history_response($response);
  2214 + }
  2215 +
  2216 + /**
  2217 + * Encode an array as kt_document_version_history_item
  2218 + *
  2219 + * @param array $item
  2220 + * @param string $name
  2221 + * @return SOAP_Value of kt_document_version_history_item
  2222 + * @access private
  2223 + * @static
  2224 + */
  2225 + function _encode_version_history_item($item, $name='item')
  2226 + {
  2227 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_version_history_item", $item);
  2228 + }
  2229 +
  2230 + /**
  2231 + * Encode an array as kt_document_version_history
  2232 + *
  2233 + * @param array $history
  2234 + * @param string $name
  2235 + * @return SOAP_Value of kt_document_version_history
  2236 + * @access private
  2237 + * @static
  2238 + */
  2239 + function _encode_version_history($history, $name='history')
  2240 + {
  2241 + $encoded=array();
  2242 + foreach($history as $item)
  2243 + {
  2244 + $encoded[] = KTWebService::_encode_version_history_item($item);
  2245 + }
  2246 +
  2247 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_version_history", $encoded);
1960 2248 }
1961 2249  
1962 2250 /**
  2251 + * Encode an array as kt_document_version_history_response
  2252 + *
  2253 + * @param array $response
  2254 + * @param string $name
  2255 + * @return SOAP_Value of kt_document_version_history_response
  2256 + * @access private
  2257 + * @static
  2258 + */
  2259 + function _encode_version_history_response($response, $name='return')
  2260 + {
  2261 + $response['history'] = KTWebService::_encode_version_history($response['history']);
  2262 +
  2263 + return new SOAP_Value($name,"{urn:$this->namespace}kt_document_version_history_response", $response);
  2264 + }
  2265 +
  2266 +
  2267 + /**
1963 2268 * Returns the version history.
1964 2269 *
1965 2270 * @param string $session_id
... ... @@ -1996,7 +2301,7 @@ class KTWebService
1996 2301 $response['status_code'] = KTWS_SUCCESS;
1997 2302 $response['history'] = $result;
1998 2303  
1999   - return new SOAP_Value('return',"{urn:$this->namespace}kt_document_version_history_response", $response);
  2304 + return KTWebService::_encode_version_history_response($response);
2000 2305 }
2001 2306  
2002 2307 /**
... ...