protected function build_package($rep, $filename, $readme = "") { $export_filename = MASTERPRESS_TMP_DIR.$filename; $destination_filename = MASTERPRESS_CONTENT_MASTERPLANS_DIR.$filename; $info["filename"] = $export_filename; // setup PCL Zip to create the package containing a json Masterplan and any referenced menu icons require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); $zip = new PclZip($export_filename); // create a file out of the representation $pi = pathinfo($filename); $dir = MASTERPRESS_TMP_DIR.$pi["filename"]; wp_mkdir_p($dir); wp_mkdir_p($dir.WOOF_DIR_SEP."icons"); $handle = fopen( $dir.WOOF_DIR_SEP."masterplan.json", "w"); fwrite($handle, WOOF::json_indent( json_encode($rep) ) ); fclose($handle); if (trim($readme) != "") { $handle = fopen( $dir.WOOF_DIR_SEP."README.markdown", "w"); fwrite($handle, $readme ); fclose($handle); } $file_list = array($dir); $icon_list = array(); $type_list = array(); // grab any referenced icons foreach ($rep["icons"] as $icon_file) { $icon = MASTERPRESS_CONTENT_MENU_ICONS_DIR.$icon_file; if (file_exists($icon)) { $dest = $dir.WOOF_DIR_SEP."icons".WOOF_DIR_SEP.$icon_file; $icon_list[] = array("name" => $icon_file, "url" => MASTERPRESS_CONTENT_MENU_ICONS_URL.$icon_file); copy($icon, $dest); } } // now check if there are any field type extensions we need too $ft_dir = $dir.WOOF_DIR_SEP."field-types"; foreach ($rep["field_types"] as $type) { if (MPU::extension_type_exists($type)) { wp_mkdir_p($ft_dir); $source = MPU::extension_type_dir($type); $dest = $ft_dir.WOOF_DIR_SEP.$type; $type_list[] = array("key" => $type, "icon" => MPU::type_icon_url($type)); MPU::copyr($source, $dest); } } $zip->create( $file_list, PCLZIP_OPT_REMOVE_PATH, MASTERPRESS_TMP_DIR ); copy($export_filename, $destination_filename); unlink($export_filename); MPU::rmdir_r($dir); return array("path" => $destination_filename, "icon_list" => $icon_list, "type_list" => $type_list); }