4 * generic import routine..
8 * - preview the result. / edit?
16 require_once 'Pman.php';
17 class Pman_Admin_Import_Core_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 $ret[] = $this->updateTranslation($r);
94 function updateTranslation($r)
96 //print_R($r); DB_DataObject::DebugLevel(1);
97 $tr = DB_DataObject::Factory('core_templatestr');
101 $tr->whereAdd("join_template_id_id.template='{$tr->escape($r['template'])}'");
102 $tr->whereAdd("join_template_id_id.view_name='{$tr->escape($r['module'])}'");
103 $tr->whereAdd("join_src_id_id.mdsum='{$tr->escape($r['code'])}'");
104 $tr->lang = $r['language'];
105 if ($tr->find(true)) {
106 $tt = DB_DataObject::Factory('core_templatestr');
109 $tt->txt = $r['translation'];
110 $tt->updated = date('Y-m-d H:i:s');
119 function readXLS($file) {
121 require_once 'System.php';
122 $ssconvert = System::which('ssconvert');
123 if (!$ssconvert) die("ssconvert not installed");
124 $csv = $this->tempName('csv');
125 $cmd = "$ssconvert -T Gnumeric_stf:stf_csv ". escapeshellarg($file) . ' '.$csv;
130 if (!file_exists($csv)) {
131 $this->jerr("Failed to make file . \n".
139 $fh = fopen($csv, 'r');
141 $this->jerr("file invalid");
146 while (false !== ($row = fgetcsv($fh))) {
148 if ($head === false) {
151 // skip header lines.
153 if (!strlen(implode('', $h))) {
156 // how many empty rows..
157 if (count(explode(',',(rtrim(implode(',', $h), " ,")))) < 3) {
162 foreach($row as $i=>$c) {
163 $c = preg_replace('/[\t \n]+/', ' ', $c);
164 $head[$i] = strtolower(trim($c));
169 if (!strlen(trim(implode('', $h)))) {
179 foreach($row as $i=>$c) {
180 $c = preg_replace('/[\t \n]+/', ' ', $c);
181 $rrow[$head[$i]] = trim($c);