} } else { if (empty($warnings)) { $_SESSION['post']['member'] = $post['member']; // フォワード forward('/admin/member_post'); } else { $_view['member'] = $post['member']; $_view['warnings'] = $warnings; } } } } else { // 初期データを取得 if (empty($_GET['id'])) { $_view['member'] = default_members(); } else { $members = select_members(array('where' => array('members.id = :id', array('id' => $_GET['id']))), array('associate' => true)); if (empty($members)) { warning('編集データが見つかりません。'); } else { $_view['member'] = $members[0]; } } if (isset($_GET['_type']) && $_GET['_type'] === 'json') { // 名簿情報を取得 header('Content-Type: application/json; charset=' . MAIN_CHARSET); echo json_encode(array('status' => 'OK', 'data' => $_view, 'files' => array('image_01' => $_view['member']['image_01'] ? file_mimetype($_view['member']['image_01']) : null, 'image_02' => $_view['member']['image_02'] ? file_mimetype($_view['member']['image_02']) : null))); exit; } else { // 投稿セッションを初期化
/** * 名簿の編集 * * @param array $queries * @param array $options * * @return resource */ function update_members($queries, $options = array()) { $queries = db_placeholder($queries); $options = array('id' => isset($options['id']) ? $options['id'] : null, 'update' => isset($options['update']) ? $options['update'] : null, 'category_sets' => isset($options['category_sets']) ? $options['category_sets'] : array(), 'files' => isset($options['files']) ? $options['files'] : array()); // 最終編集日時を確認 if (isset($options['id']) && isset($options['update']) && (!isset($queries['set']['modified']) || $queries['set']['modified'] !== false)) { $members = db_select(array('from' => DATABASE_PREFIX . 'members', 'where' => array('id = :id AND modified > :update', array('id' => $options['id'], 'update' => $options['update'])))); if (!empty($members)) { error('編集開始後にデータが更新されています。'); } } // 初期値を取得 $defaults = default_members(); if (isset($queries['set']['modified'])) { if ($queries['set']['modified'] === false) { unset($queries['set']['modified']); } } else { $queries['set']['modified'] = $defaults['modified']; } // データを編集 $queries['update'] = DATABASE_PREFIX . 'members'; $resource = db_update($queries); if (!$resource) { return $resource; } // IDを取得 $id = $options['id']; if (isset($options['category_sets'])) { // 分類を編集 $resource = delete_category_sets(array('where' => array('member_id = :id', array('id' => $id)))); if (!$resource) { return $resource; } foreach ($options['category_sets'] as $category_id) { $resource = insert_category_sets(array('values' => array('category_id' => $category_id, 'member_id' => $id))); if (!$resource) { return $resource; } } } if (!empty($options['files'])) { // 関連するファイルを削除 remove_members($id, $options['files']); // 関連するファイルを保存 save_members($id, $options['files']); } return $resource; }