Exemple #1
0
 private function create_table($table_name)
 {
     $new_table = new Cms_Structure($table_name, TRUE);
     $default_params = Cms::get_default_table_params();
     $names_matching = Cms::get_names_matching();
     if (array_key_exists($table_name, $names_matching)) {
         $default_params['name'] = $names_matching[$table_name];
     } else {
         $default_params['name'] = str_replace('_', ' ', Text::ucfirst($new_table->get_alias()));
     }
     $default_column_config = Cms::get_default_column();
     $matching_rules = Cms::get_columns_matching_rules();
     $columns_data = Cms::get_dal_instance()->get_columns($new_table->get_table_name());
     $special_columns = Cms::get_special_columns();
     foreach ($special_columns as $param_name => $column_names) {
         if (array_key_exists($param_name, $default_params)) {
             foreach ($column_names as $col_name) {
                 if (array_key_exists($col_name, $columns_data)) {
                     $default_params[$param_name] = $col_name;
                 }
             }
         }
     }
     $new_table->set_options($default_params)->create_columns($columns_data, $matching_rules, $default_column_config)->save();
     return $new_table;
 }
Exemple #2
0
 /**
  * List of pages (blogs/posts/etc.) with a specific tag
  *
  * @throws  HTTP_Exception_404
  *
  * @uses    Log::add
  * @uses    Text::ucfirst
  * @uses    ACL::check
  * @uses    Meta::links
  * @uses    URL::canonical
  * @uses    Route::url
  */
 public function action_view()
 {
     $id = (int) $this->request->param('id', 0);
     $tag = ORM::factory('tag', $id);
     if (!$tag->loaded()) {
         throw HTTP_Exception::factory(404, 'Tag :tag not found!', array(':tag' => $id));
     }
     $this->title = __(':title', array(':title' => Text::ucfirst($tag->name)));
     $view = View::factory('tag/view')->set('teaser', TRUE)->bind('pagination', $pagination)->bind('posts', $posts);
     $posts = $tag->posts;
     if (!ACL::check('administer tags') and !ACL::check('administer content')) {
         $posts->where('status', '=', 'publish');
     }
     $total = $posts->reset(FALSE)->count_all();
     if ($total == 0) {
         Log::info('No posts found.');
         $this->response->body(View::factory('page/none'));
         return;
     }
     $pagination = Pagination::factory(array('current_page' => array('source' => 'cms', 'key' => 'page'), 'total_items' => $total, 'items_per_page' => 15, 'uri' => $tag->url));
     $posts = $posts->order_by('created', 'DESC')->limit($pagination->items_per_page)->offset($pagination->offset)->find_all();
     $this->response->body($view);
     // Set the canonical and shortlink for search engines
     if ($this->auto_render === TRUE) {
         Meta::links(URL::canonical($tag->url, $pagination), array('rel' => 'canonical'));
         Meta::links(Route::url('tag', array('action' => 'view', 'id' => $tag->id)), array('rel' => 'shortlink'));
     }
 }
Exemple #3
0
 /**
  * Create a new table instance.
  *
  *     $table = Table::factory($name);
  *
  * @param  string $name table name
  * @return Tbl
  */
 public static function factory($name)
 {
     if ($name) {
         $class = 'Tbl_' . Text::ucfirst($name, '_');
     } else {
         $class = get_called_class();
     }
     return new $class();
 }
Exemple #4
0
 /**
  *
  * Contruct that checks you are loged in before nothing else happens!
  */
 function __construct(Request $request, Response $response)
 {
     parent::__construct($request, $response);
     //we check if that action can be done, if not redirected to the index
     if (!$this->allowed_crud_action()) {
         $url = Route::get('oc-panel')->uri(array('controller' => $this->request->controller(), 'action' => 'index'));
         $this->redirect($url);
     }
     //url used in the breadcrumb
     $url_bread = Route::url('oc-panel', array('controller' => $this->request->controller()));
     Breadcrumbs::add(Breadcrumb::factory()->set_title(Text::ucfirst(__($this->_orm_model)))->set_url($url_bread));
     //action
     Breadcrumbs::add(Breadcrumb::factory()->set_title(Text::ucfirst(__($this->request->action()))));
 }
 /**
  * Create ClI task class and save in file.
  * 
  *     CLI_Task_Scaffold::create('db/migrate', 'template');
  * 
  * @param  string $name     task name
  * @param  string $template class template, uses [CLI_Task_Scaffold::$templates]
  * @return void
  * @throws CLI_Exception
  */
 public static function create($name, $template)
 {
     // Generate task filename
     $filename = APPPATH . CLI_Tasker::DIR_ROOT . Text::ucfirst($name, '/') . EXT;
     $filename = str_replace(array('_', '/'), DIRECTORY_SEPARATOR, $filename);
     // Create task directory if it's not exist
     $dirname = dirname($filename);
     if (!is_dir($dirname) and !mkdir($dirname, 0755, TRUE)) {
         throw new CLI_Exception('Method :method: can not create directory `:dirname`', array(':method' => __METHOD__, ':dirname' => $dirname));
     }
     // Create class content
     $content = View::factory(CLI_Task_Scaffold::$templates[$template], array('kohana_cli_class' => CLI_Tasker::name2class($name)));
     // Save task content in file
     if (file_put_contents($filename, $content) === FALSE) {
         throw new CLI_Exception('Method :method: can not create file `:filename`', array(':method' => __METHOD__, ':filename' => $filename));
     }
 }
Exemple #6
0
 /**
  * Route
  *
  * @return Route
  */
 public static function write()
 {
     // Get backend name
     $backend_name = Cms_Helper::settings('backend_name');
     // Backend Auth
     Route::set('backend_auth', $backend_name . '/<action>', array('action' => '(directuser|login|logout)'))->defaults(array('directory' => 'backend', 'controller' => 'auth'));
     // Backend Media
     Route::set('backend_media', $backend_name . '/media(/<stuff>)', array('stuff' => '.*'))->defaults(array('directory' => 'backend', 'controller' => 'media', 'action' => 'index'));
     // Backend items
     Route::set('backend_items', $backend_name . '/items/<division>(/<action>(/<key>))')->filter(function ($route, $params, $request) {
         foreach ($params as &$param) {
             $param = str_replace('-', '_', $param);
         }
         return $params;
     })->defaults(array('directory' => 'backend', 'controller' => 'items', 'action' => 'index'));
     // Backend
     Route::set('backend', $backend_name . '(/<controller>(/<action>(/<key>)))')->filter(function ($route, $params, $request) {
         foreach ($params as &$param) {
             $param = str_replace('-', '_', Text::ucfirst($param));
         }
         return $params;
     })->defaults(array('directory' => 'backend', 'controller' => 'home', 'action' => 'index'));
     // Media
     Route::set('media', 'media(/<stuff>)', array('stuff' => '.*'))->defaults(array('controller' => 'media', 'action' => 'index'));
     // Imagefly
     // imagefly/1/w253-h253-p/test4.jpg
     Route::set('imagefly', 'imagefly(/<stuff>)', array('stuff' => '.*'))->defaults(array('controller' => 'imagefly', 'action' => 'index'));
     // Item
     Route::set('item', '<stuff>', array('stuff' => '.*'))->filter(function ($route, $params, $request) {
         foreach ($params as &$param) {
             $param = str_replace('-', '_', Text::ucfirst($param));
         }
         $stuffs = explode('/', $params['stuff']);
         $end_staff = end($stuffs);
         $segment = substr($end_staff, 0, strlen($end_staff) - (strpos($end_staff, '.') - 1));
         if (!$segment) {
             $segment = Cms_Helper::settings('home_page');
         }
         $params['segment'] = $segment;
         $item = (bool) DB::select('id')->from('items')->where('segment', '=', $segment)->execute()->get('id');
         if (!$item) {
             return FALSE;
         }
         return $params;
     })->defaults(array('controller' => 'item', 'action' => 'index'));
 }
