summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Dibb <beandog@gentoo.org>2009-12-15 20:49:23 +0000
committerSteve Dibb <beandog@gentoo.org>2009-12-15 20:49:23 +0000
commit02b91d354e1b212418d8c512592d34e723b6126a (patch)
tree887d9abffba7b826696820d3d91bcc0df15a60d0 /class.portage.package.php
parentinitial commit (diff)
downloadznurt-org-backend-02b91d354e1b212418d8c512592d34e723b6126a.tar.gz
znurt-org-backend-02b91d354e1b212418d8c512592d34e723b6126a.tar.bz2
znurt-org-backend-02b91d354e1b212418d8c512592d34e723b6126a.zip
git-svn-id: file:///var/svn/portage@2 3218660a-b0cf-4799-a991-8ddcc5b9e0f3
Diffstat (limited to 'class.portage.package.php')
-rw-r--r--class.portage.package.php150
1 files changed, 150 insertions, 0 deletions
diff --git a/class.portage.package.php b/class.portage.package.php
new file mode 100644
index 0000000..c974949
--- /dev/null
+++ b/class.portage.package.php
@@ -0,0 +1,150 @@
+<?
+
+ class PortagePackage extends PortageCategory {
+
+ private $name;
+ private $changelog;
+ private $arr_ebuilds;
+ private $arr_herds;
+ private $arr_maintainers;
+
+ private $changelog_filename;
+
+ private $metadata_filename;
+ private $metadata_xml;
+
+ function __construct($category = null, $package = null) {
+
+ parent::__construct();
+
+ if($category && $package)
+ $this->setPackage($category, $package);
+
+ }
+
+ public function __get($var) {
+ return $this->$var;
+ }
+
+ public function __toString() {
+ return $this->name;
+ }
+
+ private function setPackage($category, $package) {
+
+ parent::setCategory($category);
+
+ $package = basename($package);
+ $dir = $this->dir."/".$package;
+
+ if(is_dir($dir)) {
+ $this->name = $package;
+
+ $scandir = scandir($dir);
+ $arr = preg_grep('/\.ebuild$/', $scandir);
+ $arr = preg_replace("/\.ebuild$/", "", $arr);
+
+ sort($arr);
+
+ $this->arr_ebuilds = $arr;
+
+ }
+
+ if(file_exists("$dir/metadata.xml")) {
+ $this->metadata_filename = "$dir/metadata.xml";
+ $this->metadata_xml = simplexml_load_file($this->metadata_filename);
+ }
+
+ if(file_exists("$dir/ChangeLog")) {
+ $this->changelog_filename = "$dir/ChangeLog";
+ $str = file_get_contents($this->changelog_filename);
+ $str = trim($str);
+ $this->changelog = $str;
+ }
+
+ }
+
+ public function getCategory() {
+ return parent::getName();
+ }
+
+ public function getEbuilds() {
+ return $this->arr_ebuilds;
+ }
+
+ public function getHerds() {
+
+ $arr = array();
+
+ if(!$this->metadata_filename)
+ return $arr;
+
+ if(!$this->metadata_xml)
+ $this->metadata_xml = simplexml_load_file($this->metadata_filename);
+
+ if($this->metadata_xml->herd) {
+ foreach($this->metadata_xml->herd as $name) {
+ $arr[] = (string)$name;
+ }
+ }
+
+ sort($arr);
+
+ return $arr;
+
+ }
+
+ public function getMaintainers() {
+
+ $arr = array();
+
+ if(!$this->metadata_filename)
+ return $arr;
+
+ if(!$this->metadata_xml)
+ $this->metadata_xml = simplexml_load_file($this->metadata_filename);
+
+ if($this->metadata_xml->maintainer) {
+ $x = 0;
+ foreach($this->metadata_xml->maintainer as $maintainer) {
+ if($maintainer->name)
+ $arr[$x]['name'] = (string)$maintainer->name;
+ if($maintainer->email)
+ $arr[$x]['email'] = (string)$maintainer->email;
+ $x++;
+ }
+ }
+
+ return $arr;
+
+ }
+
+ public function getUseFlags() {
+
+ $arr = array();
+
+ if(!$this->metadata_filename)
+ return $arr;
+
+ if(!$this->metadata_xml)
+ $this->metadata_xml = simplexml_load_file($this->metadata_filename);
+
+ // Getting attributes is always a pain
+ // http://us.php.net/manual/en/function.simplexml-element-attributes.php
+ if($this->metadata_xml->use) {
+ foreach($this->metadata_xml->use->flag as $flag) {
+ foreach($flag->attributes() as $key => $name) {
+ if($key == 'name') {
+ $name = (string)$name;
+ $arr[$name] = (string)$flag;
+ }
+ }
+ }
+ }
+ ksort($arr);
+ return $arr;
+
+ }
+
+ }
+?> \ No newline at end of file