public function module()
{
if (!defined('MW_API_CALL')) {
// define('MW_API_CALL', true);
}
if (!defined('MW_NO_SESSION')) {
$is_ajax = $this->app->url_manager->is_ajax();
if (!mw()->user_manager->session_id() and $is_ajax == false) {
if (!defined('MW_SESS_STARTED')) {
define('MW_SESS_STARTED', true);
// //session_start();
}
}
$editmode_sess = $this->app->user_manager->session_get('editmode');
if ($editmode_sess == true and !defined('IN_EDIT')) {
define('IN_EDIT', true);
}
}
$page = false;
$custom_display = false;
if (isset($_REQUEST['data-display']) and $_REQUEST['data-display'] == 'custom') {
$custom_display = true;
}
if (isset($_REQUEST['data-module-name'])) {
$_REQUEST['module'] = $_REQUEST['data-module-name'];
$_REQUEST['data-type'] = $_REQUEST['data-module-name'];
if (!isset($_REQUEST['id'])) {
$_REQUEST['id'] = $this->app->url_manager->slug($_REQUEST['data-module-name'] . '-' . date('YmdHis'));
}
}
if (isset($_REQUEST['data-type'])) {
$_REQUEST['module'] = $_REQUEST['data-type'];
}
if (isset($_REQUEST['display']) and $_REQUEST['display'] == 'custom') {
$custom_display = true;
}
if (isset($_REQUEST['view']) and $_REQUEST['view'] == 'admin') {
$custom_display = false;
}
if ($custom_display == true) {
$custom_display_id = false;
if (isset($_REQUEST['id'])) {
$custom_display_id = $_REQUEST['id'];
}
if (isset($_REQUEST['data-id'])) {
$custom_display_id = $_REQUEST['data-id'];
}
}
if (isset($_REQUEST['from_url'])) {
$from_url = $_REQUEST['from_url'];
} elseif (isset($_SERVER['HTTP_REFERER'])) {
$from_url = $_SERVER['HTTP_REFERER'];
}
if (isset($from_url) and $from_url != false) {
if (stristr($from_url, 'editor_tools/wysiwyg')) {
if (!defined('IN_EDITOR_TOOLS')) {
define('IN_EDITOR_TOOLS', true);
}
}
$url = $from_url;
$from_url2 = str_replace('#', '/', $from_url);
$content_id = $this->app->url_manager->param('content_id', false, $from_url2);
if ($content_id == false) {
$content_id = $this->app->url_manager->param('editpage', false, $from_url2);
}
if ($content_id == false) {
$content_id = $this->app->url_manager->param('editpost', false, $from_url2);
}
if ($content_id == false) {
$is_current = $this->app->url_manager->param('is-current', false, $from_url2);
if ($is_current) {
$content_id = $this->app->url_manager->param('content-id', false, $from_url2);
} else {
$content_id = $this->app->url_manager->param('mw-adm-content-id', false, $from_url2);
}
}
if ($content_id == false) {
$action_test = $this->app->url_manager->param('action', false, $from_url2);
if ($action_test != false) {
$action_test = str_ireplace('editpage:', '', $action_test);
$action_test = str_ireplace('editpost:', '', $action_test);
$action_test = str_ireplace('edit:', '', $action_test);
$action_test = str_ireplace('showposts:', '', $action_test);
$action_test = intval($action_test);
if ($action_test != 0) {
$content_id = $action_test;
$this->app->content_manager->define_constants(array('id' => $content_id));
}
}
}
if (strpos($url, '#')) {
$url = substr($url, 0, strpos($url, '#'));
}
//$url = $_SERVER["HTTP_REFERER"];
$url = explode('?', $url);
$url = $url[0];
if ($content_id != false) {
$page = array();
$page['id'] = $content_id;
if ($content_id) {
$page = $this->app->content_manager->get_by_id($content_id);
$url = $page['url'];
}
} else {
if (trim($url) == '' or trim($url) == $this->app->url_manager->site()) {
//var_dump($from_url);
//$page = $this->app->content_manager->get_by_url($url);
$page = $this->app->content_manager->homepage();
if (!defined('IS_HOME')) {
define('IS_HOME', true);
}
if (isset($from_url2)) {
$mw_quick_edit = $this->app->url_manager->param('mw_quick_edit', false, $from_url2);
if ($mw_quick_edit) {
$page = false;
}
}
} else {
if (!stristr($url, admin_url())) {
$page = $this->app->content_manager->get_by_url($url);
} else {
$page = false;
if (!defined('PAGE_ID')) {
define('PAGE_ID', false);
}
if (!defined('POST_ID')) {
define('POST_ID', false);
}
if (!defined('CONTENT_ID')) {
define('CONTENT_ID', false);
}
}
}
}
} else {
$url = $this->app->url_manager->string();
}
if (!defined('IS_HOME')) {
if (isset($page['is_home']) and $page['is_home'] == 'y') {
define('IS_HOME', true);
}
}
if ($page == false) {
if (!isset($content_id)) {
return;
}
$this->app->content_manager->define_constants(array('id' => $content_id));
} else {
$this->app->content_manager->define_constants($page);
}
if (defined('TEMPLATE_DIR')) {
$load_template_functions = TEMPLATE_DIR . 'functions.php';
if (is_file($load_template_functions)) {
include_once $load_template_functions;
}
}
if ($custom_display == true) {
$u2 = $this->app->url_manager->site();
$u1 = str_replace($u2, '', $url);
$this->render_this_url = $u1;
$this->isolate_by_html_id = $custom_display_id;
$this->frontend();
return;
}
$url_last = false;
if (!isset($_REQUEST['module'])) {
$url = $this->app->url_manager->string(0);
if ($url == __FUNCTION__) {
$url = $this->app->url_manager->string(0);
}
/*
$is_ajax = $this->app->url_manager->is_ajax();
if ($is_ajax == true) {
$url = $this->app->url_manager->string(true);
}*/
$url = $this->app->format->replace_once('module/', '', $url);
$url = $this->app->format->replace_once('module_api/', '', $url);
$url = $this->app->format->replace_once('m/', '', $url);
if (is_module($url)) {
$_REQUEST['module'] = $url;
$mod_from_url = $url;
} else {
$url1 = $url_temp = explode('/', $url);
$url_last = array_pop($url_temp);
$try_intil_found = false;
$temp1 = array();
foreach ($url_temp as $item) {
$temp1[] = implode('/', $url_temp);
$url_laset = array_pop($url_temp);
}
$i = 0;
foreach ($temp1 as $item) {
if ($try_intil_found == false) {
if (is_module($item)) {
$url_tempx = explode('/', $url);
$_REQUEST['module'] = $item;
$url_prev = $url_last;
$url_last = array_pop($url_tempx);
$url_prev = array_pop($url_tempx);
// d($url_prev);
$mod_from_url = $item;
$try_intil_found = true;
}
}
++$i;
}
}
}
$module_info = $this->app->url_manager->param('module_info', true);
if ($module_info) {
if ($_REQUEST['module']) {
$_REQUEST['module'] = str_replace('..', '', $_REQUEST['module']);
$try_config_file = modules_path() . '' . $_REQUEST['module'] . '_config.php';
$try_config_file = normalize_path($try_config_file, false);
if (is_file($try_config_file)) {
include $try_config_file;
if (!isset($config) or !is_array($config)) {
return false;
}
if (!isset($config['icon']) or $config['icon'] == false) {
$config['icon'] = modules_path() . '' . $_REQUEST['module'] . '.png';
$config['icon'] = $this->app->url_manager->link_to_file($config['icon']);
}
echo json_encode($config);
return;
}
}
}
$admin = $this->app->url_manager->param('admin', true);
$mod_to_edit = $this->app->url_manager->param('module_to_edit', true);
$embed = $this->app->url_manager->param('embed', true);
$mod_iframe = false;
if ($mod_to_edit != false) {
$mod_to_edit = str_ireplace('_mw_slash_replace_', '/', $mod_to_edit);
$mod_iframe = true;
}
//$data = $_REQUEST;
if ($_POST) {
$data = $_POST;
} else {
$url = $this->app->url_manager->segment();
if (!empty($url)) {
foreach ($url as $k => $v) {
$kv = explode(':', $v);
if (isset($kv[0]) and isset($kv[1])) {
$data[$kv[0]] = $kv[1];
}
}
}
}
$tags = false;
$mod_n = false;
if (isset($data['type']) != false) {
if (trim($data['type']) != '') {
$mod_n = $data['data-type'] = $data['type'];
}
}
if (isset($data['data-module-name'])) {
$mod_n = $data['data-type'] = $data['data-module-name'];
unset($data['data-module-name']);
}
if (isset($data['data-type']) != false) {
$mod_n = $data['data-type'];
}
if (isset($data['data-module']) != false) {
if (trim($data['data-module']) != '') {
$mod_n = $data['module'] = $data['data-module'];
}
}
if (isset($data['module'])) {
$mod_n = $data['data-type'] = $data['module'];
unset($data['module']);
}
if (isset($data['type'])) {
$mod_n = $data['data-type'] = $data['type'];
unset($data['type']);
}
if (isset($data['data-type']) != false) {
$data['data-type'] = rtrim($data['data-type'], '/');
$data['data-type'] = rtrim($data['data-type'], '\\');
$data['data-type'] = str_replace('__', '/', $data['data-type']);
}
if (!isset($data)) {
$data = $_REQUEST;
}
if (!isset($data['module']) and isset($mod_from_url) and $mod_from_url != false) {
$data['module'] = $mod_from_url;
}
if (!isset($data['id']) and isset($_REQUEST['id']) == true) {
$data['id'] = $_REQUEST['id'];
}
if (isset($data['ondrop'])) {
if (!defined('MW_MODULE_ONDROP')) {
define('MW_MODULE_ONDROP', true);
}
unset($data['ondrop']);
}
if ($mod_n == 'layout') {
if (isset($data['template'])) {
$t = str_replace('..', '', $data['template']);
$possible_layout = templates_path() . $t;
$possible_layout = normalize_path($possible_layout, false);
if (is_file($possible_layout)) {
$l = new \Microweber\View($possible_layout);
$layout = $l->__toString();
$layout = $this->app->parser->process($layout, $options = false);
echo $layout;
return;
}
}
}
$has_id = false;
if (isset($data) and is_array($data)) {
foreach ($data as $k => $v) {
if ($k != 'ondrop') {
if ($k == 'id') {
$has_id = true;
}
if (is_array($v)) {
$v1 = $this->app->format->array_to_base64($v);
$tags .= "{$k}=\"{$v1}\" ";
} else {
$v = $this->app->format->clean_html($v);
//$v = $this->app->database_manager->escape_string($v);
$tags .= "{$k}=\"{$v}\" ";
}
}
}
}
if ($has_id == false) {
// $mod_n = $this->app->url_manager->slug($mod_n) . '-' . date("YmdHis");
// $tags .= "id=\"$mod_n\" ";
}
$tags = "<module {$tags} />";
$opts = array();
if ($_REQUEST) {
$opts = $_REQUEST;
}
if (isset($_REQUEST['live_edit'])) {
event_trigger('mw.live_edit');
}
$opts['admin'] = $admin;
if ($admin == 'admin') {
event_trigger('mw_backend');
event_trigger('mw.admin');
} else {
event_trigger('mw_frontend');
event_trigger('mw.front');
}
if (isset($_SERVER['HTTP_REFERER']) and $_SERVER['HTTP_REFERER'] != false) {
$get_arr_from_ref = $_SERVER['HTTP_REFERER'];
if (strstr($get_arr_from_ref, $this->app->url_manager->site())) {
$get_arr_from_ref_arr = parse_url($get_arr_from_ref);
if (isset($get_arr_from_ref_arr['query']) and $get_arr_from_ref_arr['query'] != '') {
$restore_get = parse_str($get_arr_from_ref_arr['query'], $get_array);
if (is_array($get_array)) {
mw_var('mw_restore_get', $get_array);
}
//
}
}
}
$res = $this->app->parser->process($tags, $opts);
$res = preg_replace('~<(?:!DOCTYPE|/?(?:html|head|body))[^>]*>\\s*~i', '', $res);
if ($embed != false) {
$p_index = mw_includes_path() . 'api/index.php';
$p_index = normalize_path($p_index, false);
$l = new \Microweber\View($p_index);
$layout = $l->__toString();
$res = str_replace('{content}', $res, $layout);
}
$aj = $this->app->url_manager->is_ajax();
if (isset($_REQUEST['live_edit']) and $aj == false) {
$p_index = mw_includes_path() . DS . 'toolbar' . DS . 'editor_tools' . DS . 'module_settings' . DS . 'index.php';
$p_index = normalize_path($p_index, false);
$l = new \Microweber\View($p_index);
$l->params = $data;
$layout = $l->__toString();
$res = str_replace('{content}', $res, $layout);
$res = $this->app->parser->process($res, $options = false);
}
$res = execute_document_ready($res);
if (!defined('MW_NO_OUTPUT')) {
$res = $this->app->url_manager->replace_site_url_back($res);
echo $res;
}
if ($url_last != __FUNCTION__) {
if (function_exists($url_last)) {
//
$this->api($url_last);
} elseif (isset($url_prev) and function_exists($url_prev)) {
$this->api($url_last);
} elseif (class_exists($url_last, false)) {
$this->api($url_last);
} elseif (isset($url_prev) and class_exists($url_prev, false)) {
$this->api($url_prev);
}
}
return;
}