Example #1
0
 /**
  * Checks whether there are a message set to a given slot
  * 
  * @param string $slot the slot to check
  */
 static function has($slot)
 {
     if (!session_id()) {
         session_start();
     }
     $app_id = Kennel::getSetting('application', 'id');
     if (isset($_SESSION["{$app_id}-flash"][$slot]) && count($_SESSION["{$app_id}-flash"][$slot]) > 0) {
         return true;
     } else {
         return false;
     }
 }
Example #2
0
 function getLang($long_title = false)
 {
     if (router::$PREFIX) {
         $code = router::$PREFIX;
     } elseif (Kennel::getSetting('i18n', 'detect') && ($browser = self::browser() && preg_match('/' . Kennel::getSetting('i18n', 'list') . '/', self::browser()))) {
         $code = self::browser();
     } else {
         $code = Kennel::getSetting('i18n', 'default');
     }
     if ($long_title) {
         return self::$LANGS[$code];
     } else {
         return $code;
     }
 }
Example #3
0
 static function connect($host = null, $user = null, $pass = null, $database = null)
 {
     if (self::$CONN && @mysql_ping(self::$CONN)) {
         return;
     }
     self::$host = Kennel::getSetting('database', 'host');
     self::$user = Kennel::getSetting('database', 'user');
     self::$pass = Kennel::getSetting('database', 'pass');
     self::$database = Kennel::getSetting('database', 'database');
     self::$CONN = mysql_connect($host ? $host : self::$host, $user ? $user : self::$user, $pass ? $pass : self::$pass);
     if (function_exists('mysql_set_charset')) {
         mysql_set_charset('utf-8', self::$CONN);
     }
     mysql_select_db($database ? $database : self::$database, self::$CONN);
 }
Example #4
0
 function __construct($model_name)
 {
     if (!$model_name) {
         debug::error("Schema::__construct - undefined model name.");
     }
     $path = Kennel::cascade($model_name, 'schemas');
     if (!$path) {
         debug::error("Schema::__construct - model schema for \"{$model_name}\" not found.");
     }
     $doc = new DOMDocument();
     $doc->load(realpath($path));
     $root = $doc->getElementsByTagName('model')->item(0);
     if (Kennel::getSetting('database', 'prefix')) {
         $this->table = Kennel::getSetting('database', 'prefix') . '_' . $root->getAttribute('table');
     } else {
         $this->table = $root->getAttribute('table');
     }
     $fields = $doc->getElementsByTagName('field');
     foreach ($fields as $field) {
         $this->fields[] = new Field($this->table, $field);
     }
 }
Example #5
0
function url($action = null, $lang = null)
{
    // If an absolute URL is provided, simply return it
    if (preg_match('/^https?:\\/\\//', $action)) {
        return $action;
    }
    // Trim slashes
    $action = trim($action, '/');
    // i18n language prefix
    if (!$lang && Kennel::getSetting('i18n', 'enabled')) {
        $prefix = '/' . i18n::getLang();
    } elseif ($lang) {
        $prefix = "/{$lang}";
    } else {
        $prefix = '';
    }
    // Action string
    if ($action) {
        if (Kennel::getSetting('application', 'use_mod_rewrite')) {
            $url = Kennel::$ROOT_URL . "{$prefix}/{$action}/";
        } else {
            $url = Kennel::$ROOT_URL . "/index.php/{$prefix}/{$action}/";
        }
    } else {
        if (Kennel::getSetting('application', 'use_mod_rewrite')) {
            $url = Kennel::$ROOT_URL . ($prefix ? "{$prefix}/" : '/');
        } else {
            $url = Kennel::$ROOT_URL . ($prefix ? "/index.php/{$prefix}/" : '/');
        }
    }
    // Trim slash for query or hash strings
    if (strpos($url, '?') !== false || strpos($url, '#') !== false) {
        $url = trim($url, '/');
    }
    return $url;
}
Example #6
0
 function getTitle()
 {
     if ($this->title && Kennel::getSetting('application', 'title')) {
         return $this->title . " {$this->titleSeparator} " . Kennel::getSetting('application', 'title');
     } elseif (!$this->title && Kennel::getSetting('application', 'title')) {
         return Kennel::getSetting('application', 'title');
     } elseif ($this->title && !Kennel::getSetting('application', 'title')) {
         return $this->title;
     } else {
         return 'Untitled';
     }
 }
Example #7
0
 /**
  * @param Model $user
  * @param string $realm
  */
 static function updateUser($user, $realm = 'admin')
 {
     if (!session_id()) {
         session_start();
     }
     $app_id = Kennel::getSetting('application', 'id');
     $_SESSION["{$app_id}-{$realm}"] = $user->toArray();
     self::$user[$realm] = $user;
 }
Example #8
0
 static function error($errstr, $backtrace_level = 0)
 {
     // Skip if settings are not found
     if (Kennel::getSetting('application', 'debug_mode')) {
         self::dumpError($errstr, $backtrace_level);
     }
 }
Example #9
0
 function i18n($lang = null)
 {
     // If i18n is not enabled, return itself
     if (!Kennel::getSetting('i18n', 'enabled')) {
         return $this;
     }
     if (!$lang) {
         $lang = i18n::getLang();
     }
     $primaryKey = $this->schema->getPrimaryKey()->name;
     $this->_fetchI18n();
     foreach ($this->_i18n as $i18n) {
         if ($i18n->lang == $lang) {
             return $i18n;
         }
     }
     // If no localized version was found, create one now
     $primaryKey = $this->schema->getPrimaryKey()->name;
     $i18n = new Model("{$this->model_name}_i18n");
     $i18n->__set("{$this->model_name}_{$primaryKey}", $this->{$primaryKey});
     $i18n->lang = $lang;
     // … and populate it with default values, if any.
     // Useful as base data for internationalization of existing, populated models
     foreach ($i18n->_data as $key => $value) {
         if ($key != 'id' && isset($this->_data[$key])) {
             $i18n->{$key} = $this->{$key};
         }
     }
     return $this->_i18n[] = $i18n;
 }
