public function read_style($style, $path) { $style_path = "{$path}{$style->name}"; if (!file_exists($style_path)) { mkdir($style_path); } $filenames = array(); $foldernames = array(); $element_qb = midcom_db_element::new_query_builder(); $element_qb->add_constraint('style', '=', $style->id); $elements = $element_qb->execute(); foreach ($elements as $element) { file_put_contents("{$style_path}/{$element->name}.php", $element->value); $filenames[] = "{$element->name}.php"; } $style_qb = midcom_db_style::new_query_builder(); $style_qb->add_constraint('up', '=', $style->id); $styles = $style_qb->execute(); foreach ($styles as $style) { $this->read_style($style, "{$style_path}/"); $foldernames[] = $style->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, $style_id) { if (!$this->delete_missing) { return; } $qb = midcom_db_element::new_query_builder(); $qb->add_constraint('style', '=', $style_id); if (!empty($filenames)) { $qb->add_constraint('name', 'NOT IN', $filenames); } $files = $qb->execute(); foreach ($files as $file) { $file->delete(); } }