/** * Field method name factory * * @param array $strings * @return array */ public function buildFieldMethods(array $strings) { $names = []; foreach ($strings as $string) { $string = strtolower($string); if (strpos($string, '_')) { $string = underscoreToCamelCase($string); } $name = 'make' . ucfirst($string) . 'String'; $names[$string] = $name; } return $names; }
// widgets if (preg_match('/\\/widgets\\/([a-zA-Z0-9]*)(.*)?/i', @$_SERVER['REDIRECT_URL'], $matches)) { @(list($url, $widgetName, $params) = $matches); if (!empty($widgetName) && WidgetLoader::exists($widgetName)) { $widget = WidgetLoader::load($widgetName, $params); die($widget->getWidget()); } else { die('Widget "' . $widgetName . '" not installed/available'); } } elseif (preg_match('/\\/explorer(\\/([a-zA-Z_]*))?/i', @$_SERVER['REDIRECT_URL'], $matches)) { if (@$matches[2]) { $_GET['type'] = $matches[2]; } $api = new Api(API_PROJECT, API_READ_KEY); $qb = $api->getQueryBuilder(); // parse request and map to query builder foreach ($_GET as $name => $value) { if (in_array(strtolower($name), $AVAILABLE_PARAMS)) { $param = underscoreToCamelCase(strtolower($name)); $qb->{$param}($value); } } $data = $qb->execute()->toArray(); die(json_encode($data, JSON_PRETTY_PRINT)); } die('you either need to load a widget (/widget/{WIDGET_NAME}) or use the explorer (/explorer/{PARAMS})'); function underscoreToCamelCase($string) { $func = create_function('$c', 'return strtoupper($c[1]);'); return preg_replace_callback('/_([a-z])/', $func, $string); }