mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 12:48:24 +01:00
Closes #4745 - check for xml/install.xml during plugin installation.
This commit is contained in:
parent
412b0b2efe
commit
ba82fec626
@ -3115,6 +3115,18 @@ class e107plugin
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
$xmlInstallStatus = $this->XmlInstallXml($function, $plug_vars['folder']);
|
||||
|
||||
if($xmlInstallStatus)
|
||||
{
|
||||
e107::getMessage()->addDebug("Default content added to table(s).");
|
||||
}
|
||||
elseif($xmlInstallStatus === false)
|
||||
{
|
||||
e107::getMessage()->addDebug("Failed to add content to table(s).");
|
||||
}
|
||||
|
||||
// Run custom {plugin}_setup install/upgrade etc. for INSERT, ALTER etc. etc. etc.
|
||||
// Call any custom post functions defined in <plugin>_setup.php or the deprecated <management> section
|
||||
if (!$this->execute_function($plug['plugin_path'], $function, 'post'))
|
||||
@ -3140,6 +3152,41 @@ class e107plugin
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for /xml/install.xml file and import database content only.
|
||||
* @param string $function
|
||||
* @param string $folder
|
||||
* @return bool|null
|
||||
*/
|
||||
function XmlInstallXml($function, $folder)
|
||||
{
|
||||
|
||||
if($function !== 'install')
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->log("Running ".__FUNCTION__);
|
||||
|
||||
$path = e_PLUGIN.$folder.'/xml/install.xml';
|
||||
|
||||
if(!file_exists($path))
|
||||
{
|
||||
$this->log("No xml/install.xml file found.");
|
||||
return null;
|
||||
}
|
||||
|
||||
$ret = e107::getXml()->e107Import($path, 'install');
|
||||
|
||||
if(!empty($ret['success']))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $plug_vars
|
||||
|
@ -1271,7 +1271,7 @@ class xmlClass
|
||||
{
|
||||
e107::getPlugConfig($type)->setPref($pArray);
|
||||
}
|
||||
else // 'add' only new prefs
|
||||
elseif($mode === 'add') // 'add' only new prefs
|
||||
{
|
||||
foreach ($pArray as $pname => $pval)
|
||||
{
|
||||
@ -1301,7 +1301,7 @@ class xmlClass
|
||||
{
|
||||
e107::getThemeConfig($type)->setPref($pArray);
|
||||
}
|
||||
else // 'add' only new prefs
|
||||
elseif($mode === 'add') // 'add' only new prefs
|
||||
{
|
||||
foreach ($pArray as $pname => $pval)
|
||||
{
|
||||
@ -1322,15 +1322,21 @@ class xmlClass
|
||||
|
||||
if(!empty($xmlArray['database']))
|
||||
{
|
||||
|
||||
foreach($xmlArray['database']['dbTable'] as $val)
|
||||
{
|
||||
$table = $val['@attributes']['name'];
|
||||
|
||||
|
||||
if(!isset($val['item']))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if($mode === 'install' && !$sql->isEmpty($table)) // install mode - ignore import when table contains data.
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach($val['item'] as $item)
|
||||
{
|
||||
$insert_array = array();
|
||||
@ -1342,11 +1348,11 @@ class xmlClass
|
||||
$insert_array[$fieldkey] = $fieldval;
|
||||
|
||||
}
|
||||
if(($mode === "replace") && $sql->replace($table, $insert_array)!==FALSE)
|
||||
if(($mode === "replace") && $sql->replace($table, $insert_array)!==false)
|
||||
{
|
||||
$ret['success'][] = $table;
|
||||
}
|
||||
elseif(($mode == "add") && $sql->insert($table, $insert_array)!==FALSE)
|
||||
elseif($sql->insert($table, $insert_array)!==false)
|
||||
{
|
||||
$ret['success'][] = $table;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user