moved metadata system into asset superclass, and added a fileImport script
This commit is contained in:
parent
1914386984
commit
2110af418a
16 changed files with 623 additions and 1056 deletions
222
sbin/fileImport.pl
Normal file
222
sbin/fileImport.pl
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2004 Plain Black Corporation.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
our ($webguiRoot, @nailable);
|
||||
|
||||
BEGIN {
|
||||
$webguiRoot = "..";
|
||||
@nailable = qw(jpg jpeg png gif);
|
||||
unshift (@INC, $webguiRoot."/lib");
|
||||
}
|
||||
|
||||
|
||||
$| = 1;
|
||||
|
||||
use File::Path;
|
||||
use File::stat;
|
||||
use FileHandle;
|
||||
use Getopt::Long;
|
||||
use POSIX;
|
||||
use strict;
|
||||
use WebGUI::Asset::File;
|
||||
use WebGUI::Asset::File::Image;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::Storage;
|
||||
use WebGUI::Utility;
|
||||
|
||||
|
||||
|
||||
my $configFile;
|
||||
my $owner = 3;
|
||||
my $groupToView = 7;
|
||||
my $groupToEdit = 4;
|
||||
my $help;
|
||||
my $pathToFiles;
|
||||
my $override;
|
||||
my $quiet;
|
||||
my $webUser = 'apache';
|
||||
my $assetId;
|
||||
|
||||
GetOptions(
|
||||
'configFile=s'=>\$configFile,
|
||||
'owner=s'=>\$owner,
|
||||
'groupToView=s'=>\$groupToView,
|
||||
'groupToEdit=s'=>\$groupToEdit,
|
||||
'help'=>\$help,
|
||||
'override'=>$override,
|
||||
'pathToFiles=s'=>\$pathToFiles,
|
||||
'quiet'=>\$quiet,
|
||||
'webUser=s'=>\$webUser,
|
||||
'parentAssetId=s'=>\$parrentAssetId
|
||||
);
|
||||
|
||||
|
||||
if ($help || $configFile eq "" || $pathToFiles eq "" || $parentAssetId eq ""){
|
||||
print <<STOP;
|
||||
|
||||
|
||||
Usage: perl $0 --pathToFiles=<pathToImportFiles> --configfile=<webguiConfig> --parentAssetId=<assetId>
|
||||
|
||||
--configFile WebGUI config file.
|
||||
|
||||
--pathToFiles Folder containing files to import.
|
||||
|
||||
--parentAssetId The asset ID of the asset you wish
|
||||
to attach these files to.
|
||||
|
||||
|
||||
Options:
|
||||
|
||||
--groupToEdit The group ID of the group that should
|
||||
have the privileges to edit these
|
||||
files. Defaults to '4' (Content Managers).
|
||||
|
||||
--groupToView The group ID of the group that should
|
||||
have the privileges to view these
|
||||
files. Defaults to '7' (Everybody).
|
||||
|
||||
--help Display this help message and exit.
|
||||
|
||||
--owner The user ID of the user that should
|
||||
have the privileges to modify these
|
||||
files. Defaults to '3' (Admin).
|
||||
|
||||
--override This utility is designed to be run as
|
||||
a privileged user on Linux style systems.
|
||||
If you wish to run this utility without
|
||||
being the super user, then use this flag,
|
||||
but note that it may not work as
|
||||
intended.
|
||||
|
||||
--quiet Disable output unless there's an error.
|
||||
|
||||
--webUser The user that your web server runs as.
|
||||
Defaults to 'apache'.
|
||||
|
||||
STOP
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if (!($^O =~ /^Win/i) && $> != 0 && !$override) {
|
||||
print "You must be the super user to use this utility.\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
print "Starting..." unless ($quiet);
|
||||
WebGUI::Session::open($webguiRoot,$configFile);
|
||||
WebGUI::Session::refreshUserInfo(3);
|
||||
print "OK\n" unless ($quiet);
|
||||
|
||||
addFiles(buildFileList($pathToFiles));
|
||||
setPrivileges();
|
||||
|
||||
print "Cleaning up..." unless ($quiet);
|
||||
WebGUI::Session::end($session{var}{sessionId});
|
||||
WebGUI::Session::close();
|
||||
print "OK\n" unless ($quiet);
|
||||
|
||||
#-----------------------------------------
|
||||
# addFiles(dbHandler, filelistHashRef, webguiSettingsHashRef, pathToCopyFrom)
|
||||
#-----------------------------------------
|
||||
sub addFiles {
|
||||
my $filelist = shift;
|
||||
print "Adding files...\n" unless ($quiet);
|
||||
my $parent = WebGUI::Asset::File->newByDynamicClass($parentAssetId);
|
||||
if (defined $parent) {
|
||||
foreach my $file (@{$filelist}) {
|
||||
print "\tAdding ".$file->{filename}." to the database.\n" unless ($quiet);
|
||||
my $class = 'WebGUI::Asset::File';
|
||||
$class = 'WebGUI::Asset::File::Image' if (isIn($file->{ext},@nailable));
|
||||
my $url = $parent->getUrl.'/'.$file->{filename};
|
||||
my $storage = WebGUI::Storage->create;
|
||||
my $filename = $storage->addFileFromFilesystem($pathToFiles.$session{os}{slash}.$file->{filename});
|
||||
my $newAsset = $parent->addChild({
|
||||
className=>$class,
|
||||
title=>$filename,
|
||||
menuTitle=>$filename,
|
||||
filename=>$filename,
|
||||
storageId=>$storage->getId,
|
||||
url=>$url,
|
||||
groupIdView=>$groupToView,
|
||||
groupIdEdit=>$groupToEdit,
|
||||
ownerUserId=>$owner
|
||||
});
|
||||
$newAsset->generateThumbnail if ($class eq 'WebGUI::Asset::File::Image');
|
||||
$newAsset->setSize($storage->getFileSize($filename));
|
||||
}
|
||||
} else {
|
||||
print "Warning: Parent asset '".$parentAssetId."' does not exist. Cannot import files.\n";
|
||||
}
|
||||
print "Finished adding.\n" unless ($quiet);
|
||||
}
|
||||
|
||||
#-----------------------------------------
|
||||
# setPrivileges()
|
||||
#-----------------------------------------
|
||||
sub setPrivileges {
|
||||
print "Setting filesystem privileges.\n" unless ($quiet);
|
||||
if ($session{os}{type} = "Linuxish") {
|
||||
unless (system("chown -R ".$webUser." ".$session{config}{uploadsPath})) {
|
||||
print "Privileges set.\n" unless ($quiet);
|
||||
} else {
|
||||
print "Could not set privileges.\n";
|
||||
}
|
||||
} else {
|
||||
print "Cannot set privileges on this platform.\n" unless ($quiet)
|
||||
}
|
||||
}
|
||||
|
||||
#-----------------------------------------
|
||||
# buildFileList(pathToImportFiles)
|
||||
#-----------------------------------------
|
||||
sub buildFileList {
|
||||
print "Building file list.\n" unless ($quiet);
|
||||
my (@filelist, @files, $file, $filename, $ext);
|
||||
if (opendir(FILES,$_[0])) {
|
||||
@files = readdir(FILES);
|
||||
foreach $file (@files) {
|
||||
unless ($file eq "." || $file eq "..") {
|
||||
$file =~ /(.*?)\.(.*?)$/;
|
||||
$filename = $1;
|
||||
$ext = $2;
|
||||
push(@filelist,{ext=>$ext, filename=>$file});
|
||||
$filelist{$filename}{$ext} = $file;
|
||||
print "Found file $file.\n" unless ($quiet);
|
||||
}
|
||||
}
|
||||
closedir(FILES);
|
||||
print "File list complete.\n" unless ($quiet);
|
||||
return \@filelist;
|
||||
} else {
|
||||
print "Error: Could not open folder.\n";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-----------------------------------------
|
||||
# getType(filename)
|
||||
#-----------------------------------------
|
||||
sub getType {
|
||||
my ($extension);
|
||||
$extension = $_[0];
|
||||
$extension =~ s/.*\.(.*?)$/$1/;
|
||||
return $extension;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue