[Affelio-cvs 1075] CVS update: affelio/lib

Back to archive index

Tadashi Okoshi slash****@users*****
2006年 2月 23日 (木) 21:41:37 JST


Index: affelio/lib/Affelio.pm
diff -u affelio/lib/Affelio.pm:1.38 affelio/lib/Affelio.pm:1.39
--- affelio/lib/Affelio.pm:1.38	Sun Jan 29 02:43:10 2006
+++ affelio/lib/Affelio.pm	Thu Feb 23 21:41:37 2006
@@ -14,15 +14,15 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# $Id: Affelio.pm,v 1.38 2006/01/28 17:43:10 slash5234 Exp $
+# $Id: Affelio.pm,v 1.39 2006/02/23 12:41:37 slash5234 Exp $
 
 package Affelio;
 {
     use strict;
     use lib("../extlib");
-    use lib("../../extlib");
     use DBI;
     use Error qw(:try);
+
     use lib("../lib");
     use Affelio::SNS::FriendManager;
     use Affelio::misc::Debug;
@@ -79,6 +79,8 @@
 	###################################
 	#Caller
 	###################################
+	#caller= ""            ... if AffelioCore called me.
+	#caller= "install_name"... if application "install_name" called me.
 	my $caller = "";
 	$caller = $param{Caller};
 	if($caller){
@@ -91,8 +93,6 @@
 	    $caller="";
 	}
 	debug_print("Affelio::new: caller= [$caller] ");
-	#caller= ""            ... if AffelioCore called me.
-	#caller= "install_name"... if application "install_name" called me.
 
 	###################################
 	#Managers
@@ -172,6 +172,8 @@
 	return $self;
     }
 
+
+
     ######################################################################
     #Destructor
     ######################################################################
@@ -202,8 +204,11 @@
 	my $self=shift;
 
 	if(! ($self->{db}) ){
+	    debug_print("Affelio::getDB: db is empty... let's open.");
 	    $self->openDB();
+	    debug_print("Affelio::getDB: db is empty... opened.");
 	}
+	debug_print("Affelio::getDB: db=[$self->{db}]");
 	return($self->{db});
     }
 
@@ -219,14 +224,24 @@
 	require Config::Tiny;
 	my $DBConfig = Config::Tiny->new();
 	$DBConfig = Config::Tiny->read("$self->{site__user_dir}/db.cfg");
-	my $rootproperty = $DBConfig->{_}->{rootproperty};
 	my $db_type = $DBConfig->{db}->{type};
+	$self->{site__db_type} = $db_type;
 	my $db_dbname   = $DBConfig->{db}->{dbname};
 	my $db_username = $DBConfig->{db}->{username};
 	my $db_password = $DBConfig->{db}->{password};
 	my $db_hostname = $DBConfig->{db}->{hostname};
 	my $db_port = $DBConfig->{db}->{port};
 
+	debug_print("Affelio::openDB: start.");
+	debug_print("Affelio::openDB: db_type = $db_type");
+	debug_print("Affelio::openDB: db_dbname = $db_dbname");
+	debug_print("Affelio::openDB: db_username = $db_username");
+	debug_print("Affelio::openDB: db_password = $db_password");
+	debug_print("Affelio::openDB: db_hostname = $db_hostname");
+	debug_print("Affelio::openDB: db_port = $db_port");
+
+	#################################################
+	#MySQL
 	if($db_type eq "mysql"){
 	    
 	    my $dsn = "DBI:mysql:$db_dbname:$db_hostname:$db_port";
@@ -237,9 +252,14 @@
 		throw Affelio::exception::DBException("MySQL open error");
 	    }
 
+	#################################################
+	#SQLite
 	}elsif ($db_type eq "sqlite"){
+	    my $dbfile = "$self->{site__user_dir}/DB.sqlite";
+	    $dbfile =~ s|//|/|g;
+
 	    eval{
-		$self->{db} = DBI->connect("dbi:SQLite:dbname=$self->{site__user_dir}/DB.sqlite", "", "") or die("Cannot connect to SQLite: " . $DBI::errstr);
+		$self->{db} = DBI->connect("dbi:SQLite:dbname=$dbfile", "", "") or die("Cannot connect to SQLite: " . $DBI::errstr);
 	    };
 	    if($@){
 		throw Affelio::exception::DBException("SQLite open error");
@@ -248,10 +268,11 @@
 	    throw Affelio::exception::SystemException("DB type not specified");
 	}
 
+	#################################################
+	#Error?
 	if(!defined($self->{db})){
 	    throw Affelio::exception::DBException("DB Handle not defined after open. very weird.");
 	}
-
 	eval{
 	    $self->{db}->{RaiseError} = 1;
 	};
@@ -259,6 +280,7 @@
 	    throw Affelio::exception::DBException("DB Error Setting");
 	}
 
