36     private $depsStructPlugin = array(
 
   46     private $depsStructPriority = array(
 
   55     private $depsStructElgg = array(
 
   64     private $depsStructPhpVersion = array(
 
   73     private $depsStructPhpIni = array(
 
   83     private $depsStructPhpExtension = array(
 
   93     private $depsConflictsStruct = array(
 
  103     private $depsProvidesStruct = array(
 
  112     private $screenshotStruct = array(
 
  120     private $contributorStruct = array(
 
  158             $manifest_obj = $manifest;
 
  161             if (substr(trim($manifest), 0, 1) == 
'<') {
 
  163                 $raw_xml = $manifest;
 
  164             } elseif (is_file($manifest)) {
 
  166                 $raw_xml = file_get_contents($manifest);
 
  169                 $manifest_obj = new \ElggXMLElement($raw_xml);
 
  171                 $manifest_obj = 
null;
 
  175         if (!$manifest_obj) {
 
  176             throw new \PluginException(
_elgg_services()->translator->translate(
'PluginException:InvalidManifest',
 
  181         if (isset($manifest_obj->attributes[
'xmlns'])) {
 
  182             $namespace = $manifest_obj->attributes[
'xmlns'];
 
  183             $version = str_replace($this->namespace_root, 
'', $namespace);
 
  190         $parser_class_name = 
'\ElggPluginManifestParser' . str_replace(
'.', 
'', $this->apiVersion);
 
  194             $class_exists = class_exists($parser_class_name);
 
  195         } 
catch (Exception 
$e) {
 
  196             $class_exists = 
false;
 
  200             $this->parser = 
new $parser_class_name($manifest_obj, $this);
 
  202             throw new \PluginException(
_elgg_services()->translator->translate(
'PluginException:NoAvailableParser',
 
  206         if (!$this->parser->parse()) {
 
  207             throw new \PluginException(
_elgg_services()->translator->translate(
'PluginException:ParserError',
 
  227         if ($this->pluginID) {
 
  243         return $this->parser->getManifest();
 
  256         $name = $this->parser->getAttribute(
'name');
 
  258         if (!
$name && $this->pluginID) {
 
  259             $name = ucwords(str_replace(
'_', 
' ', $this->pluginID));
 
  272         return trim((
string) $this->parser->getAttribute(
'id'));
 
  282         return $this->parser->getAttribute(
'description');
 
  291         $blurb = $this->parser->getAttribute(
'blurb');
 
  307         $en_us = $this->parser->getAttribute(
'license');
 
  311             return $this->parser->getAttribute(
'licence');
 
  321         return $this->parser->getAttribute(
'repository');
 
  330         return $this->parser->getAttribute(
'bugtracker');
 
  339         return $this->parser->getAttribute(
'donations');
 
  348         return $this->parser->getAttribute(
'version');
 
  357         return $this->parser->getAttribute(
'author');
 
  366         return $this->parser->getAttribute(
'copyright');
 
  375         return $this->parser->getAttribute(
'website');
 
  384         $bundled_plugins = array(
 
  414             'site_notifications',
 
  418             'uservalidationbyemail',
 
  423         $cats = $this->parser->getAttribute(
'category');
 
  429         if (in_array(
'bundled', $cats) && !in_array($this->
getPluginID(), $bundled_plugins)) {
 
  430             unset($cats[array_search(
'bundled', $cats)]);
 
  442         $ss = $this->parser->getAttribute(
'screenshot');
 
  448         $normalized = array();
 
  449         foreach ($ss as $s) {
 
  450             $normalized[] = $this->
buildStruct($this->screenshotStruct, $s);
 
  462         $ss = $this->parser->getAttribute(
'contributor');
 
  468         $normalized = array();
 
  469         foreach ($ss as $s) {
 
  470             $normalized[] = $this->
buildStruct($this->contributorStruct, $s);
 
  486             $provides = $this->parser->getAttribute(
'provides');
 
  494         if ($this->pluginID) {
 
  502         $normalized = array();
 
  503         foreach ($provides as $provide) {
 
  504             $normalized[] = $this->
buildStruct($this->depsProvidesStruct, $provide);
 
  517         if ($this->apiVersion < 1.8) {
 
  518             $elgg_version = $this->parser->getAttribute(
'elgg_version');
 
  522                         'type' => 
'elgg_version',
 
  523                         'version' => $elgg_version,
 
  531             $reqs = $this->parser->getAttribute(
'requires');
 
  538         $normalized = array();
 
  539         foreach ($reqs as $req) {
 
  540             $normalized[] = $this->normalizeDep($req);
 
  552         $suggests = $this->parser->getAttribute(
'suggests');
 
  558         $normalized = array();
 
  559         foreach ($suggests as $suggest) {
 
  560             $normalized[] = $this->normalizeDep($suggest);
 
  573     private function normalizeDep($dep) {
 
  574         switch ($dep[
'type']) {
 
  577                 $struct = $this->depsStructElgg;
 
  581                 $struct = $this->depsStructPlugin;
 
  585                 $struct = $this->depsStructPriority;
 
  589                 $struct = $this->depsStructPhpVersion;
 
  592             case 'php_extension':
 
  593                 $struct = $this->depsStructPhpExtension;
 
  597                 $struct = $this->depsStructPhpIni;
 
  600                 if (isset($dep[
'value'])) {
 
  601                     switch (strtolower($dep[
'value'])) {
 
  625         $normalized_dep = $this->
buildStruct($struct, $dep);
 
  628         if (isset($normalized_dep[
'comparison'])) {
 
  629             switch ($normalized_dep[
'comparison']) {
 
  631                     $normalized_dep[
'comparison'] = 
'lt';
 
  635                     $normalized_dep[
'comparison'] = 
'le';
 
  639                     $normalized_dep[
'comparison'] = 
'gt';
 
  643                     $normalized_dep[
'comparison'] = 
'ge';
 
  648                     $normalized_dep[
'comparison'] = 
'=';
 
  653                     $normalized_dep[
'comparison'] = 
'!=';
 
  658         return $normalized_dep;
 
  669             $conflicts = array();
 
  671             $conflicts = $this->parser->getAttribute(
'conflicts');
 
  675             $conflicts = array();
 
  678         $normalized = array();
 
  680         foreach ($conflicts as $conflict) {
 
  681             $normalized[] = $this->
buildStruct($this->depsConflictsStruct, $conflict);
 
  693         $activate = $this->parser->getAttribute(
'activate_on_install');
 
  694         switch (strtolower($activate)) {
 
  721         foreach ($struct as $index => 
$default) {
 
  738         $cat_raw_string = 
"admin:plugins:category:$category";
 
  739         $cat_display_string = 
_elgg_services()->translator->translate($cat_raw_string);
 
  740         if ($cat_display_string == $cat_raw_string) {
 
  741             $category = str_replace(array(
'-', 
'_'), 
' ', $category);
 
  742             $cat_display_string = ucwords($category);
 
  744         return $cat_display_string;
 
if($guid==elgg_get_logged_in_user_guid()) $name
 
getPluginID()
Returns the plugin ID.
 
getDonationsPageURL()
Returns the donations page.
 
getCategories()
Return the categories listed for this plugin.
 
getContributors()
Return the contributors listed.
 
getSuggests()
Returns the suggests elements.
 
getScreenshots()
Return the screenshots listed.
 
getActivateOnInstall()
Should this plugin be activated when Elgg is installed.
 
getManifest()
Returns the manifest array.
 
getLicense()
Returns the license.
 
getVersion()
Returns the version of the plugin.
 
getApiVersion()
Returns the API version in use.
 
static getFriendlyCategory($category)
Returns a category's friendly name.
 
getRepositoryURL()
Returns the repository url.
 
buildStruct(array $struct, array $array)
Normalizes an array into the structure specified.
 
getProvides()
Return the list of provides by this plugin.
 
getWebsite()
Return the website.
 
__construct($manifest, $plugin_id=null)
Load a manifest file, XmlElement or path to manifest.xml file.
 
$namespace_root
The root for plugin manifest namespaces.
 
getCopyright()
Return the copyright.
 
getName()
Returns the plugin name.
 
getID()
Return the plugin ID required by the author.
 
getBugTrackerURL()
Returns the bug tracker page.
 
getRequires()
Returns the dependencies listed.
 
getBlurb()
Return the short description.
 
getAuthor()
Returns the plugin author.
 
getConflicts()
Returns the conflicts listed.
 
getDescription()
Return the description.
 
elgg_extract($key, $array, $default=null, $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
 
elgg_get_excerpt($text, $num_chars=250)
Returns an excerpt.