Exemple #7
0
 public function load_module($name, $controller, $options = array())
 {
     $controller_name_arr = explode("/", $controller);
     $action_name = $controller_name_arr[count($controller_name_arr) - 1];
     unset($controller_name_arr[count($controller_name_arr) - 1]);
     $controller_name = "";
     foreach ($controller_name_arr as $node) {
         if ($node) {
             $controller_name .= "_" . Text::ucfirst($node, "_");
         }
     }
     $eval_options = $options ? '$options' : '';
     $eval = '$Module = new Controller' . $controller_name . '($this->request, $this->response);';
     $eval .= '$Module->action_' . $action_name . '(' . $eval_options . ');';
     eval($eval);
     $this->model["modules"][$name] = $Module->get_body();
     return $this;
 }
 /**
  *
  * Contruct that checks you are loged in before nothing else happens!
  */
 function __construct(Request $request, Response $response)
 {
     parent::__construct($request, $response);
     //we check if that action can be done, if not redirected to the index
     if (!$this->allowed_crud_action()) {
         $url = Route::get('oc-panel')->uri(array('controller' => $this->request->controller(), 'action' => 'index'));
         $this->redirect($url);
     }
     $element = ORM::Factory($this->_orm_model);
     //in case we did not specify what to show
     if (empty($this->_index_fields)) {
         $this->_index_fields = array_keys($element->list_columns());
     }
     //we need the PK always to work on the grid...
     if (!in_array($element->primary_key(), $this->_index_fields)) {
         array_unshift($this->_index_fields, $element->primary_key());
     }
     //url used in the breadcrumb
     $url_bread = Route::url('oc-panel', array('controller' => $this->request->controller()));
     Breadcrumbs::add(Breadcrumb::factory()->set_title(Text::ucfirst(__($this->_orm_model)))->set_url($url_bread));
     //action
     Breadcrumbs::add(Breadcrumb::factory()->set_title(Text::ucfirst(__($this->request->action()))));
 }
Exemple #9
0
 public function action_migration()
 {
     //@todo improve
     //flow: ask for new connection, if success we store it ina  config as an array.
     //then we display the tables with how many rows --> new view, bottom load the db connection form in case they want to change it
     //in the form ask to do diet in current DB cleanins visits users posts inactive?
     //Migration button
     //on submit
     // create config group migration to store in which ID was stuck (if happens)
     // save ids migration for maps in configs?
     // do migration using iframe this
     $this->template->title = __('Open Classifieds migration');
     Breadcrumbs::add(Breadcrumb::factory()->set_title(Text::ucfirst(__('Migration'))));
     //force clean database from migration, not public, just internal helper
     if (Core::get('delete') == 1) {
         // $this->clean_migration();
         // Alert::set(Alert::SUCCESS,__('Database cleaned'));
     }
     if ($this->request->post()) {
         $db_config = array('type' => 'mysqli', 'connection' => array('hostname' => Core::post('hostname'), 'database' => Core::post('database'), 'username' => Core::post('username'), 'password' => Core::post('password'), 'persistent' => false), 'table_prefix' => Core::post('table_prefix'), 'charset' => Core::post('charset'), 'caching' => false, 'profiling' => false);
         try {
             //connect DB
             $db = Database::instance('migrate', $db_config);
             //verify tables in DB
             $pf = Core::post('table_prefix');
             $migration_tables = array($pf . 'accounts', $pf . 'categories', $pf . 'locations', $pf . 'posts', $pf . 'postshits');
             $tables = $db->query(Database::SELECT, 'SHOW TABLES;');
         } catch (Exception $e) {
             Alert::set(Alert::ERROR, __('Review database connection parameters'));
             return;
         }
         //verify tables in DB
         foreach ($tables as $table => $value) {
             $val = array_values($value);
             $t[] = $val[0];
         }
         $tables = $t;
         $match_tables = TRUE;
         foreach ($migration_tables as $t) {
             if (!in_array($t, $tables)) {
                 $match_tables = FALSE;
                 Alert::set(Alert::ERROR, sprintf(__('Table %s not found'), $t));
             }
         }
         //end tables verification
         if ($match_tables) {
             //start migration
             $start_time = microtime(true);
             $this->migrate($db, $pf);
             Alert::set(Alert::SUCCESS, 'oh yeah! ' . round(microtime(true) - $start_time, 3) . ' ' . __('seconds'));
         }
     } else {
         $db_config = core::config('database.default');
     }
     $this->template->content = View::factory('oc-panel/pages/tools/migration', array('db_config' => $db_config));
 }
 /**
  * Covers Text::ucfirst()
  *
  * @test
  * @dataProvider provider_ucfirst
  */
 public function test_ucfirst($expected, $string, $delimiter)
 {
     $this->assertSame($expected, Text::ucfirst($string, $delimiter));
 }
Exemple #11
0
 public function action_view()
 {
     $open_coupon = Arr::get($_GET, 'print_coupon', FALSE);
     $service = ORM::factory('service', $this->request->param('id', NULL));
     $last_modified = $service->date_edited ? $service->date_edited : $service->date_create;
     $this->response->headers('Last-Modified', gmdate("D, d M Y H:i:s \\G\\M\\T", strtotime($last_modified)));
     /*if (!$service->loaded() || !$service->active)
                 throw new HTTP_Exception_404;
     */
     //	    if (!$service->loaded() || !$service->active)
     if (!$service->loaded()) {
         Message::set(Message::ERROR, 'Такой сервис не найден');
         $this->request->redirect('/');
     }
     if ($service->type == 1 and $this->request->param('company_type') != 'services') {
         $this->request->redirect('services/' . $service->id);
     }
     if ($service->type == 2 and $this->request->param('company_type') != 'shops') {
         $this->request->redirect('shops/' . $service->id);
     }
     $this->validation = Validation::factory($_POST)->rule('antibot', 'not_empty');
     if ($_POST) {
         $review = ORM::factory('review');
         try {
             $review->values($_POST, array('text', 'email', 'name'));
             $review->date = Date::formatted_time();
             $review->service_id = $service->id;
             $review->active = 0;
             //$review->user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
             $review->save($this->validation);
             Message::set(Message::SUCCESS, Kohana::message('success_msg', 'review_created'));
             $this->request->redirect('services/' . $service->id);
         } catch (ORM_Validation_Exception $e) {
             $this->errors = $e->errors('models');
             $this->values = $_POST;
         }
     }
     $cars = array();
     foreach ($service->cars->find_all() as $c) {
         $cars[] = $c;
     }
     // Данные для отправки скрипту "Фиксирования визита"
     $visitor_data = json_encode(array('data' => Encrypt::instance('statistics')->encode(serialize(array('uri' => $this->request->uri(), 'time_created' => strtotime(Date::formatted_time()), 'client_ip' => Request::$client_ip, 'referrer' => isset($_SERVER['HTTP_REFERER']) ? $this->request->referrer() : 'havent_referrer')))));
     $this->view = View::factory('frontend/services/view_service')->set('visitor_data', $visitor_data)->set('service', $service)->set('images', $service->images->find_all())->set('news', $service->news->get_news())->set('stocks', $service->stocks->get_stocks())->set('vacancies', $service->vacancies->get_vacancies())->set('reviews', $service->reviews->get_reviews())->set('cars', $cars)->set('open_coupon', $open_coupon)->set('coupon_frame', HTML::iframe('services/get_coupon/' . $service->id, 'coupon_frame'))->set('values', $this->values)->set('errors', $this->errors);
     if ($service->type == 1) {
         $works = array();
         foreach ($service->works->find_all() as $w) {
             $works[] = $w;
         }
         $works = $service->sort($works, 'len', 'name');
         $this->view->set('works', $works);
     }
     $this->template->bc['/'] = 'Главная';
     $this->template->bc['#'] = $service->get_name(2);
     $this->template->title = Text::mb_ucfirst(__('company_type_' . $service->type)) . ' ' . $service->name . ' ' . $service->about;
     $this->template->meta_description = Text::ucfirst(__('company_type_' . $service->type)) . ' ' . $service->name . ' — ' . $service->city->name;
     $this->add_js('http://api-maps.yandex.ru/1.1/index.xml?key=' . $this->settings['YMaps_key'] . '&onerror=map_alert');
     $this->add_js('assets/js/maps_detail.js');
     $this->add_js('assets/share42/share42.js', 'before');
     $this->add_js('assets/js/company_visit.js');
     $this->template->content = $this->view;
 }
<?php

defined('SYSPATH') or die('No direct script access.');
?>
<div class="page-header" id="crud-<?php 
echo __($name);
?>
">
    <h1><?php 
echo __('New');
?>
 <?php 
echo Text::ucfirst(__($name));
?>
</h1>
</div>
<div class="row">
    <div class="col-md-6">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title"><?php 
echo __('Location details');
?>
</h3>
            </div>
            <div class="panel-body">
                <?php 
echo FORM::open(Route::url('oc-panel', array('controller' => 'location', 'action' => 'create')), array('class' => 'form-horizontal', 'enctype' => 'multipart/form-data'));
?>
                    <fieldset>
                        <div class="form-group">
