MDL-37429 zipping improvements
[moodle.git] / lib / filestorage / file_packer.php
index 76aeead..3fbfb62 100644 (file)
@@ -14,7 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
-
 /**
  * Abstraction of general file packer.
  *
@@ -35,7 +34,7 @@ defined('MOODLE_INTERNAL') || die();
 abstract class file_packer {
 
     /**
-     * Archive files and store the result in file storage
+     * Archive files and store the result in file storage.
      *
      * @param array $files array with zip paths as keys (archivepath=>ospathname or archivepath=>stored_file)
      * @param int $contextid context ID
@@ -45,21 +44,23 @@ abstract class file_packer {
      * @param string $filepath file path
      * @param string $filename file name
      * @param int $userid user ID
-     * @return stored_file|bool false if error stored file instance if ok
+     * @param bool $ignoreinvalidfiles true means ignore missing or invalid files, false means abort on any error
+     * @return stored_file|bool false if error stored_file instance if ok
      */
-    public abstract function archive_to_storage($files, $contextid, $component, $filearea, $itemid, $filepath, $filename, $userid = NULL);
+    public abstract function archive_to_storage(array $files, $contextid, $component, $filearea, $itemid, $filepath, $filename, $userid = NULL, $ignoreinvalidfiles=true);
 
     /**
-     * Archive files and store the result in os file
+     * Archive files and store the result in os file.
      *
      * @param array $files array with zip paths as keys (archivepath=>ospathname or archivepath=>stored_file)
      * @param string $archivefile path to target zip file
-     * @return bool success
+     * @param bool $ignoreinvalidfiles true means ignore missing or invalid files, false means abort on any error
+     * @return bool true if file created, false if not
      */
-    public abstract function archive_to_pathname($files, $archivefile);
+    public abstract function archive_to_pathname(array $files, $archivefile, $ignoreinvalidfiles=true);
 
     /**
-     * Extract file to given file path (real OS filesystem), existing files are overwrited
+     * Extract file to given file path (real OS filesystem), existing files are overwritten.
      *
      * @param stored_file|string $archivefile full pathname of zip file or stored_file instance
      * @param string $pathname target directory
@@ -69,7 +70,7 @@ abstract class file_packer {
     public abstract function extract_to_pathname($archivefile, $pathname, array $onlyfiles = NULL);
 
     /**
-     * Extract file to given file path (real OS filesystem), existing files are overwrited
+     * Extract file to given file path (real OS filesystem), existing files are overwritten.
      *
      * @param string|stored_file $archivefile full pathname of zip file or stored_file instance
      * @param int $contextid context ID
@@ -83,7 +84,7 @@ abstract class file_packer {
     public abstract function extract_to_storage($archivefile, $contextid, $component, $filearea, $itemid, $pathbase, $userid = NULL);
 
     /**
-     * Returns array of info about all files in archive
+     * Returns array of info about all files in archive.
      *
      * @param string|file_archive $archivefile
      * @return array of file infos