diff options
author | Steve Dibb <beandog@gentoo.org> | 2009-12-15 20:49:23 +0000 |
---|---|---|
committer | Steve Dibb <beandog@gentoo.org> | 2009-12-15 20:49:23 +0000 |
commit | 02b91d354e1b212418d8c512592d34e723b6126a (patch) | |
tree | 887d9abffba7b826696820d3d91bcc0df15a60d0 /class.portage.package.php | |
parent | initial commit (diff) | |
download | znurt-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.php | 150 |
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 |