From d5fc5d659d7c6f76b07f781f253b67835f1b1dd1 Mon Sep 17 00:00:00 2001 From: "arron.woods" Date: Thu, 7 Jun 2012 12:25:49 +0000 Subject: Fix report parameter mess, making it possible to send paramter values easily --- library/SSRS/Object/ExecutionInfo.php | 16 ++- library/SSRS/Object/ExecutionParameter.php | 10 -- library/SSRS/Object/ExecutionParameters.php | 29 ++-- library/SSRS/Object/ReportParameter.php | 8 ++ library/SSRS/Object/ReportParameters.php | 26 ---- library/SSRS/Report.php | 2 - samples/LoadReport.php | 1 - samples/LoadReportWithParameters.php | 24 ++++ tests/library/SSRS/ReportTest.php | 21 --- .../ReportTest/SetExecutionParametersObject.php | 146 --------------------- 10 files changed, 61 insertions(+), 222 deletions(-) delete mode 100755 library/SSRS/Object/ExecutionParameter.php delete mode 100755 library/SSRS/Object/ReportParameters.php create mode 100755 samples/LoadReportWithParameters.php delete mode 100644 tests/library/SSRS/ReportTest/SetExecutionParametersObject.php diff --git a/library/SSRS/Object/ExecutionInfo.php b/library/SSRS/Object/ExecutionInfo.php index 42b8c31..55998fd 100755 --- a/library/SSRS/Object/ExecutionInfo.php +++ b/library/SSRS/Object/ExecutionInfo.php @@ -11,9 +11,19 @@ class SSRS_Object_ExecutionInfo extends SSRS_Object_Abstract { $this->setData($info); } - public function setParameters(stdClass $params){ - $this->data['Parameters'] = new SSRS_Object_ReportParameters(); - $this->data['Parameters']->setParameters($params->ReportParameter); + public function setParameters(stdClass $params) { + $parameters = array(); + foreach ($params->ReportParameter AS $reportParam) { + $parameter = new SSRS_Object_ReportParameter($reportParam->Name, null); + $parameter->setData($reportParam); + + $parameters[] = $parameter; + } + + $execParams = new SSRS_Object_ExecutionParameters(); + $execParams->setParameters($parameters); + + $this->data['Parameters'] = $execParams; } } diff --git a/library/SSRS/Object/ExecutionParameter.php b/library/SSRS/Object/ExecutionParameter.php deleted file mode 100755 index 36680e9..0000000 --- a/library/SSRS/Object/ExecutionParameter.php +++ /dev/null @@ -1,10 +0,0 @@ -setParameters($data); - } + public function __construct(array $parameters = array()) { + parent::__construct(null); + $this->setParameters($parameters); } public function init() { $this->data['Parameters'] = array(); } - public function setParameters(SSRS_Object_ReportParameters $parameters) { - foreach ($parameters AS $parameter) { - if (($parameters instanceof SSRS_Object_ExecutionParameter) === false) { - $parameter = new SSRS_Object_ExecutionParameter($parameter); + public function setParameters(array $parameters) { + $this->data['Parameters'] = array(); + + foreach ($parameters AS $key => $parameter) { + if (($parameter instanceof SSRS_Object_ReportParameter) === false) { + $parameter = new SSRS_Object_ReportParameter($key, $parameter); } $this->data['Parameters'][] = $parameter; } } + public function getParameters() { + return $this->data['Parameters']; + } + public function getParameterArrayForSoapCall() { $execParams = array(); - foreach ($this AS $parameter) { + foreach ($this->getParameters() AS $parameter) { $execParams[] = array( - 'Name' => $parameter->Name, - 'Value' => $parameter->Value, + 'Name' => $parameter->name, + 'Value' => $parameter->value, ); } diff --git a/library/SSRS/Object/ReportParameter.php b/library/SSRS/Object/ReportParameter.php index 346b082..75fb8ab 100755 --- a/library/SSRS/Object/ReportParameter.php +++ b/library/SSRS/Object/ReportParameter.php @@ -7,4 +7,12 @@ */ class SSRS_Object_ReportParameter extends SSRS_Object_Abstract { + public function __construct($name, $value) { + $this->name = $name; + $this->value = $value; + } + + public $name; + public $value; + } diff --git a/library/SSRS/Object/ReportParameters.php b/library/SSRS/Object/ReportParameters.php deleted file mode 100755 index dc9b7b3..0000000 --- a/library/SSRS/Object/ReportParameters.php +++ /dev/null @@ -1,26 +0,0 @@ -data['Parameters'] = array(); - } - - public function setParameters($parameters) { - foreach ($parameters AS $parameter) { - if (($parameters instanceof SSRS_Object_ReportParameter) === false) { - $parameter = new SSRS_Object_ReportParameter($parameter); - } - - $this->data['Parameters'][] = $parameter; - } - } - -} diff --git a/library/SSRS/Report.php b/library/SSRS/Report.php index aa8d543..83f7ca3 100755 --- a/library/SSRS/Report.php +++ b/library/SSRS/Report.php @@ -16,13 +16,11 @@ require_once('Object/ArrayIterator.php'); require_once('Object/CatalogItems.php'); require_once('Object/CatalogItem.php'); require_once('Object/ItemDefinition.php'); -require_once('Object/ExecutionParameter.php'); require_once('Object/ExecutionParameters.php'); require_once('Object/ExecutionInfo.php'); require_once('Object/Extensions.php'); require_once('Object/Extension.php'); require_once('Object/ReportParameter.php'); -require_once('Object/ReportParameters.php'); require_once('Object/Report.php'); require_once('Object/ReportOutput.php'); require_once('Report/Exception.php'); diff --git a/samples/LoadReport.php b/samples/LoadReport.php index 58910b3..81fb150 100755 --- a/samples/LoadReport.php +++ b/samples/LoadReport.php @@ -11,7 +11,6 @@ $ssrs = new SSRS_Report('http://localhost/reportserver/', $options); $result = $ssrs->loadReport('/Reports/Reference_Report'); $ssrs->setSessionId($result->executionInfo->ExecutionID); -$ssrs->setExecutionParameters(new SSRS_Object_ExecutionParameters($result->executionInfo->Parameters)); $output = $ssrs->render('HTML4.0'); // PDF | XML | CSV echo $output; \ No newline at end of file diff --git a/samples/LoadReportWithParameters.php b/samples/LoadReportWithParameters.php new file mode 100755 index 0000000..62728b9 --- /dev/null +++ b/samples/LoadReportWithParameters.php @@ -0,0 +1,24 @@ + 'testing', + 'password' => 'password' +); + +$ssrs = new SSRS_Report('http://localhost/reportserver/', $options); +$result = $ssrs->loadReport('/Reports/Reference_Report'); + +$reportParameters = array( + 'key1' => 'value1', + 'key2' => 'value2', +); + +$parameters = new SSRS_Object_ExecutionParameters($reportParameters); + +$ssrs->setSessionId($result->executionInfo->ExecutionID) + ->setExecutionParameters($parameters); + +$output = $ssrs->render('HTML4.0'); // PDF | XML | CSV +echo $output; \ No newline at end of file diff --git a/tests/library/SSRS/ReportTest.php b/tests/library/SSRS/ReportTest.php index 2cc19ed..03961e7 100755 --- a/tests/library/SSRS/ReportTest.php +++ b/tests/library/SSRS/ReportTest.php @@ -128,27 +128,6 @@ class SSRS_ReportTest extends PHPUnit_Framework_TestCase { $this->assertEquals($expected, $result); } - public function testSetExecutionParametersReturnsCorrectObject() { - require(dirname(__FILE__) . '/ReportTest/SetExecutionParametersObject.php'); - $executionID = 'ybv45155dta00245nxlqfi55'; - - $soapMock = $this->getMockFromWsdl(dirname(__FILE__) . '/ReportTest/ReportExecution2005.wsdl', 'SoapClientMockExecutionParams'); - $soapMock->expects($this->any()) - ->method('SetExecutionParameters') - ->with($this->equalTo(array('Parameters' => $parameters->getParameterArrayForSoapCall(), 'ParameterLanguage' => 'en-us'))) - ->will($this->returnValue($returnExecParams)); - - $ssrs = new SSRS_Report('http://test/ReportServer'); - $ssrs->setSoapExecution($soapMock) - ->setSessionId($executionID); - - $expected = new SSRS_Object_ExecutionInfo($returnExecParams); - $result = $ssrs->setExecutionParameters($parameters); - - $this->assertInstanceOf('SSRS_Object_ExecutionInfo', $result); - $this->assertEquals($expected, $result); - } - public function testRenderOutputsReport() { $executionID = 'ybv45155dta00245nxlqfi55'; diff --git a/tests/library/SSRS/ReportTest/SetExecutionParametersObject.php b/tests/library/SSRS/ReportTest/SetExecutionParametersObject.php deleted file mode 100644 index 79ded8e..0000000 --- a/tests/library/SSRS/ReportTest/SetExecutionParametersObject.php +++ /dev/null @@ -1,146 +0,0 @@ -Name = 'Validation'; -$execParams1->Type = 'String'; -$execParams1->Nullable = null; -$execParams1->AllowBlank = null; -$execParams1->MultiValue = null; -$execParams1->QueryParameter = 1; -$execParams1->Prompt = null; -$execParams1->PromptUser = 1; -$execParams1->ValidValuesQueryBased = null; -$execParams1->DefaultValuesQueryBased = null; -$execParams1->DefaultValues->Value = 0; -$execParams1->State = 'HasValidValue'; - -$execParams2 = new stdClass; -$execParams2->name = 'portfolio'; -$execParams2->Type = 'String'; -$execParams2->Nullable = null; -$execParams2->AllowBlank = 1; -$execParams2->MultiValue = 1; -$execParams2->QueryParameter = 1; -$execParams2->Prompt = null; -$execParams2->PromptUser = 1; -$execParams2->ValidValuesQueryBased = null; -$execParams2->DefaultValuesQueryBased = null; -$execParams2->DefaultValues->Value = 61; -$execParams2->State = 'HasValidValue'; - -$execParams3 = new stdClass; -$execParams3->name = 'managedaccount'; -$execParams3->Type = 'String'; -$execParams3->Nullable = null; -$execParams3->AllowBlank = null; -$execParams3->MultiValue = 1; -$execParams3->QueryParameter = 1; -$execParams3->Prompt = 'Portfolio:'; -$execParams3->PromptUser = 1; -$execParams3->Dependencies->Dependency = array('Validation', 'portfolio'); -$execParams3->ValidValuesQueryBased = 1; -$execParams3->ValidValues->ValidValue->Label = 'Label 1'; -$execParams3->ValidValues->ValidValue->Value = '61'; -$execParams3->DefaultValuesQueryBased = 1; -$execParams3->DefaultValues->Value = 61; -$execParams3->State = 'HasValidValue'; - -$execParams4value1 = new stdClass; -$execParams4value1->Label = 0; -$execParams4value1->Value = 0; - -$execParams4value2 = new stdClass; -$execParams4value2->Label = 1; -$execParams4value2->Value = 1; - -$execParams4value = array($execParams4value1, $execParams4value2); - -$execParams4 = new stdClass; -$execParams4->name = 'visibility'; -$execParams4->Type = 'String'; -$execParams4->Nullable = null; -$execParams4->AllowBlank = 1; -$execParams4->MultiValue = null; -$execParams4->QueryParameter = null; -$execParams4->Prompt = null; -$execParams4->PromptUser = 1; -$execParams4->ValidValuesQueryBased = 1; -$execParams4->ValidValues->ValidValue = $execParams4value; -$execParams4->DefaultValuesQueryBased = 1; -$execParams4->DefaultValues->Value = 0; -$execParams4->State = 'HasValidValue'; - - -$execParams5value1 = new stdClass; -$execParams5value1->Label = '2011-02-25'; -$execParams5value1->Value = '2011-02-25'; - -$execParams5value2 = new stdClass; -$execParams5value2->Label = '2011-02-18'; -$execParams5value2->Value = '2011-02-18'; - -$execParams5values = array($execParams5value1, $execParams5value2); - -$execParams5 = new stdClass; -$execParams5->Name = 'eff_date2'; -$execParams5->Type = 'String'; -$execParams5->Nullable = null; -$execParams5->AllowBlank = 1; -$execParams5->MultiValue = null; -$execParams5->QueryParameter = 1; -$execParams5->Prompt = 'Date:'; -$execParams5->PromptUser = 1; -$execParams5->Dependencies->Dependency = array('managedaccount', 'validation'); -$execParams5->ValidValuesQueryBased = 1; -$execParams5->ValidValues->ValidValue = $execParams5values; -$execParams5->DefaultValuesQueryBased = 1; -$execParams5->DefaultValues->Value = '2011-01-21'; -$execParams5->State = 'HasValidValue'; - -$execParams = array($execParams1, $execParams2, $execParams3, $execParams4, $execParams5); - -$returnExecParams = new stdClass; -$returnExecParams->executionInfo->HasSnapshot = null; -$returnExecParams->executionInfo->NeedsProcessing = 1; -$returnExecParams->executionInfo->CredentialsRequired = null; -$returnExecParams->executionInfo->ParametersRequired = null; -$returnExecParams->executionInfo->ExpirationDateTime = '2011-03-08T14:40:17.383Z'; -$returnExecParams->executionInfo->ExecutionDateTime = '0001-01-01T00:00:00'; -$returnExecParams->executionInfo->NumPages = 0; -$returnExecParams->executionInfo->Parameters->ReportParameter = $execParams; -$returnExecParams->executionInfo->DataSourcePrompts = new stdClass; -$returnExecParams->executionInfo->HasDocumentMap = null; -$returnExecParams->executionInfo->ExecutionID = 'ybv45155dta00245nxlqfi55'; -$returnExecParams->executionInfo->ReportPath = '/Reports/Reference_Report'; -$returnExecParams->executionInfo->ReportPageSettings->PaperSize->Height = '210'; -$returnExecParams->executionInfo->ReportPageSettings->PaperSize->Width = '277.00000762939'; -$returnExecParams->executionInfo->ReportPageSettings->Margins->Top = '10'; -$returnExecParams->executionInfo->ReportPageSettings->Margins->Bottom = '10'; -$returnExecParams->executionInfo->ReportPageSettings->Margins->Left = '5'; -$returnExecParams->executionInfo->ReportPageSettings->Margins->Right = '5'; -$returnExecParams->executionInfo->AutoRefreshInterval = 0; - -$parameters = new SSRS_Object_ExecutionParameters(new SSRS_Object_ReportParameters(array( - 'Parameters' => array( - new SSRS_Object_ExecutionParameter(array( - 'Name' => 'Validation', - 'Value' => '0' - )), - array( - 'Name' => 'portfolio', - 'Value' => '61' - ), - array( - 'Name' => 'managedaccount', - 'Value' => '61' - ), - array( - 'Name' => 'visibility', - 'Value' => '0' - ), - array( - 'Name' => 'eff_date2', - 'Value' => '2011-01-21' - ), - ) - ))); -- cgit v1.1