/** * 名簿の削除 * * @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_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; }