Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Marcus Andersson
aurweb
Commits
cc3244ea
Commit
cc3244ea
authored
Apr 26, 2014
by
Lukas Fleischer
Browse files
Store package groups in the database
Signed-off-by:
Lukas Fleischer
<
archlinux@cryptocrack.de
>
parent
3720bdf6
Changes
4
Hide whitespace changes
Inline
Side-by-side
UPGRADING
View file @
cc3244ea
...
...
@@ -199,6 +199,24 @@ CREATE TABLE PackageRelations (
)
ENGINE
=
InnoDB
;
----
17.
Create
tables
to
store
package
groups
:
----
CREATE
TABLE
Groups
(
ID
INTEGER
UNSIGNED
NOT
NULL
AUTO_INCREMENT
,
Name
VARCHAR
(
64
)
NOT
NULL
,
PRIMARY
KEY
(
ID
),
UNIQUE
(
Name
)
)
ENGINE
=
InnoDB
;
CREATE
TABLE
PackageGroups
(
PackageID
INTEGER
UNSIGNED
NOT
NULL
,
GroupID
INTEGER
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
(
PackageID
,
GroupID
),
FOREIGN
KEY
(
PackageID
)
REFERENCES
Packages
(
ID
)
ON
DELETE
CASCADE
,
FOREIGN
KEY
(
GroupID
)
REFERENCES
Groups
(
ID
)
ON
DELETE
CASCADE
)
ENGINE
=
InnoDB
;
----
From
2.2.0
to
2.3.0
-------------------
...
...
schema/aur-schema.sql
View file @
cc3244ea
...
...
@@ -133,6 +133,27 @@ CREATE TABLE Packages (
)
ENGINE
=
InnoDB
;
-- Information about groups
--
CREATE
TABLE
Groups
(
ID
INTEGER
UNSIGNED
NOT
NULL
AUTO_INCREMENT
,
Name
VARCHAR
(
64
)
NOT
NULL
,
PRIMARY
KEY
(
ID
),
UNIQUE
(
Name
)
)
ENGINE
=
InnoDB
;
-- Information about package-group-relations
--
CREATE
TABLE
PackageGroups
(
PackageID
INTEGER
UNSIGNED
NOT
NULL
,
GroupID
INTEGER
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
(
PackageID
,
GroupID
),
FOREIGN
KEY
(
PackageID
)
REFERENCES
Packages
(
ID
)
ON
DELETE
CASCADE
,
FOREIGN
KEY
(
GroupID
)
REFERENCES
Groups
(
ID
)
ON
DELETE
CASCADE
)
ENGINE
=
InnoDB
;
-- Define the package dependency types
--
CREATE
TABLE
DependencyTypes
(
...
...
web/html/pkgsubmit.php
View file @
cc3244ea
...
...
@@ -151,6 +151,7 @@ if ($uid):
}
}
$section_info
=
array
(
'groups'
=>
array
(),
'depends'
=>
array
(),
'makedepends'
=>
array
(),
'checkdepends'
=>
array
(),
...
...
@@ -169,6 +170,7 @@ if ($uid):
case
'license'
:
$section_info
[
$key
]
=
$value
;
break
;
case
'groups'
:
case
'source'
:
case
'depends'
:
case
'makedepends'
:
...
...
@@ -196,7 +198,7 @@ if ($uid):
if
(
!
isset
(
$pkgbase_info
[
'pkgbase'
]))
{
$pkgbase_info
[
'pkgbase'
]
=
$pkgbase_info
[
'pkgname'
];
}
foreach
(
array
(
'source'
,
'depends'
,
'makedepends'
,
'checkdepends'
,
'optdepends'
,
'conflicts'
,
'provides'
,
'replaces'
)
as
$array_opt
)
{
foreach
(
array
(
'groups'
,
'source'
,
'depends'
,
'makedepends'
,
'checkdepends'
,
'optdepends'
,
'conflicts'
,
'provides'
,
'replaces'
)
as
$array_opt
)
{
if
(
empty
(
$pkgbase_info
[
$array_opt
]))
{
$pkgbase_info
[
$array_opt
]
=
array
();
}
else
{
...
...
@@ -357,6 +359,11 @@ if ($uid):
foreach
(
$pkginfo
as
$pi
)
{
$pkgid
=
pkg_create
(
$base_id
,
$pi
[
'pkgname'
],
$pi
[
'license'
],
$pi
[
'full-version'
],
$pi
[
'pkgdesc'
],
$pi
[
'url'
]);
foreach
(
$pi
[
'groups'
]
as
$grp
)
{
$grpid
=
pkg_create_group
(
$grp
);
pkg_add_grp
(
$pkgid
,
$grpid
);
}
foreach
(
array
(
'depends'
,
'makedepends'
,
'checkdepends'
,
'optdepends'
)
as
$deptype
)
{
foreach
(
$pi
[
$deptype
]
as
$dep
)
{
$deppkgname
=
preg_replace
(
"/(<|=|>).*/"
,
""
,
$dep
);
...
...
web/lib/pkgfuncs.inc.php
View file @
cc3244ea
...
...
@@ -805,3 +805,46 @@ function pkg_add_src($pkgid, $pkgsrc) {
$dbh
->
exec
(
$q
);
}
/**
* Creates a new group and returns its ID
*
* If the groups already exists, the ID of the already existing group is
* returned.
*
* @param string $name The name of the group to create
*
* @return int The ID of the group
*/
function
pkg_create_group
(
$name
)
{
$dbh
=
DB
::
connect
();
$q
=
sprintf
(
"SELECT ID FROM Groups WHERE Name = %s"
,
$dbh
->
quote
(
$name
));
$result
=
$dbh
->
query
(
$q
);
if
(
$result
)
{
$grpid
=
$result
->
fetch
(
PDO
::
FETCH_COLUMN
,
0
);
if
(
$grpid
>
0
)
{
return
$grpid
;
}
}
$q
=
sprintf
(
"INSERT INTO Groups (Name) VALUES (%s)"
,
$dbh
->
quote
(
$name
));
$dbh
->
exec
(
$q
);
return
$dbh
->
lastInsertId
();
}
/**
* Add a package to a group
*
* @param int $pkgid The package ID of the package to add
* @param int $grpid The group ID of the group to add the package to
*
* @return void
*/
function
pkg_add_grp
(
$pkgid
,
$grpid
)
{
$dbh
=
DB
::
connect
();
$q
=
sprintf
(
"INSERT INTO PackageGroups (PackageID, GroupID) VALUES (%d, %d)"
,
$pkgid
,
$grpid
);
$dbh
->
exec
(
$q
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment