本文整理汇总了PHP中SMWQueryProcessor::getComponentsFromFunctionParams方法的典型用法代码示例。如果您正苦于以下问题:PHP SMWQueryProcessor::getComponentsFromFunctionParams方法的具体用法?PHP SMWQueryProcessor::getComponentsFromFunctionParams怎么用?PHP SMWQueryProcessor::getComponentsFromFunctionParams使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SMWQueryProcessor
的用法示例。
在下文中一共展示了SMWQueryProcessor::getComponentsFromFunctionParams方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
public function execute()
{
$params = $this->extractRequestParams();
$rawParams = preg_split("/(?<=[^\\|])\\|(?=[^\\|])/", $params['query']);
list($queryString, $this->parameters, $printouts) = SMWQueryProcessor::getComponentsFromFunctionParams($rawParams, false);
$queryResult = $this->getQueryResult($this->getQuery($queryString, $printouts));
$this->addQueryResult($queryResult);
}
示例2: testUriQueryFromRawParameters
public function testUriQueryFromRawParameters()
{
$property = $this->fixturesProvider->getProperty('url');
$semanticData = $this->semanticDataFactory->newEmptySemanticData(__METHOD__);
$this->subjects[] = $semanticData->getSubject();
$dataValue = $this->dataValueFactory->newPropertyObjectValue($property, 'http://example.org/api.php?action=Foo');
$semanticData->addDataValue($dataValue);
$dataValue = $this->dataValueFactory->newPropertyObjectValue($property, 'http://example.org/Bar 42');
$semanticData->addDataValue($dataValue);
$this->getStore()->updateData($semanticData);
/**
* @query [[Url::http://example.org/api.php?action=Foo]][[Url::http://example.org/Bar 42]]
*/
$rawParams = array('[[Url::http://example.org/api.php?action=Foo]][[Url::http://example.org/Bar 42]]', '?Url', 'limit=1');
list($queryString, $parameters, $printouts) = QueryProcessor::getComponentsFromFunctionParams($rawParams, false);
$description = $this->queryParser->getQueryDescription($queryString);
$query = new Query($description, false, false);
$queryResult = $this->getStore()->getQueryResult($query);
$this->queryResultValidator->assertThatQueryResultHasSubjects($semanticData->getSubject(), $queryResult);
}
示例3: getResults
protected function getResults($input)
{
$query = "[[Collection::" . $input . "]]|?Expression|?Language";
$rawParams = explode('|', $query);
list($queryString, $parameters, $printouts) = SMWQueryProcessor::getComponentsFromFunctionParams($rawParams, false);
SMWQueryProcessor::addThisPrintout($printouts, $parameters);
$smwQuery = SMWQueryProcessor::createQuery($queryString, SMWQueryProcessor::getProcessedParams($parameters, $printouts), SMWQueryProcessor::SPECIAL_PAGE, '', $printouts);
$smwQuery->setUnboundLimit(50000);
$smwQueryResult = smwfGetStore()->getQueryResult($smwQuery);
$results = $smwQueryResult->toArray()['results'];
$modified_results = array();
foreach (array_keys($results) as $key) {
$short_key = explode("#", $key)[0];
$lang = $results[$key]['printouts']['Language'][0];
$langs[$lang] = null;
$expression = explode(":", $results[$key]['printouts']['Expression'][0]['fulltext'])[1];
$modified_results[$short_key][$lang][] = $expression;
}
return array('data' => $modified_results, 'langs' => array_keys($langs));
}
示例4: extractQueryParameters
/**
* This code rather hacky since there are many ways to call that special page, the most involved of
* which is the way that this page calls itself when data is submitted via the form (since the shape
* of the parameters then is governed by the UI structure, as opposed to being governed by reason).
*
* TODO: most of this can probably be killed now we are using Validator
*
* @param string $p
*/
protected function extractQueryParameters($p)
{
global $wgRequest, $smwgQMaxInlineLimit;
// First make all inputs into a simple parameter list that can again be parsed into components later.
if ($wgRequest->getCheck('q')) {
// called by own Special, ignore full param string in that case
$query_val = $wgRequest->getVal('p');
if (!empty($query_val)) {
// p is used for any additional parameters in certain links.
$rawparams = SMWInfolink::decodeParameters($query_val, false);
} else {
$query_values = $wgRequest->getArray('p');
if (is_array($query_values)) {
foreach ($query_values as $key => $val) {
if (empty($val)) {
unset($query_values[$key]);
}
}
}
// p is used for any additional parameters in certain links.
$rawparams = SMWInfolink::decodeParameters($query_values, false);
}
} else {
// called from wiki, get all parameters
$rawparams = SMWInfolink::decodeParameters($p, true);
}
// Check for q= query string, used whenever this special page calls itself (via submit or plain link):
$this->m_querystring = $wgRequest->getText('q');
if ($this->m_querystring !== '') {
$rawparams[] = $this->m_querystring;
}
// Check for param strings in po (printouts), appears in some links and in submits:
$paramstring = $wgRequest->getText('po');
if ($paramstring !== '') {
// parameters from HTML input fields
$ps = explode("\n", $paramstring);
// params separated by newlines here (compatible with text-input for printouts)
foreach ($ps as $param) {
// add initial ? if omitted (all params considered as printouts)
$param = trim($param);
if ($param !== '' && $param[0] != '?') {
$param = '?' . $param;
}
$rawparams[] = $param;
}
}
// Now parse parameters and rebuilt the param strings for URLs.
list($this->m_querystring, $this->m_params, $this->m_printouts) = SMWQueryProcessor::getComponentsFromFunctionParams($rawparams, false);
// Try to complete undefined parameter values from dedicated URL params.
if (!array_key_exists('format', $this->m_params)) {
$this->m_params['format'] = 'broadtable';
}
if (!array_key_exists('order', $this->m_params)) {
$order_values = $wgRequest->getArray('order');
if (is_array($order_values)) {
$this->m_params['order'] = '';
foreach ($order_values as $order_value) {
if ($order_value === '') {
$order_value = 'ASC';
}
$this->m_params['order'] .= ($this->m_params['order'] !== '' ? ',' : '') . $order_value;
}
}
}
$this->m_num_sort_values = 0;
if (!array_key_exists('sort', $this->m_params)) {
$sort_values = $wgRequest->getArray('sort');
if (is_array($sort_values)) {
$this->m_params['sort'] = implode(',', $sort_values);
$this->m_num_sort_values = count($sort_values);
}
}
if (!array_key_exists('offset', $this->m_params)) {
$this->m_params['offset'] = $wgRequest->getVal('offset');
if ($this->m_params['offset'] === '') {
$this->m_params['offset'] = 0;
}
}
if (!array_key_exists('limit', $this->m_params)) {
$this->m_params['limit'] = $wgRequest->getVal('limit');
if ($this->m_params['limit'] === '') {
$this->m_params['limit'] = $this->m_params['format'] == 'rss' ? 10 : 20;
// Standard limit for RSS.
}
}
$this->m_params['limit'] = min($this->m_params['limit'], $smwgQMaxInlineLimit);
$this->m_editquery = $wgRequest->getVal('eq') == 'yes' || $this->m_querystring === '';
}
示例5: extractParameters
/**
* Processes the QueryString, Params, and PrintOuts.
*
* @todo Combine this method with execute() or remove it altogether.
*/
public function extractParameters($p)
{
if ($this->context == self::SPECIAL_PAGE) {
// assume setParams(), setPintouts and setQueryString have been called
$rawParams = array_merge($this->parameters, array($this->queryString), $this->printOutStrings);
} else {
// context is WIKI_LINK
$rawParams = SMWInfolink::decodeParameters($p, true);
// calling setParams to fill in missing parameters
$this->setParams($rawParams);
$rawParams = $this->parameters;
}
list($this->queryString, $this->parameters, $this->m_printOuts) = SMWQueryProcessor::getComponentsFromFunctionParams($rawParams, false);
}