public function addDir($path, $excludes)
 {
     if (basename($path) == '.' || basename($path) == '..') {
         return;
     }
     $this->addEmptyDir($path, str_replace(ABSPATH, '', $path));
     if (file_exists(rtrim($path, '/') . '/.htaccess')) {
         $this->addFile(rtrim($path, '/') . '/.htaccess', rtrim(str_replace(ABSPATH, '', $path), '/') . '/mainwp-htaccess');
     }
     $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD);
     if (class_exists('ExampleSortedIterator')) {
         $iterator = new ExampleSortedIterator($iterator);
     }
     /** @var $path DirectoryIterator */
     foreach ($iterator as $path) {
         $name = $path->__toString();
         if (basename($name) == '.' || basename($name) == '..') {
             continue;
         }
         if (!MainWPHelper::inExcludes($excludes, str_replace(ABSPATH, '', $name))) {
             if ($path->isDir()) {
                 $this->addEmptyDir($name, str_replace(ABSPATH, '', $name));
             } else {
                 $this->addFile($name, str_replace(ABSPATH, '', $name));
             }
         }
         $name = null;
         unset($name);
     }
     $iterator = null;
     unset($iterator);
 }
 /**
  * Recursive add directory for default PHP zip library
  */
 public function zipAddDir($path, $excludes)
 {
     $this->zip->addEmptyDir(str_replace(ABSPATH, '', $path));
     if (file_exists(rtrim($path, '/') . '/.htaccess')) {
         $this->addFileToZip(rtrim($path, '/') . '/.htaccess', rtrim(str_replace(ABSPATH, '', $path), '/') . '/mainwp-htaccess');
     }
     $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
     foreach ($iterator as $path) {
         $name = $path->__toString();
         if (basename($name) == '.' || basename($name) == '..') {
             continue;
         }
         if (!MainWPHelper::inExcludes($excludes, str_replace(ABSPATH, '', $name))) {
             if ($path->isDir()) {
                 $this->zipAddDir($name, $excludes);
             } else {
                 $this->addFileToZip($name, str_replace(ABSPATH, '', $name));
             }
         }
         $name = null;
         unset($name);
     }
     $iterator = null;
     unset($iterator);
     //        $nodes = glob(rtrim($path, '/') . '/*');
     //        if (empty($nodes)) return true;
     //
     //        foreach ($nodes as $node)
     //        {
     //            if (!MainWPHelper::inExcludes($excludes, str_replace(ABSPATH, '', $node)))
     //            {
     //                if (is_dir($node))
     //                {
     //                    $this->zipAddDir($node, $excludes);
     //                }
     //                else if (is_file($node))
     //                {
     //                    $this->addFileToZip($node, str_replace(ABSPATH, '', $node));
     //                }
     //            }
     //        }
 }