示例#1
0
 public function testDirectories()
 {
     $dir = 'app directory/';
     Days_Engine::setAppDir($dir);
     $config = new Days_View_Config();
     $this->assertEquals($dir . Days_View_Config::TEMPLATE_DIR, $config->getTemplateDir());
     $this->assertEquals($dir . Days_View_Config::COMPILE_DIR, $config->getCompileDir());
     $this->assertEquals($dir . Days_View_Config::CACHE_DIR, $config->getCacheDir());
 }
示例#2
0
 public function __construct()
 {
     $appPath = Days_Engine::appPath();
     if (0 == strcmp($appPath, self::$_appDir)) {
         return;
     }
     self::$_appDir = $appPath;
     if (DIRECTORY_SEPARATOR != substr(self::$_appDir, -1)) {
         self::$_appDir .= DIRECTORY_SEPARATOR;
     }
     self::$_templateDir = self::$_appDir . self::TEMPLATE_DIR;
     self::$_compileDir = self::$_appDir . self::COMPILE_DIR;
     self::$_cacheDir = self::$_appDir . self::CACHE_DIR;
     self::$_caching = Days_Config::load()->get('cache/lifetime', 0);
 }
示例#3
0
文件: Log.php 项目: laiello/phpdays
 public static function save()
 {
     if (!empty(self::$_errors)) {
         // prepare data
         $sErrorFile = str_replace(':', '.', $_SERVER['HTTP_HOST']);
         $sLogDir = Days_Engine::appPath() . 'system/log/';
         // get current application error levels
         $level = Days_Config::load()->get('log/level');
         // save log
         if (Days_Config::load()->get('engine/debug', false)) {
             $messages = self::getMessages($level);
             if (count($messages) == 0) {
                 return;
             }
             switch (strtolower(Days_Config::load()->get('log/type', 'file'))) {
                 // save to SQLite
                 case 'sqlite':
                     self::logtoSqlite($messages, $sErrorFile, $sLogDir);
                     break;
                     //send to browser
                 //send to browser
                 case 'browser':
                     self::logtoBrowser($messages);
                     break;
                     // send to FirePHP
                 // send to FirePHP
                 case 'fb':
                 case 'firebug':
                 case 'firephp':
                     self::logtoFirephp($messages);
                     break;
                     // save to FILE
                 // save to FILE
                 case 'file':
                 default:
                     self::logtoFile($messages, $sErrorFile, $sLogDir);
             }
         }
         // clear saved errors
         self::$_errors = array();
     }
 }
