/** * セッションの編集 * * @param array $queries * @param array $options * * @return resource */ function update_sessions($queries, $options = array()) { $queries = db_placeholder($queries); // 初期値を取得 $defaults = default_sessions(); if (isset($queries['set']['modified'])) { if ($queries['set']['modified'] === false) { unset($queries['set']['modified']); } } else { $queries['set']['modified'] = $defaults['modified']; } // データを編集 $queries['update'] = DATABASE_PREFIX . 'sessions'; $resource = db_update($queries); return $resource; }
/** * Delete the data to the database. * * @param array $queries * @param bool $return * @param bool $error * * @return mixed */ function db_delete($queries, $return = false, $error = true) { global $_db; if (DATABASE_TYPE === '') { return false; } $queries = db_placeholder($queries); if (isset($queries['delete_from']) && $queries['delete_from'] !== '') { $queries['delete_from'] = 'DELETE FROM ' . $queries['delete_from'] . ' '; } else { return false; } if (isset($queries['where']) && $queries['where'] !== '') { $queries['where'] = 'WHERE ' . $queries['where'] . ' '; } else { $queries['where'] = ''; } if (isset($queries['offset']) && $queries['offset'] !== '') { $queries['offset'] = 'OFFSET ' . $queries['offset'] . ' '; } else { $queries['offset'] = ''; } if (isset($queries['limit']) && $queries['limit'] !== '') { $queries['limit'] = 'LIMIT ' . $queries['limit'] . ' '; } else { $queries['limit'] = ''; } if (isset($queries['option']) && $queries['option'] !== '') { $queries['option'] = $queries['option'] . ' '; } else { $queries['option'] = ''; } $query = trim($queries['delete_from'] . $queries['where'] . $queries['offset'] . $queries['limit'] . $queries['option']) . ';'; if ($return) { return $query; } else { return db_query($query, false, $error); } }
/** * 名簿の削除 * * @param array $queries * @param array $options * * @return resource */ function delete_members($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('softdelete' => isset($options['softdelete']) ? $options['softdelete'] : true, 'category' => isset($options['category']) ? $options['category'] : false, 'file' => isset($options['file']) ? $options['file'] : false); // 削除するデータのIDを取得 $members = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'members AS members', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); $deletes = array(); foreach ($members as $member) { $deletes[] = intval($member['id']); } if ($options['softdelete'] === true) { // データを編集 $resource = db_update(array('update' => DATABASE_PREFIX . 'members AS members', 'set' => array('deleted' => localdate('Y-m-d H:i:s')), 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } else { // データを削除 $resource = db_delete(array('delete_from' => DATABASE_PREFIX . 'members AS members', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } if ($options['category'] === true) { // 関連する分類を削除 $resource = delete_category_sets(array('where' => 'member_id IN(' . implode(',', array_map('db_escape', $deletes)) . ')')); if (!$resource) { return $resource; } } if ($options['file'] === true) { // 関連するファイルを削除 foreach ($deletes as $delete) { directory_rmdir($GLOBALS['config']['file_targets']['member'] . $delete . '/'); } } return $resource; }
/** * 教室の削除 * * @param array $queries * @param array $options * * @return resource */ function delete_classes($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('softdelete' => isset($options['softdelete']) ? $options['softdelete'] : true, 'associate' => isset($options['associate']) ? $options['associate'] : false, 'file' => isset($options['file']) ? $options['file'] : false); // 削除するデータのIDを取得 $classes = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'classes AS classes', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); $deletes = array(); foreach ($classes as $class) { $deletes[] = intval($class['id']); } if ($options['associate'] === true) { // 関連するデータを削除 $resource = delete_members(array('where' => 'class_id IN(' . implode($deletes) . ')')); if (!$resource) { return $resource; } } if ($options['softdelete'] === true) { // データを編集 $resource = db_update(array('update' => DATABASE_PREFIX . 'classes AS classes', 'set' => array('deleted' => localdate('Y-m-d H:i:s'), 'code' => array('CONCAT(\'DELETED ' . localdate('YmdHis') . ' \', code)')), 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } else { // データを削除 $resource = db_delete(array('delete_from' => DATABASE_PREFIX . 'classes AS classes', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } if ($options['file'] === true) { // 関連するファイルを削除 foreach ($deletes as $delete) { directory_rmdir($GLOBALS['config']['file_targets']['class'] . $delete . '/'); } } return $resource; }
/** * ユーザの削除 * * @param array $queries * @param array $options * * @return resource */ function delete_users($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('softdelete' => isset($options['softdelete']) ? $options['softdelete'] : true, 'associate' => isset($options['associate']) ? $options['associate'] : false); // 削除するデータのIDを取得 $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users AS users', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); $deletes = array(); foreach ($users as $user) { $deletes[] = intval($user['id']); } if ($options['associate'] === true) { // 関連するデータを削除 $resource = delete_profiles(array('where' => 'user_id IN(' . implode($deletes) . ')')); if (!$resource) { return $resource; } } if ($options['softdelete'] === true) { // データを編集 $resource = db_update(array('update' => DATABASE_PREFIX . 'users AS users', 'set' => array('deleted' => localdate('Y-m-d H:i:s'), 'username' => array('CONCAT(\'DELETED ' . localdate('YmdHis') . ' \', username)'), 'email' => array('CONCAT(\'DELETED ' . localdate('YmdHis') . ' \', email)')), 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); } else { // データを削除 $resource = db_delete(array('delete_from' => DATABASE_PREFIX . 'users AS users', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); } return $resource; }
/** * プロフィールの削除 * * @param array $queries * @param array $options * * @return resource */ function delete_profiles($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('softdelete' => isset($options['softdelete']) ? $options['softdelete'] : true, 'associate' => isset($options['associate']) ? $options['associate'] : false); if ($options['softdelete'] === true) { // データを編集 $resource = db_update(array('update' => DATABASE_PREFIX . 'profiles AS profiles', 'set' => array('deleted' => localdate('Y-m-d H:i:s')), 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } else { // データを削除 $resource = db_delete(array('delete_from' => DATABASE_PREFIX . 'profiles AS profiles', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } return $resource; }
/** * 分類の削除 * * @param array $queries * @param array $options * * @return resource */ function delete_categories($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('softdelete' => isset($options['softdelete']) ? $options['softdelete'] : true, 'associate' => isset($options['associate']) ? $options['associate'] : false); // 削除するデータのIDを取得 $categories = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'categories AS categories', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); $deletes = array(); foreach ($categories as $category) { $deletes[] = intval($category['id']); } if ($options['associate'] === true) { // 関連するデータを削除 $resource = delete_category_sets(array('where' => 'category_id IN(' . implode($deletes) . ')')); if (!$resource) { return $resource; } } if ($options['softdelete'] === true) { // データを編集 $resource = db_update(array('update' => DATABASE_PREFIX . 'categories AS categories', 'set' => array('deleted' => localdate('Y-m-d H:i:s')), 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } else { // データを削除 $resource = db_delete(array('delete_from' => DATABASE_PREFIX . 'categories AS categories', 'where' => isset($queries['where']) ? $queries['where'] : '', 'limit' => isset($queries['limit']) ? $queries['limit'] : '')); if (!$resource) { return $resource; } } return $resource; }