/**
  * 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;
 }