示例#4
0
 /**
  * Run application.
  *
  * @param string $appPath Path to application
  * @param string $mode Name of configuration file used in work
  */
 private function __construct($appPath, $mode)
 {
     // set pathes
     self::$_libPath = realpath(dirname(__FILE__) . '/..') . '/';
     self::$_appPath = realpath($appPath) . '/';
     self::$_publicPath = getcwd() . '/';
     set_include_path(get_include_path() . PATH_SEPARATOR . self::$_libPath);
     spl_autoload_register(array(__CLASS__, 'autoload'));
     Days_Session::init();
     // set config main file
     if (!empty($mode)) {
         Days_Config::setDefaultConfig($mode);
     }
     // set path for config
     Days_Config::setConfigPath(self::$_appPath . 'config/');
     // set debug mode
     self::$_isDebug = (bool) Days_Config::load()->get('engine/debug', false);
     // set error level and handler
     $iErrorLevel = self::isDebug() ? E_ALL | E_STRICT : E_ALL ^ E_NOTICE;
     error_reporting($iErrorLevel);
     setlocale(LC_ALL, 'ru_RU.UTF-8', 'RUS', 'RU');
     //set timezone
     if ($timezone = Days_Config::load()->get('engine/timezone', false)) {
         date_default_timezone_set($timezone);
     } else {
         date_default_timezone_set('Europe/Helsinki');
     }
     // not send execution errors to user
     ob_start();
     try {
         if (Days_Config::load()->get('engine/autorun', 1)) {
             $autorunClass = "Controller_System_Autorun";
             // run predefined class
             if (class_exists($autorunClass) and is_callable(array($autorunClass, 'run'))) {
                 call_user_func(array($autorunClass, 'run'));
             }
         }
         Days_Event::run('engine.start');
         // get url info
         $controller = Days_Url::getSpec('controller');
         $action = Days_Url::getSpec('action');
         $ext = Days_Url::getSpec('ext');
         Days_Event::run('controller.start');
         // set module path
         Days_Model::setPath(self::appPath() . 'Model/');
         // set controller params
         $controllerClass = "Controller_" . ucfirst($controller);
         // use index controller for non-exists controllers
         if (!class_exists($controllerClass) and Days_Config::load()->get('url/virtual')) {
             $controllerClass = "Controller_Index";
             $controller = 'index';
         }
         // set action name
         $actionMethod = Days_Request::isAjax() ? "{$action}AjaxAction" : "{$action}Action";
         // set template path
         $template = "content/{$controller}/{$action}.{$ext}";
         // create controller
         if (!class_exists($controllerClass)) {
             throw new Days_Exception("Controller '{$controllerClass}' not found");
         }
         $controllerObj = new $controllerClass($template);
         if (!$controllerObj instanceof Days_Controller) {
             throw new Days_Exception("Controller '{$controllerClass}' should be extended from 'Days_Controller'");
         }
         // call init() method for prepare object
         $controllerObj->init();
         Days_Event::run('controller.post.init');
         // execute PostAction before call specified action
         if (Days_Request::isPost()) {
             $actionPost = "{$action}PostAction";
             if (method_exists($controllerObj, $actionPost)) {
                 call_user_func(array($controllerObj, $actionPost));
             }
         }
         // call specified action
         if (!method_exists($controllerObj, $actionMethod)) {
             throw new Days_Exception("Action {$actionMethod} in controller {$controllerClass} not defined");
         }
         $actionResult = call_user_func(array($controllerObj, $actionMethod));
         // ajax query
         if (Days_Request::isAjax()) {
             if (is_null($actionResult)) {
                 $actionResult = array();
             }
             $content = $actionResult;
         } else {
             $controllerObj->setLayout($controller, false);
             $content = call_user_func(array($controllerObj, 'getContent'));
             Days_Response::addHeader($ext);
         }
         Days_Event::run('controller.end');
         // set data to response
         Days_Response::addContent($content);
     } catch (Exception $oEx) {
         // save error message about this query
         Days_Log::add($oEx->getMessage());
         // page not found
         Days_Response::addHeader(Days_Response::NOT_FOUND);
     }
     // save runtime errors
     for ($iObLevel = ob_get_level(); $iObLevel > 0; $iObLevel--) {
         $sError = ob_get_contents();
         if ('' != $sError) {
             Days_Log::add("This data printed in scripts: '{$sError}'");
         }
         // close output handler
         ob_end_clean();
     }
     // save errors
     Days_Log::save();
     Days_Event::run('engine.end');
     // send headers to user
     Days_Event::run('response.send.headers');
     Days_Response::sendHeaders();
     // send content to user
     Days_Event::run('response.send.content');
     Days_Response::sendContent();
 }
示例#5
0
 public static function setAppDir($dir)
 {
     self::$appDir = $dir;
 }
示例#6
0
文件: index.php 项目: laiello/phpdays
<?php

// disable access to script
if ($_SERVER['REQUEST_URI'] == $_SERVER["SCRIPT_NAME"]) {
    Header('HTTP/1.0 404 Not Found');
    exit;
}
// set error level
require_once '../../lib/Days/Engine.php';
// set path to application dir AND stage in "development" status
Days_Engine::run('../app/', 'development');
示例#7
0
 public static function setUpBeforeClass()
 {
     self::$_tempDir = self::_tempDir() . '/';
     Days_Engine::setAppDir(self::$_tempDir);
     self::_createDirTree();
 }