public function edituser() { global $user, $db; // set history expHistory::set('editable', $this->params); expSession::set("userkey", sha1(microtime())); expSession::clearCurrentUserSessionCache(); $id = isset($this->params['id']) ? $this->params['id'] : null; // check to see if we should be editing. You either need to be an admin, or // editing your own account. if ($user->isAdmin() || $user->id == $id) { $u = new user($id); } else { flash('error', gt('You do not have the proper permissions to edit this user')); expHistory::back(); } // $active_extensions = $db->selectColumn('profileextension','classname','active=1', 'rank'); $active_extensions = $db->selectObjects('profileextension', 'active=1', 'rank'); //If there is no image uploaded and the system is not in the development mode, use the default avatar // if(empty($u->image) && !DEVELOPMENT) { if (empty($u->image)) { $u->image = DEFAULT_AVATAR; } assign_to_template(array('edit_user' => $u, 'extensions' => $active_extensions, "userkey" => expSession::get("userkey"))); }
/** * main logout method */ public static function logout() { expSession::logout(); expSession::un_set("permissions"); expSession::un_set('uilevel'); expSession::clearCurrentUserSessionCache(); flash('message', gt('You have been logged out')); redirect_to(array("section" => SITE_DEFAULT_SECTION)); }
/** * copy selected users/groups over from old site * @global db the exponent database object * @return void */ public function migrate_users() { global $db; if (isset($this->params['wipe_groups'])) { $db->delete('group'); $db->delete('groupmembership'); } if (isset($this->params['wipe_users'])) { $db->delete('user', 'id > 1'); } $old_db = $this->connect(); // print_r("<pre>"); // print_r($old_db->selectAndJoinObjects('', '', 'group', 'groupmembership','id', 'group_id', 'name = "Editors"', '')); $gsuccessful = 0; $gfailed = 0; if (!empty($this->params['groups'])) { foreach ($this->params['groups'] as $groupid) { $group = $old_db->selectObject('group', 'id=' . $groupid); $ret = $db->insertObject($group, 'group'); if (empty($ret)) { $gfailed += 1; } else { $gsuccessful += 1; } } } if (!empty($this->params['rep_groups'])) { foreach ($this->params['rep_groups'] as $groupid) { $db->delete('group', 'id=' . $groupid); $group = $old_db->selectObject('group', 'id=' . $groupid); $ret = $db->insertObject($group, 'group'); if (empty($ret)) { $gfailed += 1; } else { $gsuccessful += 1; } } } $successful = 0; $failed = 0; if (!empty($this->params['users'])) { foreach ($this->params['users'] as $userid) { $user = $old_db->selectObject('user', 'id=' . $userid); $ret = $db->insertObject($user, 'user'); if (empty($ret)) { $failed += 1; } else { $successful += 1; } } } if (!empty($this->params['rep_users'])) { foreach ($this->params['rep_users'] as $userid) { $db->delete('user', 'id=' . $userid); $user = $old_db->selectObject('user', 'id=' . $userid); $ret = $db->insertObject($user, 'user'); if (empty($ret)) { $failed += 1; } else { $successful += 1; } } } $users = null; $groups = null; if (!empty($this->params['groups']) && !empty($this->params['rep_groups'])) { $groups = array_merge($this->params['groups'], $this->params['rep_groups']); } elseif (!empty($this->params['groups'])) { $groups = $this->params['groups']; } elseif (!empty($this->params['rep_groups'])) { $groups = $this->params['rep_groups']; } if (!empty($this->params['users']) && !empty($this->params['rep_users'])) { $users = array_merge($this->params['users'], $this->params['rep_users']); } elseif (!empty($this->params['users'])) { $users = $this->params['users']; } elseif (!empty($this->params['rep_users'])) { $users = $this->params['rep_users']; } if (!empty($groups) && !empty($users)) { foreach ($groups as $groupid) { $groupmembers = $old_db->selectObjects('groupmembership', 'group_id=' . $groupid); foreach ($groupmembers as $userid) { if (in_array($userid->member_id, $users)) { $db->insertObject($userid, 'groupmembership'); } } } } flash('message', $successful . ' ' . gt('users and') . ' ' . $gsuccessful . ' ' . gt('groups were imported from') . ' ' . $this->config['database']); if ($failed > 0 || $gfailed > 0) { $msg = ''; if ($failed > 0) { $msg = $failed . ' users '; } if ($gfailed > 0) { if ($msg != '') { $msg .= ' and '; } $msg .= $gfailed . ' groups '; } flash('error', $msg . ' ' . gt('could not be imported from') . ' ' . $this->config['database'] . ' ' . gt('This is usually because a user with the username or group with that name already exists in the database you importing to.')); } expSession::clearCurrentUserSessionCache(); expHistory::back(); }
public static function install_dbtables() { global $db; define('TMP_TABLE_EXISTED', 1); define('TMP_TABLE_INSTALLED', 2); define('TMP_TABLE_FAILED', 3); define('TMP_TABLE_ALTERED', 4); expSession::clearCurrentUserSessionCache(); $tables = array(); // first the core and 1.0 definitions $coredefs = BASE . 'framework/core/definitions'; if (is_readable($coredefs)) { $dh = opendir($coredefs); while (($file = readdir($dh)) !== false) { if (is_readable("{$coredefs}/{$file}") && is_file("{$coredefs}/{$file}") && substr($file, -4, 4) == ".php" && substr($file, -9, 9) != ".info.php") { $tablename = substr($file, 0, -4); $dd = (include "{$coredefs}/{$file}"); $info = null; if (is_readable("{$coredefs}/{$tablename}.info.php")) { $info = (include "{$coredefs}/{$tablename}.info.php"); } if (!$db->tableExists($tablename)) { foreach ($db->createTable($tablename, $dd, $info) as $key => $status) { $tables[$key] = $status; } } else { foreach ($db->alterTable($tablename, $dd, $info) as $key => $status) { if (isset($tables[$key])) { echo "{$tablename}, {$key}<br>"; } if ($status == TABLE_ALTER_FAILED) { $tables[$key] = $status; } else { $tables[$key] = $status == TABLE_ALTER_NOT_NEEDED ? DATABASE_TABLE_EXISTED : DATABASE_TABLE_ALTERED; } } } } } } // then search for module definitions $moddefs = array(BASE . 'themes/' . DISPLAY_THEME . '/modules', BASE . "framework/modules"); foreach ($moddefs as $moddef) { if (is_readable($moddef)) { $dh = opendir($moddef); while (($file = readdir($dh)) !== false) { if (is_dir($moddef . '/' . $file) && ($file != '..' && $file != '.')) { $dirpath = $moddef . '/' . $file . '/definitions'; if (file_exists($dirpath)) { $def_dir = opendir($dirpath); while (($def = readdir($def_dir)) !== false) { // eDebug("$dirpath/$def"); if (is_readable("{$dirpath}/{$def}") && is_file("{$dirpath}/{$def}") && substr($def, -4, 4) == ".php" && substr($def, -9, 9) != ".info.php") { $tablename = substr($def, 0, -4); $dd = (include "{$dirpath}/{$def}"); $info = null; if (is_readable("{$dirpath}/{$tablename}.info.php")) { $info = (include "{$dirpath}/{$tablename}.info.php"); } if (!$db->tableExists($tablename)) { foreach ($db->createTable($tablename, $dd, $info) as $key => $status) { $tables[$key] = $status; } } else { foreach ($db->alterTable($tablename, $dd, $info) as $key => $status) { if (isset($tables[$key])) { echo "{$tablename}, {$key}<br>"; } if ($status == TABLE_ALTER_FAILED) { $tables[$key] = $status; } else { $tables[$key] = $status == TABLE_ALTER_NOT_NEEDED ? DATABASE_TABLE_EXISTED : DATABASE_TABLE_ALTERED; } } } } } } } } } } return $tables; }