4 * generic import routine..
8 * - preview the result. / edit?
16 require_once 'Pman.php';
17 class Pman_Cms_Import_Cms_templatestr extends Pman
25 $cli = HTML_FlexyFramework::get()->cli;
31 $au = $this->getAuthUser();
38 function post($base = '' )
41 // should handle uploaded file..
42 if (empty($_FILES['imageUpload']['tmp_name']) ||
43 empty($_FILES['imageUpload']['name']) ||
44 empty($_FILES['imageUpload']['type'])
46 $this->jerr ("Missing file details");
50 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
53 $this->transObj = DB_DataObject::factory('core_enum');
55 $this->transObj->query('BEGIN');
57 // first convert the file to a readable format..
58 //$rows = $this->readXLS("/home/alan/Downloads/oll_example.xls") ;
59 $rows = $this->readXLS($_FILES['imageUpload']['tmp_name']) ;
61 $ret = $this->processRows($rows);
64 $this->jok("DONE", false, array('extra'=> $ret));
69 function get($base = '', $opts = array())
71 $rows = $this->readXLS("/var/lib/php/sessions/pressrelease-translations.xls") ;
75 $ret = $this->processRows($rows);
82 function processRows($rows)
85 foreach($rows as $r) {
86 if (isset($r['table id'])) {
87 $ret[] = $this->updateTableTranslation($r);
91 $ret[] = $this->updateTranslation($r);
99 function updateTranslation($r)
101 //print_R($r); DB_DataObject::DebugLevel(1);
102 $tr = DB_DataObject::Factory('cms_templatestr');
106 $tr->whereAdd("join_template_id_id.template='{$tr->escape($r['template'])}'");
107 $tr->whereAdd("join_template_id_id.view_name='{$tr->escape($r['module'])}'");
108 $tr->whereAdd("join_src_id_id.mdsum='{$tr->escape($r['code'])}'");
109 $tr->lang = $r['language'];
110 if ($tr->find(true)) {
111 $tt = DB_DataObject::Factory('cms_templatestr');
114 $tt->txt = $r['translation'];
115 $tt->updated = date('Y-m-d H:i:s');
125 function updateTableTranslation($r)
127 // print_R($r); DB_DataObject::DebugLevel(1);
128 $tr = DB_DataObject::Factory('cms_templatestr');
132 $tr->whereAdd("cms_templatestr.on_id='{$tr->escape($r['table id'])}'");
133 $tr->whereAdd("cms_templatestr.on_table='{$tr->escape($r['table'])}'");
134 $tr->whereAdd("cms_templatestr.on_col='{$tr->escape($r['column'])}'");
135 $tr->whereAdd("join_src_id_id.mdsum='{$tr->escape($r['code'])}'");
136 $tr->lang = $r['translation'];
137 if ($tr->find(true) && strlen(trim($r['txt']))) {
138 $tt = DB_DataObject::Factory('cms_templatestr');
141 $tt->txt = $r['txt'];
142 $tt->updated = date('Y-m-d H:i:s');
151 function readXLS($file) {
153 require_once 'System.php';
154 $ssconvert = System::which('ssconvert');
155 if (!$ssconvert) die("ssconvert not installed");
156 $csv = $this->tempName('csv');
157 $cmd = "$ssconvert -T Gnumeric_stf:stf_csv ". escapeshellarg($file) . ' '.$csv;
162 if (!file_exists($csv)) {
163 $this->jerr("Failed to make file . \n".
171 $fh = fopen($csv, 'r');
173 $this->jerr("file invalid");
178 while (false !== ($row = fgetcsv($fh))) {
180 if ($head === false) {
183 // skip header lines.
185 if (!strlen(implode('', $h))) {
188 // how many empty rows..
189 if (count(explode(',',(rtrim(implode(',', $h), " ,")))) < 3) {
194 foreach($row as $i=>$c) {
195 $c = preg_replace('/[\t \n]+/', ' ', $c);
196 $head[$i] = strtolower(trim($c));
201 if (!strlen(trim(implode('', $h)))) {
211 foreach($row as $i=>$c) {
212 $c = preg_replace('/[\t \n]+/', ' ', $c);
213 $rrow[$head[$i]] = trim($c);