diff options
| author | fisharebest <fisharebest@gmail.com> | 2010-04-06 19:11:46 +0000 |
|---|---|---|
| committer | fisharebest <fisharebest@gmail.com> | 2010-04-06 19:11:46 +0000 |
| commit | 4d293786bd369ac5040cabfd0a8a582f94656d5c (patch) | |
| tree | 7ba921b1599654909ac79ded12b823c74050e4c4 /includes | |
| parent | d7d2ae06b834b11f2df13f266e2ee7da68f37c8c (diff) | |
| download | webtrees-4d293786bd369ac5040cabfd0a8a582f94656d5c.tar.gz webtrees-4d293786bd369ac5040cabfd0a8a582f94656d5c.tar.bz2 webtrees-4d293786bd369ac5040cabfd0a8a582f94656d5c.zip | |
Start to refactor module code. Administration and initialisation. NOTE: changes to DB structure.
Diffstat (limited to 'includes')
| -rw-r--r-- | includes/classes/class_menubar.php | 15 | ||||
| -rw-r--r-- | includes/classes/class_module.php | 450 | ||||
| -rw-r--r-- | includes/controllers/individual_ctrl.php | 17 | ||||
| -rw-r--r-- | includes/functions/functions_db.php | 6 |
4 files changed, 139 insertions, 349 deletions
diff --git a/includes/classes/class_menubar.php b/includes/classes/class_menubar.php index 53945017b1..4a2a3f1dda 100644 --- a/includes/classes/class_menubar.php +++ b/includes/classes/class_menubar.php @@ -900,15 +900,14 @@ class MenuBar * @return array */ static function getModuleMenus() { - $modules = array(); - $mods = WT_Module::getActiveList('M', WT_USER_ACCESS_LEVEL); - uasort($mods, "WT_Module::compare_menu_order"); - foreach ($mods as $mod) { - $menu = $mod->getMenu(); - if ($menu) $modules[] = $mod->getMenu(); + $menus=array(); + foreach (WT_Module::getActiveMenus() as $module) { + $menu=$module->getMenu(); + if ($menu) { + $menus[] = $menu; + } } - - return $modules; + return $menus; } /** diff --git a/includes/classes/class_module.php b/includes/classes/class_module.php index 4dcfa19ca3..be1838ff86 100644 --- a/includes/classes/class_module.php +++ b/includes/classes/class_module.php @@ -5,9 +5,6 @@ * webtrees: Web based Family History software * Copyright (C) 2010 webtrees development team. * - * Derived from PhpGedView - * Copyright (C) 2009 John Finlay - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -36,22 +33,22 @@ define('WT_CLASS_MODULE_PHP', ''); // Modules can optionally implement the following interfaces. interface WT_Module_Config { - public function getConfigLink(); // URL of page to edit config + public function getConfigLink(); } interface WT_Module_Menu { - public function defaultMenuOrder(); // 0-127. Use multiples of 10 to allow third-party modules to choose position + public function defaultMenuOrder(); } interface WT_Module_Sidebar { - public function defaultSidebarOrder(); // 0-127. Use multiples of 10 to allow third-party modules to choose position + public function defaultSidebarOrder(); public function getSidebarContent(); public function getSidebarAjaxContent(); public function hasSidebarContent(); } interface WT_Module_Tab { - public function defaultTabOrder(); // 0-127. Use multiples of 10 to allow third-party modules to choose position + public function defaultTabOrder(); public function getTabContent(); public function hasTabContent(); public function canLoadAjax(); @@ -61,28 +58,13 @@ interface WT_Module_Tab { } abstract class WT_Module { - private $id = 0; - private $accessLevel = array(); - private $menuEnabled = array(); - private $tabEnabled = array(); - private $sidebarEnabled = array(); - private $taborder = 99; - private $menuorder = 99; - private $sidebarorder = 99; - - protected $controller; - - public static $default_tabs = array('family_nav', 'personal_facts', 'sources_tab', 'notes', 'media', 'lightbox', 'tree', 'googlemap', 'relatives', 'all_tab'); - public static $default_sidebars = array('descendancy', 'family_nav', 'clippings', 'individuals', 'families'); - public static $default_menus = array('page_menu'); - // Each module must provide the following functions abstract public function getTitle(); // To label tabs, etc. abstract public function getDescription(); // A sentence describing what this module does - // This is the default for all the module's components. - // Returns one of: WT_PRIV_HIDE, WT_PRIV_PUBLIC, WT_PRIV_USER, WT_PRIV_ADMIN + // This is the default for the module and all its components. public function defaultAccessLevel() { + // Returns one of: WT_PRIV_HIDE, WT_PRIV_PUBLIC, WT_PRIV_USER, WT_PRIV_ADMIN return WT_PRIV_PUBLIC; } @@ -91,351 +73,159 @@ abstract class WT_Module { return str_replace('_WT_Module', '', get_class($this)); } - // Reference the parent page's controller - public function &getController() { - return $this->controller; - } - public function setController(&$c) { - $this->controller=$c; - } - - /** - * Get an instance of the desired module class based on a db row - * @param $row - * @return WT_Module - */ - static function &getInstance($row) { - $entry=$row->mod_name; - if (file_exists("modules/$entry/pgv_module.php")) { - include_once("modules/$entry/pgv_module.php"); - $menu_class = $entry."_WT_Module"; - $obj = new $menu_class(); - $obj->setId($row->mod_id); - $obj->setTaborder($row->mod_taborder); - $obj->setMenuorder($row->mod_menuorder); - $obj->setSidebarorder($row->mod_sidebarorder); - return $obj; - } - return null; - } + // Some modules may use the page's controller + protected $controller; + final public function &getController() { return $this->controller; } + final public function setController(&$c) { $this->controller=$c; } - //-- getters and setters - public function getId() { return $this->id; } - public function getTaborder() { return $this->taborder; } - public function getMenuorder() { return $this->menuorder; } - public function getSidebarorder() { return $this->sidebarorder; } - public function getAccessLevel($gedId = WT_GED_ID) { - if (!isset($this->accessLevel[$gedId])) $this->accessLevel[$gedId] = WT_PRIV_PUBLIC; - return $this->accessLevel[$gedId]; - } - public function getMenuEnabled($gedId = WT_GED_ID) { - if (!isset($this->menuEnabled[$gedId])) $this->menuEnabled[$gedId] = WT_PRIV_PUBLIC; - return $this->menuEnabled[$gedId]; - } - public function getTabEnabled($gedId = WT_GED_ID) { - if (!isset($this->tabEnabled[$gedId])) $this->tabEnabled[$gedId] = WT_PRIV_PUBLIC; - return $this->tabEnabled[$gedId]; - } - public function getSidebarEnabled($gedId = WT_GED_ID) { - if (!isset($this->sidebarEnabled[$gedId])) $this->sidebarEnabled[$gedId] = WT_PRIV_PUBLIC; - return $this->sidebarEnabled[$gedId]; - } - public function getAccessLevelArray() { - return $this->accessLevel; - } - public function getMenuEnabledArray() { - return $this->menuEnabled; - } - public function getTabEnabledArray() { - return $this->tabEnabled; - } - public function getSidebarEnabledArray() { - return $this->sidebarEnabled; - } - public function setId($id) { $this->id = $id; } - public function setMenuorder($o) { $this->menuorder = $o; } - public function setTaborder($o) { $this->taborder = $o; } - public function setSidebarorder($o) { $this->sidebarorder = $o; } + final static private function getActiveModulesByComponent($component, $ged_id, $access_level) { + global $TBLPREFIX; - public function setAccessLevel($access, $gedId=WT_GED_ID) { - $this->accessLevel[$gedId] = $access; - } - public function setMenuEnabled($access, $gedId=WT_GED_ID) { - $this->menuEnabled[$gedId] = $access; - } - public function setTabEnabled($access, $gedId=WT_GED_ID) { - $this->tabEnabled[$gedId] = $access; - } - public function setSidebarEnabled($access, $gedId=WT_GED_ID) { - $this->sidebarEnabled[$gedId] = $access; - } - public function setGeneralAccess($type, $access, $gedId) { - switch($type) { - case 'A': - $this->setAccessLevel($access, $gedId); - break; - case 'T': - $this->setTabEnabled($access, $gedId); - break; - case 'M': - $this->setMenuEnabled($access, $gedId); - break; - case 'S': - $this->setSidebarEnabled($access, $gedId); - break; + $module_names=WT_DB::prepare( + "SELECT module_name". + " FROM {$TBLPREFIX}module". + " JOIN {$TBLPREFIX}module_privacy USING (module_name)". + " WHERE gedcom_id=? AND component=? AND status='enabled' AND access_level>=?". + " ORDER BY CASE component WHEN 'menu' THEN menu_order WHEN 'sidebar' THEN sidebar_order WHEN 'tab' THEN tab_order END" + )->execute(array($ged_id, $component, $access_level))->fetchOneColumn(); + $array=array(); + foreach ($module_names as $module_name) { + if (file_exists(WT_ROOT.'modules/'.$module_name.'/pgv_module.php')) { + require_once WT_ROOT.'modules/'.$module_name.'/pgv_module.php'; + $class=$module_name.'_WT_Module'; + $array[$module_name]=new $class(); + } else { + // Module has been deleted from disk? Remove it from the database. + AddToLog("Module {$module_name} has been deleted from disk - deleting from database"); + WT_DB::prepare("DELETE FROM {$TBLPREFIX}module_privacy WHERE module_name=?")->execute(array($module_name)); + WT_DB::prepare("DELETE FROM {$TBLPREFIX}moduley WHERE module_name=?")->execute(array($module_name)); + } } + return $array; } - static function compare_tab_order(&$a, &$b) { - return $a->getTaborder() - $b->getTaborder(); - } - - static function compare_menu_order(&$a, &$b) { - return $a->getMenuorder() - $b->getMenuorder(); - } - - static function compare_sidebar_order(&$a, &$b) { - return $a->getSidebarorder() - $b->getSidebarorder(); + // Get a list of all the active, authorised sidebars + final static public function getActiveMenus($ged_id=WT_GED_ID, $access_level=WT_USER_ACCESS_LEVEL) { + static $menus=null; + if ($menus===null) { + $menus=self::getActiveModulesByComponent('menu', $ged_id, $access_level); + } + return $menus; } - static function compare_name(&$a, &$b) { - return strcmp($a->getName(), $b->getName()); + // Get a list of all the active, authorised sidebars + final static public function getActiveSidebars($ged_id=WT_GED_ID, $access_level=WT_USER_ACCESS_LEVEL) { + static $sidebars=null; + if ($sidebars===null) { + $sidebars=self::getActiveModulesByComponent('sidebar', $ged_id, $access_level); + } + return $sidebars; } - static function getActiveList($type='A', $access = WT_USER_ACCESS_LEVEL, $ged_id = WT_GED_ID) { - global $TBLPREFIX; - - $modules = array(); - $statement=WT_DB::prepare( - "SELECT * FROM {$TBLPREFIX}module JOIN {$TBLPREFIX}module_privacy ON mod_id=mp_mod_id WHERE mp_access>=? AND mp_type='{$type}' AND mp_file=?" - ); - $statement->execute(array($access, $ged_id)); - $entry = ""; - while($row = $statement->fetch()) { - if ($row->mod_name!=$entry) { - $entry = $row->mod_name; - $mod = WT_Module::getInstance($row); - if ($mod) { - $modules[$entry] = $mod; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); - } - else AddToLog("Invalide module ".$entry); - } - else { - $mod = $modules[$entry]; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); - } - + // Get a list of all the active, authorised tabs + final static public function getActiveTabs($ged_id=WT_GED_ID, $access_level=WT_USER_ACCESS_LEVEL) { + static $tabs=null; + if ($tabs===null) { + $tabs=self::getActiveModulesByComponent('tab', $ged_id, $access_level); } - return $modules; + return $tabs; } - static function getActiveListAllGeds($access = WT_USER_ACCESS_LEVEL) { - global $TBLPREFIX; - - $modules = array(); - $statement=WT_DB::prepare( - "SELECT * FROM {$TBLPREFIX}module JOIN {$TBLPREFIX}module_privacy ON mod_id=mp_mod_id WHERE mp_access>=?" - ); - $statement->execute(array($access)); - $entry = ""; - while($row = $statement->fetch()) { - if ($row->mod_name!=$entry) { - $entry = $row->mod_name; - $mod = WT_Module::getInstance($row); - if ($mod) { - $modules[$entry] = $mod; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); + // Get installed modules + final static public function getInstalledModules() { + static $modules=null; + if ($modules===null) { + $dir=opendir(WT_ROOT.'modules'); + while (($file=readdir($dir))!==false) { + if (preg_match('/^[a-z_]+$/', $file) && file_exists(WT_ROOT.'modules/'.$file.'/pgv_module.php')) { + require_once WT_ROOT.'modules/'.$file.'/pgv_module.php'; + $class=$file.'_WT_Module'; + $modules[]=new $class(); } - else AddToLog("Invalide module ".$entry); } - else { - $mod = $modules[$entry]; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); - } - } return $modules; } - static function getInstalledList() { - static $modules; - if ($modules==null) { - $modules = array(); - if (!file_exists("modules")) return $this->modules; - $d = dir("modules"); - while (false !== ($entry = $d->read())) { - if ($entry{0}!="." && $entry!=".svn" && is_dir("modules/$entry")) { - if (file_exists("modules/$entry/pgv_module.php")) { - include_once("modules/$entry/pgv_module.php"); - $menu_class = $entry."_WT_Module"; - $obj = new $menu_class(); - $mod = WT_Module::getModuleByName($entry); - if ($mod!=null) { - $modules[$entry] = $mod; - } else { - $modules[$entry] = $obj; - } - } - } + // Get installed menus + final static public function getInstalledMenus() { + global $TBLPREFIX; + $modules=array(); + foreach (self::getInstalledModules() as $module) { + if ($module instanceof WT_Module_Menu) { + $module->sort=WT_DB::prepare( + "SELECT menu_order FROM {$TBLPREFIX}module WHERE module_name=?" + )->execute(array($module->getName()))->fetchOne(); + $modules[]=$module; } - $d->close(); } + usort($modules, create_function('$x,$y', 'return $x->sort-$y->sort;')); return $modules; } - static function getModuleByName($name) { + // Get installed sidebars + final static public function getInstalledSidebars() { global $TBLPREFIX; - - $stmt = WT_DB::prepare("SELECT * FROM {$TBLPREFIX}module JOIN {$TBLPREFIX}module_privacy ON mod_id=mp_mod_id WHERE mod_name=?"); - $stmt->execute(array($name)); - $row = $stmt->fetchOne(); - $entry = ""; - $mod = null; - while($row = $stmt->fetch()) { - if ($row->mod_name!=$entry) { - $entry = $row->mod_name; - $mod = WT_Module::getInstance($row); - $modules[$entry] = $mod; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); + $modules=array(); + foreach (self::getInstalledModules() as $module) { + if ($module instanceof WT_Module_Sidebar) { + $module->sort=WT_DB::prepare( + "SELECT sidebar_order FROM {$TBLPREFIX}module WHERE module_name=?" + )->execute(array($module->getName()))->fetchOne(); + $modules[]=$module; } - else { - $mod = $modules[$entry]; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); - } - } - return $mod; + usort($modules, create_function('$x,$y', 'return $x->sort-$y->sort;')); + return $modules; } - static function getById($id) { + // Get installed tabs + final static public function getInstalledTabs() { global $TBLPREFIX; - - $stmt = WT_DB::prepare("SELECT * FROM {$TBLPREFIX}module JOIN {$TBLPREFIX}module_privacy ON mod_id=mp_mod_id WHERE mod_id=?"); - $stmt->execute(array($id)); - $row = $stmt->fetchOne(); - $entry = ""; - $mod = null; - while($row = $stmt->fetch()) { - if ($row->mod_name!=$entry) { - $entry = $row->mod_name; - $mod = WT_Module::getInstance($row); - $modules[$entry] = $mod; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); - } - else { - $mod = $modules[$entry]; - $mod->setGeneralAccess($row->mp_type, $row->mp_access, $row->mp_file); + $modules=array(); + foreach (self::getInstalledModules() as $module) { + if ($module instanceof WT_Module_Tab) { + $module->sort=WT_DB::prepare( + "SELECT tab_order FROM {$TBLPREFIX}module WHERE module_name=?" + )->execute(array($module->getName()))->fetchOne(); + $modules[]=$module; } - } - return $mod; + usort($modules, create_function('$x,$y', 'return $x->sort-$y->sort;')); + return $modules; } - /** - * Insert or Update a module in the database - * @param $mod WT_Module - * @return null - */ - static function updateModule(&$mod) { + // + final static public function setDefaultAccess($ged_id) { global $TBLPREFIX; - if ($mod->getId()==0) { - $sql = "insert into {$TBLPREFIX}module (mod_id, mod_name, mod_description, mod_taborder, mod_menuorder, mod_sidebarorder) values(?,?,?,?,?,?)"; - $stmt = WT_DB::prepare($sql); - $mod->setId(get_next_id("module","mod_id")); - $stmt->execute(array($mod->getId(),$mod->getName(), $mod->getDescription(), $mod->getTaborder(), $mod->getMenuorder(), $mod->getSidebarorder())); - $sql = "insert into {$TBLPREFIX}module_privacy (mp_mod_id,mp_file,mp_access,mp_type) values(?,?,?,?)"; - $stmt = WT_DB::prepare($sql); - foreach ($mod->getAccessLevelArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'A')); - } - foreach ($mod->getMenuEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'M')); - } - foreach ($mod->getTabEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'T')); - } - foreach ($mod->getSidebarEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'S')); - } + foreach (self::getInstalledModules() as $module) { + WT_DB::prepare("INSERT IGNORE INTO {$TBLPREFIX}module (module_name, menu_order, sidebar_order, tab_order) VALUES (?, ?, ?, ?)") + ->execute(array( + $module->getName(), + $module instanceof WT_Module_Menu ? $module->defaultMenuOrder () : null, + $module instanceof WT_Module_Sidebar ? $module->defaultSidebarOrder() : null, + $module instanceof WT_Module_Tab ? $module->defaultTabOrder () : null + )); } - else { - $sql = "UPDATE {$TBLPREFIX}module SET mod_name=?, mod_description=?, mod_taborder=?, mod_menuorder=?, mod_sidebarorder=? WHERE mod_id=?"; - $stmt = WT_DB::prepare($sql); - $stmt->execute(array($mod->getName(), $mod->getDescription(), $mod->getTaborder(), $mod->getMenuorder(), $mod->getSidebarorder(), $mod->getId())); - - //-- delete the old privacy settings - $sql = "delete from {$TBLPREFIX}module_privacy where mp_mod_id=?"; - $stmt = WT_DB::prepare($sql); - $stmt->execute(array($mod->getId())); - - //-- store the new privacy settings - $sql = "insert into {$TBLPREFIX}module_privacy (mp_mod_id,mp_file,mp_access,mp_type) values(?,?,?,?)"; - $stmt = WT_DB::prepare($sql); - foreach ($mod->getAccessLevelArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'A')); - } - foreach ($mod->getMenuEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'M')); - } - foreach ($mod->getTabEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'T')); - } - foreach ($mod->getSidebarEnabledArray() as $ged_id=>$mp) { - $stmt->execute(array($mod->getId(), $ged_id, $mp, 'S')); - } + WT_DB::prepare("DELETE FROM {$TBLPREFIX}module_privacy WHERE gedcom_id=?")->execute(array($ged_id)); + foreach (self::getInstalledMenus() as $module) { + WT_DB::prepare( + "INSERT INTO {$TBLPREFIX}module_privacy (module_name, gedcom_id, component, access_level) VALUES (?, ?, 'menu', ?)" + )->execute(array($module->getName(), $ged_id, $module->defaultAccessLevel())); } - } - - static function setDefaultTabs($ged_id) { - $modules = WT_Module::getInstalledList(); - $taborder = 1; - foreach(self::$default_tabs as $modname) { - if (isset($modules[$modname])) { - $mod = $modules[$modname]; - if ($mod instanceof WT_Module_Tab) { - $mod->setTaborder($taborder); - $mod->setAccessLevel(WT_PRIV_PUBLIC, $ged_id); - $mod->setTabEnabled(WT_PRIV_PUBLIC, $ged_id); - WT_Module::updateModule($mod); - $taborder++; - } - } + foreach (self::getInstalledSidebars() as $module) { + WT_DB::prepare( + "INSERT INTO {$TBLPREFIX}module_privacy (module_name, gedcom_id, component, access_level) VALUES (?, ?, 'sidebar', ?)" + )->execute(array($module->getName(), $ged_id, $module->defaultAccessLevel())); } - } - - static function setDefaultMenus($ged_id) { - $modules = WT_Module::getInstalledList(); - $taborder = 0; - foreach(self::$default_menus as $modname) { - if (isset($modules[$modname])) { - $mod = $modules[$modname]; - if ($mod instanceof WT_Module_Menu) { - $mod->setMenuorder($taborder); - $mod->setAccessLevel(WT_PRIV_PUBLIC, $ged_id); - $mod->setMenuEnabled(WT_PRIV_PUBLIC, $ged_id); - WT_Module::updateModule($mod); - $taborder++; - } - } + foreach (self::getInstalledTabs() as $module) { + WT_DB::prepare( + "INSERT INTO {$TBLPREFIX}module_privacy (module_name, gedcom_id, component, access_level) VALUES (?, ?, 'tab', ?)" + )->execute(array($module->getName(), $ged_id, $module->defaultAccessLevel())); } } - static function setDefaultSidebars($ged_id) { - $modules = WT_Module::getInstalledList(); - $taborder = 0; - foreach(self::$default_sidebars as $modname) { - if (isset($modules[$modname])) { - $mod = $modules[$modname]; - if ($mod instanceof WT_Module_Sidebar) { - $mod->setSidebarorder($taborder); - $mod->setAccessLevel(WT_PRIV_PUBLIC, $ged_id); - $mod->setSidebarEnabled(WT_PRIV_PUBLIC, $ged_id); - WT_Module::updateModule($mod); - $taborder++; - } - } - } + static public function compare_name(&$a, &$b) { + return strcmp($a->getName(), $b->getName()); } } -?> diff --git a/includes/controllers/individual_ctrl.php b/includes/controllers/individual_ctrl.php index bc728d8d1b..9bedefbc5e 100644 --- a/includes/controllers/individual_ctrl.php +++ b/includes/controllers/individual_ctrl.php @@ -253,19 +253,16 @@ class IndividualControllerRoot extends BaseController { */ } - $this->modules = WT_Module::getActiveList('T'); - uasort($this->modules, "WT_Module::compare_tab_order"); + $this->modules = WT_Module::getActiveTabs(); $count = 0; if (empty($this->default_tab)) $this->default_tab=0; foreach($this->modules as $mod) { - if ($mod instanceof WT_Module_Tab) { - $mod->setController($this); - if ($mod->hasTabContent() || WT_USER_CAN_EDIT) { - //-- convert default tab as name to number - if ($mod->getName()===$this->default_tab) $this->default_tab = $count; - if ($this->static_tab==null) $this->static_tab = $mod; - else $count++; - } + $mod->setController($this); + if ($mod->hasTabContent() || WT_USER_CAN_EDIT) { + //-- convert default tab as name to number + if ($mod->getName()===$this->default_tab) $this->default_tab = $count; + if ($this->static_tab==null) $this->static_tab = $mod; + else $count++; } } if ($this->default_tab<0 || $this->default_tab > count($this->modules)-1) $this->default_tab=0; diff --git a/includes/functions/functions_db.php b/includes/functions/functions_db.php index d3780957c8..d385fbfb7c 100644 --- a/includes/functions/functions_db.php +++ b/includes/functions/functions_db.php @@ -1922,7 +1922,7 @@ function delete_gedcom($ged_id) { WT_DB::prepare("DELETE FROM {$TBLPREFIX}link WHERE l_file =?")->execute(array($ged_id)); WT_DB::prepare("DELETE FROM {$TBLPREFIX}media WHERE m_gedfile =?")->execute(array($ged_id)); WT_DB::prepare("DELETE FROM {$TBLPREFIX}media_mapping WHERE mm_gedfile=?")->execute(array($ged_id)); - WT_DB::prepare("DELETE FROM {$TBLPREFIX}module_privacy WHERE mp_file =?")->execute(array($ged_id)); + WT_DB::prepare("DELETE FROM {$TBLPREFIX}module_privacy WHERE gedcom_id =?")->execute(array($ged_id)); WT_DB::prepare("DELETE FROM {$TBLPREFIX}mutex WHERE mx_name =?")->execute(array($ged )); WT_DB::prepare("DELETE FROM {$TBLPREFIX}name WHERE n_file =?")->execute(array($ged_id)); WT_DB::prepare("DELETE FROM {$TBLPREFIX}news WHERE n_username=?")->execute(array($ged )); @@ -2487,6 +2487,10 @@ function get_id_from_gedcom($ged_name, $create=false) { try { WT_DB::prepare("INSERT INTO {$TBLPREFIX}gedcom (gedcom_name) VALUES (?)") ->execute(array($ged_name)); + $ged_id=WT_DB::getInstance()->lastInsertId(); + require_once WT_ROOT.'includes/classes/class_module.php'; + WT_Module::setDefaultAccess($ged_id); + return $ged_id; } catch (PDOException $ex) { // The gedcom already exists - can't create } |
