Exemplo n.º 1
0
 static function AddNewFiles($sync_data, $progress_bar = null, $max_batch_size = 0)
 {
     self::PrintDebugTrace();
     $keys = array_keys($sync_data->new_files);
     $upload_dir = self::cleanPath(WPFB_Core::UploadDir());
     $upload_dir_len = strlen($upload_dir);
     $batch_size = 0;
     $start_time = $cur_time = time();
     foreach ($keys as $i) {
         $fn = $sync_data->new_files[$i];
         $rel_path = substr($fn, $upload_dir_len);
         unset($sync_data->new_files[$i]);
         if (empty($fn)) {
             continue;
         }
         // skip files that where already added, for some reason
         if (is_null($ex_file = WPFB_Item::GetByPath($rel_path))) {
             self::PrintDebugTrace("add_existing_file:{$fn}");
             $res = WPFB_Admin::AddExistingFile($fn, empty($sync_data->thumbnails[$fn]) ? null : $sync_data->thumbnails[$fn]);
             self::PrintDebugTrace("added_existing_file");
             if (empty($res['error'])) {
                 $sync_data->log['added'][] = empty($res['file']) ? substr($fn, $upload_dir_len) : $res['file'];
                 $sync_data->known_filenames[] = $rel_path;
                 if (!empty($res['file']) && $res['file']->GetThumbPath()) {
                     $sync_data->known_filenames[] = substr(self::cleanPath($res['file']->GetThumbPath()), $upload_dir_len);
                 }
             } else {
                 $sync_data->log['error'][] = $res['error'] . " (file {$fn})";
             }
         } else {
             //$res = array('file' => $ex_file);
             $sync_data->log['added'][] = $ex_file;
             $sync_data->known_filenames[] = $rel_path;
         }
         $sync_data->num_files_processed++;
         if (!empty($progress_bar)) {
             $progress_bar->step();
         }
         if (!empty($res['file'])) {
             $batch_size += $res['file']->file_size;
             if ($max_batch_size > 0 && $batch_size > $max_batch_size) {
                 return false;
             }
         }
     }
     if (!empty($progress_bar)) {
         $progress_bar->complete();
     }
     return true;
 }