public function getArticleTypes(Theme $theme)
{
Validation::notEmpty($theme, 'theme');
$xml = $this->loadXML($this->toFullPath($theme, $this->themeConfigFileName));
$ret = new \stdClass();
// getting the article types
foreach ($xml->xpath('/' . self::TAG_ROOT . '/' . self::TAG_ARTICLE_TYPE) as $artType) {
$artTypeName = (string) $this->readAttribute($artType, self::ATTR_ARTICLE_TYPE_NAME);
// set article type name on return array
$ret->{$artTypeName} = new \stdClass();
// getting the article type fields
foreach ($xml->xpath('/' . self::TAG_ROOT . '/' . self::TAG_ARTICLE_TYPE . '[@' . self::ATTR_ARTICLE_TYPE_NAME . '=(\'' . $artTypeName . '\')]/*') as $artTypeField) {
try {
$ret->{$artTypeName}->{(string) $artTypeField[self::ATTR_ARTICLE_TYPE_FILED_NAME]} = (object) array(self::ATTR_ARTICLE_TYPE_FILED_TYPE => (string) $artTypeField[self::ATTR_ARTICLE_TYPE_FILED_TYPE], self::ATTR_ARTICLE_TYPE_FILED_LENGTH => (string) $artTypeField[self::ATTR_ARTICLE_TYPE_FILED_LENGTH]);
} catch (\Exception $e) {
}
}
}
return $ret;
}