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

Back to archive index

Tadashi Okoshi slash****@users*****
2005年 6月 20日 (月) 14:06:14 JST


Index: affelio/lib/Affelio.pm
diff -u affelio/lib/Affelio.pm:1.3 affelio/lib/Affelio.pm:1.4
--- affelio/lib/Affelio.pm:1.3	Fri Jun 17 19:01:05 2005
+++ affelio/lib/Affelio.pm	Mon Jun 20 14:06:13 2005
@@ -6,7 +6,7 @@
 #    http://affelio.jp/ (Japan)
 #    http://affelio.jp/ (USA and other area)
 #
-# $Id: Affelio.pm,v 1.3 2005/06/17 10:01:05 slash5234 Exp $
+# $Id: Affelio.pm,v 1.4 2005/06/20 05:06:13 slash5234 Exp $
 
 package Affelio;
 {
@@ -197,6 +197,42 @@
     }
 
     ######################################################################
+    #openAppDB
+    ######################################################################
+    sub openAppDB{
+	my $self = shift;
+	my $app_install_name = shift;
+
+	#Load username and password
+	my $DBConfig = Config::Tiny->new();
+	$DBConfig = Config::Tiny->read("$self->{site__user_dir}/db.cfg");
+	my $rootproperty = $DBConfig->{_}->{rootproperty};
+	my $db_type = $DBConfig->{appdb}->{type};
+	my $db_dbname   = $DBConfig->{appdb}->{dbname};
+	my $db_username = $DBConfig->{appdb}->{username};
+	my $db_password = $DBConfig->{appdb}->{password};
+	my $db_hostname = $DBConfig->{appdb}->{hostname};
+	my $db_port = $DBConfig->{appdb}->{port};
+
+	my $ret="";
+
+	###MySQL
+	if($db_type eq "mysql"){
+	    my $dsn = "DBI:mysql:$db_dbname:$db_hostname:$db_port";
+	    $ret = DBI->connect($dsn, $db_username, $db_password) or die "Cannot connect to AppDB: " . $DBI::errstr;
+	}
+	###SQLite
+	if($db_type eq "sqlite"){
+	    $ret = DBI->connect("dbi:SQLite:dbname=$self->{site__user_dir}/appdata/$app_install_name/DB.sqlite", "", "") or die "Cannot connect to AppDB: " . $DBI::errstr;
+	}
+
+	$ret->{RaiseError} = 1;
+
+	return($ret);
+    }
+
+
+    ######################################################################
     #load_Locale
     ######################################################################
     sub load_Locale{
@@ -502,13 +538,14 @@
 
 	    #Is this application  permmited to be printed at the tab??
 	    $self->{am}->prepare_app_perm_table($this_app{'install_name'});
+
 	    my $perm_to_tab=0;
 	    $perm_to_tab
 		= $self->{am}->get_summed_app_perm($visitor_afid,
 						   $visitor_type,
 						   $this_app{'install_name'},
 						   "DF_visibility");
-	    
+
 	    if($perm_to_tab ==1 ){
 		if($this_app{'install_name'} eq $self->{caller}){
 		    $selected = "true";
Index: affelio/lib/AffelioApp.pm
diff -u affelio/lib/AffelioApp.pm:1.1.1.1 affelio/lib/AffelioApp.pm:1.2
--- affelio/lib/AffelioApp.pm:1.1.1.1	Tue Jun 14 12:53:29 2005
+++ affelio/lib/AffelioApp.pm	Mon Jun 20 14:06:13 2005
@@ -6,7 +6,7 @@
 #    http://affelio.jp/ (Japan)
 #    http://affelio.jp/ (USA and other area)
 #
-# $Id: AffelioApp.pm,v 1.1.1.1 2005/06/14 03:53:29 slash5234 Exp $
+# $Id: AffelioApp.pm,v 1.2 2005/06/20 05:06:13 slash5234 Exp $
 
 package AffelioApp;
 {
@@ -30,30 +30,70 @@
 
 	debug_print("AffelioApp::new: start.");
 
+	############################
 	#app__fs_root, cfg_path
+	############################
 	my $app__fs_root = $param{ConfigDir};
 	my $cfg_path = "$app__fs_root/AFAppConfig.cgi";
 	debug_print("AffelioApp::new: ConfigDir=$app__fs_root");
 
+	############################
 	#CGI
+	############################
 	my $cgi = $param{cgi};
 
+	############################
 	#Install name
+	############################
 	my $install_name = $app__fs_root;
 	$install_name =~ s|/(.*)/||g;
 	debug_print("AffelioApp::new: install_name=$install_name");
 
+	############################
 	#Load Affelio
+	############################
 	my $af = new Affelio(ConfigDir => "$app__fs_root/../../",
 			     Caller    => $install_name);
 
+	############################
 	#app__web_root
+	############################
 	my $app__web_root = "$af->{site__web_root}/apps/$install_name";
 	debug_print("AffelioApp::new: web_root=$app__web_root");
 	debug_print("AffelioApp::new: fs_root =$app__fs_root");
 
-	####################
+	############################
+	#create userdata directory as needed
+	############################
+	if(-e "$af->{site__user_dir}/appdata/$install_name"){
+	}else{
+	    if (-d "$af->{site__user_dir}/appdata/"){
+		if (-w "$af->{site__user_dir}/appdata/"){
+		    my $ret =
+			mkdir("$af->{site__user_dir}/appdata/$install_name", 0777);
+		    if(!$ret){
+			error("Cannot make userdata/appdata/$install_name!");
+		    }
+		}else{
+		    error("Cannot make userdata/appdata/ is NOT writable!");
+		}
+	    }else{
+		my $ret =
+		    mkdir("$af->{site__user_dir}/appdata/", 0777);
+		if(!$ret){
+		    error("Cannot make userdata/appdata/!");
+		}
+		$ret =
+		    mkdir("$af->{site__user_dir}/appdata/$install_name", 0777);
+		if(!$ret){
+		    error("Cannot make userdata/appdata/$install_name!");
+		}
+	    }
+	}
+
+	############################
 	#Cookie check!
+	############################
 	my $sid = $cgi->cookie("affelio-$af->{user__nickname}");
 	my $session = new CGI::Session(undef, 
 				       $sid, 
@@ -69,13 +109,14 @@
 	if($visitor_type eq ""){
 	    $visitor_type="pb";
 	}
-
 	debug_print("AffelioApp::new: visitor_type=      $visitor_type");
 	debug_print("AffelioApp::new: visitor_nickname=  $visitor_nickname");
 	debug_print("AffelioApp::new: visitor_afid=      $visitor_afid");
 
 	my $install_title = $af->{am}->{apps}->{$install_name}->{install_title};
 
+	my $dbh = $af->openAppDB($install_name);
+
 	#bless
 	my $self = {cfg_path => $cfg_path,
 		    app__fs_root => $app__fs_root, 
@@ -87,7 +128,9 @@
 		    session => $session,
 		    visitor_type => $visitor_type,
 		    visitor_nickname => $visitor_nickname,
-		    visitor_afid => $visitor_afid
+		    visitor_afid => $visitor_afid,
+		    userdata_dir => "$af->{site__user_dir}/appdata/$install_name/",
+		    userdata_dbh => $dbh
 		    };
 	bless $self, $class;
 
@@ -96,6 +139,23 @@
     }
 
     ######################################################################
+    #get_userdata_dir
+    ######################################################################
+    sub get_userdata_dir{
+	my $self = shift;
+	return($self->{userdata_dir});
+    }
+
+    ######################################################################
+    #get_userdata_dbh
+    ######################################################################
+    sub get_userdata_dbh{
+	my $self = shift;
+	return($self->{userdata_dbh});
+    }
+
+
+    ######################################################################
     #check_access
     ######################################################################
     sub check_access{


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