+	debug_print("Affelio::openDB: end.");
     }
 
     ######################################################################
@@ -370,16 +392,25 @@
     #load_SessionManager
     ######################################################################
     sub load_SessionManager{
-	require Affelio::Managing::SessionManager;
+	my $self=shift;
 
-	my $self = shift;
-	try{
-	    $self->{sm} = new Affelio::Managing::SessionManager($self);
+	debug_print("Affelio::loadSM: start.");
+
+	if($self->{site__farm_mode} eq "AFE2"){
+	    debug_print("Affelio::loadSM: getting SM from AFE2...");
+
+	    $self->{sm} = $self->{farm_con}->getSM();
+	    if(!$self->{sm}){
+		throw Affelio::exception::SystemException("affelio.cfg: cannot obtain SessionManager from FarmConnector.");
+	    }
+
+	}else{
+	    debug_print("Affelio::loadSM: loading normal SM....");
+	    require Affelio::Managing::SessionManager;
+	    $self->{sm} = new Affelio::Managing::SessionManager;
+	    $self->{sm}->init($self);
 	}
-	catch Error with {
-	    my $ex = shift;
-	    throw Affelio::exception::SystemException("Cannot load session manager: $ex");
-	};
+	debug_print("Affelio::loadSM: end.");
     }
 
     ######################################################################
@@ -624,6 +655,7 @@
 
     }
 
+
     ######################################################################
     #get_farm_connecter{
     ######################################################################
@@ -669,71 +701,186 @@
 
     ######################################################################
     #read_site_config
