LAN_SETTINGS, 'users'=>ADLAN_36, 'content'=>ADLAN_CL_3,'tools'=> ADLAN_CL_6, 'manage'=>LAN_MANAGE,'misc'=> ADLAN_CL_8, 'menu'=>'menu', 'about'=> 'about');
function __construct()
{
$this->_init();
if(empty($this->_ids))
{
$this->_initIDs();
}
}
/**
* Load specified plugin data.
* @param string $plugdir
* @return e_plugin
*/
public function load($plugdir)
{
$this->_plugdir = (string) $plugdir;
return $this;
}
public function getCategoryList()
{
return $this->_accepted_categories;
}
public function getDetected()
{
return array_keys($this->_data);
}
public function clearCache()
{
$this->_init(true);
$this->_initIDs();
return $this;
}
public function getInstalled()
{
return $this->_installed;
}
public function getId()
{
if(empty($this->_plugdir))
{
e107::getDebug()->log("\$this->_plugdir is empty ".__FILE__." ". __CLASS__ ."::".__METHOD__);
}
if(isset($this->_ids[$this->_plugdir]))
{
return $this->_ids[$this->_plugdir];
}
return false;
}
public function getCompat()
{
if(isset($this->_data[$this->_plugdir]['@attributes']['compatibility']))
{
return $this->_data[$this->_plugdir]['@attributes']['compatibility'];
}
return false;
}
public function getInstallRequired()
{
if(empty($this->_plugdir))
{
e107::getDebug()->log("\$this->_plugdir is empty ".__FILE__." ". __CLASS__ ."::".__METHOD__);
}
if(isset($this->_data[$this->_plugdir]['@attributes']['installRequired']))
{
return ($this->_data[$this->_plugdir]['@attributes']['installRequired'] === 'true') ? true : false;
}
return false;
}
public function getVersion()
{
if(empty($this->_plugdir))
{
e107::getDebug()->log("\$this->_plugdir is empty ".__FILE__." ". __CLASS__ ."::".__METHOD__);
}
if(isset($this->_data[$this->_plugdir]['@attributes']['version']))
{
return $this->_data[$this->_plugdir]['@attributes']['version'];
}
return false;
}
public function getDate()
{
if(isset($this->_data[$this->_plugdir]['@attributes']['date']))
{
return $this->_data[$this->_plugdir]['@attributes']['date'];
}
return false;
}
public function getAuthor($type='name')
{
if(!isset($this->_data[$this->_plugdir]['author']['@attributes'][$type]))
{
return false;
}
return $this->_data[$this->_plugdir]['author']['@attributes'][$type];
}
public function getCategory()
{
if(!isset($this->_data[$this->_plugdir]['category']))
{
return false;
}
return (string) $this->_data[$this->_plugdir]['category'];
}
public function getDescription()
{
if(!isset($this->_data[$this->_plugdir]['description']['@value']))
{
return false;
}
return $this->_data[$this->_plugdir]['description']['@value'];
}
public function getIcon($size = 16,$opt='')
{
$link = $this->_data[$this->_plugdir]['adminLinks']['link'][0]['@attributes'];
$k = array(16 => 'iconSmall', 24 => 'icon', 32 => 'icon', 128=>'icon128');
$def = array(16 => E_16_PLUGIN, 24 => E_24_PLUGIN, 32 => E_32_PLUGIN);
$key = $k[$size];
if(empty($link[$key]))
{
return $def[$size];
}
$caption = $this->getName();
if($opt === 'path')
{
return e107::getParser()->createConstants(e_PLUGIN_ABS.$this->_plugdir.'/'.$link[$key]);
}
return "
";
}
public function getAdminCaption()
{
$att = $this->_data[$this->_plugdir]['adminLinks']['link'][0]['@attributes'];
if(empty($att['description']))
{
return false;
}
return str_replace("'", '', e107::getParser()->toHTML($att['description'], FALSE, 'defs, emotes_off'));
}
public function getAdminUrl()
{
if(!empty($this->_data[$this->_plugdir]['administration']['configFile']))
{
return e_PLUGIN_ABS.$this->_plugdir.'/'.$this->_data[$this->_plugdir]['administration']['configFile'];
}
return false;
}
/**
* Check if the current plugin is a legacy plugin which doesn't use plugin.xml
* @return mixed
*/
public function isLegacy()
{
if(empty($this->_plugdir))
{
e107::getDebug()->log("\$this->_plugdir is empty ".__FILE__." ". __CLASS__ ."::".__METHOD__);
}
return $this->_data[$this->_plugdir]['legacy'];
}
/**
* Check if the currently loaded plugin is installed
* @return mixed
*/
public function isInstalled()
{
if(empty($this->_plugdir))
{
e107::getDebug()->log("\$this->_plugdir is empty ".__FILE__." ". __CLASS__ ."::".__METHOD__);
}
return in_array($this->_plugdir, array_keys($this->_installed));
}
/**
* Check if the currently loaded plugin's addon has errors.
* @return mixed
*/
public function getAddonErrors($e_xxx)
{
if (is_readable(e_PLUGIN.$this->_plugdir."/".$e_xxx.".php"))
{
$content = file_get_contents(e_PLUGIN.$this->_plugdir."/".$e_xxx.".php");
}
else
{
return 2;
}
if(substr($e_xxx, - 4, 4) == '_sql')
{
if(strpos($content,'INSERT INTO')!==false)
{
return array('type'=> 'error', 'msg'=>"INSERT sql commands are not permitted here. Use a ".$this->_plugdir."_setup.php file instead.");
}
else
{
return 0;
}
}
// Generic markup check
if ((substr($content, 0, 5) != '<'.'?php') || ((substr($content, -2, 2) != '?'.'>') && (strrpos($content, '?'.'>') !== FALSE)))
{
return 1;
}
if($e_xxx == 'e_meta' && strpos($content,'