function watupro_import_questions() { global $wpdb; $row = 0; ini_set("auto_detect_line_endings", true); if (($handle = fopen($_FILES['csv']['tmp_name'], "r")) !== FALSE) { // select all current questions and answers in the exam. it's required to make fast checks // if a given ID exists or not $questions = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . WATUPRO_QUESTIONS . " WHERE exam_id=%d", $_GET['quiz'])); $qids = array(0); foreach ($questions as $question) { $qids[] = $question->ID; } $qid_sql = implode(",", $qids); // select all answers in the exam $answers = $wpdb->get_results("SELECT * FROM " . WATUPRO_ANSWERS . " WHERE question_id IN ({$qid_sql})"); // select all categories so we can see if given one exists or not $cats = $wpdb->get_results("SELECT * FROM " . WATUPRO_QCATS); $delimiter = $_POST['delimiter']; if ($delimiter == "tab") { $delimiter = "\t"; } $csvtype = 'short'; if (empty($_POST['import_fails'])) { while (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE) { $row++; if (empty($data)) { continue; } if (!empty($_POST['skip_title_row']) and $row == 1) { continue; } watupro_import_question($data, $cats); } // end while } else { // the customer says that import fails - let's try the handmade import function while (($csv_line = fgets($handle, 10000)) !== FALSE) { $row++; if (empty($csv_line)) { continue; } if (!empty($_POST['skip_title_row']) and $row == 1) { continue; } $data = watupro_parse_csv_line($csv_line); watupro_import_question($data, $cats); } // end while } fclose($handle); } // end open file wp_redirect("admin.php?page=watupro_questions&quiz={$_GET['quiz']}"); }
static function dispatch() { global $wpdb; // select the quiz $quiz = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_EXAMS . " WHERE ID=%d", $_GET['id'])); if (!empty($_POST['watupro_import'])) { if (empty($_FILES['csv']['name'])) { wp_die(__('Please upload file', 'watupro')); } $cats = $wpdb->get_results("SELECT * FROM " . WATUPRO_QCATS); switch ($_POST['import_format']) { case 'simple': case 'advanced': $row = 0; ini_set("auto_detect_line_endings", true); $delimiter = $_POST['delimiter']; if ($delimiter == "tab") { $delimiter = "\t"; } if (($handle = fopen($_FILES['csv']['tmp_name'], "r")) !== FALSE) { if (empty($_POST['import_fails'])) { while (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE) { $row++; if (empty($data)) { continue; } if (!empty($_POST['skip_title_row']) and $row == 1) { continue; } self::import_question_dispatcher($data, $quiz, $cats); } // end while } else { // the customer says that import fails - let's try the handmade import function while (($csv_line = fgets($handle, 10000)) !== FALSE) { $row++; if (empty($csv_line)) { continue; } if (!empty($_POST['skip_title_row']) and $row == 1) { continue; } $data = watupro_parse_csv_line($csv_line); self::import_question_dispatcher($data, $quiz, $cats); } // end while } // end alternate CSV parsing $result = true; } else { $result = false; } break; case 'aiken': $row = 0; ini_set("auto_detect_line_endings", true); if (($handle = fopen($_FILES['csv']['tmp_name'], "r")) !== FALSE) { $result = true; self::import_questions_aiken($quiz, $handle); } else { $result = false; } break; } } if (@file_exists(get_stylesheet_directory() . '/watupro/advanced-import.html.php')) { require get_stylesheet_directory() . '/watupro/advanced-import.html.php'; } else { require WATUPRO_PATH . "/views/advanced-import.html.php"; } }