コード例 #1
0
ファイル: mergeuser.php プロジェクト: nikosv/openeclass
/**
 * merge users
 * @global type $langUserMergeSuccess
 * @global type $langBack
 * @param type $source
 * @param type $target
 */
function do_user_merge($source, $target) {
    global $langUserMergeSuccess, $langBack;

    $source_id = $source['id'];
    $target_id = $target['id'];
    $courses = array();
    Database::get()->queryFunc("SELECT code FROM course_user, course
                                     WHERE course.id = course_user.course_id AND
                                           user_id = ?d"
            , function($row) use(&$courses) {
        $courses[] = $row->code;
    }, $target_id);
    $tmp_table = "user_merge_{$source_id}_{$target_id}";
    $q = Database::get()->query("CREATE TEMPORARY TABLE `$tmp_table` AS
                              SELECT course_id, $target_id AS user_id,
                                     MIN(status) AS status, MAX(tutor) AS tutor,
                                     MAX(editor) AS editor, MAX(reviewer) AS reviewer, MIN(reg_date) AS reg_date,
                                     MAX(receive_mail) AS receive_mail,
                                     MAX(document_timestamp) AS document_timestamp
                                 FROM course_user
                                 WHERE user_id IN ($source_id, $target_id)
                                 GROUP BY course_id");
    if ($q) {
        Database::get()->query("DELETE FROM user WHERE id = ?d", $source_id);
        Database::get()->query("DELETE FROM course_user WHERE user_id IN ($source_id, $target_id)");
        Database::get()->query("INSERT INTO course_user SELECT * FROM `$tmp_table`");
        Database::get()->query("DROP TEMPORARY TABLE `$tmp_table`");        
        fix_table('loginout', 'id_user', $source_id, $target_id);
        fix_table('log', 'user_id', $source_id, $target_id);
        fix_table('assignment_submit', 'uid', $source_id, $target_id);
        fix_table('group_members', 'user_id', $source_id, $target_id);
        fix_table('dropbox_index', 'recipient_id', $source_id, $target_id);
        fix_table('dropbox_msg', 'author_id', $source_id, $target_id);
        fix_table('exercise_user_record', 'uid', $source_id, $target_id);
        fix_table('logins', 'user_id', $source_id, $target_id);
        fix_table('lp_user_module_progress', 'user_id', $source_id, $target_id);
        fix_table('poll', 'creator_id', $source_id, $target_id);
        fix_table('poll_answer_record', 'user_id', $source_id, $target_id);
        fix_table('forum_notify', 'user_id', $source_id, $target_id);
        fix_table('forum_post', 'poster_id', $source_id, $target_id);
        fix_table('forum_topic', 'poster_id', $source_id, $target_id);
        fix_table('wiki_pages', 'owner_id', $source_id, $target_id);
        fix_table('wiki_pages_content', 'editor_id', $source_id, $target_id);
        fix_table('gradebook_users', 'uid', $source_id, $target_id);
        fix_table('gradebook_book', 'uid', $source_id, $target_id);
        fix_table('attendance_users', 'uid', $source_id, $target_id);
        fix_table('attendance_book', 'uid', $source_id, $target_id);
        fix_table('blog_post', 'user_id', $source_id, $target_id);
        fix_table('comments', 'user_id', $source_id, $target_id);
        fix_table('personal_calendar', 'user_id', $source_id, $target_id);
        fix_table('personal_calendar_settings', 'user_id', $source_id, $target_id);
        fix_table('rating', 'user_id', $source_id, $target_id);
        fix_table('user_department', 'user', $source_id, $target_id);
        fix_table('custom_profile_fields_data', 'user_id', $source, $target);

        $tool_content = sprintf('<div class="alert alert-success">' . $langUserMergeSuccess . '</div>', '<b>' . q($source['username']) . '</b>', '<b>' . q($target['username']) . '</b>') .
                "<p><a href='search_user.php'>$langBack</p>";

        draw($tool_content, 3);
        exit;
    }
}
コード例 #2
0
ファイル: common.inc.php プロジェクト: nilsine/Astra-Vires
function mysql_die($string)
{
    $error_txt = sprintf($st[1120], $string) . mysql_errno() . $st[1121] . mysql_error();
    fix_table();
    write_to_error_log($error_txt);
}
コード例 #3
0
ファイル: mergeuser.php プロジェクト: kostastzo/openeclass
function do_user_merge($source, $target)
{
    global $langUserMergeSuccess, $langBack;
    $source_id = $source['user_id'];
    $target_id = $target['user_id'];
    $courses = array();
    Database::get()->queryFunc("SELECT code FROM course_user, course\n                                     WHERE course.id = course_user.course_id AND\n                                           user_id = ?d", function ($row) use(&$courses) {
        $courses[] = $row->code;
    }, $target_id);
    $tmp_table = "user_merge_{$source_id}_{$target_id}";
    $q = Database::get()->query("CREATE TEMPORARY TABLE `{$tmp_table}` AS\n                              SELECT course_id, {$target_id} AS user_id,\n                                     MIN(status) AS status, MAX(team) AS team, MAX(tutor) AS tutor,\n                                     MAX(editor) AS editor, MAX(reviewer) AS reviewer, MIN(reg_date) AS reg_date,\n                                     MAX(receive_mail) AS receive_mail\n                                 FROM course_user\n                                 WHERE user_id IN ({$source_id}, {$target_id})\n                                 GROUP BY course_id");
    if ($q) {
        Database::get()->query("DELETE FROM user WHERE user_id = ?d", $source_id);
        Database::get()->query("DELETE FROM course_user WHERE user_id IN ({$source_id}, {$target_id})");
        Database::get()->query("INSERT INTO course_user SELECT * FROM `{$tmp_table}`");
        Database::get()->query("DROP TEMPORARY TABLE `{$tmp_table}`");
        fix_table('forum_notify', 'user_id', $source_id, $target_id);
        fix_table('loginout', 'id_user', $source_id, $target_id);
        fix_table('log', 'user_id', $source_id, $target_id);
        fix_table('assignment_submit', 'uid', $source_id, $target_id);
        fix_table('dropbox_file', 'uploaderId', $source_id, $target_id);
        fix_table('dropbox_person', 'personId', $source_id, $target_id);
        fix_table('dropbox_post', 'recipientId', $source_id, $target_id);
        fix_table('exercise_user_record', 'uid', $source_id, $target_id);
        fix_table('logins', 'user_id', $source_id, $target_id);
        fix_table('lp_user_module_progress', 'user_id', $source_id, $target_id);
        fix_table('poll', 'creator_id', $source_id, $target_id);
        fix_table('poll_answer_record', 'user_id', $source_id, $target_id);
        fix_table('forum_post', 'poster_id', $source_id, $target_id);
        fix_table('forum_topic', 'poster_id', $source_id, $target_id);
        fix_table('wiki_pages', 'owner_id', $source_id, $target_id);
        fix_table('wiki_pages_content', 'editor_id', $source_id, $target_id);
        $tool_content = sprintf('<div class="alert alert-success">' . $langUserMergeSuccess . '</div>', '<b>' . q($source['username']) . '</b>', '<b>' . q($target['username']) . '</b>') . "\n<p><a href='search_user.php'>{$langBack}</p>\n";
        draw($tool_content, 3);
        exit;
    }
}