summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorfisharebest <fisharebest@gmail.com>2010-04-06 19:11:46 +0000
committerfisharebest <fisharebest@gmail.com>2010-04-06 19:11:46 +0000
commit4d293786bd369ac5040cabfd0a8a582f94656d5c (patch)
tree7ba921b1599654909ac79ded12b823c74050e4c4 /includes
parentd7d2ae06b834b11f2df13f266e2ee7da68f37c8c (diff)
downloadwebtrees-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.php15
-rw-r--r--includes/classes/class_module.php450
-rw-r--r--includes/controllers/individual_ctrl.php17
-rw-r--r--includes/functions/functions_db.php6
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
}