open( "../config/backups/latest_back.zip", \ZipArchive::CREATE | \ZipArchive::OVERWRITE ); //gather data and path info for md pages $pagePath = "../content/pages"; $yearPaths = glob($pagePath . "/*", GLOB_ONLYDIR); foreach ($yearPaths as $years) { $year = explode("/", $years); //grap the index and save it if (trim($year[3]) == "start") { $options = [ "add_path" => "content/pages/" . $year[3] . "/", "remove_all_path" => true, ]; $zip->addGlob($years . "/*.md", GLOB_BRACE, $options); } $monthsPath = glob($pagePath . "/" . $year[3] . "/*", GLOB_ONLYDIR); foreach ($monthsPath as $months) { $month = explode("/", $months); //once info is collected, add md pages to zip $options = [ "add_path" => "content/pages/" . $year[3] . "/" . $month[4] . "/", "remove_all_path" => true, ]; $zip->addGlob($months . "/*.md", GLOB_BRACE, $options); } } //gather data and path info for blog images $blogImagesPath = "../public/assets/images/blog"; $yearPaths = glob($blogImagesPath . "/*", GLOB_ONLYDIR); foreach ($yearPaths as $years) { $year = explode("/", $years); $monthsPath = glob($blogImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); foreach ($monthsPath as $months) { $month = explode("/", $months); //once info is collected, add images pages to zip $options = [ "add_path" => "public/assets/images/blog/" . $year[5] . "/" . $month[6] . "/", "remove_all_path" => true, ]; $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); } } //gather data and path info for user images $userImagesPath = "../public/assets/images/user"; $yearPaths = glob($userImagesPath . "/*", GLOB_ONLYDIR); foreach ($yearPaths as $years) { $year = explode("/", $years); $monthsPath = glob($userImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); foreach ($monthsPath as $months) { $month = explode("/", $months); //once info is collected, add images pages to zip $options = [ "add_path" => "public/assets/images/user/" . $year[5] . "/" . $month[6] . "/", "remove_all_path" => true, ]; $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); } } //add directory for settings and save them $zip->addEmptyDir("settings"); $zip->addFile("../config/settings.json", "settings/settings.json"); $zip->addFile("../config/folks.json", "settings/folks.json"); $zip->addFile("../config/tags.json", "settings/tags.json"); //save zip file $zip->close(); //update settings file with latest back up date $updated = new \Moment\Moment(); Settings::updateGlobalData( "last_backup", $updated->format("Y-m-d\TH:i:sP") ); $result = ["message" => "Backup created. THIS IS A SAFE SPACE!"]; return $result; } }