Exemplo n.º 1
0
 /**
  * Перестраивает дерево комментариев
  * Восстанавливает значения left, right и level
  *
  * @param int $aTargetId Список ID владельцев
  * @param string $sTargetType Тип владельца
  */
 public function RestoreTree($aTargetId = null, $sTargetType = null)
 {
     // обработать конкретную сущность
     if (!is_null($aTargetId) and !is_null($sTargetType)) {
         $this->oMapper->RestoreTree(null, 0, -1, $aTargetId, $sTargetType);
         return;
     }
     $aType = array();
     // обработать все сущности конкретного типа
     if (!is_null($sTargetType)) {
         $aType[] = $sTargetType;
     } else {
         // обработать все сущности всех типов
         $aType = $this->oMapper->GetCommentTypes();
     }
     foreach ($aType as $sTargetType) {
         // для каждого типа получаем порциями ID сущностей
         $iPage = 1;
         $iPerPage = 50;
         while ($aResult = $this->oMapper->GetTargetIdByType($sTargetType, $iPage, $iPerPage)) {
             foreach ($aResult as $Row) {
                 $this->oMapper->RestoreTree(null, 0, -1, $Row['target_id'], $sTargetType);
             }
             $iPage++;
         }
     }
 }