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{