| Current File : /home/jvzmxxx/wiki1/extensions/Flow/includes/Api/ApiFlowBaseGet.php |
<?php
namespace Flow\Api;
use Flow\Block\Block;
use Flow\Model\Anchor;
use Flow\Model\UUID;
use Message;
abstract class ApiFlowBaseGet extends ApiFlowBase {
public function execute() {
$loader = $this->getLoader();
$blocks = $loader->getBlocks();
$context = $this->getContext();
$action = $this->getAction();
$passedParams = $this->getBlockParams();
$output = array( $action => array(
'result' => array(),
'status' => 'ok',
) );
/** @var Block $block */
foreach( $blocks as $block ) {
$block->init( $context, $action );
if ( $block->canRender( $action ) ) {
$blockParams = array();
if ( isset( $passedParams[$block->getName()] ) ) {
$blockParams = $passedParams[$block->getName()];
}
$output[$action]['result'][$block->getName()] = $block->renderApi( $blockParams );
}
}
// See if any of the blocks generated an error (in which case the
// request will terminate with an the error message)
$this->processError( $blocks );
// If nothing could render, we'll consider that an error (at least some
// block should've been able to render a GET request)
if ( !$output[$action]['result'] ) {
$this->dieUsage(
$this->msg( 'flow-error-no-render' )->text(),
'no-render',
200,
array()
);
}
$blocks = array_keys($output[$action]['result']);
$this->getResult()->setIndexedTagName( $blocks, 'block' );
// Required until php5.4 which has the JsonSerializable interface
array_walk_recursive( $output, function( &$value ) {
if ( $value instanceof Anchor ) {
$value = $value->toArray();
} elseif ( $value instanceof Message ) {
$value = $value->text();
} elseif ( $value instanceof UUID ) {
$value = $value->getAlphadecimal();
}
} );
$this->getResult()->addValue( null, $this->apiFlow->getModuleName(), $output );
}
/**
* {@inheritDoc}
*/
public function mustBePosted() {
return false;
}
/**
* {@inheritDoc}
*/
public function needsToken() {
return false;
}
}