-    #    read Affelio.cfg file
+    #    read Affelio.cfg / login.cfg file
     ######################################################################
     sub read_site_config{
 	my $self = shift;
 	debug_print("Affelio::read_site_config: start.");
 
 	my $wi = new Affelio::misc::WebInput();
-
 	require Config::Tiny;
 	my $Config = Config::Tiny->new();
 
+	#################################################################
+	#affelio.cfg
+	#################################################################
 	$Config = Config::Tiny->read($self->{cfg_path});
 	if($@ || !$Config){
 	    throw Affelio::exception::SystemException("affelio.cfg not found");
 	}
 
-	my $rootproperty = $Config->{_}->{rootproperty};
+	##############################################
+	#[site]
+	##############################################
+	#site_fs_root
 	$self->{site__fs_root} = $Config->{site_config}->{fs_root};
 	if($self->{site__fs_root} =~ /(.*)\/$/){
 	    $self->{site__fs_root} = $1;
 	}
+
+	#site_web_root
 	$self->{site__web_root} = $Config->{site_config}->{web_root};
 	if($self->{site__web_root} =~ /(.*)\/$/){
 	    $self->{site__web_root} = $1;
 	}
 
+	#locale
 	#Oh well, this config parameter has been "char_set" for a while..
 	#For now, locale = char_set 
 	$self->{site__locale} = $Config->{site_config}->{char_set};
 	if($self->{site__locale} eq ""){
 	    $self->{site__locale} = "ja";
 	}
-	debug_print("Affelio::read_site_config: site__locale =[$self->{site__locale}]");
 
+	#template
 	$self->{site__template} = $Config->{site_config}->{template};
 	if($self->{site__template} eq ""){
 	    $self->{site__template} = "default";
 	}
 
-	#$self->{cmd__nkf} = $Config->{command}->{nkf};
-	$self->{cmd__sendmail} = $Config->{command}->{sendmail};
-	
-	#Determine userdata/..../ directory
-	try{
+	#farm_mode
+	$self->{site__farm_mode} = $Config->{site_config}->{farm_mode};
+	debug_print("Affelio::read_site_config: farm_mode=[$self->{site__farm_mode}]");
+	$self->{farm__connecter_path} = 
+	    $Config->{affelio_farm}->{farm_connecter};
+
+	#Detect AFE (not 2)
+	if(($self->{site__farm_mode} eq "")
+	   && ($self->{farm__connecter_path} ne "")){
+	    $self->{site__farm_mode} = "AFE";
+	}
+
+	#platform
+	$self->{site__platform} = $Config->{site_config}->{platform};
+	debug_print("Affelio::read_site_config: platform=[$self->{site__platform}]");
+
+	##############################################
+	#AFE
+	##############################################
+	if($self->{site__farm_mode} eq "AFE2"){
+
+	    ####################
+	    #Load farm connecter
+	    ####################
+	    my $clsname = "";
+	    $clsname = $self->{farm__connecter_path};
+	    debug_print("Affelio::read_site_config: AFE_con=[$clsname]");
+
+	    eval "require $clsname; import $clsname;";
+	    if($@){	    throw Affelio::exception::SystemException("Could not load [$clsname]");	}
+	    debug_print("Affelio::read_site_config: AFE_con [$clsname] loaded.");
+	    $self->{farm_con} = eval "new $clsname;";
+	    $self->{farm_con}->init($self);
+
+	    ####################
+	    #farm__fs_data_root
+	    ####################
+	    $self->{farm__fs_data_root} = $self->{farm_con}->get_fsdataroot();
+	    if(!$self->{farm__fs_data_root}){
+		throw Affelio::exception::SystemException("affelio.cfg: cannot obtain fs_data_root from FarmConnector.");
+	    }
+
+	    ####################
+	    #farm__web_users_root
+	    ####################
+	    $self->{farm__web_users_root} = $self->{farm_con}->get_webusersroot();
+	    if(!$self->{farm__web_users_root}){
+		throw Affelio::exception::SystemException("affelio.cfg: cannot obtain web_users_root from FarmConnector.");
+	    }
+	    $self->{farm__web_users_root} =~ s/\/$//;
+
+	    ####################
+	    #farm__cur_user
+	    ####################
+	    $self->{farm__cur_user} = $ENV{'REDIRECT_AF_USERNAME'};
+	    if(!$self->{farm__cur_user}){
+		throw Affelio::exception::SystemException("AFE2/farm_cur_user not set.");
+	    }
+
+
+	}
+	#if(AFE2) 
+
+	##############################################
+	#site__user_afid
+	##############################################
+	if($self->{site__farm_mode} eq "AFE2"){
+	    $self->{site__user_afid} = 
+		$self->{farm__web_users_root} . "/"
+		. $self->{farm__cur_user};
+	}else{
+	    $self->{site__user_afid} = $self->{site__web_root};
+	}
+	debug_print("Affelio::read_site_config: site__user_afid = [$self->{site__user_afid}]");
+
+	##############################################
+	#Determine the user's userdata directory
+	##############################################
+	if($self->{site__farm_mode} eq "AFE2"){
 	    $self->{site__user_dir} = 
-		get_userdir("$self->{top_dir}/userdata");	    
-	}catch Error with{
-	    my $e = shift;
-	    throw ($e);
-	};
+		$self->{farm__fs_data_root} . "/users/"
+		. $self->{farm__cur_user} . "/userdata/";
+	}else{
+	    try{
+		$self->{site__user_dir} = 
+		    get_userdir("$self->{site__fs_root}/userdata");	    
+	    }catch Error with{
+		my $e = shift;
+		throw $e;
+	    };
+	}
+	debug_print("Affelio::read_site_config: site__user_dir = [$self->{site__user_dir}]");
 
-	#Load username and password
+	##############################################
+	#Determine templates_dyn dir
+	##############################################
+	if($self->{site__farm_mode} eq "AFE2"){
+	    $self->{site__tmpldyn_dir} = 
+		$self->{farm__fs_data_root} . "/users/"
+		. $self->{farm__cur_user} . "/templates_dyn/";
+	}else{
+	    $self->{site__tmpldyn_dir} =  "$self->{site__fs_root}/templates_dyn/";
+	}
+	debug_print("Affelio::read_site_config: site_tmpldyn_dir = [$self->{site__tmpldyn_dir}]");
+
+	##############################################
+	#[command]
+	##############################################
+	$self->{cmd__sendmail} = $Config->{command}->{sendmail};
+	
+	#################################################################
+	#login.cfg
+	#################################################################
+
+	##############################################
+	#Load user's login username / password
+	##############################################
 	my $Config2 = Config::Tiny->new();
 	$Config2 = Config::Tiny->read("$self->{site__user_dir}/login.cfg");
 	if($@ || !$Config2){
 	    throw Affelio::exception::SystemException("login.cfg not found");
 	}
-	my $rootproperty2 = $Config2->{_}->{rootproperty};
+
 	$self->{site__username} = $wi->PTN_nickname($Config2->{auth}->{username});
 	$self->{site__password} = $Config2->{auth}->{password};
+
+	#Table name prefix
+	if($self->{site__farm_mode} eq "AFE2"){
+	    $self->{site__dbtbl_prefix} = "AF" . $self->{site__username};
+	}else{
+	    $self->{site__dbtbl_prefix} = "AF" . "user";
+	}
 	
-	#Determine session/..../ directory
-	$self->{site__session_dir} = $wi->PTN_dirname("$self->{top_dir}/session");
-	debug_print("Affelio::read_site_config: session_dir = [$self->{site__session_dir}]");
-	debug_print("Affelio::read_site_config: end.");
     }
 
     ######################################################################
