Пример #1
0
<?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));
Пример #2
0
$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");
Пример #3
0
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. &#x25ca; <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. &#x2666; <abbr class="abbrev" title="figurat">Fig.</abbr> Suprafață vastă; întindere mare; imensitate. &#x2666; <abbr class="abbrev" title="figurat">Fig.</abbr> Mulțime (nesfârșită), cantitate foarte mare. &#x2013; 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
Пример #4
0
         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;
     }
Пример #5
0
$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}");
Пример #6
0
<?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";
Пример #7
0
<?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) {
Пример #9
0
<?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;