Esempio n. 1
0
 public function index()
 {
     $is_installed = mw_is_installed();
     if (!$is_installed) {
         if (!$is_installed) {
             $installer = new InstallController();
             return $installer->index();
         }
     } else {
         if (defined('MW_VERSION')) {
             $config_version = Config::get('microweber.version');
             if ($config_version != MW_VERSION) {
                 $this->app->update->post_update(MW_VERSION);
             }
         }
     }
     if (!defined('MW_BACKEND')) {
         define('MW_BACKEND', true);
     }
     //create_mw_default_options();
     mw()->content_manager->define_constants();
     if (defined('TEMPLATE_DIR')) {
         $load_template_functions = TEMPLATE_DIR . 'functions.php';
         if (is_file($load_template_functions)) {
             include_once $load_template_functions;
         }
     }
     event_trigger('mw.admin');
     event_trigger('mw_backend');
     $view = modules_path() . 'admin/';
     $hasNoAdmin = User::where('is_admin', 1)->limit(1)->count();
     if (!$hasNoAdmin) {
         $this->hasNoAdmin();
     }
     $view .= (!$hasNoAdmin ? 'create' : 'index') . '.php';
     $layout = new View($view);
     $layout = $layout->__toString();
     $layout = mw()->parser->process($layout);
     event_trigger('on_load');
     $layout = execute_document_ready($layout);
     event_trigger('mw.admin.header');
     $apijs_loaded = mw()->template->get_apijs_url();
     $apijs_settings_loaded = mw()->template->get_apijs_settings_url();
     $default_css = '<link rel="stylesheet" href="' . mw_includes_url() . 'default.css" type="text/css" />';
     if (!stristr($layout, $apijs_loaded)) {
         $rep = 0;
         $default_css = $default_css . "\r\n" . '<script src="' . $apijs_settings_loaded . '"></script>' . "\r\n";
         $default_css = $default_css . "\r\n" . '<script src="' . $apijs_loaded . '"></script>' . "\r\n";
         $layout = str_ireplace('<head>', '<head>' . $default_css, $layout, $rep);
     }
     $template_headers_src = mw()->template->admin_head(true);
     if ($template_headers_src != false and $template_headers_src != '') {
         $layout = str_ireplace('</head>', $template_headers_src . '</head>', $layout, $one);
     }
     return $layout;
 }
