# 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:
@ -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 = ""
|
||||
|
@ -125,7 +125,7 @@ CREATE TABLE issue_change (
|
||||
status VARCHAR(32) NOT NULL,
|
||||
owner VARCHAR(255) NOT NULL,
|
||||
priority VARCHAR(32) NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
|
||||
updatedon DATETIME NOT NULL,
|
||||
updatedby VARCHAR(32) NOT NULL,
|
||||
@ -183,7 +183,7 @@ CREATE TABLE code_review (
|
||||
projectid VARCHAR(32) NOT NULL,
|
||||
rev BIGINT NOT NULL,
|
||||
sno BIGINT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
|
||||
createdon DATETIME NOT NULL,
|
||||
createdby VARCHAR(32) NOT NULL,
|
||||
@ -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),
|
||||
|
@ -143,7 +143,7 @@ CREATE TABLE issue_change (
|
||||
status VARCHAR(32) NOT NULL,
|
||||
owner VARCHAR(255) NOT NULL,
|
||||
priority VARCHAR(32) NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
|
||||
updatedon TIMESTAMP NOT NULL,
|
||||
updatedby VARCHAR(32) NOT NULL,
|
||||
@ -203,7 +203,7 @@ CREATE TABLE code_review (
|
||||
projectid VARCHAR(32) NOT NULL,
|
||||
rev BIGINT NOT NULL,
|
||||
sno BIGINT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
|
||||
createdon TIMESTAMP NOT NULL,
|
||||
createdby VARCHAR(32) NOT NULL,
|
||||
@ -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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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;";
|
||||
if (length($dbhost) > 0) { $dbstr .= "host=$dbhost;"; }
|
||||
if (length($dbport) > 0) { $dbstr .= "port=$dbport;"; }
|
||||
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());
|
||||
|
Reference in New Issue
Block a user