#!/usr/bin/perl -Tw -I. -I/usr/local/positive/Perl # # This software is copyright (c) 2001-2002 Positive Networks, Inc. All rights reserved. # # This software is the proprietary and confidential property of Positive Networks, Inc. # Possession, transmission, publication, or use of this software is prohibited except by prior written consent. # use strict; use Pos::Webtop::Web::ContentModule::FileShares; use Pos::Webtop::Web::ContentModule::Intranet; use Pos::Webtop::Web::ContentModule::UserPrefs; use Pos::Webtop::Web::ContentModule::RemoteDesktop; use Pos::Webtop::Web::ContentModule::Mail; use Pos::Webtop::Web::ContentModule::Applications; package Pos::Webtop::Web::ContentModuleFactory; sub createModuleFromClass { my ($class,$tb) = @{{@_}}{qw/class toolBox/}; my %contentModules = (); my $db = $tb->getWebtopDbReader(); my @cmi = $db->query( sql=> " select module_id, perl_class_name, module_name from w_content_modules order by upper(module_name) "); foreach (@cmi) { my ($id,$class,$name) = @{ $_ }; $contentModules{$class} = { id=> $id, name=> $name }; } if ( not defined $class ) { warn "Pos::Webtop::Web::ContentModuleFactory::createModuleFromClass(): class is undef\n"; } if ( not exists $contentModules{$class} ) { warn "Pos::Webtop::Web::ContentModuleFactory::createModuleFromClass(): class not found in cache\n"; return undef; } my $pt = $contentModules{$class}->{'name'}; my $cm = undef; eval '$cm = Pos::Webtop::Web::ContentModule::' . $class . '->new( toolBox=> $tb, previewTitle=> $pt );'; if ( not defined $cm ) { warn "Pos::Webtop::Web::ContentModuleFactory::createModuleFromClass(): FAILED:\n" . $@ . "\n"; } return $cm; } 1;