Esempio n. 2
0
function load_all_functions_files_for_modules($options = false)
{
    $is_installed = mw_is_installed();
    if (!$is_installed) {
        return;
    }
    $modules = mw()->modules->get('ui=any&installed=1&limit=99999');
    $files = array();
    if (!empty($modules)) {
        foreach ($modules as $module) {
            if (isset($module['module'])) {
                $is_function = normalize_path(modules_path() . $module['module'] . DS . 'functions.php', false);
                if (is_file($is_function)) {
                    include_once $is_function;
                    $files[] = $is_function;
                }
            }
        }
        return $files;
    }
}
Esempio n. 3
0
 public function createApplication()
 {
     $config_folder = __DIR__ . '/../../../config/testing/';
     $mw_file = $config_folder . 'microweber.php';
     if (!is_dir($config_folder)) {
         mkdir($config_folder);
     }
     file_put_contents($mw_file, "<?php return array (\n              'is_installed' => 0,\n            );");
     $unitTesting = true;
     $testEnvironment = 'testing';
     $app = (require __DIR__ . '/../../../bootstrap/app.php');
     $app->make('Illuminate\\Contracts\\Console\\Kernel')->bootstrap();
     $this->assertEquals(true, is_dir($config_folder));
     $this->sqlite_file = storage_path() . '/phpunit.sqlite';
     // make fresh install
     $install_params = array('username' => 'test', 'password' => 'test', 'email' => '*****@*****.**', 'db_driver' => 'sqlite', 'db_host' => '', 'db_user' => '', 'db_pass' => '', 'db_name' => $this->sqlite_file, '--env' => 'testing');
     $is_installed = mw_is_installed();
     if (!$is_installed) {
         $install = \Artisan::call('microweber:install', $install_params);
         $this->assertEquals(0, $install);
     }
     \Mail::pretend(true);
     return $app;
 }
 public function editor_tools()
 {
     if (!defined('IN_ADMIN') and is_admin()) {
         define('IN_ADMIN', true);
     }
     if (!defined('IN_EDITOR_TOOLS')) {
         define('IN_EDITOR_TOOLS', true);
     }
     if (mw_is_installed() == true) {
         //event_trigger('mw_db_init');
         //  event_trigger('mw_cron');
     }
     $tool = $this->app->url_manager->segment(1);
     if ($tool) {
     } else {
         $tool = 'index';
     }
     $page = false;
     if (isset($_REQUEST['content_id'])) {
         if (intval($_REQUEST['content_id']) == 0) {
             $this->create_new_page = true;
             $custom_content_data_req = $_REQUEST;
             $custom_content_data = array();
             if (isset($custom_content_data_req['content_type'])) {
                 //    $custom_content_data['content_type'] = $custom_content_data_req['content_type'];
             }
             if (isset($custom_content_data_req['content_type'])) {
                 $custom_content_data['content_type'] = $custom_content_data_req['content_type'];
             }
             if (isset($custom_content_data_req['subtype'])) {
                 $custom_content_data['subtype'] = $custom_content_data_req['subtype'];
             }
             if (isset($custom_content_data_req['parent_page']) and is_numeric($custom_content_data_req['parent_page'])) {
                 $custom_content_data['parent'] = intval($custom_content_data_req['parent_page']);
             }
             if (isset($custom_content_data_req['preview_layout'])) {
                 //  $custom_content_data['preview_layout'] =($custom_content_data_req['preview_layout']);
             }
             if (!empty($custom_content_data)) {
                 $custom_content_data['id'] = 0;
                 $this->content_data = $custom_content_data;
             }
             $this->return_data = 1;
             $page = $this->frontend();
         } else {
             $page = $this->app->content_manager->get_by_id($_REQUEST['content_id']);
         }
     } elseif (isset($_SERVER['HTTP_REFERER'])) {
         $url = $_SERVER['HTTP_REFERER'];
         $url = explode('?', $url);
         $url = $url[0];
         if (trim($url) == '' or trim($url) == $this->app->url_manager->site()) {
             //$page = $this->app->content_manager->get_by_url($url);
             $page = $this->app->content_manager->homepage();
         } else {
             $page = $this->app->content_manager->get_by_url($url);
         }
     } else {
         $url = $this->app->url_manager->string();
     }
     if (!isset($page['active_site_template'])) {
         $page['active_site_template'] = 'default';
     }
     if (isset($_GET['preview_template'])) {
         $page['active_site_template'] = $_GET['preview_template'];
     }
     if (isset($_GET['content_type'])) {
         $page['content_type'] = $_GET['content_type'];
     }
     if (isset($_GET['preview_layout']) and $_GET['preview_layout'] != 'inherit') {
         $page['layout_file'] = $_GET['preview_layout'];
     }
     $this->app->content_manager->define_constants($page);
     $page['render_file'] = $this->app->template->get_layout($page);
     if (defined('TEMPLATE_DIR')) {
         $load_template_functions = TEMPLATE_DIR . 'functions.php';
         if (is_file($load_template_functions)) {
             include_once $load_template_functions;
         }
     }
     $params = $_REQUEST;
     $tool = str_replace('..', '', $tool);
     $p_index = mw_includes_path() . 'toolbar/editor_tools/index.php';
     $p_index = normalize_path($p_index, false);
     $standalone_edit = true;
     $p = mw_includes_path() . 'toolbar/editor_tools/' . $tool . '/index.php';
     $standalone_edit = false;
     if ($tool == 'plupload') {
         $standalone_edit = true;
     }
     if ($tool == 'plupload') {
         $standalone_edit = true;
     }
     if ($tool == 'imageeditor') {
         $standalone_edit = true;
     }
     if ($tool == 'rte_image_editor') {
         $standalone_edit = true;
     }
     if ($tool == 'editor_toolbar') {
         $standalone_edit = true;
     }
     if ($tool == 'wysiwyg') {
         $standalone_edit = false;
         $ed_file_from_template = TEMPLATE_DIR . 'editor.php';
         if (is_file($ed_file_from_template)) {
             $p_index = $ed_file_from_template;
         }
         if (isset($page['content_type']) and $page['content_type'] != 'post' and $page['content_type'] != 'page' and $page['content_type'] != 'product') {
             if (isset($page['subtype']) and ($page['subtype'] != 'post' and $page['subtype'] != 'product')) {
                 $standalone_edit = true;
             }
         } elseif (isset($page['content_type']) and $page['content_type'] == 'post') {
             if (isset($page['subtype']) and ($page['subtype'] != 'post' and $page['subtype'] != 'product')) {
                 $standalone_edit = true;
             }
         }
         if ($standalone_edit) {
             if (!isset($page['content'])) {
                 $page['content'] = '<div class="element"></div>';
             }
             $page['content'] = '<div class="edit" field="content" rel="content" contenteditable="true">' . $page['content'] . '</div>';
             $page['render_file'] = false;
         }
         //
         //  $page['content'] = '<div class="edit" field="content" rel="content" contenteditable="true">' . $page['content'] . '</div>';
     }
     $default_css = '';
     $apijs_settings_loaded = '';
     $apijs_loaded = '';
     $p = normalize_path($p, false);
     $l = new \Microweber\View($p_index);
     $l->params = $params;
     $layout = $l->__toString();
     $apijs_loaded = false;
     if ($layout != false) {
         //$apijs_loaded = $this->app->template->get_apijs_url() . '?id=' . CONTENT_ID;
         $apijs_loaded = $this->app->template->get_apijs_url();
         // $apijs_settings_loaded = $this->app->template->get_apijs_settings_url() . '?id=' . CONTENT_ID . '&category_id=' . CATEGORY_ID;
         $apijs_settings_loaded = $this->app->template->get_apijs_settings_url();
         // $is_admin = $this->app->user_manager->is_admin();
         $default_css = '<link rel="stylesheet" href="' . mw_includes_url() . 'default.css" type="text/css" />';
         $headers = event_trigger('site_header', TEMPLATE_NAME);
         $template_headers_append = '';
         $one = 1;
         if (is_array($headers)) {
             foreach ($headers as $modify) {
                 if ($modify != false and is_string($modify) and $modify != '') {
                     $template_headers_append = $template_headers_append . $modify;
                 }
             }
             if ($template_headers_append != false and $template_headers_append != '') {
                 $layout = str_ireplace('</head>', $template_headers_append . '</head>', $l, $one);
             }
         }
         if (function_exists('template_headers_src')) {
             $template_headers_src = template_headers_src();
             if ($template_headers_src != false and $template_headers_src != '') {
                 $layout = str_ireplace('</head>', $template_headers_src . '</head>', $l, $one);
             }
         }
         if (isset($page['active_site_template'])) {
             if ($page['active_site_template'] == '') {
                 $page['active_site_template'] = 'default';
             }
             if ($page['active_site_template'] == 'default') {
                 $active_site_template = $this->app->option_manager->get('current_template', 'template');
             } else {
                 $active_site_template = $page['active_site_template'];
                 if ($active_site_template == 'mw_default') {
                     $active_site_template = 'default';
                 }
             }
             $live_edit_css_folder = userfiles_path() . 'css' . DS . $active_site_template . DS;
             $custom_live_edit = $live_edit_css_folder . DS . 'live_edit.css';
             if (is_file($custom_live_edit)) {
                 $live_edit_url_folder = userfiles_url() . 'css/' . $active_site_template . '/';
                 $custom_live_editmtime = filemtime($custom_live_edit);
                 $liv_ed_css = '<link rel="stylesheet" href="' . $live_edit_url_folder . 'live_edit.css?version=' . $custom_live_editmtime . '" id="mw-template-settings" type="text/css" />';
                 $layout = str_ireplace('</head>', $liv_ed_css . '</head>', $l);
             }
         }
     }
     if (isset($_REQUEST['plain'])) {
         if (is_file($p)) {
             $p = new \Microweber\View($p);
             $p->params = $params;
             $layout = $p->__toString();
             echo $layout;
             return;
         }
     } elseif (is_file($p)) {
         $p = new \Microweber\View($p);
         $p->params = $params;
         $layout_tool = $p->__toString();
         $layout = str_replace('{content}', $layout_tool, $layout);
     } else {
         $layout = str_replace('{content}', 'Not found!', $layout);
     }
     $category = false;
     if (defined('CATEGORY_ID')) {
         $category = $this->app->category_manager->get_by_id(CATEGORY_ID);
     }
     //    $page['render_file'] = $render_file;
     if (!$standalone_edit) {
         if (isset($page['render_file'])) {
             event_trigger('mw.front', $page);
             $l = new \Microweber\View($page['render_file']);
             $l->page_id = PAGE_ID;
             $l->content_id = CONTENT_ID;
             $l->post_id = POST_ID;
             $l->category_id = CATEGORY_ID;
             $l->content = $page;
             $l->category = $category;
             $l->params = $params;
             $l->page = $page;
             $l->application = $this->app;
             $l = $l->__toString();
             //
             //
             //                $render_params = array();
             //                $render_params['render_file'] = $p;
             //                $render_params['page_id'] = PAGE_ID;
             //                $render_params['content_id'] = CONTENT_ID;
             //                $render_params['post_id'] = POST_ID;
             //                $render_params['category_id'] = CATEGORY_ID;
             //                $render_params['page'] = $page;
             //                $render_params['params'] = $params;
             //                $render_params['application'] = $this->app;
             //  $l = $this->app->template->render($render_params);
             if (is_object($l)) {
                 return $l;
             }
             $l = $this->app->parser->process($l, $options = false);
             //                if(isset($page['content']) and $page['content'] != false){
             //
             //                if($page['content'] == ''){
             //                    unset($page['content']);
             //                }
             //                } else {
             //                    $page['content'] = $l;
             //                }
             $editable = $this->app->parser->isolate_content_field($l, true);
             if ($editable != false) {
                 $page['content'] = $editable;
             } else {
                 if ($tool == 'wysiwyg') {
                     $err = 'no editable content region found';
                     if (isset($page['layout_file'])) {
                         $file = $page['layout_file'];
                         $file = str_replace('__', '/', $page['layout_file']);
                         $err = $err . ' in file ' . $file;
                     }
                     if (isset($page['active_site_template'])) {
                         $err = $err . ' (' . $page['active_site_template'] . ' template)';
                     }
                     return $err;
                 }
             }
         }
     }
     if (!stristr($layout, $apijs_loaded)) {
         $rep = 0;
         $default_css = $default_css . "\r\n" . '<script src="' . $apijs_settings_loaded . '"></script>' . "\r\n";
         $default_css = $default_css . "\r\n" . '<script src="' . $apijs_loaded . '"></script>' . "\r\n";
         $layout = str_ireplace('<head>', '<head>' . $default_css, $layout, $rep);
     }
     if (isset($page['content'])) {
         if ($standalone_edit) {
             if (!isset($render_file)) {
                 if (stristr($page['content'], 'field="content"') or stristr($page['content'], 'field=\'content\'')) {
                     $page['content'] = '<div class="edit" field="content" rel="content" contenteditable="true">' . $page['content'] . '</div>';
                 }
             }
         }
         $layout = str_replace('{content}', $page['content'], $layout);
     }
     $layout = mw()->template->process_meta($layout);
     $layout = $this->app->parser->process($layout, $options = false);
     $layout = execute_document_ready($layout);
     $layout = str_replace('{head}', '', $layout);
     $layout = str_replace('{content}', '', $layout);
     echo $layout;
     return;
 }
Esempio n. 5
0
 function log_action($back_log_action)
 {
     if (mw_is_installed() == true) {
         if ($back_log_action == false) {
             $this->app->log_manager->delete("is_system=y&rel_type=export&user_ip=" . USER_IP);
         } else {
             $check = $this->app->log_manager->get("order_by=created_at desc&one=true&is_system=y&created_at=[mt]30 min ago&field=action&rel_type=export&user_ip=" . USER_IP);
             if (is_array($check) and isset($check['id'])) {
                 $this->app->log_manager->save("is_system=y&field=action&rel_type=export&value=" . $back_log_action . "&user_ip=" . USER_IP . "&id=" . $check['id']);
             } else {
                 $this->app->log_manager->save("is_system=y&field=action&rel_type=export&value=" . $back_log_action . "&user_ip=" . USER_IP);
             }
         }
     }
 }
Esempio n. 6
0
function get_all_functions_files_for_modules($options = false)
{
    if (mw_is_installed() == false) {
        return false;
    }
    $args = func_get_args();
    $function_cache_id = '';
    $function_cache_id = serialize($options);
    $cache_id = $function_cache_id = __FUNCTION__ . crc32($function_cache_id);
    $cache_group = 'modules/global';
    $cache_content = mw()->cache_manager->get($cache_id, $cache_group);
    if ($cache_content != false) {
        return $cache_content;
    }
    if (isset($options['glob'])) {
        $glob_patern = $options['glob'];
    } else {
        $glob_patern = '*functions.php';
    }
    if (isset($options['dir_name'])) {
        $dir_name = $options['dir_name'];
    } else {
        $dir_name = normalize_path(modules_path());
    }
    $installed = mw()->modules->get('ui=any&installed=1');
    $configs = false;
    if (is_array($installed) and !empty($installed)) {
        $configs = array();
        foreach ($installed as $module) {
            if (isset($module['module'])) {
                $file = normalize_path($dir_name . $module['module'] . DS . 'functions.php', false);
                if (is_file($file)) {
                    $configs[] = $file;
                }
            }
        }
    }
    mw()->cache_manager->save($configs, $function_cache_id, $cache_group);
    return $configs;
}
 public function boot(Request $request)
 {
     parent::boot();
     // public = /
     App::instance('path.public', base_path());
     Cache::extend('file', function ($app) {
         return new Utils\Adapters\Cache\CacheStore();
     });
     // If installed load module functions and set locale
     if (mw_is_installed()) {
         $modules = load_all_functions_files_for_modules();
         $this->commands('Microweber\\Commands\\OptionCommand');
         $language = get_option('language', 'website');
         if ($language != false) {
             set_current_lang($language);
         }
         if ($this->app->runningInConsole()) {
             $this->commands('Microweber\\Commands\\UpdateCommand');
         }
     } else {
         // Otherwise register the install command
         $this->commands('Microweber\\Commands\\InstallCommand');
     }
     // Register routes
     $this->registerRoutes();
 }
