isMobile(); //$is_mobile = 1; require_once('directors/director_sql.php'); require_once('directors/director_links.php'); require_once('directors/director_dwh.php'); require_once('directors/director_api.php'); require_once('directors/director_pixu_app.php'); require_once('directors/director_api_user.php'); require_once('directors/director_payments.php'); require_once('directors/director_event_manager.php'); //session_start(); //if(!session_started()) die ('cannot start session, fix server!'); if (!@session_start()) { http_response_code(500); die('Cannot start session, fix server!'); } session_write_close(); //put_in_session(['is_mobile' => 0]); if($_SESSION['is_mobile']) $is_mobile = $_SESSION['is_mobile']; $_platform = $is_mobile ? 'mobile' : 'desktop'; //require_once('directors/director_common_code.php'); $_break_execution = false; $db = get_connection(); $ERR = array(); $q = ''; if(isset($_GET['q'])) { $q = $_GET['q']; } if(strpos($q, '-/') === 0) //- ako nyama page, dava samo -/, zashtoto vijda // w url-to i zamestva samo s / { $q = '/' . $q; } require_once('directors/director_log.php'); require_once('directors/director_exceptions.php'); //tr da e tuk, zashtoto mu tr db //require_once('directors/director_log.php'); //tr da e tuk, zashtoto mu tr db $log_api = new Log(get_ip_secured(), determineIP_gpt_improved(), $q, $db, $ERR); $log_api->init(); $_phash = array(); //parametrite no zapazeni v hash za lookup if(strpos($q, '/-/') !== FALSE ) //split by /-/ { $page = substring_before($q, '/-/'); $pstr = substring_after($q, '/-/'); $params = explode('/', $pstr); /* - da se testva i da se preceni dali da se polzva. maha null parametrite //moje bi vs prilojenie triabva da se griji za tiah $params = array_filter(explode('/', $pstr), function($value) { return strtolower($value) !== 'null'; }); */ $_p = $params; //$params has all, _p excludes system params like async and renderers $i = 0; foreach($params as $temp_param) { $_phash[$temp_param] = $i; $i++; } } else { $page = $q; $_p = array(); $params = array(); } $is_async_call = false; $async_renders = null; $dynamic_renderers = []; //determine async stuff if(isset($_phash['async'])) { $async_pos_in_params_arr = $_phash['async']; //1. set async flags $is_async_call = true; if($_phash['async']+1) //renderers parametera e 1 sled async { $p_renderers = $params[$_phash['async']+1]; $async_renders = substring_after($p_renderers, '='); if($async_renders == 'auto') $auto_async_renderers = []; if($async_renders) { $arr_renderers = explode(',', $async_renders); foreach($arr_renderers as $idx => $r) { if (strpos($r, '__') === 0) //new case - dynamic element fill. id set by calling js { $key = substr($r, 2); $dynamic_renders[$key] = $key; //debug: https://127.0.0.1/pixu/dynamic_modal/-/async/renderers=__quick_remix_test200/quick_remix_test } } } } //2. remove async and rendereres from $_p array_splice($_p, $async_pos_in_params_arr, 2); //length=2 - remove 2nd param (/renderers) as well } ///////TODO TODO TODO //remove double slashes - remove trailing slashes include_once('control_implement.php'); //gornoto expose-va $masterpage[, $masterpage_mobile], $dict_renders, $manager, //ako ne se specificira masterpage_mobile, se pravi po template $x = 'directors/director_common_code.php'; if(file_exists($x)) { require_once($x); } @include_once('directors/director_common_code.php'); //echo __DIR__; $x = 'managers/'.$manager.'.php'; if(file_exists($x)) { include_once($x); } if(!$_break_execution) //ako stane greshka / redirect v manager-a, da ne izpulniava tezi { if($is_async_call) { require_once('directors/director_async.php'); } else { require_masterpage($masterpage); } } $request_timestamp_end = gettimeofday(true); $req_dur = $request_timestamp_end - $request_timestamp; $log_api->log_request(); function require_masterpage($__f__, $use_inheritance = true) { GLOBAL $manager; GLOBAL $page; if(!trim($__f__)) { return; //throw new Exception('empty masterpage'); } $arr = array_keys($GLOBALS); //super globals register - kato se vika vuv funkcia i promenlivite se gubiat foreach($arr as $ak) { $$ak = $GLOBALS[$ak]; } //print_r($f); $manager_level_inheritance = 'masterpages/'.$manager.'/'.$__f__.'.php'; $page_level_inheritance = 'masterpages/'.$manager.'/'.$page.'/'.$__f__.'.php'; $default = 'masterpages/'.$__f__.'.php'; if($use_inheritance) { if(file_exists($page_level_inheritance)) { require($page_level_inheritance); } elseif(file_exists($manager_level_inheritance)) { require($manager_level_inheritance); } elseif(file_exists($default)) { require($default); } else { //when debugging //throw new Exception('cannot include masterpage: "' . $__f__ . '" manager: '. $manager . ' page: ' . $page); } } else { if(file_exists($manager_level_inheritance)) { require($manager_level_inheritance); } else { //when debugging throw new Exception('cannot include masterpage "' . $__f__ . '" manager: '. $manager . ' page: ' . $page); } } } function require_masterpage_manager($custom_manager, $__f__) { $arr = array_keys($GLOBALS); //super globals register - kato se vika vuv funkcia i promenlivite se gubiat foreach($arr as $ak) { $$ak = $GLOBALS[$ak]; } $manager_level_inheritance = 'masterpages/'.$custom_manager.'/'.$__f__.'.php'; require_once($manager_level_inheritance); } /** * На тази функция се подават същите неща като в html / ajax / button. * Изпълнява ги на сървъра и ги рендерва както кодъра реши * @param mixed $page_inline - the href part of without / * @param mixed $_p_inline - get params in array /-/alabala/123 => ['alabala','123'] * @param mixed $dynamic_renders_inline -id-ta na divove за рендерване * @throws \Exception * @return array [$manager_inline, $dynamic_renders_inline] - manager отговорен за * този page, както и мапинг -> div_id-file to import */ function ajax_inline($page_inline, $_p_inline, $dynamic_renders_inline) { GLOBAL $_map_route_logic; //$manager_inline = 'modalman'; //това го знаем защото сме девс :) може да се ползва и долната функция ама по-добре не $manager_inline = control_implement_get_manager($page_inline); $manager_inline_file = 'managers/'.$manager_inline.'.php'; if(file_exists($manager_inline_file)) { require_once($manager_inline_file); } else { throw new Exception('inline manager not found'); } $route_function = $_map_route_logic[$manager_inline]; //след като манагер-а е вкаран, този мап го има if(!$route_function) throw new Exception('no route function found in manager '.$manager_inline); //това го знаем защото сме отворили manager_inline file-a и сме видяли функцията за рутиране $route_logic = $route_function($_p_inline, $dynamic_renders_inline); $code_behind_inline = $route_logic['code_behind']; $dynamic_renders_inline = $route_logic['dynamic_renders']; $code_behind_in_manager_folder_inline = 'masterpages/'.$manager_inline.'/'.$code_behind_inline.'.php'; if(file_exists($code_behind_in_manager_folder_inline)) { require_once($code_behind_in_manager_folder_inline); } return [ $manager_inline, $dynamic_renders_inline ]; } ?>