示例#1
0
 public function dispatchAppServer($context)
 {
     $_ENV = $_SERVER = $context['env'];
     @parse_str($_ENV['QUERY_STRING'], $_GET);
     $_GET['ak'] = $_ENV['PATH_INFO'];
     Ak::unsetStaticVar('AkRequestSingleton');
     Ak::unsetStaticVar('AkRouterSingleton');
     Ak::unsetStaticVar('AkUrlWriterSingleton');
     AkConfig::setOption('Request.remote_ip', '127.0.0.1');
     try {
         $time_start = microtime(true);
         AK_ENABLE_PROFILER && AkDebug::profile(__CLASS__ . '::' . __FUNCTION__ . '() call');
         $this->Request = AkRequest::getInstance();
         $this->Response = new AkResponse();
         $path = ltrim(str_replace('..', '.', $context['env']['REQUEST_URI']), '/. ');
         if (empty($path) && file_exists(AK_PUBLIC_DIR . DS . 'index.html')) {
             $Controller = new AkActionController();
             $Controller->Response = $this->Response;
             $Controller->renderText(file_get_contents(AK_PUBLIC_DIR . DS . 'index.html'));
             return $Controller->Response;
         } elseif (!empty($path) && file_exists(AK_PUBLIC_DIR . DS . $path)) {
             $Controller = new AkActionController();
             $Controller->Response = $this->Response;
             $Controller->sendFile(AK_PUBLIC_DIR . DS . $path, array('stream' => false));
             return $Controller->Response;
         } else {
             if ($this->Controller = $this->Request->recognize()) {
                 $this->Controller->ak_time_start = $time_start;
                 AK_ENABLE_PROFILER && AkDebug::profile('Request::recognize() completed');
                 $this->Controller->process($this->Request, $this->Response);
             }
             return $this->Response;
         }
     } catch (Exception $e) {
         if (isset($this->Controller) && method_exists($this->Controller, 'render_error')) {
             $this->Controller->render_error($e);
         } else {
             $ExceptionDispatcher = new AkExceptionDispatcher();
             $ExceptionDispatcher->renderException($e);
         }
     }
 }
示例#2
0
/**
 * This file is will include Akelos autoload.php where the framework makes most of Akelos
 * environment guessing. You can override most Akelos constants by declaring them in 
 * this file.
 *
 * You can retrieve a list of current settings by running AkDebug::get_constants();
 *
 * If you're running a high load site you might want to fine tune this options
 * according to your environment. If you set the options implicitly you might
 * gain in performance but loose in flexibility when moving to a different
 * environment.
 *
 * If you need to customize the framework default settings or specify
 * internationalization options, edit the files at config/environments/*
 */
defined('DS') || define('DS', DIRECTORY_SEPARATOR);
defined('AK_BASE_DIR') || define('AK_BASE_DIR', str_replace(DS . 'config' . DS . 'environment.php', '', __FILE__));
defined('AK_FRAMEWORK_DIR') || define('AK_FRAMEWORK_DIR', AK_BASE_DIR . DS . 'vendor' . DS . 'akelos');
defined('AK_TESTING_NAMESPACE') || define('AK_TESTING_NAMESPACE', 'akelos');
include AK_FRAMEWORK_DIR . DS . 'autoload.php';
/**
 * After including autoload.php, you can override configuration options by calling:
 * 
 *     AkConfig::setOption('option_name', 'value');
 */
// Akelos only shows debug messages if accessed from the localhost IP, you can manually tell
// Akelos which IP's you consider to be local.
// AkConfig::setOption('local_ips', array('127.0.0.1', '192.168.1.69'));
AkConfig::setOption('action_controller.session', array("key" => "_data", "secret" => "[SECRET]"));
示例#3
0
文件: route.php 项目: bermi/sintags
 private function _rebaseApplicationIfRequired()
 {
     if (isset($this->requirements['rebase'])) {
         AkConfig::setOption('rebase_path', (AK_WIN ? '' : DS) . $this->requirements['rebase']);
         unset($this->requirements['rebase']);
     }
 }