@@ -842,8 +989,8 @@
 	    $owner_mode_url
 		= $self->getAM->{apps}->{$self->{caller}}->{owner_index};
 	}else{
-	    $guest_mode_url= $self->{site__web_root} . "/index.cgi?mode=index";
-	    $owner_mode_url= $self->{site__web_root} . "/admin.cgi";
+	    $guest_mode_url= $self->{site__user_afid} . "/index.cgi?mode=index";
+	    $owner_mode_url= $self->{site__user_afid} . "/admin.cgi";
 	}
 
 	if($owner_mode_selected){
@@ -895,20 +1042,20 @@
 	if($self->{guest_owner_switch} eq "owner"){
 	    ####Owner
 	    if($selected eq "true" ){
-		$dest_url = $self->{site__web_root} . "/index.cgi?mode=index";
+		$dest_url = $self->{site__user_afid} . "/index.cgi?mode=index";
 	    }else{
 		if($visitor_type eq "self"){
-		    $dest_url = $self->{site__web_root} . "/admin.cgi";
+		    $dest_url = $self->{site__user_afid} . "/admin.cgi";
 		}
 	    }
 	}else{
 	    ####Guest
 	    if($selected eq "true" ){
 		if($visitor_type eq "self"){
-		    $dest_url = $self->{site__web_root} . "/admin.cgi";
+		    $dest_url = $self->{site__user_afid} . "/admin.cgi";
 		}
 	    }else{
-		$dest_url = $self->{site__web_root} . "/index.cgi?mode=index";
+		$dest_url = $self->{site__user_afid} . "/index.cgi?mode=index";
 	    }
 	}
 
@@ -944,7 +1091,7 @@
 		    $selected = "";
 		}
 
-		my $dest_url = "$self->{site__web_root}/apps/$this_app{'install_name'}/";
+		my $dest_url = "$self->{site__user_afid}/apps/$this_app{'install_name'}/";
 		if($self->{guest_owner_switch} eq "owner"){
 		    #Owner
 		    if($selected eq "true"){
@@ -967,8 +1114,8 @@
 		     {'selected' => $selected,
 		      'name' => $this_app{'install_title'},
 		      'url' => $dest_url,
-		      'image_normal' => "$self->{site__web_root}/apps/$this_app{'install_name'}/icons/normal.jpg",
-		      'image_over' => "$self->{site__web_root}/apps/$this_app{'install_name'}/icons/over.jpg"
+		      'image_normal' => "$self->{site__user_afid}/apps/$this_app{'install_name'}/icons/normal.jpg",
+		      'image_over' => "$self->{site__user_afid}/apps/$this_app{'install_name'}/icons/over.jpg"
 		      }
 		     );
 	    }
@@ -1001,16 +1148,16 @@
 	    
 	    my $sbst = $af->{lh}->maketext($text_value, $param_value);
 	    
-	    debug_print("Affelio::translate tag_body = [$tag_body]\n");
-	    debug_print("Affelio::translate \t text=[$text_value]\n");
-	    debug_print("Affelio::translate \t param=[$param_value]\n");
-	    debug_print("Affelio::translate \t sbst=[$sbst]\n");
+#	    debug_print("Affelio::translate tag_body = [$tag_body]\n");
+#	    debug_print("Affelio::translate \t text=[$text_value]\n");
+#	    debug_print("Affelio::translate \t param=[$param_value]\n");
+#	    debug_print("Affelio::translate \t sbst=[$sbst]\n");
 	    
 	    $mesg =~ s/\Q<AF_M $tag_body>\E/$sbst/g;
-	    debug_print("Affelio::loop end.");
+#	    debug_print("Affelio::loop end.");
 	}
 
-	debug_print("Affelio::translate end.");
+#	debug_print("Affelio::translate end.");
 	return($mesg);
     }
     
