diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php index 846dffed8aca2c2b9d67e02b4f63524f2738ca2c..64efdfcc713a41768d1da6441783384bd7d4e187 100755 --- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php +++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/TgExtra.class.php @@ -2310,29 +2310,33 @@ class TgExtra { // ----------------------------------------------------- - // Function: hasPublicResources + // Function: getNumberOfResources // Input: auth / xsd:string // log / xsd:string // project / xsd:string - // Output: result / xsd:boolean + // Output: allresources / xsd:int + // publicresources / xsd:int // Description // Checks if a given project has any public resources. // ----------------------------------------------------- - public function hasPublicResources( $inRequest ) { + public function getNumberOfResources ( $inRequest ) { - $result = new booleanResponse(); - $strFilter = ""; + $result = new stdClass(); + // Filter for ALL resources... + $strFilter = "(&(objectClass=TextGridResource)(TGProjectId=" . $inRequest->project . "))"; - // Construct a filter that searches for the public - // resources of a project. - $strFilter .= "(&(objectClass=TextGridResource)(TGisPublic=TRUE)(TGProjectId=" . $inRequest->project . "))"; + $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $strFilter, "sub", array("TGisPublic" )); + $result->allresources = sizeof( $arrResource ); - $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $strFilter, "sub" ); + // Construct a filter that searches for the public + // resources of a project. + $strFilter = "(&(objectClass=TextGridResource)(TGisPublic=TRUE)(TGProjectId=" . $inRequest->project . "))"; + $arrResource = $this->connection['resource']->search( $this->rbac->getConfiguration()->getValue( "resource", "base" ), $strFilter, "sub", array("TGisPublic" ) ); - $result->result = ( sizeof( $arrResource ) > 0 ); + $result->publicresources = sizeof( $arrResource ); return $result; diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/getNumberOfResources.php b/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/getNumberOfResources.php new file mode 100755 index 0000000000000000000000000000000000000000..f3204be65fd3c1844cf337461327b1d53f35f33d --- /dev/null +++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/examples/getNumberOfResources.php @@ -0,0 +1,65 @@ +<?php +// ####################################################### +// Author: Markus Widmer +// Creation date: 14.04.2008 +// Modification date: 14.04.2008 +// Version: 0.1.0 +// ####################################################### + + +require_once( "../soapTypes.inc.php" ); + + + +// ----------------------------------------------------- +// You'll need these services +// ----------------------------------------------------- +$soapExtra = new SoapClient( "../wsdl/tgextra.wsdl" ); + + +echo "<BODY><HTML>"; + + + + +if( isset( $_POST['project'] ) ) { + + // ----------------------------------------------------- + // If this was successfull you can add a the user you + // wish to create + // ----------------------------------------------------- + $regReq = new stdClass(); + $regReq->auth = ""; + $reqReq->log = ""; + $regReq->project = $_POST['project']; + + + echo "<HR/>"; + echo "Checking for resources...<BR/>"; + + try { + + $checkResponse = $soapExtra->getNumberOfResources( $regReq ); + + echo "All resources: " . $checkResponse->allresources; + echo "<br/>Public resources: " . $checkResponse->publicresources; + + } + catch( SoapFault $f ) { + + echo "SOAP FAULT!: " . $f->faultcode . " / " . $f->faultstring . " / " . $f->detail; + + } + +} + + +echo "<FORM action=\"getNumberOfResources.php\" method=\"post\" enctype=\"multipart/form-data\">\n"; +//echo "Auth: <INPUT type=\"text\" name=\"auth\" value=\"\"><BR>\n"; +echo "Project: <INPUT type=\"text\" name=\"project\" value=\"\"><BR>\n"; +echo "<INPUT type=\"submit\" value=\"Commit...\">\n"; +echo "</FORM>\n"; + +echo "</BODY></HTML>"; + +?> diff --git a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-8081/tgextra.wsdl b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-8081/tgextra.wsdl index c2d36c1ee3b2aa8ad460adb7827497c4b41e62c2..1f06a1f8bb443a19cf727e3aee9baa91957d85fc 100644 --- a/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-8081/tgextra.wsdl +++ b/info.textgrid.middleware.tgauth.rbac/rbacSoap/wsdl-8081/tgextra.wsdl @@ -339,8 +339,8 @@ </xsd:sequence> </xsd:complexType> </xsd:element> -<!-- #### hasPublicResourcesRequest #### //--> - <xsd:element name="hasPublicResourcesRequest"> +<!-- #### getNumberOfResourcesRequest #### //--> + <xsd:element name="getNumberOfResourcesRequest"> <xsd:complexType> <xsd:sequence> <xsd:element name="auth" type="xsd:string" minOccurs="1" maxOccurs="1"/> @@ -349,6 +349,14 @@ </xsd:sequence> </xsd:complexType> </xsd:element> + <xsd:element name="getNumberOfResourcesResponse"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="allresources" type="xsd:int"/> + <xsd:element name="publicresources" type="xsd:int"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> <!-- #### setProjectFile #### //--> <xsd:element name="setProjectFileRequest"> <xsd:complexType> @@ -783,12 +791,12 @@ <wsdl:message name="isPublicResponse"> <wsdl:part element="tns:booleanResponse" name="isPublicOutput"/> </wsdl:message> -<!-- #### hasPublicResources #### //--> - <wsdl:message name="hasPublicResourcesRequest"> - <wsdl:part element="tns:hasPublicResourcesRequest" name="hasPublicResourcesInput"/> +<!-- #### getNumberOfResources #### //--> + <wsdl:message name="getNumberOfResourcesRequest"> + <wsdl:part element="tns:getNumberOfResourcesRequest" name="getNumberOfResourcesInput"/> </wsdl:message> - <wsdl:message name="hasPublicResourcesResponse"> - <wsdl:part element="tns:booleanResponse" name="hasPublicResourcesOutput"/> + <wsdl:message name="getNumberOfResourcesResponse"> + <wsdl:part element="tns:getNumberOfResourcesResponse" name="getNumberOfResourcesOutput"/> </wsdl:message> <!-- #### setProjectFile #### //--> <wsdl:message name="setProjectFileRequest"> @@ -1624,21 +1632,22 @@ <wsdl:input message="tns:isPublicRequest"/> <wsdl:output message="tns:isPublicResponse"/> </wsdl:operation> -<!-- #### hasPublicResources #### //--> - <wsdl:operation name="hasPublicResources"> +<!-- #### getNumberOfResources #### //--> + <wsdl:operation name="getNumberOfResources"> <wsdl:documentation> - Checks if a project has public resources. + Returns the total number of resources and the number of public ones in this project. Can be called by anyone. <ul><li><b>Input Parameters</b> - hasPublicResourcesRequest, with elements + getNumberOfResourcesRequest, with elements <ul><li>auth - String, SessionID of user that wants to query. Can be empty.</li><li>log - String for log information, optional</li><li>project - String</li></ul></li><li><b>Output Parameters</b> - booleanResponse, with element - <ul><li>result - boolean, true if project has public - resources.</li></ul></li></ul> + getNumberOfResourcesResponse, with elements + <ul><li>allresources - integer</li><li>publicresources - integer</li> + </ul> + </li></ul> </wsdl:documentation> - <wsdl:input message="tns:hasPublicResourcesRequest"/> - <wsdl:output message="tns:hasPublicResourcesResponse"/> + <wsdl:input message="tns:getNumberOfResourcesRequest"/> + <wsdl:output message="tns:getNumberOfResourcesResponse"/> </wsdl:operation> <!-- #### deactivateProject #### //--> <wsdl:operation name="deactivateProject"> @@ -2115,9 +2124,9 @@ <soap:body use="literal"/> </wsdl:output> </wsdl:operation> -<!-- #### hasPublicResources #### //--> - <wsdl:operation name="hasPublicResources"> - <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/hasPublicResources"/> +<!-- #### getNumberOfResources #### //--> + <wsdl:operation name="getNumberOfResources"> + <soap:operation soapAction="http://textgrid.info/namespaces/middleware/tgauth/getNumberOfResources"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input>