<?php $this->batch = $config->batch; $this->schema = $config->schema; $this->documentation = $config->documentation; if (isset($config->vars)) { $this->vars = json\decode(fs\read($config->vars)); } $datasources = []; foreach ($config->collections as $options) { $collection = new collection($options->name, $options->key); foreach ($options->procedures as $procedure) { $params = $procedure->params; if ($procedure->datasource == 'php') { $collection->attach($procedure->name, new php_procedure($procedure->name, $params, !isset($procedure->required) or $procedure->required !== 'false', isset($procedure->result) ? $procedure->result : 'array', new script($this, $procedure->body)), $procedure->static); } else { $datasource = $config->datasources[$procedure->datasource]; if (in_array($datasource->type, array_keys(sql::drivers()))) { $drivers = sql::drivers(); if (!isset($datasources[$procedure->datasource])) { $datasources[$procedure->datasource] = new sql($datasource->type, $datasource->server, $datasource->username, $datasource->password, $datasource->database, $datasource->charset); } $collection->attach($procedure->name, new sql_procedure($procedure->name, $params, !isset($procedure->required) or $procedure->required !== 'false', isset($procedure->result) ? $procedure->result : 'array', isset($procedure->output) ? $procedure->output : null, $procedure->body, $datasources[$procedure->datasource]), $procedure->static); } else { switch ($datasource->type) { case 'foursquare': if (!isset($datasources[$procedure->datasource])) { $datasources[$procedure->datasource] = new foursquare($datasources->client_id, $datasources->client_secret); } $collection->attach($procedure->name, new foursquare_procedure($procedure->name, $procedure->method, !isset($procedure->required) or $procedure->required !== 'false', isset($procedure->result) ? $procedure->result : 'array', $datasources[$procedure->datasource]), $procedure->static); break;