Esempio n. 8
0
 public function save($params)
 {
     $force = false;
     if (defined('MW_FORCE_USER_SAVE')) {
         $force = MW_FORCE_USER_SAVE;
     } elseif ($this->force_save) {
         $force = $this->force_save;
     } elseif (mw_var('force_save_user')) {
         $force = mw_var('force_save_user');
     }
     if (!$force) {
         if (defined("MW_API_CALL") and mw_is_installed() == true) {
             if (isset($params['is_admin']) and $this->is_admin() == false and !is_null(User::first())) {
                 unset($params['is_admin']);
             }
         }
     }
     if ($force == false) {
         if (isset($params['id']) and $params['id'] != 0) {
             $adm = $this->is_admin();
             if ($adm == false) {
                 $is_logged = user_id();
                 if ($is_logged == false or $is_logged == 0) {
                     return array('error' => 'You must be logged to save user');
                 } elseif (intval($is_logged) == intval($params['id']) and intval($params['id']) != 0) {
                     // the user is editing their own profile
                 } else {
                     return array('error' => 'You must be logged to as admin save this user');
                 }
             }
         } else {
             if (defined('MW_API_CALL') and mw_is_installed() == true) {
                 $adm = $this->is_admin();
                 if ($adm == false) {
                     $params['id'] = $this->id();
                     $is_logged = user_id();
                     if (intval($params['id']) != 0 and $is_logged != $params['id']) {
                         return array('error' => 'You must be logged save your settings');
                     }
                 } else {
                     if (!isset($params['id'])) {
                         $params['id'] = $this->id();
                     }
                 }
             }
         }
     }
     $data_to_save = $params;
     if (isset($data_to_save['id']) and $data_to_save['id'] != 0 and isset($data_to_save['email']) and $data_to_save['email'] != false) {
         $old_user_data = $this->get_by_id($data_to_save['id']);
         if (isset($old_user_data['email']) and $old_user_data['email'] != false) {
             if ($data_to_save['email'] != $old_user_data['email']) {
                 if (isset($old_user_data['password_reset_hash']) and $old_user_data['password_reset_hash'] != false) {
                     $hash_cache_id = md5(serialize($old_user_data)) . uniqid() . rand();
                     $data_to_save['password_reset_hash'] = $hash_cache_id;
                 }
             }
         }
     }
     if (isset($data_to_save['email']) and isset($data_to_save['id'])) {
         $email = trim($data_to_save['email']);
         if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
             $check_existing = array();
             $check_existing['email'] = $email;
             $check_existing['single'] = 1;
             $check_existing = $this->get_all($check_existing);
             if (isset($check_existing['id']) and $check_existing['id'] != $data_to_save['id']) {
                 return array('error' => 'User with this email already exists! Try different email address!');
             }
         }
     }
     if (isset($data_to_save['username']) and $data_to_save['username'] != false and isset($data_to_save['id']) and $data_to_save['id'] != false) {
         $check_existing = array();
         $check_existing['username'] = $data_to_save['username'];
         $check_existing['single'] = 1;
         $check_existing = $this->get_all($check_existing);
         if (isset($check_existing['id']) and $check_existing['id'] != $data_to_save['id']) {
             return array('error' => 'User with this username already exists! Try different username!');
         }
     }
     if (isset($params['id']) and intval($params['id']) != 0) {
         $user = User::find($params['id']);
     } else {
         $user = new User();
     }
     $id_to_return = false;
     $data_to_save = $this->app->format->clean_xss($data_to_save);
     if ($user->validateAndFill($data_to_save)) {
         $save = $user->save();
         if (isset($user->id)) {
             $data_to_save['id'] = $params['id'] = $user->id;
         }
         if (isset($params['attributes']) or isset($params['data_fields'])) {
             $params['extended_save'] = true;
         }
         if (isset($params['extended_save'])) {
             if (isset($data_to_save['password'])) {
                 unset($data_to_save['password']);
             }
             if (isset($data_to_save['id'])) {
                 $data_to_save['table'] = 'users';
                 $this->app->database->extended_save($data_to_save);
             }
         }
         if (isset($params['id']) and intval($params['id']) != 0) {
             $id_to_return = intval($params['id']);
         } else {
             $id_to_return = DB::getPdo()->lastInsertId();
         }
         $params['id'] = $id_to_return;
         $this->app->event_manager->trigger('mw.user.save', $params);
     } else {
         return array('error' => 'Error saving the user!');
     }
     $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . 'global');
     $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . '0');
     $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . $id_to_return);
     return $id_to_return;
 }
Esempio n. 9
0
 public function get_items_per_page($group = 'website')
 {
     if (!isset($this->options_memory['items_per_page'])) {
         $this->options_memory = array();
     }
     if (isset($this->options_memory['items_per_page'][$group])) {
         return $this->options_memory['items_per_page'][$group];
     }
     if (mw_is_installed() == true) {
         $table = $this->tables['options'];
         $ttl = '99999';
         $cache_key = $table . '_items_per_page_' . $group;
         $items_per_page = Cache::tags($table)->remember($cache_key, $ttl, function () use($table, $group) {
             $items_per_page = DB::table($table)->where('option_key', 'items_per_page')->where('option_group', $group)->first();
             return $items_per_page;
         });
         if (!empty($items_per_page)) {
             $items_per_page = (array) $items_per_page;
             if (isset($items_per_page['option_value'])) {
                 $result = $items_per_page['option_value'];
                 $this->options_memory['items_per_page'][$group] = $result;
                 return $result;
             }
         }
     }
 }
Esempio n. 10
0
 public function index($input = null)
 {
     if (!is_array($input) || empty($input)) {
         $input = Input::all();
     }
     $allowed_configs = array('database', 'microweber');
     $is_installed = mw_is_installed();
     if ($is_installed) {
         return 'Microweber is already installed!';
     }
     $view = MW_PATH . 'Views/install.php';
     $connection = Config::get('database.connections');
     $this->install_log("Preparing to install");
     if (isset($input['make_install'])) {
         if (!isset($input['db_pass'])) {
             $input['db_pass'] = '';
         }
         if (!isset($input['table_prefix'])) {
             $input['table_prefix'] = '';
         }
         $errors = array();
         if (!isset($input['db_host'])) {
             $errors[] = 'Parameter "db_host" is required';
         } else {
             $input['db_host'] = trim($input['db_host']);
         }
         if (!isset($input['db_name'])) {
             $errors[] = 'Parameter "db_name" is required';
         } else {
             $input['db_name'] = trim($input['db_name']);
         }
         if (!isset($input['db_user'])) {
             $errors[] = 'Parameter "db_user" is required';
         }
         if (!isset($input['admin_email'])) {
             $errors[] = 'Parameter "admin_email" is required';
         }
         if (!isset($input['admin_password'])) {
             $errors[] = 'Parameter "admin_password" is required';
         }
         if (!isset($input['admin_username'])) {
             $errors[] = 'Parameter "admin_username" is required';
         }
         if (!empty($errors)) {
             return implode("\n", $errors);
         }
         if (isset($input['db_driver'])) {
             $dbDriver = $input['db_driver'];
         } else {
             $dbDriver = 'mysql';
         }
         Config::set("database.default", $dbDriver);
         if ($dbDriver == 'sqlite') {
             if (isset($input['db_name_sqlite'])) {
                 $input['db_name'] = $input['db_name_sqlite'];
             }
             Config::set("database.connections.{$dbDriver}.database", $input['db_name']);
             if (!file_exists($input['db_name'])) {
                 touch($input['db_name']);
             }
         }
         Config::set("database.connections.{$dbDriver}.host", $input['db_host']);
         Config::set("database.connections.{$dbDriver}.username", $input['db_user']);
         Config::set("database.connections.{$dbDriver}.password", $input['db_pass']);
         Config::set("database.connections.{$dbDriver}.database", $input['db_name']);
         Config::set("database.connections.{$dbDriver}.prefix", $input['table_prefix']);
         if (isset($input['default_template']) and $input['default_template'] != false) {
             Config::set('microweber.install_default_template', $input['default_template']);
         }
         if (isset($input['with_default_content']) and $input['with_default_content'] != false) {
             Config::set('microweber.install_default_template_content', 1);
         }
         if (Config::get('app.key') == 'YourSecretKey!!!') {
             if (!$this->app->runningInConsole()) {
                 $_SERVER['argv'] = array();
             }
             Artisan::call('key:generate');
         }
         $this->install_log("Saving config");
         Config::save($allowed_configs);
         Cache::flush();
         $install_finished = false;
         try {
             DB::connection($dbDriver)->getDatabaseName();
         } catch (\PDOException $e) {
             return 'Error: ' . $e->getMessage() . "\n";
         } catch (\Exception $e) {
             return 'Error: ' . $e->getMessage() . "\n";
         }
         if (function_exists('set_time_limit')) {
             @set_time_limit(0);
         }
         $this->install_log("Setting up database");
         $installer = new Install\DbInstaller();
         $installer->run();
         $installer = new Install\WebserverInstaller();
         $installer->run();
         $this->install_log("Setting up template");
         $installer = new Install\TemplateInstaller();
         $installer->run();
         $this->install_log("Setting up default options");
         $installer = new Install\DefaultOptionsInstaller();
         $installer->run();
         Config::set('microweber.is_installed', 1);
         if (isset($input['admin_password']) && strlen($input['admin_password'])) {
             $this->install_log("Adding admin user");
             $adminUser = new \User();
             $adminUser->username = $input['admin_username'];
             $adminUser->email = $input['admin_email'];
             $adminUser->password = $input['admin_password'];
             $adminUser->is_admin = 1;
             $adminUser->is_active = 1;
             $adminUser->save();
             Config::set('microweber.has_admin', 1);
         }
         $this->install_log("Saving ready config");
         Config::save($allowed_configs);
         $this->install_log("done");
         return 'done';
     }
     $layout = new View($view);
     $defaultDbEngine = Config::get('database.default');
     if (extension_loaded('pdo_sqlite')) {
         // $defaultDbEngine = 'sqlite';
     }
     $dbEngines = Config::get('database.connections');
     foreach ($dbEngines as $driver => $v) {
         if (!extension_loaded("pdo_{$driver}")) {
             unset($dbEngines[$driver]);
         }
     }
     $viewData = ['config' => $dbEngines[$defaultDbEngine], 'dbDefaultEngine' => $defaultDbEngine, 'dbEngines' => array_keys($dbEngines), 'dbEngineNames' => ['mysql' => 'MySQL', 'sqlite' => 'SQLite', 'sqlsrv' => 'Microsoft SQL Server', 'pgsql' => 'PostgreSQL']];
     $domain = false;
     if (isset($_SERVER['HTTP_HOST'])) {
         $domain = $_SERVER['HTTP_HOST'];
         $domain = str_replace('www.', '', $domain);
         $domain = str_replace('.', '_', $domain);
         $domain = str_replace('-', '_', $domain);
         $domain = substr($domain, 0, 10);
     }
     if (!$viewData['config']['prefix'] and $domain) {
         $viewData['config']['prefix'] = $domain . '_';
     }
     if (extension_loaded('pdo_sqlite') and $domain) {
         $sqlite_path = normalize_path(storage_path() . DS . $domain . '.sqlite', false);
         $viewData['config']['db_name_sqlite'] = $sqlite_path;
     }
     $layout->set($viewData);
     $is_installed = mw_is_installed();
     if ($is_installed) {
         App::abort(403, 'Unauthorized action. Microweber is already installed.');
     }
     $layout->assign('done', $is_installed);
     $layout = $layout->__toString();
     return $layout;
 }
