示例#1
0
 /**
  * Different from __clone(). We save the object to the database to assign it an ID. We also clone its descendants,
  * relations, sources and tags.
  **/
 public function cloneMeaning($newLexemId, $newParentId)
 {
     $clone = $this->parisClone();
     $clone->lexemId = $newLexemId;
     $clone->parentId = $newParentId;
     $clone->save();
     // Clone its tags
     $mtms = MeaningTagMap::get_all_by_meaningId($this->id);
     foreach ($mtms as $mtm) {
         $mtmClone = $mtm->parisClone();
         $mtmClone->meaningId = $clone->id;
         $mtmClone->save();
     }
     // Clone its sources
     $mss = MeaningSource::get_all_by_meaningId($this->id);
     foreach ($mss as $ms) {
         $msClone = $ms->parisClone();
         $msClone->meaningId = $clone->id;
         $msClone->save();
     }
     // Clone its relations
     $relations = Relation::get_all_by_meaningId($this->id);
     foreach ($relations as $r) {
         $rc = $r->parisClone();
         $rc->meaningId = $clone->id;
         $rc->save();
     }
     // Clone its children
     $children = Meaning::get_all_by_parentId($this->id);
     foreach ($children as $child) {
         $child->cloneMeaning($newLexemId, $clone->id);
     }
 }
示例#2
0
function goodForVariant($meanings)
{
    if (empty($meanings)) {
        return true;
    }
    if (count($meanings) > 1) {
        return false;
    }
    $m = $meanings[0];
    $mss = MeaningSource::get_all_by_meaningId($m->id);
    $mtms = MeaningTagMap::get_all_by_meaningId($m->id);
    $relations = Relation::get_all_by_meaningId($m->id);
    return count($mss) && !$m->internalRep && !$m->internalComment && empty($mtms) && empty($relations);
}