Example #10
0
 static function process()
 {
     // Set the method
     self::$METHOD = $_SERVER['REQUEST_METHOD'];
     // Get the request parts
     $request_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     if (Kennel::getSetting('application', 'use_mod_rewrite')) {
         $action_string = substr(trim($request_url, '/'), strlen(Kennel::$ROOT_URL));
     } else {
         $action_string = substr(trim($request_url, '/'), strlen(Kennel::$ROOT_URL . '/index.php'));
     }
     $action_string = str_replace(strstr($action_string, '?'), '', $action_string);
     $action_array = array_filter(explode('/', $action_string));
     // Reasign action keys (to avoid empty entries due to double slashes) and convert to lowercase
     foreach ($action_array as $key => $part) {
         if ($part) {
             if (strpos($part, ':') === false) {
                 self::$PARTS[] = input::clean($part);
             } else {
                 $named_arg = explode(':', $part);
                 self::$NAMED_ARGS[$named_arg[0]] = $named_arg[1];
             }
         }
     }
     // Process any hooks if present
     if (is_array(self::$HOOKS) && count(self::$HOOKS > 0)) {
         foreach (self::$HOOKS as $hook) {
             self::$PARTS = call_user_func($hook, self::$PARTS);
         }
     }
     // Make the Resource String available to the API
     self::$RESOURCE = implode('/', self::$PARTS);
     // i18n URL redirection
     if (Kennel::getSetting('i18n', 'enabled') && Kennel::getSetting('i18n', 'redirect') && !router::$PREFIX) {
         header('location: ' . url(Request::$RESOURCE, i18n::getLang()));
     }
     // 0. Render the Home Page if no Request::PARTS are present
     if (count(self::$PARTS) == 0) {
         self::$CONTROLLER = 'Main';
         self::$ACTION = 'index';
     }
     // 1. First check: method in the main controller
     if (isset(self::$PARTS[0]) && method_exists('Main_controller', str_replace('-', '_', self::$PARTS[0]))) {
         self::$CONTROLLER = 'main';
         self::$ACTION = str_replace('-', '_', self::$PARTS[0]);
         self::$ARGS = array_slice(self::$PARTS, 1);
     }
     // 2. Second check: user defined controller...
     if (isset(self::$PARTS[0]) && is_file(Kennel::$ROOT_PATH . '/application/controllers/' . str_replace('-', '_', self::$PARTS[0]) . '.php')) {
         self::$CONTROLLER = ucfirst(str_replace('-', '_', self::$PARTS[0]));
         if (isset(self::$PARTS[1]) && method_exists(self::$CONTROLLER . '_controller', str_replace('-', '_', self::$PARTS[1]))) {
             self::$ACTION = str_replace('-', '_', self::$PARTS[1]);
             self::$ARGS = array_slice(self::$PARTS, 2);
         } else {
             self::$ACTION = 'index';
             self::$ARGS = array_slice(self::$PARTS, 1);
         }
     }
     // 3. Third check: module controller
     if (isset(self::$PARTS[0])) {
         if (!Kennel::$MODULES) {
             Kennel::fetchModules();
         }
         foreach (Kennel::$MODULES as $module => $info) {
             if (is_file(Kennel::$ROOT_PATH . "/modules/{$module}/controllers/" . str_replace('-', '_', self::$PARTS[0]) . '.php')) {
                 self::$CONTROLLER = ucfirst(str_replace('-', '_', self::$PARTS[0]));
                 if (isset(self::$PARTS[1]) && method_exists(self::$CONTROLLER . '_controller', str_replace('-', '_', self::$PARTS[1]))) {
                     self::$ACTION = str_replace('-', '_', self::$PARTS[1]);
                     self::$ARGS = array_slice(self::$PARTS, 2);
                 } else {
                     self::$ACTION = 'index';
                     self::$ARGS = array_slice(self::$PARTS, 1);
                 }
             }
         }
     }
     // 4. Forth check: system controller
     if (isset(self::$PARTS[0]) && is_file(Kennel::$ROOT_PATH . '/system/controllers/' . str_replace('-', '_', self::$PARTS[0]) . '.php')) {
         self::$CONTROLLER = ucfirst(str_replace('-', '_', self::$PARTS[0]));
         if (isset(self::$PARTS[1])) {
             if (method_exists(self::$CONTROLLER . '_controller', str_replace('-', '_', self::$PARTS[1]))) {
                 self::$ACTION = str_replace('-', '_', self::$PARTS[1]);
                 self::$ARGS = array_slice(self::$PARTS, 2);
             }
         } else {
             self::$ACTION = 'index';
             self::$ARGS = array_slice(self::$PARTS, 1);
         }
     }
     // 5. Fifth check: nothing found
     if (!self::$CONTROLLER) {
         self::$CONTROLLER = 'Main';
     }
     if (!self::$ACTION) {
         self::$ACTION = 'notfound';
     }
     if (self::$CONTROLLER == 'Main' && self::$ACTION == 'notfound') {
         self::$ARGS = self::$PARTS;
     }
     return Kennel::controllerAction(self::$CONTROLLER, self::$ACTION, self::$ARGS);
 }