$intDuplicateTextsDeleted = 0;
foreach (NarroText::LoadAll() as $intVal => $objText) {
    if ($objText->TextValueMd5 == md5($objText->TextValue)) {
        continue;
    }
    try {
        $objText->Save();
    } catch (Exception $objEx) {
        if (strstr($objEx->getMessage(), 'Duplicate')) {
            $arrDuplicateTexts = NarroText::QueryArray(QQ::AndCondition(QQ::Equal(QQN::NarroText()->TextValue, $objText->TextValue), QQ::NotEqual(QQN::NarroText()->TextId, $objText->TextId)));
            error_log(sprintf('Found duplicates for "%s": %d', $objText->TextValue, count($arrDuplicateTexts)));
            foreach ($arrDuplicateTexts as $objDuplicateText) {
                if ($objText->TextValue !== $objDuplicateText->TextValue) {
                    continue;
                }
                foreach (NarroTextComment::LoadArrayByTextId($objDuplicateText->TextId) as $objTextComment) {
                    error_log('Moving text comment');
                    $objTextComment->TextId = $objText->TextId;
                    $objTextComment->Save();
                }
                foreach (NarroSuggestion::LoadArrayByTextId($objDuplicateText->TextId) as $objSuggestion) {
                    error_log('Moving text from suggestion');
                    $arrDuplicateSuggestions = NarroSuggestion::QueryArray(QQ::AndCondition(QQ::NotEqual(QQN::NarroSuggestion()->SuggestionId, $objSuggestion->SuggestionId), QQ::Equal(QQN::NarroSuggestion()->SuggestionValue, $objSuggestion->SuggestionValue), QQ::Equal(QQN::NarroSuggestion()->TextId, $objText->TextId), QQ::Equal(QQN::NarroSuggestion()->LanguageId, $objSuggestion->LanguageId)));
                    if (count($arrDuplicateSuggestions)) {
                        error_log(sprintf('Found duplicates for "%s": %d', $objSuggestion->SuggestionValue, count($arrDuplicateSuggestions)));
                        foreach ($arrDuplicateSuggestions as $objDuplicateSuggestion) {
                            if ($objSuggestion->SuggestionValue !== $objDuplicateSuggestion->SuggestionValue) {
                                continue;
                            }
                            foreach (NarroSuggestionComment::LoadArrayBySuggestionId($objDuplicateSuggestion->SuggestionId) as $objSuggestionComment) {
                                error_log('Moving suggestion comment');
Пример #2
0
 /**
  * Gets all associated NarroTextCommentsAsText as an array of NarroTextComment objects
  * @param QQClause[] $objOptionalClauses additional optional QQClause objects for this query
  * @return NarroTextComment[]
  */
 public function GetNarroTextCommentAsTextArray($objOptionalClauses = null)
 {
     if (is_null($this->intTextId)) {
         return array();
     }
     try {
         return NarroTextComment::LoadArrayByTextId($this->intTextId, $objOptionalClauses);
     } catch (QCallerException $objExc) {
         $objExc->IncrementOffset();
         throw $objExc;
     }
 }