diff --git a/ktapi/ktapi.inc.php b/ktapi/ktapi.inc.php index c68e74c..4874a94 100644 --- a/ktapi/ktapi.inc.php +++ b/ktapi/ktapi.inc.php @@ -361,11 +361,11 @@ class KTAPI */ function get_documenttypeid($documenttype) { - $sql = "SELECT id FROM document_types_lookup WHERE name='$documenttype' and disabled=0"; + $sql = array("SELECT id FROM document_types_lookup WHERE name=? and disabled=0", $documenttype); $row = DBUtil::getOneResult($sql); if (is_null($row) || PEAR::isError($row)) { - return new PEAR_Error(KTAPI_ERROR_DOCUMENT_TYPE_INVALID); + return new KTAPI_DocumentTypeError(KTAPI_ERROR_DOCUMENT_TYPE_INVALID, $row); } $documenttypeid = $row['id']; return $documenttypeid; @@ -373,7 +373,7 @@ class KTAPI function get_link_type_id($linktype) { - $sql = "SELECT id FROM document_link_types WHERE name='$linktype'"; + $sql = array("SELECT id FROM document_link_types WHERE name=?",$linktype); $row = DBUtil::getOneResult($sql); if (is_null($row) || PEAR::isError($row)) { @@ -426,10 +426,22 @@ class KTAPI return $result; } + /** + * This should actually not be in ktapi, but in webservice + * + * @param unknown_type $document_type + * @return unknown + */ function get_document_type_metadata($document_type='Default') { // now get document type specifc ids $typeid =$this->get_documenttypeid($document_type); + + if (is_a($typeid, 'KTAPI_DocumentTypeError')) + { + return $typeid; + } + if (is_null($typeid) || PEAR::isError($typeid)) { $response['message'] = $typeid->getMessage(); diff --git a/ktwebservice/nunit/document_system_metadata.cs b/ktwebservice/nunit/document_system_metadata.cs index 494e072..c7f9ff7 100644 --- a/ktwebservice/nunit/document_system_metadata.cs +++ b/ktwebservice/nunit/document_system_metadata.cs @@ -125,6 +125,13 @@ namespace MonoTests.KnowledgeTree Assert.AreEqual("2007-01-17 00:00:00", update_resp.created_date); } + [Test] + public void TestBadCharsInDocType() + { + kt_metadata_response resp = this._kt.get_document_type_metadata(this._session, "'''ยด`\"\"\\/:&;!.~,$%()|<>#=[]*?"); + Assert.AreEqual(26, resp.status_code); + } + [Test] public void CheckinSmallDocumentWithMetadataTest() { @@ -173,7 +180,7 @@ namespace MonoTests.KnowledgeTree Assert.AreEqual("2007-01-17 00:00:00", update_resp.created_date); } - [Test] + //[Test] public void AddDocumentWithMetadataTest() { kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1]; @@ -210,7 +217,7 @@ namespace MonoTests.KnowledgeTree - for (int i =0;i<2;i++) + for (int i =0;i<1;i++) { FileUploader uploader = new FileUploader( ); diff --git a/ktwebservice/webservice.php b/ktwebservice/webservice.php index fe4ba6d..75e96dc 100644 --- a/ktwebservice/webservice.php +++ b/ktwebservice/webservice.php @@ -3279,9 +3279,10 @@ class KTWebService return new SOAP_Value('return',"{urn:$this->namespace}kt_metadata_response", $kt); } - $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT); + $response = KTWebService::_status(KTWS_ERR_INVALID_DOCUMENT_TYPE); $metadata = $kt->get_document_type_metadata($document_type); + if (PEAR::isError($metadata)) { $response['message'] = $metadata->getMessage();