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;
}