fix conflict
[Pman.Admin] / Import / Enum.php
1 <?php
2
3 // moved... - to 
4
5 require_once 'Pman/Roo.php';
6
7 class Pman_Admin_Import_Enum extends Pman_Roo
8 {
9     
10     function getAuth()
11     {
12         if (HTML_FlexyFramework::get()->cli) {
13             return true;
14         }
15         return parent::getAuth();
16     }
17     
18     
19     function post()
20     {   
21         
22         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
23
24         $this->sessionState(0); // turn off the session..
25         
26         $img = DB_DataObject::Factory('images');
27         $img->setFrom(array(
28             'onid' => 0,
29             'ontable' => 'ipshead'
30         ));
31         $img->onUpload(false);
32         
33         require_once 'File/Convert.php';
34         $fc = new File_Convert($img->getStoreName(), $img->mimetype );
35         $csv = $fc->convert('text/csv');
36         
37         $this->importCsv($csv);
38     }
39     
40     
41     function importCsv($csv)
42     {
43         
44         ini_set('memory_limit', '1024M');
45         
46         ini_set("auto_detect_line_endings", true);
47
48         if(empty($_REQUEST['etype'])){
49             $this->jerr('Missing etype');
50         }
51         
52         $enum = DB_DataObject::factory('core_enum');
53         if(!$enum->get('name', $_REQUEST['etype'])){
54             $this->jerr('Invalid etype');
55         }
56         
57         $fh = fopen($csv, 'r');
58         if (!$fh) {
59             $this->jerr("invalid file");
60         }
61         
62         $req = array('NAME','DISPLAY NAME');
63         
64         $cols = false;
65         $rows = array();
66         
67         while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
68             if(!array_filter($n)){ // empty row
69                 continue;
70             }
71             if (!$cols) {
72                 
73                 $cols = array();
74                 foreach($n as $k) {
75                     $cols[] = strtoupper(trim($k));
76                 }
77                 if (empty($cols)) {
78                     continue;
79                 }
80                 foreach($req as $r) {
81                     if (!in_array($r,$cols)) {
82                         $cols = false;
83                         break;
84                     }
85                 }
86                 continue;
87             }
88             foreach($cols as $i=>$k) {
89                 $row[$k] = $n[$i];
90             }
91             $rows[] = $row;
92         }
93         
94         if (empty($cols)) {
95             $this->jerr("could not find a row with " . implode(' / ', $req));
96         }
97         
98         fclose($fh);
99         
100         $count = 0;
101         
102         foreach ($rows as $row){
103             $e = DB_DataObject::factory('core_enum');
104             if($e->get('name', $row['NAME'])){
105                 continue;
106             }
107             
108             $e = DB_DataObject::factory('core_enum');
109             $e->setFrom(array(
110                 'name' => $row['NAME'],
111                 'display_name' => $row['DISPLAY NAME'],
112                 'etype' => $_REQUEST['etype'],
113                 'active' => 1,
114             ));
115             $e->insert();
116             $e->onInsert(array());
117             
118             $count++;
119         }
120         
121         $this->jok('data imported successfully! total : ' . $count);
122     
123     }
124     
125 }