<?php require_once "../phplib/util.php"; util_assertNotMirror(); $lexemNames = util_getRequestParameter('lexemNames'); $sourceId = util_getRequestParameter('source'); $def = util_getRequestParameter('def'); $sendButton = util_getRequestParameter('send'); if ($sendButton) { session_setSourceCookie($sourceId); $ambiguousMatches = array(); $def = AdminStringUtil::internalizeDefinition($def, $sourceId, $ambiguousMatches); $lexemNames = deleteEmptyElements($lexemNames); $errorMessage = ''; if (!count($lexemNames)) { $errorMessage = 'Trebuie să introduceți un cuvânt-titlu.'; } else { if (!$def) { $errorMessage = 'Trebuie să introduceți o definiție.'; } else { if (StringUtil::isSpam($def)) { $errorMessage = 'Definiția dumneavoastră este spam.'; } } } if ($errorMessage) { smarty_assign('lexemNames', $lexemNames); smarty_assign('sourceId', $sourceId); smarty_assign('def', $def); FlashMessage::add($errorMessage); smarty_assign('previewDivContent', AdminStringUtil::htmlize($def, $sourceId));
$realRun = util_getRequestParameter('realRun'); $sourceClause = $sourceId ? "and sourceId = {$sourceId}" : ''; $count = Model::factory('Definition')->where_raw("status = 0 {$sourceClause} and binary internalRep like '%{$search}%'")->count(); if ($count > $MAX_AFFECTED) { if ($realRun) { FlashMessage::add("{$count} definiții se potrivesc, numai {$MAX_AFFECTED} au fost modificate.", 'info'); } else { FlashMessage::add("{$count} definiții se potrivesc, maxim {$MAX_AFFECTED} vor fi modificate."); } } $defs = Model::factory('Definition')->where_raw("status = 0 {$sourceClause} and binary internalRep like '%{$search}%'")->order_by_asc('id')->limit($MAX_AFFECTED)->find_many(); $searchResults = SearchResult::mapDefinitionArray($defs); foreach ($defs as $def) { $def->internalRep = str_replace($search, $replace, $def->internalRep); $ambiguousMatches = array(); $def->internalRep = AdminStringUtil::internalizeDefinition($def->internalRep, $def->sourceId, $ambiguousMatches); $def->htmlRep = AdminStringUtil::htmlize($def->internalRep, $def->sourceId); // Complete or un-complete the abbreviation review if (!count($ambiguousMatches) && $def->abbrevReview == ABBREV_AMBIGUOUS) { $def->abbrevReview = ABBREV_REVIEW_COMPLETE; } else { if (count($ambiguousMatches) && $def->abbrevReview == ABBREV_REVIEW_COMPLETE) { $def->abbrevReview = ABBREV_AMBIGUOUS; } } if ($realRun) { $def->save(); } } if ($realRun) { util_redirect("index.php");
assertEquals("FOO dat. #arh.# #loc. adv.# BAR", AdminStringUtil::markAbbreviations("FOO dat. arh. loc. adv. BAR", 1, $ambiguousMatches)); assertEquals(1, count($ambiguousMatches)); assertEqualArrays(array('abbrev' => 'dat.', 'position' => 4, 'length' => 4), $ambiguousMatches[0]); $ambiguousMatches = array(); assertEquals("FOO s-a dus BAR", AdminStringUtil::markAbbreviations("FOO s-a dus BAR", 32, $ambiguousMatches)); assertEquals(0, count($ambiguousMatches)); assertEquals("FOO <abbr class=\"abbrev\" title=\"farmacie; farmacologie\">farm.</abbr> BAR", AdminStringUtil::htmlize("FOO #farm.# BAR", 1)); /** Semicolon in abbreviation **/ assertEquals("FOO <abbr class=\"abbrev\" title=\"substantiv masculin\">s. m.</abbr> BAR", AdminStringUtil::htmlize("FOO #s. m.# BAR", 1)); $errors = array(); assertEquals("FOO <abbr class=\"abbrev\" title=\"abreviere necunoscută\">brrb. ghhg.</abbr> BAR", AdminStringUtil::htmlize("FOO #brrb. ghhg.# BAR", 1, $errors)); assertEqualArrays(array(0 => 'Abreviere necunoscută: «brrb. ghhg.». Verificați că după fiecare punct există un spațiu.'), $errors); $internalRep = '@MÁRE^2,@ $mări,$ #s. f.# Nume generic dat vastelor întinderi de apă stătătoare, adânci și sărate, de pe suprafața |Pământului|Pământ|, care de obicei sunt unite cu |oceanul|ocean| printr-o |strâmtoare|strâmtoare|; parte a oceanului de lângă |țărm|țărm|; $#p. ext.#$ ocean. * #Expr.# $Marea cu sarea$ = mult, totul; imposibilul. $A vântura mări și țări$ = a călători mult. $A încerca marea cu degetul$ = a face o încercare, chiar dacă șansele de reușită sunt minime. $Peste (nouă) mări și (nouă) țări$ = foarte departe. ** #Fig.# Suprafață vastă; întindere mare; imensitate. ** #Fig.# Mulțime (nesfârșită), cantitate foarte mare. - Lat. @mare, -is.@'; assertEquals($internalRep, AdminStringUtil::internalizeDefinition('@M\'ARE^2@, $m~ari$, s. f. Nume generic dat vastelor ^intinderi de ap~a st~at~atoare, ad^anci ,si s~arate, de pe suprafa,ta |P~am^antului|-|, care de obicei sunt unite cu |oceanul|-| printr-o |str^amtoare||; parte a oceanului de l^ang~a |,t~arm||; $p.ext.$ ocean. * Expr. $Marea cu sarea$ = mult, totul; imposibilul. $A v^antura m~ari ,si ,t~ari$ = a c~al~atori mult. $A ^incerca marea cu degetul$ = a face o ^incercare, chiar dac~a ,sansele de reu,sit~a sunt minime. $Peste (nou~a) m~ari ,si (nou~a) ,t~ari$ = foarte departe. ** Fig. Suprafa,t~a vast~a; ^intindere mare; imensitate. ** Fig. Mul,time (nesf^ar,sit~a), cantitate foarte mare. - Lat. @mare, -is@.', 1)); assertEquals('<b>MÁRE<sup>2</sup>,</b> <i>mări,</i> <abbr class="abbrev" title="substantiv feminin">s. f.</abbr> Nume generic dat vastelor întinderi de apă stătătoare, adânci și sărate, de pe suprafața <a class="ref" href="/definitie/Pământ">Pământului</a>, care de obicei sunt unite cu <a class="ref" href="/definitie/ocean">oceanul</a> printr-o <a class="ref" href="/definitie/strâmtoare">strâmtoare</a>; parte a oceanului de lângă <a class="ref" href="/definitie/țărm">țărm</a>; <i><abbr class="abbrev" title="prin extensiune">p. ext.</abbr></i> ocean. ◊ <abbr class="abbrev" title="expresie">Expr.</abbr> <i>Marea cu sarea</i> = mult, totul; imposibilul. <i>A vântura mări și țări</i> = a călători mult. <i>A încerca marea cu degetul</i> = a face o încercare, chiar dacă șansele de reușită sunt minime. <i>Peste (nouă) mări și (nouă) țări</i> = foarte departe. ♦ <abbr class="abbrev" title="figurat">Fig.</abbr> Suprafață vastă; întindere mare; imensitate. ♦ <abbr class="abbrev" title="figurat">Fig.</abbr> Mulțime (nesfârșită), cantitate foarte mare. – Lat. <b>mare, -is.</b>', AdminStringUtil::htmlize($internalRep, 1)); assertEquals($internalRep, AdminStringUtil::internalizeDefinition($internalRep, 1)); // Test various capitalization combos with abbreviations // - When internalizing the definition, preserve the capitalization if the defined abbreviation is capitalized; // otherwise, capitalize the first letter (if necessary) and convert the rest to lowercase // - If the defined abbreviation contains capital letters, then only match text with identical capitalization // - If the defined abbreviation does not contain capital letters, then match text regardless of capitalization // - When htmlizing the definition, use the expansion from the abbreviation that best matches the case. assertAbbreviations("FILLER adv. FILLER", "FILLER #adv.# FILLER", "FILLER <abbr class=\"abbrev\" title=\"adverb\">adv.</abbr> FILLER", 1); assertAbbreviations("FILLER Adv. FILLER", "FILLER #Adv.# FILLER", "FILLER <abbr class=\"abbrev\" title=\"adverb\">Adv.</abbr> FILLER", 1); assertAbbreviations("FILLER BWV FILLER", "FILLER #BWV# FILLER", "FILLER <abbr class=\"abbrev\" title=\"Bach-Werke-Verzeichnis\">BWV</abbr> FILLER", 32); assertAbbreviations("FILLER bwv FILLER", "FILLER bwv FILLER", "FILLER bwv FILLER", 32); assertAbbreviations("FILLER bWv FILLER", "FILLER bWv FILLER", "FILLER bWv FILLER", 32); assertAbbreviations("FILLER ed. FILLER", "FILLER #ed.# FILLER", "FILLER <abbr class=\"abbrev\" title=\"ediție, editat\">ed.</abbr> FILLER", 32); assertAbbreviations("FILLER Ed. FILLER", "FILLER #Ed.# FILLER", "FILLER <abbr class=\"abbrev\" title=\"Editura\">Ed.</abbr> FILLER", 32); assertAbbreviations("FILLER ED. FILLER", "FILLER #Ed.# FILLER", "FILLER <abbr class=\"abbrev\" title=\"Editura\">Ed.</abbr> FILLER", 32); // Abbreviation includes special characters
if ($checkingDryrun) { fwrite($new, $def); } } } if ($checkSourceId && $checkingDryrun) { continue; } if ($verbose) { echo " * Inserting definition for '{$lname}'...\n"; } $definition = Model::factory('Definition')->create(); $definition->userId = $userId; $definition->sourceId = $sourceId; $definition->status = $status; $definition->internalRep = AdminStringUtil::internalizeDefinition($def, $sourceId); $definition->htmlRep = AdminStringUtil::htmlize($definition->internalRep, $sourceId); $definition->lexicon = AdminStringUtil::extractLexicon($definition); $definition->save(); if ($verbose) { echo "\tAdded definition {$definition->id} ({$definition->lexicon})\n"; } $lname = addslashes(AdminStringUtil::formatLexem($lname)); $names = preg_split("/[-\\s,\\/()]+/", $lname); foreach ($names as $name) { if ($name == '') { continue; } if (isset($excludeChar) && $name[0] == $excludeChar) { continue; }
$def = Definition::get_by_id($defId); $similar = Definition::get_by_id($similarId); if ($ins) { $from = $def; $to = $similar; $fstart = $dstart; $flen = $dlen; $tstart = $sstart; $tlen = $slen; } else { $from = $similar; $to = $def; $fstart = $sstart; $flen = $slen; $tstart = $dstart; $tlen = $dlen; } // copy text from $from to $to $mid = substr($from->internalRep, $fstart, $flen); if (!$tlen) { if ($tstart >= strlen($to->internalRep)) { $mid = " {$mid}"; } else { $mid = "{$mid} "; } } $to->internalRep = substr($to->internalRep, 0, $tstart) . $mid . substr($to->internalRep, $tstart + $tlen); $to->internalRep = AdminStringUtil::internalizeDefinition($to->internalRep, $to->sourceId); $to->htmlRep = AdminStringUtil::htmlize($to->internalRep, $to->sourceId); $to->save(); util_redirect("definitionEdit.php?definitionId={$defId}");
<?php require_once __DIR__ . '/../phplib/util.php'; $dbResult = db_execute("select * from Definition where status = 0 and sourceId in (33) order by id", PDO::FETCH_ASSOC); $i = 0; $modified = 0; foreach ($dbResult as $row) { $def = Model::factory('Definition')->create($row); $newRep = AdminStringUtil::internalizeDefinition($def->internalRep, $def->sourceId); $newHtmlRep = AdminStringUtil::htmlize($newRep, $def->sourceId); if ($newRep !== $def->internalRep || $newHtmlRep !== $def->htmlRep) { $modified++; $def->internalRep = $newRep; $def->htmlRep = $newHtmlRep; $def->save(); } $i++; if ($i % 1000 == 0) { print "{$i} definitions reprocessed, {$modified} modified.\n"; } } print "{$i} definitions reprocessed, {$modified} modified.\n";
<?php /* Htmlizes the definition and comment, then builds the SimilarRecord */ require_once "../../phplib/util.php"; util_assertModerator(PRIV_EDIT); util_assertNotMirror(); $definitionId = util_getRequestParameter('definitionId'); $definitionInternalRep = util_getRequestParameter('definitionInternalRep'); $commentInternalRep = util_getRequestParameter('commentInternalRep'); $sourceId = util_getRequestParameter('sourceId'); $lexemIds = util_getRequestCsv('lexemIds'); $d = Definition::get_by_id($definitionId); $d->internalRep = AdminStringUtil::internalizeDefinition($definitionInternalRep, $sourceId); $d->htmlRep = AdminStringUtil::htmlize($d->internalRep, $sourceId); $d->sourceId = $sourceId; $commentInternalRep = AdminStringUtil::internalizeDefinition($commentInternalRep, $sourceId); $commentHtmlRep = AdminStringUtil::htmlize($commentInternalRep, $sourceId); $sim = SimilarRecord::create($d, $lexemIds); $data = $sim->getJsonFriendly(); $data['htmlRep'] = $d->htmlRep; $data['commentHtmlRep'] = $commentHtmlRep; print json_encode($data);
FlashMessage::add("Lexemul <i>" . htmlentities($lexemName) . "</i> nu există. Folosiți lista de sugestii pentru a-l corecta."); $lexems[] = Lexem::create($lexemName, 0, '', ''); // We won't be needing $ldms since there is an error. } } } } else { $lexems = Model::factory('Lexem')->select('Lexem.*')->join('LexemDefinitionMap', 'Lexem.id = lexemId')->where('definitionId', $definitionId)->find_many(); } if ($commentContents) { if (!$comment) { $comment = Model::factory('comment')->create(); $commend->status = ST_ACTIVE; $comment->definitionId = $definitionId; } $newContents = AdminStringUtil::internalizeDefinition($commentContents, $sourceId); if ($newContents != $comment->contents) { $comment->contents = $newContents; $comment->htmlContents = AdminStringUtil::htmlize($comment->contents, $sourceId); if (!$preserveCommentUser) { $comment->userId = session_getUserId(); } } } else { if ($comment) { // User wiped out the existing comment, set status to DELETED. $comment->status = ST_DELETED; $comment->userId = session_getUserId(); } } if (($acceptButton || $moveButton) && !$hasErrors) {
<?php require_once "../../phplib/util.php"; $internalRep = util_getRequestParameter('internalRep'); $sourceId = util_getRequestParameter('sourceId'); $reallyInternalRep = AdminStringUtil::internalizeDefinition($internalRep, $sourceId); $htmlRep = AdminStringUtil::htmlize($reallyInternalRep, $sourceId); echo $htmlRep;