private function read_page($page, $path) { $page_path = "{$path}{$page->name}"; if (!file_exists($page_path)) { mkdir($page_path); } $filenames = array(); $foldernames = array(); $pageelement_qb = midcom_db_pageelement::new_query_builder(); $pageelement_qb->add_constraint('page', '=', $page->id); $pageelements = $pageelement_qb->execute(); foreach ($pageelements as $pageelement) { file_put_contents("{$page_path}/{$pageelement->name}.php", $pageelement->value); $filenames[] = "{$pageelement->name}.php"; } $dir_qb = midcom_db_page::new_query_builder(); $dir_qb->add_constraint('up', '=', $page->id); $dirs = $dir_qb->execute(); foreach ($dirs as $dir) { $this->read_page($dir, "{$page_path}/"); $foldernames[] = $dir->name; } if ($this->delete_missing) { // Then delete files and folders that are in DB but not in the importing folder $this->delete_missing_folders($foldernames, $style_path); $this->delete_missing_files($filenames, $style_path); } }
private function delete_missing_files($filenames, $page_id) { if (!$this->delete_missing) { return; } $qb = midcom_db_pageelement::new_query_builder(); $qb->add_constraint('up', '=', $page_id); if (!empty($filenames)) { $qb->add_constraint('name', 'NOT IN', $filenames); } $files = $qb->execute(); foreach ($files as $file) { $file->delete(); } }