Esempio n. 11
0
 __mw_install_log('Creating default database tables');
 mw()->cache_manager->clear('db');
 event_trigger('mw_db_init_default');
 event_trigger('mw_db_init');
 mw()->content_manager->db_init();
 __mw_install_log('Creating log database tables');
 mw()->notifications_manager->db_init();
 __mw_install_log('Creating online shop database tables');
 mw()->shop_manager->db_init();
 mw()->shop_manager->create_mw_shop_default_options();
 __mw_install_log('Creating modules database tables');
 mw()->modules->db_init();
 if (!defined('MW_FORCE_SAVE_EXTENDED')) {
     define('MW_FORCE_SAVE_EXTENDED', 1);
 }
 if (mw_is_installed() != true) {
     if (isset($to_save['admin_username']) and isset($to_save['admin_password']) and $to_save['admin_username'] != '') {
         if ($to_save['admin_username'] != '{admin_username}') {
             __mw_install_log('Adding admin user');
             $new_admin = array();
             $new_admin['username'] = $to_save['admin_username'];
             $new_admin['password'] = $to_save['admin_password'];
             if (isset($to_save['admin_email']) and $to_save['admin_email'] != '') {
                 $new_admin['email'] = $to_save['admin_email'];
             }
             $new_admin['is_active'] = 1;
             $new_admin['is_admin'] = 'y';
             mw_var('FORCE_SAVE', get_table_prefix() . 'users');
             save_user($new_admin);
         }
     }