option('file')) { $po = Photo::notRemove()->notDuplicate()->where('filename',Photo::path($this->option('file'))); } elseif ($this->option('id')) { $po = Photo::notRemove()->notDuplicate()->where('id',$this->option('id')); } else { $po = Photo::notRemove()->notDuplicate(); } if (! $po) exit; // Show a progress bar $bar = $this->output->createProgressBar($po->count()); $bar->setFormat("%current%/%max% [%bar%] %percent:3s%% (%memory%) (%remaining%) "); $bar->setRedrawFrequency(100); $po->chunk(1,function($photo) use ($bar) { while ($po = $photo->shift()) { if (($x = $po->moveable()) === TRUE) { Log::info(sprintf('%s: Moving (%s)[%s]',__METHOD__,$po->id,$po->filename)); if ($this->makeParentDir(dirname($po->file_path(FALSE,TRUE))) AND rename($po->file_path(),$po->file_path(FALSE,TRUE))) { // Convert the path to a relative one. $po->filename = $po->file_path(TRUE,TRUE); // @todo If the DB update failed, move it back. if (! $po->save()) # AND ! rename($path,$po->file_path())) { $this->error(sprintf('Save after rename failed for (%s)',$po->id)); continue; } } else { $this->error(sprintf('Rename failed for (%s)',$po->id)); continue; } chmod($po->file_path(),0444); } else { if ($x > 0) $this->warn(sprintf('Unable to move (%s) [%s] to [%s], moveable returned (%s)',$po->id,$po->file_path(),$po->file_path(FALSE,TRUE),$x)); } } $bar->advance(); }); } }