Exemple #13
0
 /**
  * 
  * @param array $columns_data
  * @param array $matching_rules
  * @param array $default_options
  * @return \Cms_Structure
  */
 public function create_columns(array $columns_data, array $matching_rules, array $default_options)
 {
     // Перебираем столбцы
     foreach ($columns_data as $column_name => $column_params) {
         $column = $default_options;
         $column['name'] = str_replace('_', ' ', Text::ucfirst($column_name));
         // Перебираем правила
         foreach ($matching_rules as $rule) {
             // Если условия совпали
             if ($this->check_column_matching_rules($column_params, $rule['matching'])) {
                 // Форматируем данные
                 $rule_data = $this->set_column_options_using_matching_rules($column_params, $rule['data']);
                 // Used only this
                 $column = Arr::merge($column, $rule_data);
                 // Если правило не сквозное - прекращаем перебор правил
                 if (!$rule['through']) {
                     break;
                 }
             }
         }
         $this->_columns[$column_name] = $column;
     }
     return $this;
 }
Exemple #14
0
 /**
  * View user account information
  *
  * @throws  HTTP_Exception_403
  *
  * @uses    Auth::get_user
  * @uses    ACL::check
  * @uses    Text::ucfirst
  * @uses    Assets::popup
  */
 public function action_view()
 {
     $id = (int) $this->request->param('id', 0);
     $user = ORM::factory('user', $id);
     $account = FALSE;
     $is_owner = FALSE;
     $request = FALSE;
     $isFriend = FALSE;
     $friends = array();
     $enable_buddy = (bool) Config::load('auth.enable_buddy', FALSE);
     // Add Schema.org support
     $this->schemaType = 'ProfilePage';
     if (!$user->loaded()) {
         Log::error('Attempt to access non-existent user.');
         // No user is currently logged in
         $this->request->redirect(Route::get('user')->uri(array('action' => 'login')), 401);
     }
     if ($this->_auth->logged_in() and $user->id > 1) {
         $account = Auth::instance()->get_user();
     }
     if ($account and $account->id == $user->id) {
         Assets::popup();
         $this->title = __('My Account');
     } elseif ($account and (ACL::check('access profiles') and $user->status or ACL::check('administer users'))) {
         $this->title = __('Profile %title', array('%title' => Text::ucfirst($user->nick)));
     } elseif (ACL::check('access profiles') and $user->status and $user->id > User::GUEST_ID) {
         $this->title = __('Profile %title', array('%title' => Text::ucfirst($user->nick)));
     } else {
         throw HTTP_Exception::factory(403, 'Attempt to access without required privileges.');
     }
     if ($account and $user->id === $account->id and $enable_buddy) {
         $is_owner = TRUE;
     }
     if ($account && $user && $enable_buddy) {
         $request = Model::factory('buddy')->isRequest($account->id, $user->id);
         $isFriend = Model::factory('buddy')->isFriend($account->id, $user->id);
         $friends = Model::factory('buddy')->friends($user->id, 5);
     }
     $view = View::factory('user/profile')->set('user', $user)->set('is_owner', $is_owner)->set('request', $request)->set('isfriend', $isFriend)->set('friends', $friends)->set('enable_buddy', $enable_buddy);
     $this->response->body($view);
 }
Exemple #15
0
 /**
  * Tags view
  *
  * @throw HTTP_Exception_404
  */
 public function action_tag()
 {
     $config = Config::load('blog');
     $id = (int) $this->request->param('id', 0);
     $tag = ORM::factory('tag', array('id' => $id, 'type' => 'blog'));
     if (!$tag->loaded()) {
         throw HTTP_Exception::factory(404, 'Tag ":tag" Not Found', array(':tag' => $id));
     }
     $this->title = __(':title', array(':title' => Text::ucfirst($tag->name)));
     $view = View::factory('blog/list')->set('teaser', TRUE)->set('config', $config)->bind('rss_link', $rss_link)->bind('pagination', $pagination)->bind('posts', $posts);
     $posts = $tag->posts;
     if (!ACL::check('administer tags') and !ACL::check('administer content')) {
         $posts->where('status', '=', 'publish');
     }
     $total = $posts->reset(FALSE)->count_all();
     if ($total == 0) {
         Log::info('No blogs found.');
         $this->response->body(View::factory('blog/none'));
         return;
     }
     $rss_link = Route::get('rss')->uri(array('controller' => 'blog', 'action' => 'tag', 'id' => $tag->id));
     $pagination = Pagination::factory(array('current_page' => array('source' => 'cms', 'key' => 'page'), 'total_items' => $total, 'items_per_page' => $config->get('items_per_page', 15), 'uri' => $tag->url));
     $posts = $posts->order_by('created', 'DESC')->limit($pagination->items_per_page)->offset($pagination->offset)->find_all();
     $this->response->body($view);
     // Set the canonical and shortlink for search engines
     if ($this->auto_render) {
         Meta::links(URL::canonical($tag->url, $pagination), array('rel' => 'canonical'));
         Meta::links(Route::url('blog', array('action' => 'tag', 'id' => $tag->id), TRUE), array('rel' => 'shortlink'));
         Meta::links(Route::url('rss', array('controller' => 'blog', 'action' => 'tag', 'id' => $tag->id), TRUE), array('rel' => 'alternate', 'type' => 'application/rss+xml', 'title' => Template::getSiteName() . ' : ' . $tag->name));
     }
 }
 /**
  * Sends headers to the php processor, or supplied `$callback` argument.
  * This method formats the headers correctly for output, re-instating their
  * capitalization for transmission.
  *
  * [!!] if you supply a custom header handler via `$callback`, it is
  *  recommended that `$response` is returned
  *
  * @param   HTTP_Response   $response   header to send
  * @param   boolean         $replace    replace existing value
  * @param   callback        $callback   optional callback to replace PHP header function
  * @return  mixed
  * @since   3.2.0
  */
 public function send_headers(HTTP_Response $response = NULL, $replace = FALSE, $callback = NULL)
 {
     $protocol = $response->protocol();
     $status = $response->status();
     // Create the response header
     $processed_headers = array($protocol . ' ' . $status . ' ' . Response::$messages[$status]);
     // Get the headers array
     $headers = $response->headers()->getArrayCopy();
     foreach ($headers as $header => $value) {
         if (is_array($value)) {
             $value = implode(', ', $value);
         }
         $processed_headers[] = Text::ucfirst($header) . ': ' . $value;
     }
     if (!isset($headers['content-type'])) {
         $processed_headers[] = 'Content-Type: ' . Kohana::$content_type . '; charset=' . Kohana::$charset;
     }
     if (Kohana::$expose and !isset($headers['x-powered-by'])) {
         $processed_headers[] = 'X-Powered-By: ' . Kohana::version();
     }
     // Get the cookies and apply
     if ($cookies = $response->cookie()) {
         $processed_headers['Set-Cookie'] = $cookies;
     }
     if (is_callable($callback)) {
         // Use the callback method to set header
         return call_user_func($callback, $response, $processed_headers, $replace);
     } else {
         $this->_send_headers_to_php($processed_headers, $replace);
         return $response;
     }
 }
