| // +---------------------------------------------------------------------------+ // $Id$ /** * Data access methods for the default module. * * @package Default * @author Demian Turner * @copyright Demian Turner 2005 */ class DefaultDAO extends SGL_Manager { /** * Constructor - set default resources. * * @return DefaultDAO */ function DefaultDAO() { parent::SGL_Manager(); } /** * Returns a singleton DefaultDAO instance. * * example usage: * $da = & DefaultDAO::singleton(); * warning: in order to work correctly, the DA * singleton must be instantiated statically and * by reference * * @access public * @static * @return DefaultDAO reference to DefaultDAO object */ function &singleton() { static $instance; // If the instance is not there, create one if (!isset($instance)) { $instance = new DefaultDAO(); } return $instance; } // modules /** * Returns true if module record exists in db. * * @return boolean * @deprecated use SGL::moduleIsEnabled($moduleName) instead */ function moduleIsRegistered($moduleName) { $query = " SELECT module_id FROM {$this->conf['table']['module']} WHERE name = '$moduleName'"; $exists = $this->dbh->getOne($query); return ! is_null($exists); } /** * Returns an array of all modules. * * @param integer $type * @return array */ function getModuleHash($type = '') { SGL::logMessage(null, PEAR_LOG_DEBUG); switch ($type) { case SGL_RET_ID_VALUE: $query = " SELECT module_id, title FROM {$this->conf['table']['module']} ORDER BY module_id"; $aMods = $this->dbh->getAssoc($query); break; case SGL_RET_NAME_VALUE: default: $query = " SELECT name, title FROM {$this->conf['table']['module']} ORDER BY name"; $aModules = $this->dbh->getAll($query); foreach ($aModules as $k => $oVal) { if ($oVal->name == 'documentor') { continue; } $aMods[$oVal->name] = $oVal->title; } break; } return $aMods; } function getAllModules() { $query = " SELECT module_id, is_configurable, name, title, description, admin_uri, icon FROM {$this->conf['table']['module']} ORDER BY module_id"; $aModules = $this->dbh->getAll($query); return $aModules; } /** * Returns module id by perm id. * * @param integer $permId * @return integer */ function getModuleIdByPermId($permId = null) { SGL::logMessage(null, PEAR_LOG_DEBUG); $permId = ($permId === null) ? 0 : $permId; $query = " SELECT module_id FROM {$this->conf['table']['permission']} WHERE permission_id = $permId "; $moduleId = $this->dbh->getOne($query); return $moduleId; } /** * Give the module ID, delete relevant perms. * * @param integer $moduleId * @return boolean * * @todo move to UserDAO */ function deletePermsByModuleId($moduleId) { $query = " DELETE FROM {$this->conf['table']['permission']} WHERE module_id = " . $moduleId; $ok = $this->dbh->query($query); return $ok; } function getPermNamesByModuleId($moduleId) { SGL::logMessage(null, PEAR_LOG_DEBUG); $query = " SELECT name FROM {$this->conf['table']['permission']} WHERE module_id = $moduleId "; $aPermNames = $this->dbh->getCol($query); return $aPermNames; } function getPackagesByChannel($channel='phpkitchen') { require_once 'PEAR/Registry.php'; $registry = new PEAR_Registry('/usr/local/lib/php'); #$registry = new PEAR_Registry(SGL_LIB_PEAR_DIR); $aSglModules = $registry->_listPackages($channel); return $aSglModules; } /** * Returns a DataObjects Module object. * * @param integer $id optional module id * @return object A DataObjects module object */ function getModuleById($id = null) { require_once 'DB/DataObject.php'; $oModule = DB_DataObject::factory($this->conf['table']['module']); if (!is_null($id)) { $oModule->get($id); } return $oModule; } function getModuleByName($name = null) { require_once 'DB/DataObject.php'; $oModule = DB_DataObject::factory($this->conf['table']['module']); if (!is_null($name)) { $oModule->get('name', $name); } return $oModule; } function addModule($oModule) { SGL_DB::setConnection(); if (!isset($oModule->module_id)) { $oModule->module_id = $this->dbh->nextId($this->conf['table']['module']); } $oModule->is_configurable = 1; $oModule->title = ucfirst($oModule->name); $ok = $oModule->insert(); return $ok; } /** * Given the perm name, return the perm ID. * * @param string $permName * @return integer * * @todo move to UserDAO */ function getPermissionIdByPermName($permName) { $query = " SELECT permission_id FROM {$this->conf['table']['permission']} WHERE name = '$permName' "; $permId = $this->dbh->getOne($query); return $permId; } /** * Given the perm ID, delete the relevant record from role_permission. * * @param integer $permId * @return mixed * * @todo move to UserDAO */ function deleteRolePermissionByPermId($permId) { $query = " DELETE FROM {$this->conf['table']['role_permission']} WHERE permission_id = $permId "; return $this->dbh->query($query); } } ?>