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; }
/** * 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')); } }
/** * 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(); }
/** * * 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)); } }
/** * 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')); }
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())))); }
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)); }
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">
/** * * @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; }
/** * 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); }
/** * 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; } }
/** * 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(); }
?> </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();
<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, "Опции виджета из контроллера");
<?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">
?> " <?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>
/** * 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(); }
/** * 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(); }