Exemple #17
0
 /**
  * Initializes Ushahidi and Plugins
  */
 public static function init()
 {
     /**
      * 0. Register depenendencies for injection.
      */
     $di = service();
     // Kohana injection
     $di->set('kohana.db', function () use($di) {
         // todo: is there some way to use different configs here?
         return Database::instance();
     });
     $di->set('kohana.media.dir', function () use($di) {
         return Kohana::$config->load('media.media_upload_dir');
     });
     // ACL
     $di->set('acl', function () {
         return A2::instance();
     });
     $di->set('session.user', function () use($di) {
         // Using the OAuth resource server, get the userid (owner id) for this request
         $server = $di->get('oauth.server.resource');
         $userid = $server->getOwnerId();
         // Using the user repository, load the user
         $repo = $di->get('repository.user');
         $user = $repo->get($userid);
         return $user;
     });
     // Console commands (oauth is disabled, pending T305)
     // $di->setter['Ushahidi\Console\Application']['injectCommands'][] = $di->lazyNew('Ushahidi_Console_Oauth_Client');
     // $di->setter['Ushahidi\Console\Application']['injectCommands'][] = $di->lazyNew('Ushahidi_Console_Oauth_Token');
     $di->setter['Ushahidi\\Console\\Application']['injectCommands'][] = $di->lazyNew('Ushahidi_Console_Dataprovider');
     $di->setter['Ushahidi_Console_Dataprovider']['setRepo'] = $di->lazyGet('repository.dataprovider');
     // OAuth servers
     $di->set('oauth.server.auth', function () use($di) {
         $server = $di->newInstance('League\\OAuth2\\Server\\Authorization');
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\AuthCode'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\RefreshToken'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\Password'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\ClientCredentials'));
         return $server;
     });
     $di->set('oauth.server.resource', $di->lazyNew('League\\OAuth2\\Server\\Resource'));
     // Use Kohana requests for OAuth server requests
     $di->setter['League\\OAuth2\\Server\\Resource']['setRequest'] = $di->lazyNew('OAuth2_Request');
     $di->setter['League\\OAuth2\\Server\\Authorization']['setRequest'] = $di->lazyNew('OAuth2_Request');
     // Custom password authenticator
     $di->setter['League\\OAuth2\\Server\\Grant\\Password']['setVerifyCredentialsCallback'] = function ($username, $password) {
         $usecase = service('factory.usecase')->get('users', 'login')->setIdentifiers(compact('username', 'password'));
         try {
             $data = $usecase->interact();
             return $data['id'];
         } catch (Exception $e) {
             return false;
         }
     };
     // Custom storage interfaces for OAuth servers
     $di->params['League\\OAuth2\\Server\\Authorization'] = ['client' => $di->lazyGet('repository.oauth.client'), 'session' => $di->lazyGet('repository.oauth.session'), 'scope' => $di->lazyGet('repository.oauth.scope')];
     $di->params['League\\OAuth2\\Server\\Resource'] = ['session' => $di->lazyNew('OAuth2_Storage_Session')];
     $di->params['OAuth2_Storage'] = ['db' => $di->lazyGet('kohana.db')];
     // Validator mapping
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['config'] = ['update' => $di->lazyNew('Ushahidi_Validator_Config_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['forms'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Form_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['form_attributes'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Attribute_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Attribute_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['form_stages'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['layers'] = ['create' => $di->lazyNew('Ushahidi_Validator_Layer_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Layer_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['media'] = ['create' => $di->lazyNew('Ushahidi_Validator_Media_Create'), 'delete' => $di->lazyNew('Ushahidi_Validator_Media_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['posts'] = ['create' => $di->lazyNew('Ushahidi_Validator_Post_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Post_Create')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['tags'] = ['create' => $di->lazyNew('Ushahidi_Validator_Tag_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Tag_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Tag_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['users'] = ['create' => $di->lazyNew('Ushahidi_Validator_User_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_User_Update'), 'register' => $di->lazyNew('Ushahidi_Validator_User_Register')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['messages'] = ['create' => $di->lazyNew('Ushahidi_Validator_Message_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Message_Update'), 'receive' => $di->lazyNew('Ushahidi_Validator_Message_Receive')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['savedsearches'] = ['create' => $di->lazyNew('Ushahidi_Validator_SavedSearch_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_SavedSearch_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['sets'] = ['create' => $di->lazyNew('Ushahidi_Validator_Set_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Set_Create')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['sets_posts'] = ['create' => $di->lazyNew('Ushahidi_Validator_Set_Post_Create')];
     // Validator Setters
     $di->setter['Ushahidi_Validator_Form_Stage_Update'] = ['setFormRepo' => $di->lazyGet('repository.form')];
     $di->setter['Ushahidi_Validator_Media_Create'] = ['setMaxBytes' => $di->lazy(function () {
         return \Kohana::$config->load('media.max_upload_bytes');
     })];
     // Validation Trait
     $di->setter['Ushahidi\\Core\\Tool\\ValidationEngineTrait']['setValidation'] = $di->newFactory('Ushahidi_ValidationEngine');
     // Formatter mapping
     $di->params['Ushahidi\\Factory\\FormatterFactory']['map'] = ['config' => $di->lazyNew('Ushahidi_Formatter_Config'), 'dataproviders' => $di->lazyNew('Ushahidi_Formatter_Dataprovider'), 'forms' => $di->lazyNew('Ushahidi_Formatter_Form'), 'form_attributes' => $di->lazyNew('Ushahidi_Formatter_Form_Attribute'), 'form_stages' => $di->lazyNew('Ushahidi_Formatter_Form_Stage'), 'layers' => $di->lazyNew('Ushahidi_Formatter_Layer'), 'media' => $di->lazyNew('Ushahidi_Formatter_Media'), 'messages' => $di->lazyNew('Ushahidi_Formatter_Message'), 'posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'tags' => $di->lazyNew('Ushahidi_Formatter_Tag'), 'savedsearches' => $di->lazyNew('Ushahidi_Formatter_Set'), 'sets' => $di->lazyNew('Ushahidi_Formatter_Set'), 'sets_posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'savedsearches_posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'users' => $di->lazyNew('Ushahidi_Formatter_User')];
     // Formatter parameters
     foreach (['config', 'dataprovider', 'form', 'form_attribute', 'form_stage', 'layer', 'media', 'message', 'post', 'tag', 'user', 'savedsearch', 'set_post'] as $name) {
         $di->setter['Ushahidi_Formatter_' . Text::ucfirst($name, '_')]['setAuth'] = $di->lazyGet("authorizer.{$name}");
     }
     $di->setter['Ushahidi_Formatter_Set']['setAuth'] = $di->lazyGet("authorizer.set");
     // Set Formatter factory
     $di->params['Ushahidi\\Factory\\FormatterFactory']['factory'] = $di->newFactory('Ushahidi_Formatter_Collection');
     // Helpers, tools, etc
     $di->set('tool.hasher.password', $di->lazyNew('Ushahidi_Hasher_Password'));
     $di->set('tool.authenticator.password', $di->lazyNew('Ushahidi_Authenticator_Password'));
     $di->set('tool.filesystem', $di->lazyNew('Ushahidi_Filesystem'));
     $di->set('tool.validation', $di->lazyNew('Ushahidi_ValidationEngine'));
     $di->set('tool.jsontranscode', $di->lazyNew('Ushahidi\\Core\\Tool\\JsonTranscode'));
     // Handle filesystem using local paths for now... lots of other options:
     // https://github.com/thephpleague/flysystem/tree/master/src/Adapter
     $di->params['Ushahidi_Filesystem'] = ['adapter' => $di->lazyNew('League\\Flysystem\\Adapter\\Local')];
     $di->params['League\\Flysystem\\Adapter\\Local'] = ['root' => $di->lazyGet('kohana.media.dir')];
     // Formatters
     $di->set('formatter.entity.api', $di->lazyNew('Ushahidi_Formatter_API'));
     $di->set('formatter.entity.post.value', $di->lazyNew('Ushahidi_Formatter_PostValue'));
     $di->set('formatter.entity.post.geojson', $di->lazyNew('Ushahidi_Formatter_Post_GeoJSON'));
     $di->set('formatter.entity.post.geojsoncollection', $di->lazyNew('Ushahidi_Formatter_Post_GeoJSONCollection'));
     $di->set('formatter.entity.post.stats', $di->lazyNew('Ushahidi_Formatter_Post_Stats'));
     $di->set('formatter.output.json', $di->lazyNew('Ushahidi_Formatter_JSON'));
     $di->set('formatter.output.jsonp', $di->lazyNew('Ushahidi_Formatter_JSONP'));
     // Formatter parameters
     $di->setter['Ushahidi_Formatter_JSONP']['setCallback'] = function () {
         return Request::current()->query('callback');
     };
     $di->params['Ushahidi_Formatter_Post'] = ['value_formatter' => $di->lazyGet('formatter.entity.post.value')];
     $di->setter['Ushahidi_Formatter_Post_GeoJSON']['setDecoder'] = $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT');
     $di->setter['Ushahidi_Formatter_Post_GeoJSONCollection']['setDecoder'] = $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT');
     // Repositories
     $di->set('repository.config', $di->lazyNew('Ushahidi_Repository_Config'));
     $di->set('repository.contact', $di->lazyNew('Ushahidi_Repository_Contact'));
     $di->set('repository.dataprovider', $di->lazyNew('Ushahidi_Repository_Dataprovider'));
     $di->set('repository.form', $di->lazyNew('Ushahidi_Repository_Form'));
     $di->set('repository.form_stage', $di->lazyNew('Ushahidi_Repository_Form_Stage'));
     $di->set('repository.form_attribute', $di->lazyNew('Ushahidi_Repository_Form_Attribute'));
     $di->set('repository.layer', $di->lazyNew('Ushahidi_Repository_Layer'));
     $di->set('repository.media', $di->lazyNew('Ushahidi_Repository_Media'));
     $di->set('repository.message', $di->lazyNew('Ushahidi_Repository_Message'));
     $di->set('repository.post', $di->lazyNew('Ushahidi_Repository_Post'));
     $di->set('repository.tag', $di->lazyNew('Ushahidi_Repository_Tag'));
     $di->set('repository.set', $di->lazyNew('Ushahidi_Repository_Set'));
     $di->set('repository.savedsearch', $di->lazyNew('Ushahidi_Repository_Set', [], ['setSavedSearch' => true]));
     $di->set('repository.user', $di->lazyNew('Ushahidi_Repository_User'));
     $di->set('repository.role', $di->lazyNew('Ushahidi_Repository_Role'));
     $di->set('repository.oauth.client', $di->lazyNew('OAuth2_Storage_Client'));
     $di->set('repository.oauth.session', $di->lazyNew('OAuth2_Storage_Session'));
     $di->set('repository.oauth.scope', $di->lazyNew('OAuth2_Storage_Scope'));
     $di->setter['Ushahidi_Repository_User']['setHasher'] = $di->lazyGet('tool.hasher.password');
     // Repository parameters
     foreach (['form_attribute', 'post', 'layer', 'tag', 'set'] as $name) {
         $di->setter['Ushahidi_Repository_' . Text::ucfirst($name, '_')]['setTranscoder'] = $di->lazyGet('tool.jsontranscode');
     }
     // Abstract repository parameters
     $di->params['Ushahidi_Repository'] = ['db' => $di->lazyGet('kohana.db')];
     $di->params['Ushahidi_Repository_Media'] = ['upload' => $di->lazyGet('tool.uploader')];
     $di->params['Ushahidi_Repository_Post'] = ['form_attribute_repo' => $di->lazyGet('repository.form_attribute'), 'form_stage_repo' => $di->lazyGet('repository.form_stage'), 'post_value_factory' => $di->lazyGet('repository.post_value_factory'), 'bounding_box_factory' => $di->newFactory('Util_BoundingBox'), 'tag_repo' => $di->lazyGet('repository.tag')];
     $di->set('repository.post.datetime', $di->lazyNew('Ushahidi_Repository_PostDatetime'));
     $di->set('repository.post.decimal', $di->lazyNew('Ushahidi_Repository_PostDecimal'));
     $di->set('repository.post.geometry', $di->lazyNew('Ushahidi_Repository_PostGeometry'));
     $di->set('repository.post.int', $di->lazyNew('Ushahidi_Repository_PostInt'));
     $di->set('repository.post.point', $di->lazyNew('Ushahidi_Repository_PostPoint'));
     $di->set('repository.post.text', $di->lazyNew('Ushahidi_Repository_PostText'));
     $di->set('repository.post.varchar', $di->lazyNew('Ushahidi_Repository_PostVarchar'));
     // The post value repo factory
     $di->set('repository.post_value_factory', $di->lazyNew('Ushahidi_Repository_PostValueFactory'));
     $di->params['Ushahidi_Repository_PostValueFactory'] = ['map' => ['datetime' => $di->lazyGet('repository.post.datetime'), 'decimal' => $di->lazyGet('repository.post.decimal'), 'geometry' => $di->lazyGet('repository.post.geometry'), 'int' => $di->lazyGet('repository.post.int'), 'point' => $di->lazyGet('repository.post.point'), 'text' => $di->lazyGet('repository.post.text'), 'varchar' => $di->lazyGet('repository.post.varchar')]];
     $di->params['Ushahidi_Repository_PostPoint'] = ['decoder' => $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT')];
     // Validators
     $di->set('validator.user.login', $di->lazyNew('Ushahidi_Validator_User_Login'));
     $di->set('validator.contact.create', $di->lazyNew('Ushahidi_Validator_Contact_Create'));
     $di->params['Ushahidi_Validator_Contact_Create'] = ['repo' => $di->lazyGet('repository.contact'), 'user_repo' => $di->lazyGet('repository.user')];
     // Dependencies of validators
     $di->params['Ushahidi_Validator_Post_Create'] = ['repo' => $di->lazyGet('repository.post'), 'attribute_repo' => $di->lazyGet('repository.form_attribute'), 'stage_repo' => $di->lazyGet('repository.form_stage'), 'tag_repo' => $di->lazyGet('repository.tag'), 'user_repo' => $di->lazyGet('repository.user'), 'form_repo' => $di->lazyGet('repository.form'), 'role_repo' => $di->lazyGet('repository.role'), 'post_value_factory' => $di->lazyGet('repository.post_value_factory'), 'post_value_validator_factory' => $di->lazyGet('validator.post.value_factory')];
     $di->params['Ushahidi_Validator_Tag_Update'] = ['repo' => $di->lazyGet('repository.tag'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Create'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Update'] = ['repo' => $di->lazyGet('repository.user'), 'user' => $di->lazyGet('session.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Register'] = ['repo' => $di->lazyGet('repository.user')];
     $di->params['Ushahidi_Validator_Layer_Update'] = ['media_repo' => $di->lazyGet('repository.media')];
     $di->params['Ushahidi_Validator_Message_Update'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Message_Create'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Message_Receive'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Set_Create'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_SavedSearch_Create'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_SavedSearch_Update'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_Set_Post_Create'] = ['post_repo' => $di->lazyGet('repository.post')];
     $di->set('validator.post.datetime', $di->lazyNew('Ushahidi_Validator_Post_Datetime'));
     $di->set('validator.post.decimal', $di->lazyNew('Ushahidi_Validator_Post_Decimal'));
     $di->set('validator.post.geometry', $di->lazyNew('Ushahidi_Validator_Post_Geometry'));
     $di->set('validator.post.int', $di->lazyNew('Ushahidi_Validator_Post_Int'));
     $di->set('validator.post.link', $di->lazyNew('Ushahidi_Validator_Post_Link'));
     $di->set('validator.post.point', $di->lazyNew('Ushahidi_Validator_Post_Point'));
     $di->set('validator.post.varchar', $di->lazyNew('Ushahidi_Validator_Post_Varchar'));
     $di->set('validator.post.value_factory', $di->lazyNew('Ushahidi_Validator_Post_ValueFactory'));
     $di->params['Ushahidi_Validator_Post_ValueFactory'] = ['map' => ['datetime' => $di->lazyGet('validator.post.datetime'), 'decimal' => $di->lazyGet('validator.post.decimal'), 'geometry' => $di->lazyGet('validator.post.geometry'), 'int' => $di->lazyGet('validator.post.int'), 'link' => $di->lazyGet('validator.post.link'), 'point' => $di->lazyGet('validator.post.point'), 'varchar' => $di->lazyGet('validator.post.varchar')]];
     /**
      * 1. Load the plugins
      */
     self::load();
     /**
      * Attach database config
      */
     self::attached_db_config();
 }
Exemple #18
0
?>
</p>
    <input type="text" value="wget -O <?php 
echo Route::url('default', array('controller' => 'cron', 'action' => 'run', 'id' => 'now'));
?>
" />
</div>

<div class="panel panel-default">
    <div class="panel-body">
        <table class="table table-striped table-bordered">
            <thead>
                <tr>
                    <?foreach($fields as $field):?>
                        <th><?php 
echo Text::ucfirst(method_exists($orm = ORM::Factory($name), 'formo') ? Arr::path($orm->formo(), $field . '.label', __($field)) : __($field));
?>
</th>
                    <?endforeach?>
                    <?if ($controller->allowed_crud_action('delete') OR $controller->allowed_crud_action('update')):?>
                    <th><?php 
echo __('Actions');
?>
</th>
                    <?endif?>
                </tr>
            </thead>
            <tbody>
                <?foreach($elements as $element):?>
                    <tr id="tr<?php 
echo $element->pk();
Exemple #19
0
									<div class='col-lg-7'>
										<input type="text" class="form-control input-sm" name="query" value="<?php 
    echo Arr::get($data['widget'], 'query');
    ?>
">
									</div>
								</div>

								<!-- --- Опции модуля ----------------------------------------------------------------------------- -->

								<hr>

								<?php 
    $module_data = $data['widget'];
    $current_action = Arr::get($module_data, 'action');
    $controller = Text::ucfirst($module_data["name"]);
    require_once APPPATH . "classes/Controller/Widgets/{$controller}.php";
    eval('
					        	$module = new Controller_Widgets_' . $controller . '($request, $response); // Подключаем контроллер
					        	$module->action_' . $current_action . '(); // Вызываем текущий экшен
					        ');
    // Получаем конфиг виджета
    $module->get_config();
    $module_config = $module->module_config;
    PC::debug($module_config, "Config виджета");
    $module_controller_options = $module_config["options"];
    // Опции виджета из контроллера
    $module_db_options = json_decode($module_data['options'], true);
    // Опции виджета из БД
    PC::debug($module_data, "Все настройки виджета");
    PC::debug($module_controller_options, "Опции виджета из контроллера");
Exemple #20
0
<?php

defined('SYSPATH') or die('No direct script access.');
?>
<h1 class="page-header page-title"><?php 
echo __('Update');
?>
 <?php 
echo Text::ucfirst($role->name);
?>
</h1>
<hr>
<form action="<?php 
echo Route::url('oc-panel', array('controller' => 'role', 'action' => 'update', 'id' => $role->id_role));
?>
" method="post" accept-charset="utf-8" class="form form-horizontal" >  

    <div class="row">
        <div class="col-md-12">
            <div class="panel panel-default">
                <div class="panel-body">
                    <input type="hidden" name="id_role" value="<?php 
echo $role->id_role;
?>
" />
                    <div class="form-group ">
                        <label for="name" class="col-md-3 control-label"><?php 
echo __('Name');
?>
</label>
                        <div class="col-md-5 col-sm-5 col-xs-12">
Exemple #21
0
    ?>
" <?php 
    echo $elements->primary_key() == $field ? 'data-identifier="true"' : '';
    ?>
 >
                            <?php 
    if (isset($captions[$field]) and !exec::is_callable($captions[$field])) {
        ?>
                                <?php 
        echo Text::ucfirst($captions[$field]['model'] . ' ' . $captions[$field]['caption']);
        ?>
                            <?php 
    } else {
        ?>
                                <?php 
        echo Text::ucfirst($field);
        ?>
                            <?php 
    }
    ?>
                        </th>
                    <?php 
}
?>
                    <th data-column-id="commands" data-formatter="commands" data-sortable="false">
                        <?php 
echo __('Actions');
?>
                    </th>
                </tr>
            </thead>
Exemple #22
0
 /**
  * Initializes Ushahidi and Plugins
  */
 public static function init()
 {
     /**
      * 0. Register depenendencies for injection.
      */
     $di = service();
     // Kohana injection
     // DB config
     $di->set('db.config', function () use($di) {
         $config = Kohana::$config->load('database')->default;
         // Is this a multisite install?
         $multisite = Kohana::$config->load('multisite.enabled');
         if ($multisite) {
             $config = $di->get('multisite')->getDbConfig();
         }
         return $config;
     });
     // Multisite db
     $di->set('kohana.db.multisite', function () use($di) {
         return Database::instance('multisite');
     });
     // Deployment db
     $di->set('kohana.db', function () use($di) {
         return Database::instance('deployment', $di->get('db.config'));
     });
     // CDN Config settings
     $di->set('cdn.config', function () use($di) {
         return Kohana::$config->load('cdn')->as_array();
     });
     // Multisite utility class
     $di->set('multisite', $di->lazyNew('Ushahidi_Multisite'));
     $di->params['Ushahidi_Multisite'] = ['db' => $di->lazyGet('kohana.db.multisite')];
     $di->set('session.user', function () use($di) {
         // Using the OAuth resource server, get the userid (owner id) for this request
         $server = $di->get('oauth.server.resource');
         $userid = $server->getOwnerId();
         // Using the user repository, load the user
         $repo = $di->get('repository.user');
         $user = $repo->get($userid);
         return $user;
     });
     $di->set('session.client', function () use($di) {
         // Using the OAuth resource server, get the client id for this request
         $server = $di->get('oauth.server.resource');
         $clientid = $server->getClientId();
         return $clientid;
     });
     // Console commands (oauth is disabled, pending T305)
     $di->setter['Ushahidi\\Console\\Application']['injectCommands'][] = $di->lazyNew('Ushahidi_Console_Oauth_Client');
     $di->setter['Ushahidi\\Console\\Application']['injectCommands'][] = $di->lazyNew('Ushahidi_Console_Dataprovider');
     $di->setter['Ushahidi_Console_Dataprovider']['setRepo'] = $di->lazyGet('repository.dataprovider');
     // OAuth servers
     $di->set('oauth.server.auth', function () use($di) {
         $server = $di->newInstance('League\\OAuth2\\Server\\Authorization');
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\AuthCode'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\RefreshToken'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\Password'));
         $server->addGrantType($di->newInstance('League\\OAuth2\\Server\\Grant\\ClientCredentials'));
         return $server;
     });
     $di->set('oauth.server.resource', $di->lazyNew('League\\OAuth2\\Server\\Resource'));
     // Use Kohana requests for OAuth server requests
     $di->setter['League\\OAuth2\\Server\\Resource']['setRequest'] = $di->lazyNew('OAuth2_Request');
     $di->setter['League\\OAuth2\\Server\\Authorization']['setRequest'] = $di->lazyNew('OAuth2_Request');
     // Custom password authenticator
     $di->setter['League\\OAuth2\\Server\\Grant\\Password']['setVerifyCredentialsCallback'] = function ($email, $password) {
         $usecase = service('factory.usecase')->get('users', 'login')->setIdentifiers(compact('email', 'password'));
         try {
             $data = $usecase->interact();
             return $data['id'];
         } catch (Exception $e) {
             return false;
         }
     };
     // Custom storage interfaces for OAuth servers
     $di->params['League\\OAuth2\\Server\\Authorization'] = ['client' => $di->lazyGet('repository.oauth.client'), 'session' => $di->lazyGet('repository.oauth.session'), 'scope' => $di->lazyGet('repository.oauth.scope')];
     $di->params['League\\OAuth2\\Server\\Resource'] = ['session' => $di->lazyNew('OAuth2_Storage_Session')];
     $di->params['OAuth2_Storage'] = ['db' => $di->lazyGet('kohana.db')];
     // Validator mapping
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['config'] = ['update' => $di->lazyNew('Ushahidi_Validator_Config_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['forms'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Form_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['form_attributes'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Attribute_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Attribute_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['form_stages'] = ['create' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Form_Stage_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['layers'] = ['create' => $di->lazyNew('Ushahidi_Validator_Layer_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Layer_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['media'] = ['create' => $di->lazyNew('Ushahidi_Validator_Media_Create'), 'delete' => $di->lazyNew('Ushahidi_Validator_Media_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['posts'] = ['create' => $di->lazyNew('Ushahidi_Validator_Post_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Post_Create'), 'import' => $di->lazyNew('Ushahidi_Validator_Post_Create')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['tags'] = ['create' => $di->lazyNew('Ushahidi_Validator_Tag_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Tag_Update'), 'delete' => $di->lazyNew('Ushahidi_Validator_Tag_Delete')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['users'] = ['create' => $di->lazyNew('Ushahidi_Validator_User_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_User_Update'), 'register' => $di->lazyNew('Ushahidi_Validator_User_Register')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['messages'] = ['create' => $di->lazyNew('Ushahidi_Validator_Message_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Message_Update'), 'receive' => $di->lazyNew('Ushahidi_Validator_Message_Receive')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['savedsearches'] = ['create' => $di->lazyNew('Ushahidi_Validator_SavedSearch_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_SavedSearch_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['sets'] = ['create' => $di->lazyNew('Ushahidi_Validator_Set_Create'), 'update' => $di->lazyNew('Ushahidi_Validator_Set_Update')];
     $di->params['Ushahidi\\Factory\\ValidatorFactory']['map']['sets_posts'] = ['create' => $di->lazyNew('Ushahidi_Validator_Set_Post_Create')];
     // Validation Trait
     $di->setter['Ushahidi\\Core\\Tool\\ValidationEngineTrait']['setValidation'] = $di->newFactory('Ushahidi_ValidationEngine');
     // Formatter mapping
     $di->params['Ushahidi\\Factory\\FormatterFactory']['map'] = ['config' => $di->lazyNew('Ushahidi_Formatter_Config'), 'dataproviders' => $di->lazyNew('Ushahidi_Formatter_Dataprovider'), 'forms' => $di->lazyNew('Ushahidi_Formatter_Form'), 'form_attributes' => $di->lazyNew('Ushahidi_Formatter_Form_Attribute'), 'form_stages' => $di->lazyNew('Ushahidi_Formatter_Form_Stage'), 'layers' => $di->lazyNew('Ushahidi_Formatter_Layer'), 'media' => $di->lazyNew('Ushahidi_Formatter_Media'), 'messages' => $di->lazyNew('Ushahidi_Formatter_Message'), 'posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'tags' => $di->lazyNew('Ushahidi_Formatter_Tag'), 'savedsearches' => $di->lazyNew('Ushahidi_Formatter_Set'), 'sets' => $di->lazyNew('Ushahidi_Formatter_Set'), 'sets_posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'savedsearches_posts' => $di->lazyNew('Ushahidi_Formatter_Post'), 'users' => $di->lazyNew('Ushahidi_Formatter_User')];
     // Formatter parameters
     foreach (['config', 'dataprovider', 'form', 'form_attribute', 'form_stage', 'layer', 'media', 'message', 'post', 'tag', 'user', 'savedsearch', 'set_post'] as $name) {
         $di->setter['Ushahidi_Formatter_' . Text::ucfirst($name, '_')]['setAuth'] = $di->lazyGet("authorizer.{$name}");
     }
     $di->setter['Ushahidi_Formatter_Set']['setAuth'] = $di->lazyGet("authorizer.set");
     // Set Formatter factory
     $di->params['Ushahidi\\Factory\\FormatterFactory']['factory'] = $di->newFactory('Ushahidi_Formatter_Collection');
     // Helpers, tools, etc
     $di->set('tool.hasher.password', $di->lazyNew('Ushahidi_Hasher_Password'));
     $di->set('tool.authenticator.password', $di->lazyNew('Ushahidi_Authenticator_Password'));
     $di->set('tool.validation', $di->lazyNew('Ushahidi_ValidationEngine'));
     $di->set('tool.jsontranscode', $di->lazyNew('Ushahidi\\Core\\Tool\\JsonTranscode'));
     // Register filesystem adpater types
     // Currently supported: Local filesysten, AWS S3 v3, Rackspace
     // the naming scheme must match the cdn type set in config/cdn
     $di->set('adapter.local', $di->lazyNew('Ushahidi_FilesystemAdapter_Local', ['config' => $di->lazyGet('cdn.config')]));
     $di->set('adapter.aws', $di->lazyNew('Ushahidi_FilesystemAdapter_AWS', ['config' => $di->lazyGet('cdn.config')]));
     $di->set('adapter.rackspace', $di->lazyNew('Ushahidi_FilesystemAdapter_Rackspace', ['config' => $di->lazyGet('cdn.config')]));
     // Media Filesystem
     // The Ushahidi filesystem adapter returns a flysystem adapter for a given
     // cdn type based on the provided configuration
     $di->set('tool.filesystem', $di->lazyNew('Ushahidi_Filesystem'));
     $di->params['Ushahidi_Filesystem'] = ['adapter' => $di->lazy(function () use($di) {
         $adapter_type = $di->get('cdn.config');
         $fsa = $di->get('adapter.' . $adapter_type['type']);
         return $fsa->getAdapter();
     })];
     // Formatters
     $di->set('formatter.entity.api', $di->lazyNew('Ushahidi_Formatter_API'));
     $di->set('formatter.entity.console', $di->lazyNew('Ushahidi_Formatter_Console'));
     $di->set('formatter.entity.post.value', $di->lazyNew('Ushahidi_Formatter_PostValue'));
     $di->set('formatter.entity.post.geojson', $di->lazyNew('Ushahidi_Formatter_Post_GeoJSON'));
     $di->set('formatter.entity.post.geojsoncollection', $di->lazyNew('Ushahidi_Formatter_Post_GeoJSONCollection'));
     $di->set('formatter.entity.post.stats', $di->lazyNew('Ushahidi_Formatter_Post_Stats'));
     $di->set('formatter.output.json', $di->lazyNew('Ushahidi_Formatter_JSON'));
     $di->set('formatter.output.jsonp', $di->lazyNew('Ushahidi_Formatter_JSONP'));
     // Formatter parameters
     $di->setter['Ushahidi_Formatter_JSONP']['setCallback'] = function () {
         return Request::current()->query('callback');
     };
     $di->params['Ushahidi_Formatter_Post'] = ['value_formatter' => $di->lazyGet('formatter.entity.post.value')];
     $di->setter['Ushahidi_Formatter_Post_GeoJSON']['setDecoder'] = $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT');
     $di->setter['Ushahidi_Formatter_Post_GeoJSONCollection']['setDecoder'] = $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT');
     // Repositories
     $di->set('repository.config', $di->lazyNew('Ushahidi_Repository_Config'));
     $di->set('repository.contact', $di->lazyNew('Ushahidi_Repository_Contact'));
     $di->set('repository.dataprovider', $di->lazyNew('Ushahidi_Repository_Dataprovider'));
     $di->set('repository.form', $di->lazyNew('Ushahidi_Repository_Form'));
     $di->set('repository.form_stage', $di->lazyNew('Ushahidi_Repository_Form_Stage'));
     $di->set('repository.form_attribute', $di->lazyNew('Ushahidi_Repository_Form_Attribute'));
     $di->set('repository.layer', $di->lazyNew('Ushahidi_Repository_Layer'));
     $di->set('repository.media', $di->lazyNew('Ushahidi_Repository_Media'));
     $di->set('repository.message', $di->lazyNew('Ushahidi_Repository_Message'));
     $di->set('repository.post', $di->lazyNew('Ushahidi_Repository_Post'));
     $di->set('repository.tag', $di->lazyNew('Ushahidi_Repository_Tag'));
     $di->set('repository.set', $di->lazyNew('Ushahidi_Repository_Set'));
     $di->set('repository.savedsearch', $di->lazyNew('Ushahidi_Repository_Set', [], ['setSavedSearch' => true]));
     $di->set('repository.user', $di->lazyNew('Ushahidi_Repository_User'));
     $di->set('repository.role', $di->lazyNew('Ushahidi_Repository_Role'));
     $di->set('repository.oauth.client', $di->lazyNew('OAuth2_Storage_Client'));
     $di->set('repository.oauth.session', $di->lazyNew('OAuth2_Storage_Session'));
     $di->set('repository.oauth.scope', $di->lazyNew('OAuth2_Storage_Scope'));
     $di->setter['Ushahidi_Repository_User']['setHasher'] = $di->lazyGet('tool.hasher.password');
     // Repository parameters
     // Abstract repository parameters
     $di->params['Ushahidi_Repository'] = ['db' => $di->lazyGet('kohana.db')];
     // Set up Json Transcode Repository Trait
     $di->setter['Ushahidi_JsonTranscodeRepository']['setTranscoder'] = $di->lazyGet('tool.jsontranscode');
     // Media repository parameters
     $di->params['Ushahidi_Repository_Media'] = ['upload' => $di->lazyGet('tool.uploader')];
     // Post repository parameters
     $di->params['Ushahidi_Repository_Post'] = ['form_attribute_repo' => $di->lazyGet('repository.form_attribute'), 'form_stage_repo' => $di->lazyGet('repository.form_stage'), 'post_value_factory' => $di->lazyGet('repository.post_value_factory'), 'bounding_box_factory' => $di->newFactory('Util_BoundingBox'), 'tag_repo' => $di->lazyGet('repository.tag')];
     $di->set('repository.post.datetime', $di->lazyNew('Ushahidi_Repository_Post_Datetime'));
     $di->set('repository.post.decimal', $di->lazyNew('Ushahidi_Repository_Post_Decimal'));
     $di->set('repository.post.geometry', $di->lazyNew('Ushahidi_Repository_Post_Geometry'));
     $di->set('repository.post.int', $di->lazyNew('Ushahidi_Repository_Post_Int'));
     $di->set('repository.post.point', $di->lazyNew('Ushahidi_Repository_Post_Point'));
     $di->set('repository.post.relation', $di->lazyNew('Ushahidi_Repository_Post_Relation'));
     $di->set('repository.post.text', $di->lazyNew('Ushahidi_Repository_Post_Text'));
     $di->set('repository.post.varchar', $di->lazyNew('Ushahidi_Repository_Post_Varchar'));
     // The post value repo factory
     $di->set('repository.post_value_factory', $di->lazyNew('Ushahidi_Repository_Post_ValueFactory'));
     $di->params['Ushahidi_Repository_Post_ValueFactory'] = ['map' => ['datetime' => $di->lazyGet('repository.post.datetime'), 'decimal' => $di->lazyGet('repository.post.decimal'), 'geometry' => $di->lazyGet('repository.post.geometry'), 'int' => $di->lazyGet('repository.post.int'), 'point' => $di->lazyGet('repository.post.point'), 'relation' => $di->lazyGet('repository.post.relation'), 'text' => $di->lazyGet('repository.post.text'), 'varchar' => $di->lazyGet('repository.post.varchar')]];
     $di->params['Ushahidi_Repository_Post_Point'] = ['decoder' => $di->lazyNew('Symm\\Gisconverter\\Decoders\\WKT')];
     // Validators
     $di->set('validator.user.login', $di->lazyNew('Ushahidi_Validator_User_Login'));
     $di->set('validator.contact.create', $di->lazyNew('Ushahidi_Validator_Contact_Create'));
     $di->params['Ushahidi_Validator_Contact_Create'] = ['repo' => $di->lazyGet('repository.contact'), 'user_repo' => $di->lazyGet('repository.user')];
     // Dependencies of validators
     $di->params['Ushahidi_Validator_Post_Create'] = ['repo' => $di->lazyGet('repository.post'), 'attribute_repo' => $di->lazyGet('repository.form_attribute'), 'stage_repo' => $di->lazyGet('repository.form_stage'), 'tag_repo' => $di->lazyGet('repository.tag'), 'user_repo' => $di->lazyGet('repository.user'), 'form_repo' => $di->lazyGet('repository.form'), 'role_repo' => $di->lazyGet('repository.role'), 'post_value_factory' => $di->lazyGet('repository.post_value_factory'), 'post_value_validator_factory' => $di->lazyGet('validator.post.value_factory')];
     $di->params['Ushahidi_Validator_Form_Update'] = ['repo' => $di->lazyGet('repository.form')];
     $di->param['Ushahidi_Validator_Form_Attribute_Update'] = ['repo' => $di->lazyGet('repository.form_attribute'), 'form_stage_repo' => $di->lazyGet('repository.form_stage')];
     $di->params['Ushahidi_Validator_Layer_Update'] = ['media_repo' => $di->lazyGet('repository.media')];
     $di->params['Ushahidi_Validator_Message_Update'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Message_Create'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Message_Receive'] = ['repo' => $di->lazyGet('repository.message')];
     $di->params['Ushahidi_Validator_Set_Update'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_SavedSearch_Create'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_SavedSearch_Update'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_Set_Post_Create'] = ['post_repo' => $di->lazyGet('repository.post')];
     $di->params['Ushahidi_Validator_Tag_Update'] = ['repo' => $di->lazyGet('repository.tag'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Create'] = ['repo' => $di->lazyGet('repository.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Update'] = ['repo' => $di->lazyGet('repository.user'), 'user' => $di->lazyGet('session.user'), 'role_repo' => $di->lazyGet('repository.role')];
     $di->params['Ushahidi_Validator_User_Register'] = ['repo' => $di->lazyGet('repository.user')];
     // Validator Setters
     $di->setter['Ushahidi_Validator_Form_Stage_Update'] = ['setFormRepo' => $di->lazyGet('repository.form')];
     $di->setter['Ushahidi_Validator_Media_Create'] = ['setMaxBytes' => $di->lazy(function () {
         return \Kohana::$config->load('media.max_upload_bytes');
     })];
     $di->set('validator.post.datetime', $di->lazyNew('Ushahidi_Validator_Post_Datetime'));
     $di->set('validator.post.decimal', $di->lazyNew('Ushahidi_Validator_Post_Decimal'));
     $di->set('validator.post.geometry', $di->lazyNew('Ushahidi_Validator_Post_Geometry'));
     $di->set('validator.post.int', $di->lazyNew('Ushahidi_Validator_Post_Int'));
     $di->set('validator.post.link', $di->lazyNew('Ushahidi_Validator_Post_Link'));
     $di->set('validator.post.point', $di->lazyNew('Ushahidi_Validator_Post_Point'));
     $di->set('validator.post.relation', $di->lazyNew('Ushahidi_Validator_Post_Relation'));
     $di->set('validator.post.varchar', $di->lazyNew('Ushahidi_Validator_Post_Varchar'));
     $di->set('validator.post.value_factory', $di->lazyNew('Ushahidi_Validator_Post_ValueFactory'));
     $di->params['Ushahidi_Validator_Post_ValueFactory'] = ['map' => ['datetime' => $di->lazyGet('validator.post.datetime'), 'decimal' => $di->lazyGet('validator.post.decimal'), 'geometry' => $di->lazyGet('validator.post.geometry'), 'int' => $di->lazyGet('validator.post.int'), 'link' => $di->lazyGet('validator.post.link'), 'point' => $di->lazyGet('validator.post.point'), 'relation' => $di->lazyGet('validator.post.relation'), 'varchar' => $di->lazyGet('validator.post.varchar')]];
     $di->params['Ushahidi_Validator_Post_Relation'] = ['repo' => $di->lazyGet('repository.post')];
     $di->set('transformer.mapping', $di->lazyNew('Ushahidi_Transformer_MappingTransformer'));
     $di->set('filereader.csv', $di->lazyNew('Ushahidi_FileReader_CSV'));
     $di->set('tool.mailer', $di->lazyNew('Ushahidi_Mailer'));
     /**
      * 1. Load the plugins
      */
     self::load();
     /**
      * Attach database config
      */
     self::attached_db_config();
 }
Exemple #23
0
 /**
  * After
  */
 public function after()
 {
     // Auto render
     if ($this->auto_render) {
         /**
          * build snippets -> snippetsようにつくるようにつくる!
          */
         // <editor-fold defaultstate="collapsed" desc="build snippets">
         // Get site details
         $sites = array();
         $site_details = Tbl::factory('settings')->where('key', '=', 'site_details')->read('value');
         $site_detail_strings = explode("\n", $site_details);
         if ($site_detail_strings) {
             foreach ($site_detail_strings as $site_detail_string) {
                 $array = explode(':', $site_detail_string);
                 $sites[trim($array[0])] = array('key' => trim($array[0]), 'value' => trim($array[1]));
             }
         }
         // Get items for snippets item. 下の$this->snippetsのitemに入れるように取得する
         $snippet_item = NULL;
         if ($this->request->param('key')) {
             $snippet_item_segment = Tbl::factory('items')->where('id', '=', $this->request->param('key'))->read('segment');
             if ($snippet_item_segment) {
                 $snippet_item = Cms_Functions::get_item($snippet_item_segment, TRUE, TRUE, TRUE);
             }
         }
         // Get parts for snippets part. 下の$this->snippetsのpartsに入れるように取得する
         $snippet_parts = Cms_Helper::get_dirfiles('part', $this->settings->front_tpl_dir);
         foreach ($snippet_parts as $snippet_part) {
             $snippet_part->content = Tpl::get_file($snippet_part->segment, $this->settings->front_tpl_dir . '/part');
         }
         // Set snippets
         $this->snippets = array('host' => URL::base(true), 'media_dir' => URL::site('media', 'http') . '/', 'images_dir' => URL::site('media/images_dir', 'http') . '/', 'css_dir' => URL::site('media/css_dir', 'http') . '/', 'js_dir' => URL::site('media/js_dir', 'http') . '/', 'icon_dir' => URL::site('media/icon_dir', 'http') . '/', 'lang' => $this->settings->lang, 'logged_in_user' => array('id' => isset($this->logged_in_user->id) ? $this->logged_in_user->id : NULL, 'email' => isset($this->logged_in_user->email) ? $this->logged_in_user->email : NULL, 'username' => isset($this->logged_in_user->username) ? $this->logged_in_user->username : NULL, 'logins' => isset($this->logged_in_user->logins) ? $this->logged_in_user->logins : NULL, 'details' => isset($this->logged_in_user->details) ? $this->logged_in_user->details : NULL), 'sites' => $sites, 'timestamp' => time(), 'return' => 'PHP_EOL', 'item' => isset($snippet_item) ? (object) $snippet_item : NULL, 'parts' => isset($snippet_parts) ? (object) $snippet_parts : NULL);
         // </editor-fold>
         /**
          * View
          */
         // <editor-fold defaultstate="collapsed" desc="View">
         // Set global value -> Set to contentといっしょ
         Tpl::set_global(array('host' => URL::base(true), 'site_title' => $this->settings->site_title, 'site_email_address' => $this->settings->site_email_address, 'backend_host' => URL::base(true) . $this->settings->backend_name . '/', 'logged_in_user' => $this->logged_in_user, 'logout_url' => URL::site("{$this->settings->backend_name}/logout", 'http'), 'time' => time()));
         // Set to content
         $this->content->set('menus', $this->menus)->set('notice', Notice::render())->set('local_menus', $this->local_menus)->set('frontend_link', $this->frontend_link)->set('snippets', $this->snippets);
         // Get tamplate file
         $template = Tpl::get_file('template', $this->settings->back_tpl_dir);
         $backend_ucfirst = str_replace('_', ' ', Text::ucfirst($this->settings->backend_name, '_'));
         // Factory and set
         $this->template = Tpl::factory($template)->set('title', $backend_ucfirst)->set('keywords', $backend_ucfirst)->set('description', $backend_ucfirst)->set('content', $this->content->render());
         // Render body
         $this->response->body($this->template->render());
         // </editor-fold>
     }
     /**
      * after
      */
     parent::after();
 }