/** * Render the #get_db_data parser function */ static function doGetDBData(&$parser) { global $wgTitle, $edgCurPageName, $edgValues; // if we're handling multiple pages, reset $edgValues // when we move from one page to another $cur_page_name = $wgTitle->getText(); if (!isset($edgCurPageName) || $edgCurPageName != $cur_page_name) { $edgValues = array(); $edgCurPageName = $cur_page_name; } $params = func_get_args(); array_shift($params); // we already know the $parser ... $args = EDUtils::parseParams($params); // parse params into name-value pairs $data = array_key_exists('data', $args) ? $args['data'] : null; $dbID = array_key_exists('db', $args) ? $args['db'] : null; // For backwards-compatibility - 'db' parameter was added // in External Data version 1.3. if (is_null($dbID)) { $dbID = array_key_exists('server', $args) ? $args['server'] : null; } $table = array_key_exists('from', $args) ? $args['from'] : null; $conds = array_key_exists('where', $args) ? $args['where'] : null; $limit = array_key_exists('limit', $args) ? $args['limit'] : null; $orderBy = array_key_exists('order by', $args) ? $args['order by'] : null; $options = array('LIMIT' => $limit, 'ORDER BY' => $orderBy); $mappings = EDUtils::paramToArray($data); // parse the data arg into mappings $external_values = EDUtils::getDBData($dbID, $table, array_values($mappings), $conds, $options); // handle error cases if (is_null($external_values)) { return; } // Build $edgValues foreach ($mappings as $local_var => $external_var) { if (array_key_exists($external_var, $external_values)) { foreach ($external_values[$external_var] as $value) { $edgValues[$local_var][] = $value; } } } return; }
/** * Render the #get_db_data parser function */ static function doGetDBData(&$parser) { global $edgCurPageName, $edgValues; // if we're handling multiple pages, reset $edgValues // when we move from one page to another $cur_page_name = $parser->getTitle()->getText(); if (!isset($edgCurPageName) || $edgCurPageName != $cur_page_name) { $edgValues = array(); $edgCurPageName = $cur_page_name; } $params = func_get_args(); array_shift($params); // we already know the $parser ... $args = EDUtils::parseParams($params); // parse params into name-value pairs $data = array_key_exists('data', $args) ? $args['data'] : null; if (array_key_exists('db', $args)) { $dbID = $args['db']; } elseif (array_key_exists('server', $args)) { // For backwards-compatibility - 'db' parameter was // added in External Data version 1.3. $dbID = $args['server']; } else { return EDUtils::formatErrorMessage(wfMessage('externaldata-no-param-specified', 'db')->parse()); } if (array_key_exists('from', $args)) { $table = $args['from']; } else { return EDUtils::formatErrorMessage(wfMessage('externaldata-no-param-specified', 'from')->parse()); } $conds = array_key_exists('where', $args) ? $args['where'] : null; $limit = array_key_exists('limit', $args) ? $args['limit'] : null; $orderBy = array_key_exists('order by', $args) ? $args['order by'] : null; $groupBy = array_key_exists('group by', $args) ? $args['group by'] : null; $sqlOptions = array('LIMIT' => $limit, 'ORDER BY' => $orderBy, 'GROUP BY' => $groupBy); $otherParams = array(); if (array_key_exists('aggregate', $args)) { $otherParams['aggregate'] = $args['aggregate']; } elseif (array_key_exists('find query', $args)) { $otherParams['find query'] = $args['find query']; } $mappings = EDUtils::paramToArray($data); // parse the data arg into mappings $external_values = EDUtils::getDBData($dbID, $table, array_values($mappings), $conds, $sqlOptions, $otherParams); // Handle error cases. if (!is_array($external_values)) { return EDUtils::formatErrorMessage($external_values); } // Build $edgValues foreach ($mappings as $local_var => $external_var) { if (array_key_exists($external_var, $external_values)) { foreach ($external_values[$external_var] as $value) { $edgValues[$local_var][] = $value; } } } return; }