X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fcsvimporter.php;h=70aa3770ed101b2e93db4d11175957b169378207;hb=a7f778a593a0a7e168a7112ec28cb84d032adaf3;hp=2b76a507bbcb39624be38bc002c5c297ad3ef365;hpb=2f95cd8f290d0e6639a30a9cbaf3230dea4ccf9d;p=platal.git diff --git a/classes/csvimporter.php b/classes/csvimporter.php index 2b76a50..70aa377 100644 --- a/classes/csvimporter.php +++ b/classes/csvimporter.php @@ -1,6 +1,6 @@ table = $table; - $this->key = $key; + $this->key = explode(',', $key); $this->do_sql = $do_sql; } @@ -133,7 +134,7 @@ class CSVImporter VarStream::init(); global $csv_source; $this->index = null; - + $csv_source = $csv; $res = fopen('var://csv_source', 'r'); @@ -159,11 +160,16 @@ class CSVImporter case CSV_REPLACE: $this->execute("REPLACE INTO {$this->table} SET $set"); break; - case CSV_UPDATE: - if (!$this->execute("INSERT INTO {$this->table} SET $set")) { + case CSV_UPDATE: case CSV_UPDATEONLY: + if ($action == CSV_UPDATEONLY || !$this->execute("INSERT INTO {$this->table} SET $set")) { $ops = $this->makeRequestArgs($line, $update_relation); $set = join(', ', $ops); - $this->execute("UPDATE {$this->table} SET $set WHERE {$ops[$this->key]}"); + $where = array(); + foreach ($this->key as $key) { + $where[] = $ops[$key]; + } + $where = join(' AND ', $where); + $this->execute("UPDATE {$this->table} SET $set WHERE $where"); } break; } @@ -233,7 +239,7 @@ class CSVImporter } /** Handle insertion form - * @param $page PlatalPage to process + * @param $page PlPage to process * @param $url URI of the page * @param $field Editable fields */ @@ -285,13 +291,13 @@ class CSVImporter } if ($current == 'values' && Env::has('csv_valid')) { $next = 'valid'; - } + } if (empty($csv)) { $next = 'source'; } if (Env::has('csv_action')) { $_SESSION['csv_action'] = Env::v('csv_action'); - } + } if ($next == 'valid') { if ($current != 'valid') { $cpyfields = array('csv_value', 'csv_user_value', 'csv_cond_field', @@ -324,6 +330,7 @@ class CSVImporter $fields[] = $key; } if ($current == 'valid' && Env::has('csv_valid')) { + S::assert_xsrf_token(); $this->run($_SESSION['csv_action'], $insert, $update); $page->assign('csv_done', true); $this->cleanSession($sesfields); @@ -340,7 +347,7 @@ class CSVImporter $page->assign('csv_field_desc', $this->field_desc); $page->assign('csv_page', $next); $page->assign('csv_path', $url); - $page->assign('csv_fields', $fields); + $page->assign('csv_fields', $fields); } }