memid = $user->id; $projects->find(false); while($projects->fetch()) $proj[$projects->id] = $projects->short; $form = new HTML_QuickForm('frmTest', 'post'); $form->addElement('header', 'hdrTesting', 'testing form'); $form->addElement('select', 'project', _("Project Name").":", $proj); $form->addElement('select', 'fileformat', _("File Format").":", array("1" => "UTF-8", "0" => "HTML Entities")); $form->addElement('file', 'pofile', _(".po file").":"); $form->addElement('submit', 'submit', _("Upload file")); $form->setDefaults(array("project" => intval($_GET['pid']))); $renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty); $form->accept($renderer); $smarty->assign('form', $renderer->toArray()); $process = 0; if($form->validate()) $process = 1; if($process == 1) { $upload = new HTTP_Upload('en'); $file = $upload->getFiles('pofile'); if(!$file->isValid()) { $process = 0; $smarty->assign('errmsg', _("You didn't select a file to upload.")); } } if($process == 1) { $props = $file->getProp(); if($props['ext'] != "po" && $props['ext'] != "pot") { $process = 0; $smarty->assign('errmsg', _("You didn't upload a valid .po file.")); } } if($process == 1) { $fileformat = $form->exportValue('fileformat'); $pid = intval($form->exportValue('project')); $query = "CREATE TEMPORARY TABLE `basetmp` ( `id` int(11) NOT NULL auto_increment, `pid` int(11) NOT NULL default '0', `comment` text NOT NULL, `string` text NOT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), FULLTEXT KEY `string` (`string`))"; mysqli_query($_SESSION['_config']['mysqli'], $query); mysqli_query($_SESSION['_config']['mysqli'], "insert into `basetmp` select * from `base` where `pid`='$pid'"); $comments = $msgid = $msgstr = ""; $file->setName(gmdate("U").sprintf("%05d", "1").".po"); $filename = "/home/duane/translingo.org/pofiles/".$file->moveTo('/home/duane/translingo.org/pofiles'); $langs =& new DataObject_Translations(); $langs->pid = $pid; $langs->groupBy("language"); if($langs->count() > 0) $importfiles = exportmerge($pid, $filename); $fp = fopen($filename, "rb"); while(!feof($fp)) { $line = trim(fgets($fp, 4096)); if(substr($line, 0, 1) == "#") { $comments .= $line."\n"; } elseif(substr($line, 0, 5) == "msgid") { $last = "msgid"; $msgid .= $line."\n"; } elseif(substr($line, 0, 6) == "msgstr") { $last = "msgstr"; $msgstr .= $line."\n"; } elseif($line != "") { if($last == "msgid") $msgid .= $line."\n"; else $msgstr .= $line."\n"; } if($line == "" && $msgid != "") { $msgid = str_replace("msgid \"", "", $msgid); $msgid = str_replace("\"\n", "\n", $msgid); $msgid = str_replace("\n\"", "\n", $msgid); $msgid = str_replace("\n", "", $msgid); $msgid = trim($msgid); $mid[] = doit($msgid, $fileformat); if($msgid == "") { $comments = $msgid = $msgstr = ""; continue; } $msgid = str_replace("\\n", "\\\\n", $msgid); $msgid = mysqli_real_escape_string($_SESSION['_config']['mysqli'], doit($msgid, $fileformat)); $comments = mysqli_real_escape_string($_SESSION['_config']['mysqli'], doit($comments, $fileformat)); $query = "select * from `basetmp` where `pid`='$pid' and `string`='$msgid'"; $res = mysqli_query($_SESSION['_config']['mysqli'], $query) or die("A fatal MySQL error occured.\n
Query: " . $query . "
\nError: (" . mysqli_errno($_SESSION['_config']['mysqli']) . ") " . mysqli_error($_SESSION['_config']['mysqli'])); mysqli_query($_SESSION['_config']['mysqli'], "set autocommit=0"); if(mysqli_num_rows($res) > 0) { $res = mysqli_query($_SESSION['_config']['mysqli'], "select * from `basetmp` where `pid`='$pid' and `string`='$msgid' and `comment`!='$comments'"); if(mysqli_num_rows($res) <= 0) { $query = "update `basetmp` set `comment`='$comments' where `string`='$msgid' and `pid`='$pid'"; // echo $query."
\n"; mysqli_query($_SESSION['_config']['mysqli'], $query); $updated++; } } else { $query = "insert into `base` set `pid`='$pid', `string`='$msgid',`comment`='$comments'"; // echo $query."
\n"; mysqli_query($_SESSION['_config']['mysqli'], $query); $query = "insert into `basetmp` set `pid`='$pid', `id`='".mysqli_insert_id($_SESSION['_config']['mysqli'])."', `string`='$msgid',`comment`='$comments'"; // echo $query."
\n"; mysqli_query($_SESSION['_config']['mysqli'], $query); $new++; } $comments = $msgid = $msgstr = ""; } } $res = mysqli_query($_SESSION['_config']['mysqli'], "select * from `basetmp` where `pid`='$pid'"); while($base = mysqli_fetch_assoc($res)) { if(array_search($base['string'], $mid)) continue; $query = "delete from `base` where `id`='$base[id]'"; // echo $query."
\n"; mysqli_query($_SESSION['_config']['mysqli'], $query); if(!array_search($base['string'], $mid)) $deleted++; else { $query = "insert into `base` select * from `basetmp` where `id`='$base[id]'"; // echo $query."
\n"; mysqli_query($_SESSION['_config']['mysqli'], $query); } } $proj =& new DataObject_Projects(); $proj->id = $form->exportValue('project'); $proj->modified = gmdate("Y-m-d H:i:s"); $proj->update(); reimportpo($form->exportValue('project'), $importfiles, $time_start); mysqli_query($_SESSION['_config']['mysqli'], "commit"); $smarty->assign('new', intval($new)); $smarty->assign('updated', intval($updated)); $smarty->assign('deleted', intval($deleted)); $smarty->display('lheader.tpl'); $smarty->display('okupload.tpl'); $res=mysqli_query($_SESSION['_config']['mysqli'], "select notifyemail from projects where id='$pid'"); while($emails = mysqli_fetch_assoc($res)) { if($emails['notifyemail']!="" && $new>0) { echo "Sending email to ".$emails['notifyemail']."
"; mail($emails['notifyemail'], "[TransLingo.org] New translations", "New texts have been uploaded now that need to be translated.", "From: support@translingo.org\nReply-To: support@translingo.org"); } } $smarty->display('lfooter.tpl'); exit; } $smarty->display('lheader.tpl'); $smarty->display('upload.tpl'); $smarty->display('lfooter.tpl'); ?>