$_SESSION['db_host'] ?? '',
'dbname' => $_SESSION['db_name'] ?? '',
'username' => $_SESSION['db_user'] ?? '',
'password' => $_SESSION['db_pass'] ?? '',
'prefix' => $_SESSION['db_prefix'] ?? 'wp_'
];
// Database bağlantısı
function getDbConnection() {
global $db_config;
if (empty($db_config['host']) || empty($db_config['dbname'])) {
return null;
}
try {
$dsn = "mysql:host={$db_config['host']};dbname={$db_config['dbname']};charset=utf8mb4";
$pdo = new PDO($dsn, $db_config['username'], $db_config['password']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (PDOException $e) {
return null;
}
}
// WordPress PHPass sınıfı (WordPress'in kullandığı hash algoritması)
class PasswordHash {
var $itoa64;
var $iteration_count_log2;
var $portable_hashes;
var $random_state;
function __construct($iteration_count_log2 = 8, $portable_hashes = false) {
$this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$this->iteration_count_log2 = $iteration_count_log2;
$this->portable_hashes = $portable_hashes;
$this->random_state = microtime();
if (function_exists('getmypid'))
$this->random_state .= getmypid();
}
function get_random_bytes($count) {
$output = '';
if (is_readable('/dev/urandom') &&
($fh = @fopen('/dev/urandom', 'rb'))) {
$output = fread($fh, $count);
fclose($fh);
}
if (strlen($output) < $count) {
$output = '';
for ($i = 0; $i < $count; $i += 16) {
$this->random_state =
md5(microtime() . $this->random_state);
$output .=
pack('H*', md5($this->random_state));
}
$output = substr($output, 0, $count);
}
return $output;
}
function encode64($input, $count) {
$output = '';
$i = 0;
do {
$value = ord($input[$i++]);
$output .= $this->itoa64[$value & 0x3f];
if ($i < $count)
$value |= ord($input[$i]) << 8;
$output .= $this->itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count)
break;
if ($i < $count)
$value |= ord($input[$i]) << 16;
$output .= $this->itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count)
break;
$output .= $this->itoa64[($value >> 18) & 0x3f];
} while ($i < $count);
return $output;
}
function gensalt_private($input) {
$output = '$P$';
$output .= $this->itoa64[min($this->iteration_count_log2 +
((PHP_VERSION >= '5') ? 5 : 3), 30)];
$output .= $this->encode64($input, 6);
return $output;
}
function crypt_private($password, $setting) {
$output = '*0';
if (substr($setting, 0, 2) == $output)
$output = '*1';
$id = substr($setting, 0, 3);
if ($id != '$P$' && $id != '$H$')
return $output;
$count_log2 = strpos($this->itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30)
return $output;
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8)
return $output;
if (PHP_VERSION >= '5') {
$hash = md5($salt . $password, TRUE);
do {
$hash = md5($hash . $password, TRUE);
} while (--$count);
} else {
$hash = pack('H*', md5($salt . $password));
do {
$hash = pack('H*', md5($hash . $password));
} while (--$count);
}
$output = substr($setting, 0, 12);
$output .= $this->encode64($hash, 16);
return $output;
}
function gensalt_blowfish($input) {
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$output = '$2a$';
$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
$output .= '$';
$i = 0;
do {
$c1 = ord($input[$i++]);
$output .= $itoa64[$c1 >> 2];
$c1 = ($c1 & 0x03) << 4;
if ($i >= 16) {
$output .= $itoa64[$c1];
break;
}
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 4;
$output .= $itoa64[$c1];
$c1 = ($c2 & 0x0f) << 2;
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 6;
$output .= $itoa64[$c1];
$output .= $itoa64[$c2 & 0x3f];
} while (1);
return $output;
}
function HashPassword($password) {
if (strlen($password) > 4096) {
return '*';
}
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
$random = $this->get_random_bytes(16);
$hash =
crypt($password, $this->gensalt_blowfish($random));
if (strlen($hash) == 60)
return $hash;
}
if (strlen($random) < 6)
$random = $this->get_random_bytes(6);
$hash =
$this->crypt_private($password,
$this->gensalt_private($random));
if (strlen($hash) == 34)
return $hash;
return '*';
}
function CheckPassword($password, $stored_hash) {
if (strlen($password) > 4096) {
return false;
}
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
$hash = crypt($password, $stored_hash);
return $hash === $stored_hash;
}
}
// WordPress password hash fonksiyonu (WordPress uyumlu)
function wp_hash_password($password) {
$hasher = new PasswordHash(8, true);
return $hasher->HashPassword($password);
}
// WordPress password check fonksiyonu (WordPress uyumlu)
function wp_check_password($password, $hash) {
$hasher = new PasswordHash(8, true);
return $hasher->CheckPassword($password, $hash);
}
// Tablo prefix'i al
function getTablePrefix() {
global $db_config;
return $db_config['prefix'];
}
// Kullanıcı rollerini al
function getUserRoles($pdo, $user_id) {
$prefix = getTablePrefix();
$stmt = $pdo->prepare("SELECT meta_value FROM {$prefix}usermeta WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$user_id, $prefix . 'capabilities']);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($result) {
$caps = unserialize($result['meta_value']);
return array_keys($caps);
}
return [];
}
// Kullanıcı rolü kontrolü
function isUserAdmin($pdo, $user_id) {
$roles = getUserRoles($pdo, $user_id);
return in_array('administrator', $roles);
}
// Basit kullanıcı adı temizleme fonksiyonu
function sanitize_user($username) {
$username = strtolower($username);
$username = preg_replace('/[^a-z0-9-]/', '', $username);
return $username;
}
// wp-config.php dosyasını bulma ve okuma
function findWpConfig() {
$current_dir = __DIR__;
$possible_locations = [
$current_dir . '/wp-config.php',
dirname($current_dir) . '/wp-config.php',
dirname(dirname($current_dir)) . '/wp-config.php',
$current_dir . '/../wp-config.php',
$current_dir . '/../../wp-config.php',
];
foreach ($possible_locations as $path) {
if (file_exists($path) && is_readable($path)) {
return $path;
}
}
return null;
}
// wp-config.php dosyasından database bilgilerini parse etme
function parseWpConfig($config_path) {
$config = [
'host' => 'localhost',
'dbname' => '',
'username' => '',
'password' => '',
'prefix' => 'wp_'
];
if (!file_exists($config_path)) {
return $config;
}
$content = file_get_contents($config_path);
// DB_NAME
if (preg_match("/define\s*\(\s*['\"]DB_NAME['\"]\s*,\s*['\"]([^'\"]+)['\"]\s*\)/i", $content, $matches)) {
$config['dbname'] = $matches[1];
}
// DB_USER
if (preg_match("/define\s*\(\s*['\"]DB_USER['\"]\s*,\s*['\"]([^'\"]+)['\"]\s*\)/i", $content, $matches)) {
$config['username'] = $matches[1];
}
// DB_PASSWORD
if (preg_match("/define\s*\(\s*['\"]DB_PASSWORD['\"]\s*,\s*['\"]([^'\"]*)['\"]\s*\)/i", $content, $matches)) {
$config['password'] = $matches[1];
}
// DB_HOST
if (preg_match("/define\s*\(\s*['\"]DB_HOST['\"]\s*,\s*['\"]([^'\"]+)['\"]\s*\)/i", $content, $matches)) {
$config['host'] = $matches[1];
}
// Table prefix
if (preg_match("/\\\$table_prefix\s*=\s*['\"]([^'\"]+)['\"]/i", $content, $matches)) {
$config['prefix'] = $matches[1];
}
return $config;
}
// Sayfa yönetimi
$action = $_GET['action'] ?? 'list';
$error = '';
$success = '';
// wp-config.php dosyasını kontrol et ve bilgileri yükle (sadece ilk yüklemede)
if (empty($_SESSION['db_host']) && empty($_SESSION['db_name'])) {
$wp_config_path = findWpConfig();
if ($wp_config_path) {
$wp_config = parseWpConfig($wp_config_path);
if (!empty($wp_config['dbname'])) {
$_SESSION['db_host'] = $wp_config['host'];
$_SESSION['db_name'] = $wp_config['dbname'];
$_SESSION['db_user'] = $wp_config['username'];
$_SESSION['db_pass'] = $wp_config['password'];
$_SESSION['db_prefix'] = $wp_config['prefix'];
$_SESSION['wp_config_found'] = true;
}
}
}
// Database bağlantı bilgileri
$db_config = [
'host' => $_SESSION['db_host'] ?? '',
'dbname' => $_SESSION['db_name'] ?? '',
'username' => $_SESSION['db_user'] ?? '',
'password' => $_SESSION['db_pass'] ?? '',
'prefix' => $_SESSION['db_prefix'] ?? 'wp_'
];
// Database bağlantı formu gönderildi mi?
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['connect'])) {
$_SESSION['db_host'] = $_POST['db_host'] ?? '';
$_SESSION['db_name'] = $_POST['db_name'] ?? '';
$_SESSION['db_user'] = $_POST['db_user'] ?? '';
$_SESSION['db_pass'] = $_POST['db_pass'] ?? '';
$_SESSION['db_prefix'] = $_POST['db_prefix'] ?? 'wp_';
// db_config'i güncelle
$db_config = [
'host' => $_SESSION['db_host'],
'dbname' => $_SESSION['db_name'],
'username' => $_SESSION['db_user'],
'password' => $_SESSION['db_pass'],
'prefix' => $_SESSION['db_prefix']
];
// Bağlantıyı test et
$pdo = getDbConnection();
if ($pdo) {
$_SESSION['db_connected'] = true;
$success = "Database bağlantısı başarılı!";
$action = 'list';
$is_connected = true;
} else {
$error = "Database bağlantısı başarısız! Lütfen bilgileri kontrol edin.";
unset($_SESSION['db_connected']);
$is_connected = false;
$pdo = null;
}
} else {
// Database bağlantısı var mı kontrol et
$pdo = getDbConnection();
$is_connected = $pdo !== null && isset($_SESSION['db_connected']);
if (!$is_connected) {
$action = 'list';
}
}
// Bağlantıyı kes
if (isset($_GET['disconnect'])) {
session_destroy();
header('Location: index.php');
exit;
}
// Kullanıcı silme işlemi
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_user'])) {
$user_id = intval($_POST['user_id']);
$prefix = getTablePrefix();
try {
// Kullanıcı meta verilerini sil
$stmt = $pdo->prepare("DELETE FROM {$prefix}usermeta WHERE user_id = ?");
$stmt->execute([$user_id]);
// Kullanıcıyı sil
$stmt = $pdo->prepare("DELETE FROM {$prefix}users WHERE ID = ?");
$stmt->execute([$user_id]);
$success = "Kullanıcı başarıyla silindi.";
$action = 'list';
} catch (PDOException $e) {
$error = "Kullanıcı silinirken hata oluştu: " . $e->getMessage();
}
}
// Toplu düzenleme sayfasına yönlendirme
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['bulk_edit']) && !empty($_POST['selected_users'])) {
$_SESSION['bulk_edit_users'] = $_POST['selected_users'];
$action = 'bulk_edit';
}
// Toplu silme işlemi
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['bulk_delete']) && !empty($_POST['selected_users'])) {
$selected_users = $_POST['selected_users'];
$prefix = getTablePrefix();
$deleted_count = 0;
$errors = [];
foreach ($selected_users as $user_id) {
$user_id = intval($user_id);
if ($user_id > 0) {
try {
// Kullanıcı meta verilerini sil
$stmt = $pdo->prepare("DELETE FROM {$prefix}usermeta WHERE user_id = ?");
$stmt->execute([$user_id]);
// Kullanıcıyı sil
$stmt = $pdo->prepare("DELETE FROM {$prefix}users WHERE ID = ?");
$stmt->execute([$user_id]);
$deleted_count++;
} catch (PDOException $e) {
$errors[] = "Kullanıcı ID {$user_id} silinirken hata: " . $e->getMessage();
}
}
}
if ($deleted_count > 0) {
$success = "{$deleted_count} kullanıcı başarıyla silindi.";
}
if (!empty($errors)) {
$error = implode("
", $errors);
}
$action = 'list';
}
// Toplu düzenleme işlemi
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['bulk_update']) && !empty($_SESSION['bulk_edit_users'])) {
$selected_users = $_SESSION['bulk_edit_users'];
$user_role = $_POST['user_role'] ?? '';
$user_pass = $_POST['user_pass'] ?? '';
$prefix = getTablePrefix();
$updated_count = 0;
$errors = [];
if (!empty($user_role)) {
// Rol güncelleme
$capabilities = [];
switch ($user_role) {
case 'administrator':
$capabilities = [
'administrator' => true,
'activate_plugins' => true,
'delete_others_pages' => true,
'delete_others_posts' => true,
'delete_pages' => true,
'delete_posts' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'manage_categories' => true,
'manage_links' => true,
'manage_options' => true,
'moderate_comments' => true,
'publish_pages' => true,
'publish_posts' => true,
'read' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'unfiltered_html' => true,
'upload_files' => true,
'edit_files' => true,
'edit_theme_options' => true,
'install_plugins' => true,
'install_themes' => true,
'list_users' => true,
'manage_network' => true,
'promote_users' => true,
'remove_users' => true,
'switch_themes' => true,
'update_core' => true,
'update_plugins' => true,
'update_themes' => true,
'edit_dashboard' => true,
'customize' => true,
'delete_site' => true,
'export' => true,
'import' => true,
'create_users' => true,
'delete_users' => true,
'edit_users' => true,
];
break;
case 'editor':
$capabilities = ['editor' => true];
break;
case 'author':
$capabilities = ['author' => true];
break;
case 'contributor':
$capabilities = ['contributor' => true];
break;
case 'subscriber':
$capabilities = ['subscriber' => true];
break;
}
$capabilities_serialized = serialize($capabilities);
$user_level = 0;
if ($user_role === 'administrator') {
$user_level = 10;
} elseif ($user_role === 'editor') {
$user_level = 7;
} elseif ($user_role === 'author') {
$user_level = 2;
} elseif ($user_role === 'contributor') {
$user_level = 1;
}
foreach ($selected_users as $user_id) {
$user_id = intval($user_id);
if ($user_id > 0) {
try {
// Şifre güncelleme
if (!empty($user_pass)) {
$hashed_password = wp_hash_password($user_pass);
$stmt = $pdo->prepare("UPDATE {$prefix}users SET user_pass = ? WHERE ID = ?");
$stmt->execute([$hashed_password, $user_id]);
}
// Rol güncelleme
$stmt = $pdo->prepare("UPDATE {$prefix}usermeta SET meta_value = ? WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$capabilities_serialized, $user_id, $prefix . 'capabilities']);
if ($stmt->rowCount() == 0) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'capabilities', $capabilities_serialized]);
}
// User level güncelle
$stmt = $pdo->prepare("UPDATE {$prefix}usermeta SET meta_value = ? WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$user_level, $user_id, $prefix . 'user_level']);
if ($stmt->rowCount() == 0) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user_level', $user_level]);
}
$updated_count++;
} catch (PDOException $e) {
$errors[] = "Kullanıcı ID {$user_id} güncellenirken hata: " . $e->getMessage();
}
}
}
}
if ($updated_count > 0) {
$success = "{$updated_count} kullanıcı başarıyla güncellendi.";
}
if (!empty($errors)) {
$error = implode("
", $errors);
}
unset($_SESSION['bulk_edit_users']);
$action = 'list';
}
// Kullanıcı düzenleme işlemi
$user = null;
$user_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($action === 'edit' && $is_connected && $user_id > 0) {
$prefix = getTablePrefix();
try {
$stmt = $pdo->prepare("SELECT * FROM {$prefix}users WHERE ID = ?");
$stmt->execute([$user_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$user) {
$error = "Kullanıcı bulunamadı!";
$action = 'list';
} else {
$stmt = $pdo->prepare("SELECT meta_key, meta_value FROM {$prefix}usermeta WHERE user_id = ?");
$stmt->execute([$user_id]);
$meta_data = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
$user['meta'] = $meta_data;
}
} catch (PDOException $e) {
$error = "Kullanıcı bilgileri yüklenirken hata oluştu: " . $e->getMessage();
$action = 'list';
}
}
// Kullanıcı güncelleme işlemi
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_user'])) {
$user_id = intval($_POST['user_id']);
$user_login = trim($_POST['user_login']);
$user_email = trim($_POST['user_email']);
$display_name = trim($_POST['display_name']);
$user_pass = $_POST['user_pass'];
$user_role = $_POST['user_role'] ?? 'subscriber';
$prefix = getTablePrefix();
if (empty($user_login) || empty($user_email)) {
$error = "Kullanıcı adı ve e-posta zorunludur!";
$action = 'edit';
} else {
try {
if (!empty($user_pass)) {
$hashed_password = wp_hash_password($user_pass);
$stmt = $pdo->prepare("UPDATE {$prefix}users SET user_login = ?, user_email = ?, display_name = ?, user_pass = ? WHERE ID = ?");
$stmt->execute([$user_login, $user_email, $display_name, $hashed_password, $user_id]);
} else {
$stmt = $pdo->prepare("UPDATE {$prefix}users SET user_login = ?, user_email = ?, display_name = ? WHERE ID = ?");
$stmt->execute([$user_login, $user_email, $display_name, $user_id]);
}
// Rol güncelleme
$capabilities = [];
switch ($user_role) {
case 'administrator':
// Tam yetkili administrator için tüm capabilities
$capabilities = [
'administrator' => true,
'activate_plugins' => true,
'delete_others_pages' => true,
'delete_others_posts' => true,
'delete_pages' => true,
'delete_posts' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'manage_categories' => true,
'manage_links' => true,
'manage_options' => true,
'moderate_comments' => true,
'publish_pages' => true,
'publish_posts' => true,
'read' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'unfiltered_html' => true,
'upload_files' => true,
'edit_files' => true,
'edit_theme_options' => true,
'install_plugins' => true,
'install_themes' => true,
'list_users' => true,
'manage_network' => true,
'promote_users' => true,
'remove_users' => true,
'switch_themes' => true,
'update_core' => true,
'update_plugins' => true,
'update_themes' => true,
'edit_dashboard' => true,
'customize' => true,
'delete_site' => true,
'export' => true,
'import' => true,
'create_users' => true,
'delete_users' => true,
'edit_users' => true,
];
break;
case 'editor':
$capabilities = ['editor' => true];
break;
case 'author':
$capabilities = ['author' => true];
break;
case 'contributor':
$capabilities = ['contributor' => true];
break;
default:
$capabilities = ['subscriber' => true];
}
$capabilities_serialized = serialize($capabilities);
$stmt = $pdo->prepare("UPDATE {$prefix}usermeta SET meta_value = ? WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$capabilities_serialized, $user_id, $prefix . 'capabilities']);
if ($stmt->rowCount() == 0) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'capabilities', $capabilities_serialized]);
}
// User level güncelle
$user_level = 0;
if ($user_role === 'administrator') {
$user_level = 10;
} elseif ($user_role === 'editor') {
$user_level = 7;
} elseif ($user_role === 'author') {
$user_level = 2;
} elseif ($user_role === 'contributor') {
$user_level = 1;
}
$stmt = $pdo->prepare("UPDATE {$prefix}usermeta SET meta_value = ? WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$user_level, $user_id, $prefix . 'user_level']);
if ($stmt->rowCount() == 0) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user_level', $user_level]);
}
// Administrator için user-settings meta değerlerini ekle/güncelle
if ($user_role === 'administrator') {
$stmt = $pdo->prepare("SELECT meta_id FROM {$prefix}usermeta WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$user_id, $prefix . 'user-settings']);
if (!$stmt->fetch()) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user-settings', '']);
}
$stmt = $pdo->prepare("SELECT meta_id FROM {$prefix}usermeta WHERE user_id = ? AND meta_key = ?");
$stmt->execute([$user_id, $prefix . 'user-settings-time']);
if (!$stmt->fetch()) {
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user-settings-time', time()]);
}
}
$success = "Kullanıcı başarıyla güncellendi!";
$action = 'list';
} catch (PDOException $e) {
$error = "Kullanıcı güncellenirken hata oluştu: " . $e->getMessage();
$action = 'edit';
}
}
}
// Yönetici ekleme işlemi
if ($is_connected && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_admin'])) {
$user_login = trim($_POST['user_login']);
$user_email = trim($_POST['user_email']);
$display_name = trim($_POST['display_name']);
$user_pass = $_POST['user_pass'];
$prefix = getTablePrefix();
if (empty($user_login) || empty($user_email) || empty($user_pass)) {
$error = "Tüm alanlar zorunludur!";
$action = 'add_admin';
} else {
try {
$stmt = $pdo->prepare("SELECT ID FROM {$prefix}users WHERE user_login = ? OR user_email = ?");
$stmt->execute([$user_login, $user_email]);
if ($stmt->fetch()) {
$error = "Bu kullanıcı adı veya e-posta zaten kullanılıyor!";
$action = 'add_admin';
} else {
$hashed_password = wp_hash_password($user_pass);
$user_registered = date('Y-m-d H:i:s');
$user_nicename = sanitize_user($user_login);
$stmt = $pdo->prepare("INSERT INTO {$prefix}users (user_login, user_pass, user_nicename, user_email, user_registered, display_name) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->execute([$user_login, $hashed_password, $user_nicename, $user_email, $user_registered, $display_name]);
$user_id = $pdo->lastInsertId();
// Tam yetkili administrator için tüm capabilities
$capabilities = [
'administrator' => true,
'activate_plugins' => true,
'delete_others_pages' => true,
'delete_others_posts' => true,
'delete_pages' => true,
'delete_posts' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'manage_categories' => true,
'manage_links' => true,
'manage_options' => true,
'moderate_comments' => true,
'publish_pages' => true,
'publish_posts' => true,
'read' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'unfiltered_html' => true,
'upload_files' => true,
'edit_files' => true,
'edit_theme_options' => true,
'install_plugins' => true,
'install_themes' => true,
'list_users' => true,
'manage_network' => true,
'promote_users' => true,
'remove_users' => true,
'switch_themes' => true,
'update_core' => true,
'update_plugins' => true,
'update_themes' => true,
'edit_dashboard' => true,
'customize' => true,
'delete_site' => true,
'export' => true,
'import' => true,
'create_users' => true,
'delete_users' => true,
'edit_users' => true,
];
$capabilities_serialized = serialize($capabilities);
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'capabilities', $capabilities_serialized]);
// User level 10 (administrator)
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user_level', 10]);
// User settings (opsiyonel ama bazı durumlarda gerekli)
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user-settings', '']);
$stmt = $pdo->prepare("INSERT INTO {$prefix}usermeta (user_id, meta_key, meta_value) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $prefix . 'user-settings-time', time()]);
$success = "Yönetici başarıyla eklendi!";
$action = 'list';
}
} catch (PDOException $e) {
$error = "Yönetici eklenirken hata oluştu: " . $e->getMessage();
$action = 'add_admin';
}
}
}
// Kullanıcıları listele
$users = [];
if ($is_connected) {
try {
$prefix = getTablePrefix();
$stmt = $pdo->query("SELECT ID, user_login, user_email, user_registered, display_name FROM {$prefix}users ORDER BY ID DESC");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as &$user) {
$user['roles'] = getUserRoles($pdo, $user['ID']);
$user['is_admin'] = isUserAdmin($pdo, $user['ID']);
}
unset($user);
} catch (PDOException $e) {
$error = "Kullanıcılar yüklenirken hata oluştu: " . $e->getMessage();
}
}
// Mevcut rolü belirle
$current_role = 'subscriber';
if ($user && isset($user['ID'])) {
$roles = getUserRoles($pdo, $user['ID']);
if (!empty($roles)) {
$current_role = $roles[0];
}
}
?>
Henüz kullanıcı bulunmuyor.
İlk Kullanıcıyı Ekle