public function apijs() { if (!defined('MW_NO_SESSION')) { define('MW_NO_SESSION', 1); } $ref_page = false; if (isset($_REQUEST['id'])) { $ref_page = $this->app->content_manager->get_by_id($_REQUEST['id']); } elseif (isset($_SERVER['HTTP_REFERER'])) { $ref_page = $_SERVER['HTTP_REFERER']; if ($ref_page != '') { $ref_page = $this->app->content_manager->get_by_url($ref_page); $page_id = $ref_page['id']; } } if (isset($_SERVER['HTTP_REFERER'])) { $cat_url = mw()->category_manager->get_category_id_from_url($_SERVER['HTTP_REFERER']); if ($cat_url != false) { if (!defined('CATEGORY_ID')) { define('CATEGORY_ID', intval($cat_url)); } } } $file = mw_includes_path() . 'api' . DS . 'api.js'; $last_modified_time = $lastModified = filemtime($file); $ifModifiedSince = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false; $etagHeader = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false; if (defined('MW_VERSION')) { $etag = md5(filemtime($file) . MW_VERSION); } else { $etag = filemtime($file); } $this->app->content_manager->define_constants($ref_page); $l = new \Microweber\View($file); $l = $l->__toString(); $l = str_replace('{SITE_URL}', $this->app->url_manager->site(), $l); $l = str_replace('{MW_SITE_URL}', $this->app->url_manager->site(), $l); $l = str_replace('%7BSITE_URL%7D', $this->app->url_manager->site(), $l); $response = \Response::make($l); $response->header('Content-Type', 'application/javascript'); $compile_assets = \Config::get('microweber.compile_assets'); if ($compile_assets and defined('MW_VERSION')) { $userfiles_dir = userfiles_path(); $hash = md5(site_url()); $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs'); $userfiles_cache_filename = $userfiles_cache_dir . 'api.' . $hash . '.' . MW_VERSION . '.js'; if (!is_file($userfiles_cache_filename)) { if (!is_dir($userfiles_cache_dir)) { mkdir_recursive($userfiles_cache_dir); } if (is_dir($userfiles_cache_dir)) { @file_put_contents($userfiles_cache_filename, $l); } } else { $fmd5 = md5_file($userfiles_cache_filename); $fmd = md5($l); if ($fmd5 != $fmd) { @file_put_contents($userfiles_cache_filename, $l); } } } if (!$this->app->make('config')->get('app.debug')) { // enable caching if in not in debug mode $response->header('Etag', $etag); $response->header('Last-Modified', gmdate('D, d M Y H:i:s', $last_modified_time) . ' GMT'); $response->setTtl(30); } return $response; }