Index: affelio/lib/AffelioApp.pm
diff -u affelio/lib/AffelioApp.pm:1.18 affelio/lib/AffelioApp.pm:1.19
--- affelio/lib/AffelioApp.pm:1.18	Mon Dec 19 16:10:19 2005
+++ affelio/lib/AffelioApp.pm	Thu Feb 23 21:41:37 2006
@@ -14,7 +14,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# $Id: AffelioApp.pm,v 1.18 2005/12/19 07:10:19 slash5234 Exp $
+# $Id: AffelioApp.pm,v 1.19 2006/02/23 12:41:37 slash5234 Exp $
 
 package AffelioApp;
 {
@@ -43,17 +43,27 @@
 	my $app__fs_root = $param{ConfigDir};
 	my $cfg_path = "$app__fs_root/AF_app.cfg";
 
-	my $install_name = $app__fs_root;
-	$install_name =~ s|/(.*)/||g;
+	my $install_name;
 
+	if($ENV{REDIRECT_URL}){
+	    #AFE2
+	    $install_name = $ENV{REDIRECT_URL};
+	    $install_name =~ s|/([a-zA-Z0-9\-\_\.]+)$||g;
+	    $install_name =~ /\/([a-zA-Z0-9\-\_\.]+)$/;
+	    $install_name = $1;
+	}else{
+	    $install_name = $app__fs_root;
+	    $install_name =~ s|/(.*)/||g;
+	}
 	my $af = new Affelio(ConfigDir => "$app__fs_root/../../config/",
 			     Caller    => $install_name);
 
-	my $app__web_root = "$af->{site__web_root}/apps/$install_name";
+	my $app__web_root = "$af->{site__user_afid}/apps/$install_name";
 
 	debug_print("AffelioApp::new: ConfigDir =$app__fs_root");
 	debug_print("AffelioApp::new: cfg_path  =$cfg_path");
 	debug_print("AffelioApp::new: install_name=$install_name");
+#	debug_print("AffelioApp::new: user_afid=$app__user_afid");
 	debug_print("AffelioApp::new: web_root=$app__web_root");
 	debug_print("AffelioApp::new: fs_root =$app__fs_root");
 
@@ -251,7 +261,7 @@
 	my $info_name = shift;
 
 	if($info_name eq "web_root"){
-	    return($self->{af}->{site__web_root});
+	    return($self->{af}->{site__user_afid});
 	}
 	if($info_name eq "locale"){
 	    return($self->{af}->{site__locale});
@@ -270,7 +280,7 @@
 	if($info_name eq "nickname"){
 	    return($self->{af}->{user__nickname});
 	}elsif($info_name eq "afid"){
-	    return($self->{af}->{site__web_root});
+	    return($self->{af}->{site__user_afid});
 	}
 	return;
     }
@@ -280,18 +290,27 @@
     ######################################################################
     sub get_HTML_header{
 	my $self = shift;
-	my $app__page_title = shift;
+
+	my $app__page_title = "";
+	
+	my $argc = @_;
+	if($argc == 1){
+	    $app__page_title = shift;
+	}else{
+
+	}
+
 
 	my $af = $self->{af};
 
 	#Set template file name
-	my $TMPL_FILE = "$af->{site__fs_root}/templates_dyn/Header.tmpl";
+	my $TMPL_FILE = "$af->{site__tmpldyn_dir}/Header.tmpl";
 	#Set data for template
 	my %output_data = ();
 	$output_data{'app__css_path'} = $self->{app__web_root};
 	$output_data{'app__page_title'} = $app__page_title;
 	$output_data{"site__skin_dir"} = $af->{site__web_root} . "/skins/" . $af->{userpref__skin};
-	$output_data{'site__web_root'} = $af->{site__web_root};
+	$output_data{'site__web_root'} = $af->{site__user_afid};
 	$output_data{'site__locale'} = $af->{site__locale};
 
 	$af->get_module_list(\%output_data, $self->{visitor_afid},$self->{visitor_type});
@@ -321,7 +340,7 @@
 	my $af = $self->{af};
 
 	#Set template file name
-	my $TMPL_FILE = "$af->{site__fs_root}/templates_dyn/Footer.tmpl";
+	my $TMPL_FILE = "$af->{site__tmpldyn_dir}/Footer.tmpl";
 	my $tmpl = new HTML::Template(filename => $TMPL_FILE);
 
 	my $final_out = "</div><!--afPubMain-->"
@@ -353,7 +372,7 @@
 
 	my $ret="";
 	if(($name eq "access_control") && ($self->{visitor_type} eq "self")){
-	    $ret = $af->{site__web_root} . "/admin.cgi?mode=access_control_apps&mode2=show_app&app_name=" . $self->{install_name};
+	    $ret = $af->{site__user_afid} . "/admin.cgi?mode=access_control_apps&mode2=show_app&app_name=" . $self->{install_name};
 	}
 
 	return($ret);


Affelio-cvs メーリングリストの案内
Back to archive index