Skip to content
This repository has been archived by the owner on Jul 2, 2020. It is now read-only.

jeanmask/subdomain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 

Repository files navigation

Subdomain Module for Kohana 3.3.x

This module implements ability to catch subdomains on class "Request" and set routes specifically by sub-domain.

How to use:

Requeriment

Set base_url using absolute value in your bootstrap. Ex:

Kohana::init(array(
	'base_url'   => 'http://your_domain.com/',
));

Use

catch actual sub-domain

echo Request::$subdomain;

Set defaults subdomains to routes. Ex:

// Default value is array(Route::SUBDOMAIN_EMPTY, 'www'); Route::SUBDOMAIN_EMPTY = if not having subdomain
Routes::$default_subdomains = array('','www');

Set Route to default subdomain. Ex:

// if use address "your-domain.com" or "www.your-domain.com", this route is valid.
Route::set('subdomain', '(<controller>(/<action>(/<id>)))')
->defaults(array(
	'controller' => 'welcome',
	'action'     => 'index',
));

Set Route by specifically subdomain. Ex:

// if use address "test.your-domain.com", this route is valid.
Route::set('subdomain', '(<controller>(/<action>(/<id>)))')
    ->subdomains(array('test'))
	->defaults(array(
		'controller' => 'test',
		'action'     => 'index',
	));

Set Route for all subdomains (wildcard). Ex:

// you can use any sub-domain to execute this route.
Route::set('subdomain', '(<controller>(/<action>(/<id>)))')
    ->subdomains(array(Route::SUBDOMAIN_WILDCARD))
	->defaults(array(
		'controller' => 'test',
		'action'     => 'wildcard',
));

Complete bootstrap example

<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
require SYSPATH.'classes/kohana/core'.EXT;

if (is_file(APPPATH.'classes/kohana'.EXT)) {
	// Application extends the core
	require APPPATH.'classes/kohana'.EXT;
} else {
	// Load empty core extension
	require SYSPATH.'classes/kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('America/Chicago');

/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale(LC_ALL, 'en_US.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://kohanaframework.org/guide/using.autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

// -- Configuration and initialization -----------------------------------------

/**
 * Set the default language
 */
I18n::lang('en-us');

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
if (isset($_SERVER['KOHANA_ENV'])) {
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
	'base_url'   => 'http://your-domain/app/',
));

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Config_File);

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	// 'auth'       => MODPATH.'auth',       // Basic authentication
	// 'cache'      => MODPATH.'cache',      // Caching with multiple backends
	// 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
	// 'database'   => MODPATH.'database',   // Database access
	// 'image'      => MODPATH.'image',      // Image manipulation
	// 'orm'        => MODPATH.'orm',        // Object Relationship Mapping
	// 'unittest'   => MODPATH.'unittest',   // Unit testing
	// 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
	'subdomain'  => MODPATH.'subdomain'
));

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */
 
Route::$default_subdomains = array(Route::SUBDOMAIN_EMPTY, 'www');

Route::set('default', '(<controller>(/<action>(/<id>)))')
	->defaults(array(
		'controller' => 'welcome',
		'action'     => 'index',
));
 
Route::set('subdomain1', '(<controller>(/<action>(/<id>)))')
    ->subdomains(array('test','test2'))
	->defaults(array(
		'controller' => 'test',
		'action'     => 'index',
));
	
Route::set('subdomain2', '(<controller>(/<action>(/<id>)))')
    ->subdomains(array(Route::SUBDOMAIN_WILDCARD))
	->defaults(array(
		'controller' => 'test',
		'action'     => 'wildcard',
));	

Sugestions? misc@jean.bz

[]'s

:)

About

Kohana 3.x module. This module capture the current subdomain and define routes by your custom subdomains.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages