function fetchNextRow($row) { global $lexemDbResult; global $sourceMap; global $currentLexem; $def = Model::factory('Definition')->create($row); $def->internalRep = AdminStringUtil::xmlizeRequired($def->internalRep); if (hasFlag('d')) { $def->internalRep = AdminStringUtil::xmlizeOptional($def->internalRep); } $lexemNames = array(); $lexemLatinNames = array(); while (merge_compare($def, $currentLexem) < 0) { $currentLexem = $lexemDbResult->fetch(); } while (merge_compare($def, $currentLexem) == 0) { $lexemNames[] = $currentLexem[1]; $lexemLatinNames[] = StringUtil::unicodeToLatin($currentLexem[1]); $currentLexem = $lexemDbResult->fetch(); } SmartyWrap::assign('def', $def); SmartyWrap::assign('lexemNames', $lexemNames); SmartyWrap::assign('lexemLatinNames', $lexemLatinNames); SmartyWrap::assign('source', $sourceMap[$def->sourceId]); SmartyWrap::assign('user', userCache_get($def->userId)); }
SmartyWrap::assign('abbrev', AdminStringUtil::loadRawAbbreviations()); SmartyWrap::displayWithoutSkin('xml/update3Abbrev.tpl'); } else { if ($export == 'definitions') { userCache_init(); $statusClause = $timestamp ? '' : ' and status = 0'; $defDbResult = db_execute("select * from Definition where modDate >= '{$timestamp}' and sourceId in (select id from Source where canDistribute) " . "{$statusClause} order by modDate, id", PDO::FETCH_ASSOC); // $lexemDbResult = db_execute("select Definition.id, lexemId from Definition force index(modDate), LexemDefinitionMap " . "where Definition.id = definitionId and Definition.modDate >= {$timestamp} " . "and sourceId in (select id from Source where canDistribute) " . "{$statusClause} order by Definition.modDate, Definition.id", PDO::FETCH_NUM); $currentLexem = $lexemDbResult->fetch(); print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; print "<Definitions>\n"; print " <NumResults>" . $defDbResult->rowCount() . "</NumResults>\n"; foreach ($defDbResult as $dbRow) { $def = Model::factory('Definition')->create($dbRow); $def->internalRep = AdminStringUtil::xmlizeRequired($def->internalRep); $lexemIds = array(); while ($currentLexem && $currentLexem[0] == $def->id) { $lexemIds[] = $currentLexem[1]; $currentLexem = $lexemDbResult->fetch(); } prepareDefForVersion($def); SmartyWrap::assign('def', $def); SmartyWrap::assign('lexemIds', $lexemIds); SmartyWrap::assign('user', userCache_get($def->userId)); SmartyWrap::displayWithoutSkin('xml/update3Definitions.tpl'); } print "</Definitions>\n"; } else { if ($export == 'lexems') { $lexemDbResult = db_execute("select * from Lexem where modDate >= '{$timestamp}' order by modDate, id");
assert(!StringUtil::hasRegexp('ăâîșț')); assert(StringUtil::hasRegexp('cop?l')); assertEquals("like 'cop%l'", StringUtil::dexRegexpToMysqlRegexp('cop*l')); assertEquals("like 'cop_l'", StringUtil::dexRegexpToMysqlRegexp('cop?l')); assertEquals("rlike '^(cop[a-z]l)\$'", StringUtil::dexRegexpToMysqlRegexp('cop[a-z]l')); assertEquals("rlike '^(cop[^a-z]l)\$'", StringUtil::dexRegexpToMysqlRegexp('cop[^a-z]l')); assertEquals("rlike '^(cop[â-z]l)\$'", StringUtil::dexRegexpToMysqlRegexp('cop[â-z]l')); assertEquals("rlike '^(cop[â-z]l.*)\$'", StringUtil::dexRegexpToMysqlRegexp('cop[â-z]l*')); assertEqualArrays(array(0, 0, 0), StringUtil::analyzeQuery('mama')); assertEqualArrays(array(1, 0, 0), StringUtil::analyzeQuery('mamă')); assertEqualArrays(array(0, 1, 0), StringUtil::analyzeQuery('cop?l')); assertEqualArrays(array(0, 1, 0), StringUtil::analyzeQuery('cop[c-g]l')); assertEqualArrays(array(1, 1, 0), StringUtil::analyzeQuery('căț[c-g]l')); assertEqualArrays(array(0, 0, 1), StringUtil::analyzeQuery('1234567')); assertEquals('%~$@'', AdminStringUtil::xmlizeRequired('\\%\\~\\$\\@\\\'')); assertEquals('<>&', AdminStringUtil::xmlizeRequired('<>&')); $t = FlexStringUtil::extractTransforms('arde', 'arzând', 0); assertEquals(4, count($t)); assertEquals('d', $t[0]->transfFrom); assertEquals('z', $t[0]->transfTo); assertEquals('e', $t[1]->transfFrom); assertEquals('', $t[1]->transfTo); assertEquals('', $t[2]->transfFrom); assertEquals('ând', $t[2]->transfTo); assertEquals(UNKNOWN_ACCENT_SHIFT, $t[3]); $t = FlexStringUtil::extractTransforms('frumos', 'frumoasă', 0); assertEquals(3, count($t)); assertEquals('o', $t[0]->transfFrom); assertEquals('oa', $t[0]->transfTo); assertEquals('', $t[1]->transfFrom); assertEquals('ă', $t[1]->transfTo);
function dumpDefinitions($query, $remoteFile, $message) { global $FTP, $USERS; log_scriptLog($message); $results = db_execute($query); $tmpFile = tempnam(Config::get('global.tempDir'), 'xmldump_'); $file = gzopen($tmpFile, 'wb9'); gzwrite($file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); gzwrite($file, "<Definitions>\n"); foreach ($results as $row) { $def = Model::factory('Definition')->create($row); $def->internalRep = AdminStringUtil::xmlizeRequired($def->internalRep); SmartyWrap::assign('def', $def); SmartyWrap::assign('nick', $USERS[$def->userId]); gzwrite($file, SmartyWrap::fetch('xml/xmldump/definition.tpl')); } gzwrite($file, "</Definitions>\n"); gzclose($file); $FTP->staticServerPut($tmpFile, $remoteFile); unlink($tmpFile); }
function dumpDefinitions($query, $fileName, $message) { global $USERS; log_scriptLog($message); $results = db_execute($query); $file = gzopen($fileName, 'wb9'); gzwrite($file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); gzwrite($file, "<Definitions>\n"); foreach ($results as $row) { $def = Model::factory('Definition')->create($row); $def->internalRep = AdminStringUtil::xmlizeRequired($def->internalRep); smarty_assign('def', $def); smarty_assign('nick', $USERS[$def->userId]); gzwrite($file, smarty_fetch('xmldump/definition.ihtml')); } gzwrite($file, "</Definitions>\n"); gzclose($file); }