示例#4
0
文件: config.php 项目: bermi/akelos
<?php

require_once dirname(__FILE__) . '/../config.php';
class ActiveDocumentUnitTest extends AkUnitTest
{
    public function __construct()
    {
        AkConfig::setDir('suite', dirname(__FILE__));
        $this->rebaseAppPaths();
        $this->db = new AkOdbAdapter();
        $this->db->connect(array('type' => 'mongo_db', 'database' => 'akelos_testing'));
        defined('AK_TESTING_MONGO_DB_IS_CONNECTED') || define('AK_TESTING_MONGO_DB_IS_CONNECTED', $this->db->isConnected());
    }
    public function __destruct()
    {
        parent::__destruct();
    }
    public function skip()
    {
        $this->skipIf(!AK_TESTING_MONGO_DB_IS_CONNECTED, '[' . get_class($this) . '] ' . 'Can\'t connect to MongoDB');
    }
}
AkConfig::setOption('document_connections', array(array('type' => 'mongo_db')));
示例#5
0
文件: mime.php 项目: bermi/akelos
 static function unregister($content_type)
 {
     $mime_types = AkMimeType::getRegistered();
     unset($mime_types[$content_type]);
     AkConfig::setOption('_core_mime_types', $mime_types);
 }
示例#6
0
defined('AK_BASE_DIR') || define('AK_BASE_DIR', str_replace(DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php', '', substr(AK_TEST_DIR, 0, -5)));
defined('AK_LOG_EVENTS') || define('AK_LOG_EVENTS', true);
defined('DS') || define('DS', DIRECTORY_SEPARATOR);
defined('AK_FRAMEWORK_DIR') || define('AK_FRAMEWORK_DIR', AK_BASE_DIR);
defined('AK_TESTING_NAMESPACE') || define('AK_TESTING_NAMESPACE', 'akelos');
defined('AK_TESTING_URL') || define('AK_TESTING_URL', 'http://akelos.tests');
include_once AK_FRAMEWORK_DIR . DS . 'autoload.php';
if (AK_CLI && !AK_WIN) {
    // will try to set the right mode for tmp folders, git does not kee trac of this for us
    foreach ((array) glob(AK_BASE_DIR . DS . 'tmp' . DS . '*' . DS . '*/') as $__folder) {
        `chmod 777 {$__folder}`;
    }
    unset($__folder);
}
if (!AkConfig::getOption('testing_url', false)) {
    AkConfig::setOption('testing_url', AK_TESTING_URL);
}
AkUnitTestSuite::checkIfTestingWebserverIsAccesible(array('base_path' => AK_TEST_DIR . DS . AK_TESTING_NAMESPACE));
AkUnitTestSuite::createTestingDatabaseIfNotAvailable();
AkUnitTestSuite::ensureTmpDirPermissions();
try {
    ob_start();
    if (!class_exists('BaseActionController')) {
        class BaseActionController extends AkActionController
        {
        }
    }
    if (!class_exists('ApplicationController')) {
        class ApplicationController extends BaseActionController
        {
            public $layout = false;
示例#7
0
 public function test_member_when_changed_default_restful_actions_and_path_names_not_specified()
 {
     $controller = 'messages';
     $default_path_names = AkConfig::getOption('resources_path_names', array('add' => 'add', 'edit' => 'edit'));
     AkConfig::setOption('resources_path_names', array('add' => 'nuevo', 'edit' => 'editar'));
     $add_options = array('action' => 'add', 'controller' => $controller);
     $add_path = '/' . $controller . '/nuevo';
     $edit_options = array('action' => 'edit', 'id' => 1, 'controller' => $controller);
     $edit_path = '/' . $controller . '/1/editar';
     $this->useRestfulRoutingMapper($controller);
     $this->assertRestfulRoutesFor($controller, array('path' => $add_path, 'method' => 'get'));
     $this->assertRestfulRoutesFor($controller, array('path' => $edit_path, 'method' => 'get'));
     AkConfig::setOption('resources_path_names', $default_path_names);
 }
示例#8
0
 public function logError($Exception)
 {
     if (!($Logger = Ak::getLogger())) {
         return;
     }
     $message = $Exception->getMessage() . "\n" . $Exception->getTraceAsString();
     $original_faltal_setting = AkConfig::getOption('logger.exit_on_fatal', true);
     $original_display_setting = AkConfig::getOption('logger.display_message', true);
     $original_mail_setting = AkConfig::getOption('logger.send_mails', true);
     AkConfig::setOption('logger.exit_on_fatal', false);
     AkConfig::setOption('logger.display_message', false);
     AkConfig::setOption('logger.send_mails', false);
     $Logger->fatal("\n" . get_class($Exception) . (empty($message) ? '' : ': (' . $message . ")") . "\n  ");
     AkConfig::setOption('logger.exit_on_fatal', $original_faltal_setting);
     AkConfig::setOption('logger.display_message', $original_display_setting);
     AkConfig::setOption('logger.send_mails', $original_mail_setting);
 }
示例#9
0
文件: suite.php 项目: bermi/akelos
 static function checkIfTestingWebserverIsAccesible($options = array())
 {
     if (AkConfig::getOption('webserver_enabled', false)) {
         return;
     }
     if (!AK_WEB_REQUEST && file_exists($options['base_path'] . DS . 'ping.php')) {
         $uuid = Ak::uuid();
         file_put_contents($options['base_path'] . DS . 'akelos_test_ping_uuid.txt', $uuid);
         AkConfig::setOption('webserver_enabled', @file_get_contents(AkConfig::getOption('testing_url') . '/' . basename($options['base_path']) . '/ping.php') == $uuid);
         unlink($options['base_path'] . DS . 'akelos_test_ping_uuid.txt');
     } else {
         AkConfig::setOption('webserver_enabled', false);
     }
 }
示例#10
0
文件: config.php 项目: bermi/akelos
 public function test_should_get_not_get_default_option_if_already_set()
 {
     AkConfig::setOption('valid', 'yes');
     $this->assertEqual(AkConfig::getOption('valid', 'default'), 'yes');
 }
示例#11
0
文件: user.php 项目: bermi/admin
 public function __destruct()
 {
     unlink(AkConfig::getDir('config') . DS . 'admin_testing.yml');
     AkConfig::setOption('test_mode_settings_namespace', null);
     parent::__destruct();
 }
示例#12
0
文件: config.php 项目: bermi/akelos
<?php

if (!defined('AK_BASE_DIR') && !defined('AK_FRAMEWORK_DIR')) {
    define('AK_FRAMEWORK_DIR', realpath(dirname(__FILE__) . '/../../'));
    if (is_dir(AK_FRAMEWORK_DIR . DIRECTORY_SEPARATOR . 'app_layout')) {
        define('AK_BASE_DIR', AK_FRAMEWORK_DIR . DIRECTORY_SEPARATOR . 'app_layout');
    }
}
require_once dirname(__FILE__) . '/../shared/config/config.php';
AkConfig::setOption('testing_url', 'http://akelos.tests/akelos');
AkConfig::setOption('action_controller.session', array("key" => "_myapp_session", "secret" => "c1ef4792-42c5-b484-819e-16750c71cddb"));
AkUnitTestSuite::checkIfTestingWebserverIsAccesible(array('base_path' => dirname(__FILE__)));
AkConfig::setOption('memcached_enabled', AkMemcache::isServerUp());
if (AK_WEB_REQUEST && !(AK_REMOTE_IP == '127.0.0.1' || AK_REMOTE_IP == '::1')) {
    die('Web tests can only be called from localhost(127.0.0.1), you can change this beahviour in ' . __FILE__);
}