Created
June 9, 2015 15:52
-
-
Save opengeek/1ed163084ba7298f64fd to your computer and use it in GitHub Desktop.
This is a proof of concept for using MODX 2.x as a dependency in a Slim application
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* This file is part of the MODSlim package. | |
* | |
* Copyright (c) Jason Coward <[email protected]> | |
* | |
* For the full copyright and license information, please view the LICENSE | |
* file that was distributed with this source code. | |
*/ | |
namespace MODX\Slim\Middleware; | |
use Slim\Middleware; | |
class MODSlim extends Middleware | |
{ | |
/** | |
* Call | |
* | |
* Perform actions specific to this middleware and optionally | |
* call the next downstream middleware. | |
*/ | |
public function call() | |
{ | |
$this->app->container->singleton('modx', function() { | |
define('MODX_CORE_PATH', $this->app->config('modx.core_path')); | |
define('MODX_CONFIG_KEY', $this->app->config('modx.config_key') ?: 'config'); | |
require MODX_CORE_PATH . 'model/modx/modx.class.php'; | |
$modx = new \modX('', $this->app->config('modx.config') ?: []); | |
return $modx; | |
}); | |
$this->next->call(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$startTime = microtime(true); | |
require __DIR__ . '/../vendor/autoload.php'; | |
$config = [ | |
"debug" => false, | |
"https.port"=> 443, | |
]; | |
if (is_readable(__DIR__ . '/../config.php')) { | |
$loaded = include __DIR__ . '/../config.php'; | |
if (is_array($loaded)) { | |
$config = array_merge($config, $loaded); | |
} | |
} | |
$app = new \Slim\Slim($config); | |
$app->add(new \MODX\Slim\Middleware\MODSlim()); | |
$app->error(function(\Exception $e) use ($app) { | |
$app->getLog()->error($e->getMessage()); | |
$app->halt(500, $e->getMessage()); | |
$app->stop(); | |
}); | |
require __DIR__ . '/routes.php'; | |
$app->run(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$app->notFound(function() use ($app) { | |
/** @var \modX $modx */ | |
$modx = $app->container->get('modx'); | |
$modx->initialize($app->config('modx.context') ?: 'web'); | |
$_GET[$modx->getOption('request_param_alias', null, 'q')] | |
= $_REQUEST[$modx->getOption('request_param_alias', null, 'q')] | |
= ltrim($app->request->getResourceUri(), '/'); | |
$modx->handleRequest(); | |
}); | |
$app->get('/', function() use ($app) { | |
/** @var \modX $modx */ | |
$modx = $app->container->get('modx'); | |
$modx->initialize($app->config('modx.context') ?: 'web'); | |
$modx->resource = $modx->getObject('modResource', (int)$modx->getOption('site_start')); | |
$modx->resourceIdentifier = $modx->resource->get('id'); | |
$modx->elementCache = array(); | |
$resourceOutput = $modx->resource->process(); | |
$modx->parser->processElementTags('', $resourceOutput, true, false, '[[', ']]', array(), 10); | |
$modx->parser->processElementTags('', $resourceOutput, true, true, '[[', ']]', array(), 10); | |
echo $resourceOutput; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment