url); } public function beforeSave() { $this->created_on = date('Y-m-d H:i:s'); /* If directories do not exist create them. */ $parts = explode('/', $this->path()); /* If deep link create directories when needed. */ $dir = ''; foreach($parts as $part) { if(!is_dir($dir .= "/$part")) { mkdir($dir); } } /* Fix case when articles.html is created before articles/ */ /* TODO This still creates on extra directory in the end. */ /* if (('archive' == $this->page->behavior_id) || ($this->page instanceof PageArchive)) { $dir .= '/' . basename($file, funky_cache_suffix()); if(!is_dir($dir)) { mkdir($dir); } } */ return file_put_contents($this->path() . "/index.html", $this->content(), LOCK_EX); } public function beforeDelete() { return unlink($this->path() . "/index.html"); } public function path() { $filename = $_SERVER['SCRIPT_FILENAME']; $filename = preg_replace('/admin\//', '', $filename); $filename = preg_replace('/index\.php$/', '', $filename); return $filename . $this->url; } public function content() { ob_start(); $this->page->_executeLayout(); $output = ob_get_contents(); ob_end_clean(); return $output; } }