private function read_snippetdir($snippetdir, $path) { $snippetdir_path = "{$path}{$snippetdir->name}"; if (!file_exists($snippetdir_path)) { mkdir($snippetdir_path); } $filenames = array(); $foldernames = array(); $snippet_qb = midcom_db_snippet::new_query_builder(); $snippet_qb->add_constraint('up', '=', $snippetdir->id); $snippets = $snippet_qb->execute(); foreach ($snippets as $snippet) { file_put_contents("{$snippetdir_path}/{$snippet->name}.php", $snippet->code); $filenames[] = "{$snippet->name}.php"; if (!empty($snippet->doc)) { file_put_contents("{$snippetdir_path}/{$snippet->name}.txt", $snippet->doc); $filenames[] = "{$snippet->name}.txt"; } } $dir_qb = midcom_db_snippetdir::new_query_builder(); $dir_qb->add_constraint('up', '=', $snippetdir->id); $dirs = $dir_qb->execute(); foreach ($dirs as $dir) { $this->read_snippetdir($dir, "{$snippetdir_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, $snippetdir_id) { if (!$this->delete_missing) { return; } $qb = midcom_db_snippet::new_query_builder(); $qb->add_constraint('up', '=', $snippetdir_id); if (!empty($filenames)) { $qb->add_constraint('name', 'NOT IN', $filenames); } $files = $qb->execute(); foreach ($files as $file) { $file->delete(); } }