PlFilterOrder is an abstract class, put a default implementation for
[platal.git] / classes / csvimporter.php
index 6bb92ee..7d56bc8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -64,12 +64,12 @@ class CSVImporter
         return true;
     }
 
-    private function getValue($line, $key, $action)
+    static public function getValue($line, $key, $action, $relation = null)
     {
         if (@array_key_exists($action, $line)) {
             $value = $line[$action];
         } elseif (is_callable($action, false)) {
-            $value = call_user_func($action, $line, $key);
+            $value = call_user_func($action, $line, $key, $relation);
         } else {
             $value = $action;
         }
@@ -83,7 +83,7 @@ class CSVImporter
     {
         $ops = array();
         foreach ($relation as $key=>$ref) {
-            $ops[$key] = $this->getValue($line, $key, $ref);
+            $ops[$key] = $this->getValue($line, $key, $ref, $relation);
         }
         return $ops;
     }
@@ -92,7 +92,7 @@ class CSVImporter
     {
         $ops = array();
         foreach ($relation as $key=>$ref) {
-            $value = $this->getValue($line, $key, $ref);
+            $value = $this->getValue($line, $key, $ref, $relation);
             if (!is_null($value) && $value != 'NULL') {
                 $value = "'" . addslashes($value) . "'";
             }
@@ -134,7 +134,7 @@ class CSVImporter
         VarStream::init();
         global $csv_source;
         $this->index     = null;
-        
+
         $csv_source = $csv;
         $res        = fopen('var://csv_source', 'r');
 
@@ -239,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
      */
@@ -291,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',
@@ -330,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);
@@ -346,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);
     }
 }