# patched codeigniter's oci8 driver to cater for codepot's usecasees.
# renamed user to user_account # changed some files to support oracle
This commit is contained in:
		| @ -14,6 +14,7 @@ UPGRADING FROM 0.2.0 | ||||
|  | ||||
|   mysql> ALTER TABLE user_settings CHANGE code_hide_details code_hide_metadata CHAR(1) NOT NULL; | ||||
|   mysql> ALTER TABLE site ADD COLUMN(summary VARCHAR(255) NOT NULL); | ||||
|   mysql> RENAME TABLE user TO user_account; | ||||
|  | ||||
| INSTALLATION ON CENTOS | ||||
|  | ||||
|  | ||||
| @ -11,7 +11,34 @@ default_site_name = "@PACKAGE@" | ||||
| ;------------------------------------------------------------------------------ | ||||
| ; database settings | ||||
| ; | ||||
| ; database_driver: mysql for MySQL, postgre for PostgreSQL | ||||
| ; database_driver: mysql, mysqli, postgre, oci8 | ||||
| ; | ||||
| ; == MySQL == | ||||
| ; database_hostname = "localhost" | ||||
| ; database_port = "" | ||||
| ; database_username = "codepot" | ||||
| ; database_password = "codepot" | ||||
| ; database_name = "codepot" | ||||
| ; database_driver = "mysql" | ||||
| ; database_prefix = "" | ||||
| ; | ||||
| ; == PostgresSQL == | ||||
| ; database_hostname = "" | ||||
| ; database_port = "" | ||||
| ; database_username = "codepot" | ||||
| ; database_password = "codepot" | ||||
| ; database_name = "codepot" | ||||
| ; database_driver = "postgre" | ||||
| ; database_prefix = "" | ||||
| ; | ||||
| ; == Oracle | ||||
| ; database_hostname = "(DESCRIPTION=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(HOST=192.168.1.126)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))" | ||||
| ; database_port = "" | ||||
| ; database_username = "scott" | ||||
| ; database_password = "tiger" | ||||
| ; database_name = "" | ||||
| ; database_driver = "oci8" | ||||
| ; database_prefix = "cpot_" | ||||
| ;------------------------------------------------------------------------------ | ||||
| database_hostname = "localhost" | ||||
| database_port = "" | ||||
|  | ||||
| @ -215,7 +215,7 @@ CREATE TABLE user_settings ( | ||||
| 	icon_name           VARCHAR(255) UNIQUE NULL | ||||
| ) charset=utf8 engine=InnoDB; | ||||
|  | ||||
| CREATE TABLE user ( | ||||
| CREATE TABLE user_account ( | ||||
| 	userid     VARCHAR(32)  PRIMARY KEY, | ||||
| 	passwd     VARCHAR(255) NOT NULL, | ||||
| 	email      VARCHAR(255), | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
| -- | ||||
| -- | ||||
| -- DROP SEQUENCE "cpot_log_id_seq"; | ||||
| -- DROP TABLE "cpot_user"; | ||||
| -- DROP TABLE "cpot_user_account"; | ||||
| -- DROP TABLE "cpot_user_settings"; | ||||
| -- DROP TABLE "cpot_log"; | ||||
| -- DROP TABLE "cpot_code_review"; | ||||
| @ -202,7 +202,7 @@ CREATE TABLE "cpot_user_settings" ( | ||||
| 	"icon_name"           VARCHAR(255) UNIQUE NULL | ||||
| ); | ||||
|  | ||||
| CREATE TABLE "cpot_user" ( | ||||
| CREATE TABLE "cpot_user_account" ( | ||||
| 	"userid"     VARCHAR(32)  PRIMARY KEY, | ||||
| 	"passwd"     VARCHAR(255) NOT NULL, | ||||
| 	"email"      VARCHAR(255), | ||||
|  | ||||
| @ -236,7 +236,7 @@ CREATE TABLE user_settings ( | ||||
| 	icon_name           VARCHAR(255) UNIQUE NULL | ||||
| ); | ||||
|  | ||||
| CREATE TABLE "user" ( | ||||
| CREATE TABLE user_account ( | ||||
| 	userid     VARCHAR(32)  PRIMARY KEY, | ||||
| 	passwd     VARCHAR(255) NOT NULL, | ||||
| 	email      VARCHAR(255), | ||||
|  | ||||
| @ -162,15 +162,9 @@ sub authenticate_ldap | ||||
|  | ||||
| sub authenticate_database | ||||
| { | ||||
| 	my ($dbh, $prefix, $userid, $password, $driver) = @_; | ||||
| 	my ($dbh, $prefix, $userid, $password, $qc) = @_; | ||||
| 	 | ||||
| 	my $user_table_name = "${prefix}user"; | ||||
| 	if ($driver eq 'postgre' && length($prefix) <= 0)  | ||||
| 	{ | ||||
| 		$user_table_name = '"user"'; | ||||
| 	} | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT userid,passwd FROM ${user_table_name} WHERE userid=? and enabled='Y'"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${qc}userid${qc},${qc}passwd${qc} FROM ${qc}${prefix}user_account${qc} WHERE ${qc}userid${qc}=? and ${qc}enabled${qc}='Y'"); | ||||
| 	if (!$query || !$query->execute ($userid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -201,15 +195,30 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -224,9 +233,9 @@ sub close_database | ||||
|  | ||||
| sub is_project_member | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid, $userid) = @_; | ||||
| 	my ($dbh, $prefix, $projectid, $userid, $qc) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT projectid FROM ${prefix}project_membership WHERE userid=? AND projectid=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${qc}projectid${qc} FROM ${qc}${prefix}project_membership${qc} WHERE ${qc}userid${qc}=? AND ${qc}projectid${qc}=?"); | ||||
| 	if (!$query || !$query->execute ($userid, $projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -239,9 +248,9 @@ sub is_project_member | ||||
|  | ||||
| sub is_project_public | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid) = @_; | ||||
| 	my ($dbh, $prefix, $projectid, $qc) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT public FROM ${prefix}project WHERE id=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${qc}public${qc} FROM ${qc}${prefix}project${qc} WHERE ${qc}id${qc}=?"); | ||||
| 	if (!$query || !$query->execute ($projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -275,6 +284,9 @@ sub __handler | ||||
| 	my $member = undef; | ||||
| 	my $errmsg = undef; | ||||
|  | ||||
| 	my $qc = ''; | ||||
| 	if ($cfg->{database_driver} eq 'oci8') { $qc = '"'; } | ||||
| 	 | ||||
| 	if ($r->proxyreq() == Apache2::Const::PROXYREQ_PROXY) | ||||
| 	{ | ||||
| 		$author = $r->headers_in->{'Proxy-Authorization'}; | ||||
| @ -301,7 +313,7 @@ sub __handler | ||||
|  | ||||
| 	if ($is_method_r) | ||||
| 	{ | ||||
| 		($public, $errmsg) = is_project_public ($dbh, $cfg->{database_prefix}, $repo); | ||||
| 		($public, $errmsg) = is_project_public ($dbh, $cfg->{database_prefix}, $repo, $qc); | ||||
| 		if ($public <= -1) | ||||
| 		{ | ||||
| 			# failed to contact the authentication server | ||||
| @ -326,7 +338,7 @@ sub __handler | ||||
| 	elsif ($cfg->{login_model} eq 'DbLoginModel') | ||||
| 	{ | ||||
| 		($auth, $errmsg) = authenticate_database ( | ||||
| 			$dbh, $cfg->{database_prefix}, $userid, $password, $cfg->{database_driver}); | ||||
| 			$dbh, $cfg->{database_prefix}, $userid, $password, $qc); | ||||
| 		if ($auth <= -1) | ||||
| 		{ | ||||
| 			$r->log_error ("Database error - $errmsg"); | ||||
| @ -352,7 +364,7 @@ sub __handler | ||||
| 		return Apache2::Const::OK; | ||||
| 	} | ||||
|  | ||||
| 	($member, $errmsg) = is_project_member ($dbh, $cfg->{database_prefix}, $repo, $userid); | ||||
| 	($member, $errmsg) = is_project_member ($dbh, $cfg->{database_prefix}, $repo, $userid, $qc); | ||||
| 	if ($member <= -1) | ||||
| 	{ | ||||
| 		$r->log_error ("Cannot check project membership - $errmsg"); | ||||
|  | ||||
| @ -12,6 +12,8 @@ my $REPO = $ARGV[0]; | ||||
| my $REPOBASE = basename($REPO); | ||||
| my $REV = $ARGV[1]; | ||||
|  | ||||
| my $QC = ''; | ||||
|  | ||||
| sub get_config | ||||
| { | ||||
| 	my $cfg = new Config::Simple(); | ||||
| @ -44,15 +46,31 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -75,12 +93,21 @@ sub write_commit_log | ||||
| #|  895 | code    | codepot   | svn,codepot,72            | 2011-10-10 14:26:43 | commit        | hyunghwan.chung |  | ||||
|  | ||||
| 	my $message = "svn,$projectid,$revision"; | ||||
| 	my $createdon = strftime ('%Y-%m-%d %H:%M:%S', localtime()); | ||||
|  | ||||
|  | ||||
| 	# the PHP side is executing ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF. | ||||
| 	# do i have to do it here or  use the database time (CURRENT_TIMESTAMP) instead? | ||||
| 	# make sure that you have the same time between the app server and the data server. | ||||
| 	# to minize side-effect of using the time of data server. | ||||
| 	#my $createdon = strftime ('%Y-%m-%d %H:%M:%S', localtime()); | ||||
|  | ||||
| 	$dbh->begin_work (); | ||||
|  | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${prefix}log (type,projectid,message,createdon,action,userid) VALUES (?,?,?,?,?,?)"); | ||||
| 	if (!$query || !$query->execute ('code', $projectid, $message, $createdon, 'commit', $userid)) | ||||
| 	#my $query = $dbh->prepare ("INSERT INTO ${QC}${prefix}log${QC} (${QC}type${QC},${QC}projectid${QC},${QC}message${QC},${QC}createdon${QC},${QC}action${QC},${QC}userid${QC}) VALUES (?,?,?,?,?,?)"); | ||||
| 	#if (!$query || !$query->execute ('code', $projectid, $message, $createdon, 'commit', $userid)) | ||||
|  | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${QC}${prefix}log${QC} (${QC}type${QC},${QC}projectid${QC},${QC}message${QC},${QC}createdon${QC},${QC}action${QC},${QC}userid${QC}) VALUES (?,?,?,CURRENT_TIMESTAMP,?,?)"); | ||||
| 	if (!$query || !$query->execute ('code', $projectid, $message, 'commit', $userid)) | ||||
| 	{ | ||||
| 		my $errstr = $dbh->errstr(); | ||||
| 		$query->finish (); | ||||
|  | ||||
| @ -15,6 +15,8 @@ my $USER = $ARGV[2]; | ||||
| my $PROPNAME = $ARGV[3]; | ||||
| my $ACTION = $ARGV[4]; | ||||
|  | ||||
| my $QC = ''; | ||||
|  | ||||
| # [STDIN] PROPVAL  ** the old property value is passed via STDIN. | ||||
|  | ||||
| sub get_config | ||||
| @ -49,15 +51,31 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -84,7 +102,7 @@ sub write_revprop_change_log | ||||
|  | ||||
| 	$dbh->begin_work (); | ||||
|  | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${prefix}log (type,projectid,message,createdon,action,userid) VALUES (?,?,?,?,?,?)"); | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${QC}${prefix}log${QC} (${QC}type${QC},${QC}projectid${QC},${QC}message${QC},${QC}createdon${QC},${QC}action${QC},${QC}userid${QC}) VALUES (?,?,?,?,?,?)"); | ||||
| 	if (!$query || !$query->execute ('code', $projectid, $message, $createdon, 'revpropchange', $userid)) | ||||
| 	{ | ||||
| 		my $errstr = $dbh->errstr(); | ||||
|  | ||||
| @ -15,6 +15,8 @@ my $REPOFS = $ARGV[0]; | ||||
| my $REPOBASE = basename($REPOFS); | ||||
| my $TRANSACTION = $ARGV[1]; | ||||
|  | ||||
| my $QC = ''; | ||||
|  | ||||
| my %SVN_ACTIONS =  | ||||
| ( | ||||
| 	'A ' => 'add', | ||||
| @ -69,15 +71,31 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -94,7 +112,7 @@ sub is_project_member | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid, $userid) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT projectid FROM ${prefix}project_membership WHERE userid=? AND projectid=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}projectid${QC} FROM ${QC}${prefix}project_membership${QC} WHERE ${QC}userid${QC}=? AND ${QC}projectid${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($userid, $projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -109,7 +127,7 @@ sub is_project_commitable | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT commitable FROM ${prefix}project WHERE id=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}commitable${QC} FROM ${QC}${prefix}project${QC} WHERE ${QC}id${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
|  | ||||
| @ -18,6 +18,8 @@ my $USER = $ARGV[2]; | ||||
| my $PROPNAME = $ARGV[3]; | ||||
| my $ACTION = $ARGV[4]; | ||||
|  | ||||
| my $QC = ''; | ||||
|  | ||||
| sub get_config | ||||
| { | ||||
| 	my $cfg = new Config::Simple(); | ||||
| @ -52,15 +54,31 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -77,7 +95,7 @@ sub is_project_member | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid, $userid) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT projectid FROM ${prefix}project_membership WHERE userid=? AND projectid=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}projectid${QC} FROM ${QC}${prefix}project_membership${QC} WHERE ${QC}userid${QC}=? AND ${QC}projectid${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($userid, $projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
|  | ||||
| @ -10,6 +10,8 @@ my $CFG_FILE = '@CFGDIR@/codepot.ini'; | ||||
| my $REPOBASE = basename($ARGV[0]); | ||||
| my $USER = $ARGV[1]; | ||||
|  | ||||
| my $QC = ''; | ||||
|  | ||||
| sub get_config | ||||
| { | ||||
| 	my $cfg = new Config::Simple(); | ||||
| @ -42,15 +44,31 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -67,7 +85,7 @@ sub is_project_member | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid, $userid) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT projectid FROM ${prefix}project_membership WHERE userid=? AND projectid=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}projectid${QC} FROM ${QC}${prefix}project_membership${QC} WHERE ${QC}userid${QC}=? AND ${QC}projectid${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($userid, $projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -82,7 +100,7 @@ sub is_project_commitable | ||||
| { | ||||
| 	my ($dbh, $prefix, $projectid) = @_; | ||||
|  | ||||
| 	my $query = $dbh->prepare ("SELECT commitable FROM ${prefix}project WHERE id=?"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}commitable${QC} FROM ${QC}${prefix}project${QC} WHERE ${QC}id${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($projectid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
|  | ||||
| @ -12,7 +12,7 @@ use Digest::SHA1 qw (sha1_hex); | ||||
|  | ||||
|  | ||||
| my $CFG_FILE = '@CFGDIR@/codepot.ini'; | ||||
| my $USER_TABLE_NAME = 'user'; | ||||
| my $QC = ''; | ||||
|  | ||||
| sub get_config | ||||
| { | ||||
| @ -48,23 +48,32 @@ sub open_database | ||||
| 	my $dbport = $cfg->{database_port}; | ||||
| 	my $dbprefix = $cfg->{database_prefix}; | ||||
|  | ||||
| 	if ($dbtype eq 'postgre')  | ||||
| 	if ($dbtype eq 'postgre') { $dbtype = 'Pg'; } | ||||
| 	elsif ($dbtype eq 'oci8') { $dbtype = 'Oracle'; } | ||||
| 	elsif ($dbtype eq 'mysqli') { $dbtype = 'mysql'; } | ||||
|  | ||||
| 	my $dbstr; | ||||
| 	my $dbuser; | ||||
| 	my $dbpass; | ||||
| 	if ($dbtype eq 'Oracle') | ||||
| 	{ | ||||
| 		$dbtype = 'Pg';  | ||||
|  | ||||
| 		# in postgresql, 'user' is a reserved word. | ||||
| 		# it requires quotes for the word to be used as a normal word | ||||
| 		if (length($dbprefix) <= 0) { $USER_TABLE_NAME = '"user"'; } | ||||
| 		$QC = '"'; | ||||
| 		$dbstr = "DBI:$dbtype:"; | ||||
| 		$dbuser = $cfg->{database_username} . '/' . $cfg->{database_password} . '@' . $dbhost; | ||||
| 		$dbpass = ''; | ||||
| 	} | ||||
|  | ||||
| 	my $dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 	else | ||||
| 	{ | ||||
| 		$dbstr = "DBI:$dbtype:database=$dbname;"; | ||||
| 		if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; } | ||||
| 		if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; } | ||||
|  | ||||
| 		$dbuser = $cfg->{database_username}; | ||||
| 		$dbpass = $cfg->{database_password}; | ||||
| 	} | ||||
|  | ||||
| 	my $dbh = DBI->connect( | ||||
| 		$dbstr, | ||||
| 		$cfg->{database_username}, | ||||
| 		$cfg->{database_password}, | ||||
| 		$dbstr, $dbuser, $dbpass, | ||||
| 		{ RaiseError => 0, PrintError => 0, AutoCommit => 0 } | ||||
| 	); | ||||
|  | ||||
| @ -104,7 +113,7 @@ sub authenticate_database | ||||
| { | ||||
| 	my ($dbh, $prefix, $userid, $password) = @_; | ||||
| 	 | ||||
| 	my $query = $dbh->prepare ("SELECT userid,passwd FROM ${prefix}${USER_TABLE_NAME}} WHERE userid=? and enabled='N'"); | ||||
| 	my $query = $dbh->prepare ("SELECT ${QC}userid${QC},${QC}passwd${QC} FROM ${QC}${prefix}user_account${QC} WHERE ${QC}userid${QC}=? and ${QC}enabled${QC}='N'"); | ||||
| 	if (!$query || !$query->execute ($userid)) | ||||
| 	{ | ||||
| 		return (-1, $dbh->errstr()); | ||||
| @ -136,7 +145,7 @@ sub add_user | ||||
| 	 | ||||
| 	$dbh->begin_work (); | ||||
|  | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${prefix}${USER_TABLE_NAME} (userid,passwd,email,enabled) VALUES (?, ?, ?, ?)"); | ||||
| 	my $query = $dbh->prepare ("INSERT INTO ${QC}${prefix}user_account${QC} (${QC}userid${QC},${QC}passwd${QC},${QC}email${QC},${QC}enabled${QC}) VALUES (?, ?, ?, ?)"); | ||||
| 	if (!$query || !$query->execute ($userid, $fmt_pw, $email, 'N')) | ||||
| 	{ | ||||
| 		my $errstr = $dbh->errstr(); | ||||
| @ -156,7 +165,7 @@ sub delete_user | ||||
|  | ||||
| 	$dbh->begin_work (); | ||||
|  | ||||
| 	my $query = $dbh->prepare ("DELETE FROM ${prefix}${USER_TABLE_NAME} WHERE userid=?"); | ||||
| 	my $query = $dbh->prepare ("DELETE FROM ${QC}${prefix}user_account${QC} WHERE ${QC}userid${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($userid) || $query->rows() <= 0) | ||||
| 	{ | ||||
| 		my $errstr = $dbh->errstr(); | ||||
| @ -176,7 +185,7 @@ sub toggle_user | ||||
|  | ||||
| 	$dbh->begin_work (); | ||||
|  | ||||
| 	my $query = $dbh->prepare ("UPDATE ${prefix}${USER_TABLE_NAME} SET enabled=? WHERE userid=?"); | ||||
| 	my $query = $dbh->prepare ("UPDATE ${QC}${prefix}user_account${QC} SET ${QC}enabled${QC}=? WHERE ${QC}userid${QC}=?"); | ||||
| 	if (!$query || !$query->execute ($enabled, $userid) || $query->rows() <= 0) | ||||
| 	{ | ||||
| 		my $errstr = $dbh->errstr(); | ||||
|  | ||||
| @ -41,7 +41,7 @@ class DbLoginModel extends LoginModel | ||||
| 		$this->db->select ('userid,passwd,email'); | ||||
| 		$this->db->where ('userid', $userid); | ||||
| 		$this->db->where ('enabled', 'Y'); | ||||
| 		$query = $this->db->get ('user'); | ||||
| 		$query = $this->db->get ('user_account'); | ||||
|  | ||||
| 		if ($this->db->trans_status() == FALSE) | ||||
| 		{ | ||||
| @ -77,7 +77,7 @@ class DbLoginModel extends LoginModel | ||||
|  | ||||
| 		$this->db->where ('userid', $userid); | ||||
| 		$this->db->set ('passwd', format_password($passwd,5)); | ||||
| 		$this->db->update ('user'); | ||||
| 		$this->db->update ('user_account'); | ||||
|  | ||||
| 		if ($this->db->trans_status() === FALSE) | ||||
| 		{ | ||||
|  | ||||
| @ -23,7 +23,7 @@ class LogModel extends Model | ||||
|  | ||||
| 		if ($userid != '') $this->db->where ('userid', $userid); | ||||
|  | ||||
| 		$this->db->select ('count(id) as count'); | ||||
| 		$this->db->select ('count(*) as count'); | ||||
| 		$query = $this->db->get ('log'); | ||||
| 		if ($this->db->trans_status() === FALSE)  | ||||
| 		{ | ||||
| @ -33,7 +33,8 @@ class LogModel extends Model | ||||
|  | ||||
| 		$result = $query->result(); | ||||
| 		 | ||||
| 		$num = empty($result)? 0: $result[0]->count; | ||||
| 		$num = empty($result)? 0: | ||||
| 		       isset($result[0]->COUNT)? $result[0]->COUNT: $result[0]->count; | ||||
|  | ||||
| 		$this->db->trans_complete (); | ||||
| 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||
|  | ||||
| @ -149,13 +149,26 @@ class CI_DB_driver { | ||||
| 					return FALSE; | ||||
| 				} | ||||
| 		 | ||||
| 				return TRUE; | ||||
| 				// HYUNG-HWAN | ||||
| 				//return TRUE; | ||||
| 				// END HYUNG-HWAN | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		// HYUNG-HWAN | ||||
| 		$this->db_post_initialize (); | ||||
| 		// END HYUNG-HWAN | ||||
| 		return TRUE; | ||||
| 	} | ||||
|  | ||||
| 	// HYUNG-HWAN | ||||
| 	function db_post_initialize () | ||||
| 	{ | ||||
| 		return TRUE; | ||||
| 	} | ||||
| 	// END HYUNG-HWAN | ||||
| 		 | ||||
| 	// -------------------------------------------------------------------- | ||||
|  | ||||
| 	/** | ||||
|  | ||||
| @ -140,6 +140,13 @@ class CI_DB_oci8_driver extends CI_DB { | ||||
| 		return TRUE; | ||||
| 	} | ||||
| 	 | ||||
| 	// HYUNG-HWAN | ||||
| 	function db_post_initialize () | ||||
| 	{ | ||||
| 		$this->query ("ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF'"); | ||||
| 	} | ||||
| 	// END HYUNG-HWAN | ||||
|  | ||||
| 	// -------------------------------------------------------------------- | ||||
| 	 | ||||
| 	/** | ||||
|  | ||||
| @ -174,7 +174,22 @@ class CI_DB_oci8_result extends CI_DB_result { | ||||
| 		{ | ||||
| 			$id = ($this->curs_id) ? $this->curs_id : $this->stmt_id; | ||||
| 			 | ||||
| 			return @oci_fetch_object($id); | ||||
| 			// BEGIN HYUNG-HWAN | ||||
| 			//return @oci_fetch_object($id); | ||||
| 			$x = @oci_fetch_object($id); | ||||
|  | ||||
| 			if (is_object($x)) | ||||
| 			{ | ||||
| 				foreach ($x as $k => $v)  | ||||
| 				{ | ||||
| 					if (is_object($v) && get_class($v) == 'OCI-Lob') | ||||
| 					{ | ||||
| 						$x->$k = $v->load(); | ||||
| 					} | ||||
| 				}	 | ||||
| 			} | ||||
| 			return $x; | ||||
| 			// END HYUNG-HWAN | ||||
| 		} | ||||
| 		 | ||||
| 		// If PHP 4 is being used we have to build our own result | ||||
|  | ||||
		Reference in New Issue
	
	Block a user