return '0.5 beta';
}
+ /** @var IPF_Settings */
public static $settings = null;
- private static function checkSettings($settings)
+ private static function checkSettings(IPF_Settings $settings)
{
$db = $settings->get('database');
*/
protected function adminApplication()
{
- foreach ($this->project->appList() as $app) {
+ foreach ($this->container['apps'] as $app) {
if ($app instanceof IPF_Admin_App)
return $app;
}
protected function backToIndex()
{
- $url = $this->project->router->reverse(array('IPF_Admin_FileBrowser_Controller', 'index')) . '?dir=' . urlencode($this->relative);
+ $url = $this->container['router']->reverse(array('IPF_Admin_FileBrowser_Controller', 'index')) . '?dir=' . urlencode($this->relative);
return new IPF_HTTP_Response_Redirect($url);
}
*/
private function authApp()
{
- foreach ($this->project->appList() as $app)
+ foreach ($this->container['apps'] as $app)
if ($app instanceof IPF_Auth_App)
return $app;
throw new Exception('Auth app is not registered in project.');
{
$success_url = trim(\PFF\Arr::get($this->request->REQUEST, 'next', ''));
if (!$success_url)
- $success_url = $this->project->router->reverse(array('IPF_Admin_Dashboard_Controller', 'index'));
+ $success_url = $this->container['router']->reverse(array('IPF_Admin_Dashboard_Controller', 'index'));
$auth_app = $this->authApp();
{
$success_url = trim(\PFF\Arr::get($this->request->REQUEST, 'next', ''));
if (!$success_url)
- $success_url = $this->project->router->reverse(array('IPF_Admin_Dashboard_Controller', 'index'));
+ $success_url = $this->container['router']->reverse(array('IPF_Admin_Dashboard_Controller', 'index'));
if (!$this->request->user->isAnonymous() && $this->request->user->is_superuser) {
$user = $this->authApp()->findUser($this->params[1]);
public function configure(Container $container, IPF_Settings $settings)
{
$this->container = $container;
- $this->userModel = $settings->get('auth_user_model', 'IPF\\Auth\\User');
+ $this->userModel = $container['settings']->get('auth_user_model', User::class);
}
function getTitle()
namespace IPF\Auth;
+use Doctrine\DBAL\Connection;
+
class Middleware extends \IPF_Middleware
{
const SessionKey = 'IPF_User_auth';
$user_id = \PFF\Arr::get($request->session->data, self::SessionKey, 0);
if ($user_id > 0) {
- $auth_app = $this->container['apps']['auth'];
- $request->user = $auth_app->findUser($user_id);
+ $connection = $this->getConnection();
+ $request->user = $this->getAuthApp()->findUser($user_id);
if ($request->user && 43200 < time() - strtotime($request->user->last_login.' GMT')) {
$request->user->last_login = gmdate('Y-m-d H:i:s');
- $request->user->save();
+ $request->user->save($connection);
}
}
$request->session->data[self::SessionKey] = $request->user->id;
return $response;
}
+
+ /**
+ * @return \IPF_Auth_App
+ */
+ private function getAuthApp()
+ {
+ return $this->container['apps']['auth'];
+ }
+
+ /**
+ * @return Connection
+ */
+ private function getConnection()
+ {
+ return $this->container['db'];
+ }
}
class IPF_Controller
{
- /** @var IPF_Project */
- protected $project;
protected $request;
protected $params;
/** @var Container */
protected $container;
- function __construct(IPF_Project $project, Container $container)
+ function __construct(Container $container)
{
- $this->project = $project;
$this->container = $container;
}
{
function processRequest($request)
{
- if ($this->settings->get('append_slash', true)) {
+ if ($this->container['settings']->get('append_slash', true)) {
$url = $request->absoluteUrl();
if (substr($url, -1) !== '/') {
return new IPF_HTTP_Response_Redirect($url.'/');
return false;
}
}
-
{
function processRequest($request)
{
- $router = $this->project->router;
-
- $m = $router->match($request);
+ $m = $this->getRouter()->match($request);
if (!$m) {
return new IPF_HTTP_Response_NotFound($request);
}
try {
$controllerClass = $route->controller();
/** @var IPF_Controller $controller */
- $controller = new $controllerClass($this->project, $this->container);
+ $controller = new $controllerClass($this->container);
return $controller->process($route->action(), $request, $match);
} catch (IPF_Router_Shortcut $e) {
return $e->response($request);
}
}
+
+ /**
+ * @return IPF_Router
+ */
+ private function getRouter()
+ {
+ return $this->container['router'];
+ }
}
{
function processRequest($request)
{
- $staticUrl = $this->settings->get('static_url');
+ $staticUrl = $this->getStaticUrl();
if (!preg_match('#^'.preg_quote($staticUrl).'(.*)$#', $request->query, $matches))
return false;
$query = $matches[1];
- foreach ($this->project->appList() as $app) {
+ foreach ($this->getAppList() as $app) {
$static = $app->getPath() . $staticUrl . $query;
if (is_file($static))
return new IPF_HTTP_Response_File($static, null, $this->mimetype($query));
default: return 'application/octet-stream';
}
}
-}
+ /**
+ * @return IPF_Application[]
+ */
+ private function getAppList()
+ {
+ return $this->container['apps'];
+ }
+
+ /**
+ * @return string
+ */
+ private function getStaticUrl()
+ {
+ return $this->container['settings']->get('static_url');
+ }
+}
private function __construct()
{
$this->container = new Container();
+ $this->container['settings'] = IPF::$settings;
$apps = array();
foreach (IPF::get('applications') as $name) {
return $this->apps;
}
+ /**
+ * @return IPF_Middleware
+ */
private function chainMiddlewares()
{
- $middlewares = IPF::get('middlewares', array());
+ $middlewares = $this->container['settings']->get('middlewares', array());
array_unshift($middlewares, 'IPF_Error_Middleware');
array_push($middlewares, 'IPF_Dispatch_Middleware');
{
$this->backends = [
new CookieSessionBackend(),
- new DBSessionBackend($container, $settings->get('secret_key')),
+ new DBSessionBackend($container, $container['settings']->get('secret_key')),
];
}
{
function processRequest($request)
{
- /** @var IPF_Session_App $session_app */
- $session_app = $this->container['apps']['session'];
-
- $session_cookie = \PFF\Arr::get($request->COOKIE, $this->settings->get('session_cookie_id'));
- $request->session = $session_app->getSession($session_cookie);
+ $session_cookie = \PFF\Arr::get($request->COOKIE, $this->getSessionCookieName());
+ $request->session = $this->getSessionApp()->getSession($session_cookie);
return false;
}
function processResponse($request, $response)
{
$session_cookie = $request->session->cookie();
- $response->cookies[$this->settings->get('session_cookie_id')] = $session_cookie;
+ $response->cookies[$this->getSessionCookieName()] = $session_cookie;
return $response;
}
+
+ /**
+ * @return string
+ */
+ private function getSessionCookieName()
+ {
+ return $this->container['settings']->get('session_cookie_id');
+ }
+
+ /**
+ * @return IPF_Session_App
+ */
+ private function getSessionApp()
+ {
+ return $this->container['apps']['session'];
+ }
}